#!/usr/bin/make -f export DEB_BUILD_MAINT_OPTIONS = hardening=+all DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/default.mk export CGO_CFLAGS = $(CFLAGS) export CGO_CPPFLAGS = $(CPPFLAGS) export CGO_CXXFLAGS = $(CXXFLAGS) # probably irrelevant export CGO_FFLAGS = $(FFLAGS) # even more so export CGO_LDFLAGS = $(LDFLAGS) export DH_GOPKG = cmd %: dh $@ --with=golang,python3 PACKAGE = ncbi-entrez-direct LIB_DIR = /usr/lib/$(PACKAGE) PKG_BIN_DIR = debian/$(PACKAGE)/usr/bin WRAPPERS = $(filter-out bin/edict.sh, $(GO_APPS:%=bin/%.sh)) AS_IS_SCRIPTS = accn-at-a-time amino-acid-composition \ archive-pmc archive-pubmed asn2ref \ between-two-genes blst2tkns cit2pmid combine-uid-lists \ csv2xml custom-index difference-uid-lists \ disambiguate-nucleotides download-ncbi-data \ download-ncbi-software download-pmc download-pubmed \ download-sequence ds2pme esample \ exclude-uid-lists expand-current fetch-pmc \ fetch-pubmed filter-columns filter-stop-words \ find-in-gene fuse-ranges fuse-segments \ gbf2ref gbf2xml gene2range hgvs2spdi \ index-extras index-pubmed intersect-uid-lists \ join-into-groups-of json2xml \ phrase-search pm-* pma2pme \ print-columns ref2pmid reorder-columns \ scn2xml skip-if-file-exists snp2hgvs snp2tbl \ sort-table sort-uniq-count* spdi2tbl \ split-at-intron stream-pubmed tbl2prod tbl2xml theme-aliases \ uniq-table word-at-a-time xml2fsa xml2tbl xy-plot PERL_SCRIPTS = run-ncbi-converter xml2json BIN_PERL_SCRIPTS = $(PERL_SCRIPTS:%=bin/%) ECOMMON_SCRIPTS = efetch efilter einfo elink epost esearch BIN_ECOMMON_SCRIPTS = $(ECOMMON_SCRIPTS:%=bin/%) OTHER_SCRIPTS = esummary nquire BIN_OTHER_SCRIPTS = $(OTHER_SCRIPTS:%=bin/%) FIX_PERL_SHEBANG = 1s,^\#!/usr/bin/env perl$$,\#!/usr/bin/perl, GOCODE = /usr/share/gocode GH = github.com GL = golang.org GOLIBSRC_ = $(GH)/fatih/color $(GH)/gedex/inflector \ $(GH)/gin-contrib/sse $(GH)/gin-gonic/gin \ $(GH)/go-playground/locales \ $(GH)/go-playground/universal-translator \ $(GH)/go-playground/validator/v10 $(GH)/klauspost/compress \ $(GH)/klauspost/cpuid $(GH)/klauspost/pgzip $(GH)/leodido/go-urn \ $(GH)/mattn/go-colorable $(GH)/mattn/go-isatty \ $(GH)/pbnjay/memory $(GH)/pelletier/go-toml/v2 \ $(GH)/rainycape/unidecode $(GH)/shirou/gopsutil \ $(GH)/surgebase/porter2 $(GH)/ugorji/go/codec \ $(GL)/x/crypto $(GL)/x/net $(GL)/x/sys $(GL)/x/text \ google.golang.org/protobuf gopkg.in/yaml.v2 GOLIBSRC = $(GOLIBSRC_:%=$(GOCODE)/src/%) export GO111MODULE = off export GOCACHE = $(CURDIR)/go-build export GOPATH = $(CURDIR)/obj-$(DEB_HOST_GNU_TYPE) GOLIBS = $(GOPATH)/src/eutils $(GOLIBSRC:$(GOCODE)/%=$(GOPATH)/%) GO_APPS = edict rchive transmute xtract BIN_GO_APPS = $(GO_APPS:%=bin/%) GOVERSION := $(word 3,$(shell go version)) # go version **goX.Y.Z** OS/CPU GO_IS_OLD := $(shell dpkg --compare-versions 0$(GOVERSION) ge 0go1.10 || echo $$?) ifneq (,$(GO_IS_OLD)) export PATH := /usr/lib/go-1.10/bin:$(PATH) endif USE_LIB_DIR = s,\"$$pth\(\"*\)/,\"$(LIB_DIR)\1/,g $(GOPATH)/%: /usr/share/gocode/% mkdir -p $(dir $@) ln -s $< $@ $(GOPATH)/src/eutils: mkdir -p $(GOPATH)/src ln -s $(CURDIR)/eutils $@ $(GOPATH)/src/%: debian/vendor/% mkdir -p $(dir $@) ln -s $(CURDIR)/$< $@ bin/esummary: esummary mkdir -p bin sed -e 's/efetch/&.ncbi/' $< > $@ chmod +x $@ bin/nquire: nquire mkdir -p bin sed -e '$(USE_LIB_DIR); s/ --no-check-certificate / /' $< > $@ chmod +x $@ bin/%.sh: % mkdir -p bin sed -e 's,xml2json,$(LIB_DIR)/&,; s/python/&3/; /to precompiled/q' \ $< > $@ echo 'exec $(LIB_DIR)/$< "$$@"' >> $@ chmod +x $@ $(BIN_PERL_SCRIPTS): bin/%: % mkdir -p bin sed -e '$(FIX_PERL_SHEBANG)' $< > $@ chmod +x $@ $(BIN_ECOMMON_SCRIPTS): bin/%: % mkdir -p bin sed -e '$(USE_LIB_DIR)' $< > $@ chmod +x $@ ifneq (,$(wildcard /usr/share/gocode/src/$(GH)/klauspost/cpuid/v2)) $(GOPATH)/src/$(GH)/klauspost/cpuid: $(GOLIBS) mkdir -p $(GOPATH)/src/$(GH)/klauspost ln -s /usr/share/gocode/src/$(GH)/klauspost/cpuid/v2 \ $(GOPATH)/src/$(GH)/klauspost/cpuid endif $(BIN_GO_APPS): bin/%: cmd/%.go $(GOLIBS) # Always use gccgo? The resulting binary would be much smaller, but # pull in a large shared library with few other reverse dependencies. go build -v -gccgoflags '$(CFLAGS) $(LDFLAGS)' -o $@ cmd/$*.go override_dh_auto_configure: mkdir -p saved -mv cmd/go.mod cmd/go.sum saved/ override_dh_auto_build: $(WRAPPERS) $(BIN_PERL_SCRIPTS) \ $(BIN_ECOMMON_SCRIPTS) $(BIN_OTHER_SCRIPTS) \ $(BIN_GO_APPS) dh_auto_build install $(AS_IS_SCRIPTS) bin/ mv bin/efetch bin/efetch.ncbi mv bin/einfo bin/einfo.ncbi install debian/efetch debian/einfo bin/ # It's spuriously executable, and dh_python3's practice of making hard links # interferes with correcting permissions only for the installed copy. install -m644 edirect.py debian/ override_dh_install: dh_install mv $(PKG_BIN_DIR)/xml2json debian/$(PACKAGE)/$(LIB_DIR)/ for x in $(GO_APPS); do \ test -f $(PKG_BIN_DIR)/$$x.sh || continue ; \ mv -v $(PKG_BIN_DIR)/$$x debian/$(PACKAGE)/$(LIB_DIR)/ ; \ mv -v $(PKG_BIN_DIR)/$$x.sh $(PKG_BIN_DIR)/$$x ; \ done override_dh_installexamples: dh_installexamples sed -i '$(FIX_PERL_SHEBANG)' debian/*/usr/share/doc/*/examples/* override_dh_auto_clean: dh_auto_clean rm -rf bin debian/edirect.py $(GOCACHE) $(GOPATH) if [ -d saved ]; then mv saved/* cmd && rmdir saved; fi