#!/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 = main %: 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 asn2ref \ between-two-genes blst2tkns bsmp2info cit2pmid \ combine-uid-lists csv2xml custom-index difference-uid-lists \ disambiguate-nucleotides download-* ds2pme ecollect esample \ exclude-uid-lists expand-current filter-columns \ filter-record filter-stop-words find-in-gene fsa2xml \ fuse-ranges fuse-segments gbf2* gene2range gff-sort gff2xml \ gm2segs hgvs2spdi ini2xml intersect-uid-lists \ join-into-groups-of json2xml jsonl2xml just-top-hits \ pair-at-a-time pm-* pma2apa pma2pme pmc2bioc pmc2info \ print-columns print-missing-subranges quote-grouped-elements \ ref2pmid refseq-nm-cds reorder-columns \ scn2xml skip-if-file-exists snp2hgvs snp2tbl \ sort-by-length sort-table sort-uniq-count* spdi2tbl \ split-at-intron systematic-mutations tbl2prod tbl2xml \ uniq-table word-at-a-time xml2fsa xml2tbl xy-plot yaml2xml 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/%) XCOMMON_SCRIPTS = xfetch xfilter xinfo xlink xsearch BIN_XCOMMON_SCRIPTS = $(XCOMMON_SCRIPTS:%=bin/%) OTHER_SCRIPTS = $(wildcard archive-*) 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)/goccy/go-yaml \ $(GH)/klauspost/compress $(GH)/klauspost/cpuid \ $(GH)/klauspost/pgzip $(GH)/komkom/toml $(GH)/leodido/go-urn \ $(GH)/mattn/go-colorable $(GH)/mattn/go-isatty \ $(GH)/pbnjay/memory $(GH)/pelletier/go-toml/v2 $(GH)/pkg/errors \ $(GH)/rainycape/unidecode $(GH)/shirou/gopsutil \ $(GH)/stretchr/objx $(GH)/stretchr/testify \ $(GH)/surgebase/porter2 $(GH)/ugorji/go/codec \ $(GL)/x/crypto $(GL)/x/net $(GL)/x/sys $(GL)/x/text \ $(GL)/x/xerrors 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)/$< $@ # Needed by 4/7 archive-* scripts as of 23.7.20250401, harmless for the rest bin/archive-%: archive-% mkdir -p bin sed -e '$(USE_LIB_DIR)' $< > $@ chmod +x $@ 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_XCOMMON_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 $@ \ $(GOPATH)/src/$(DH_GOPKG)/$*.go override_dh_auto_configure: mkdir -p $(GOPATH)/src/$(DH_GOPKG) ln -sv $(CURDIR)/cmd/*.go $(GOPATH)/src/$(DH_GOPKG) override_dh_auto_build: $(WRAPPERS) $(BIN_PERL_SCRIPTS) \ $(BIN_ECOMMON_SCRIPTS) $(BIN_XCOMMON_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)