#!/usr/bin/make -f export DEB_BUILD_MAINT_OPTIONS = hardening=+all export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/default.mk %: dh $@ --with=golang PACKAGE = ncbi-entrez-direct LIB_DIR = /usr/lib/$(PACKAGE) PKG_BIN_DIR = debian/$(PACKAGE)/usr/bin MODES = address blast citmatch contact notify proxy spell STD_WRAPPERS = $(MODES:%=bin/e%) OTHER_WRAPPERS = ftp-cp ftp-ls transmute.sh xtract.sh WRAPPERS = $(STD_WRAPPERS) $(OTHER_WRAPPERS:%=bin/%) AS_IS_SCRIPTS = accn-at-a-time amino-acid-composition archive-pubmed \ between-two-genes entrez-phrase-search esample \ exclude-uid-lists expand-current fetch-pubmed \ filter-stop-words gbf2xml index-pubmed intersect-uid-lists \ join-into-groups-of phrase-search pm-* protein-neighbors \ reorder-columns skip-if-file-exists sort-uniq-count* \ stream-pubmed theme-aliases word-at-a-time xml2tbl xy-plot BASH_SCRIPTS = index-extras BIN_BASH_SCRIPTS = $(BASH_SCRIPTS:%=bin/%) DL_SCRIPTS = download-ncbi-data download-pubmed download-sequence BIN_DL_SCRIPTS = $(DL_SCRIPTS:%=bin/%) PERL_SCRIPTS = edirutil run-ncbi-converter xml2json BIN_PERL_SCRIPTS = $(PERL_SCRIPTS:%=bin/%) ECOMMON_SCRIPTS = efetch efilter einfo elink epost esearch esummary BIN_ECOMMON_SCRIPTS = $(ECOMMON_SCRIPTS:%=bin/%) OTHER_SCRIPTS = nquire BIN_OTHER_SCRIPTS = $(OTHER_SCRIPTS:%=bin/%) FIX_PERL_SHEBANG = 1s,^\#!/usr/bin/env perl$$,\#!/usr/bin/perl, FIX_BASH_SHEBANG = 1s,^\#!/bin/sh,\#!/bin/bash, GOCODE = /usr/share/gocode GH = github.com GL = golang.org GOLIBSRC_ = $(GH)/fatih/color $(GH)/gedex/inflector $(GH)/klauspost/cpuid \ $(GH)/mattn/go-colorable $(GH)/mattn/go-isatty \ $(GH)/pbnjay/memory $(GH)/rainycape/unidecode \ $(GH)/shirou/gopsutil $(GH)/surgebase/porter2 \ $(GL)/x/sys $(GL)/x/text GOLIBSRC = $(GOLIBSRC_:%=$(GOCODE)/src/%) export GOCACHE = $(CURDIR)/go-build export GOPATH = $(CURDIR)/obj-$(DEB_HOST_GNU_TYPE) GOLIBS = $(GOLIBSRC:$(GOCODE)/%=$(GOPATH)/%) GO_APPS = 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 $(GOPATH)/%: /usr/share/gocode/% mkdir -p $(dir $@) ln -s $< $@ $(GOPATH)/src/%: debian/vendor/% mkdir -p $(dir $@) ln -s $(CURDIR)/$< $@ bin/edirect: edirect.pl mkdir -p bin sed -e '$(FIX_PERL_SHEBANG)' $< > $@ chmod +x $@ $(STD_WRAPPERS): bin/e%: bin/edirect echo '#!/bin/sh' > $@ echo 'exec /usr/bin/edirect -$* "$$@"' >> $@ chmod +x $@ bin/ftp-cp: bin/edirect echo '#!/bin/sh' > $@ echo 'exec /usr/bin/edirect -ftpcp "$$@"' >> $@ chmod +x $@ bin/ftp-ls: bin/edirect echo '#!/bin/sh' > $@ echo 'exec /usr/bin/edirect -ftpls "$$@"' >> $@ chmod +x $@ bin/nquire: nquire mkdir -p bin sed -e 's/edirect\.pl/edirect/g; s/ --no-check-certificate / /' $< > $@ chmod +x $@ bin/%.sh: % sed -e 's,xml2json,$(LIB_DIR)/&,; s/python/&3/; /to precompiled/q' \ $< > $@ echo 'exec $(LIB_DIR)/$< "$$@"' >> $@ chmod +x $@ $(BIN_BASH_SCRIPTS): bin/%: % mkdir -p bin sed -e '$(FIX_BASH_SHEBANG)' $< > $@ chmod +x $@ $(BIN_PERL_SCRIPTS): bin/%: % mkdir -p bin sed -e '$(FIX_PERL_SHEBANG)' $< > $@ chmod +x $@ $(BIN_DL_SCRIPTS): bin/%: % mkdir -p bin sed -e 's/`has-asp`/false # &/' $< > $@ chmod +x $@ $(BIN_ECOMMON_SCRIPTS): bin/%: % mkdir -p bin sed -e 's/edirect\.pl/edirect/g; s,"$$pth"/ec,$(LIB_DIR)/ec,g' $< > $@ chmod +x $@ $(GOPATH)/src/$(GH)/fiam/gounidecode: $(GOLIBS) mkdir -p $(GOPATH)/src/$(GH)/fiam ln -s ../rainycape $(GOPATH)/src/$(GH)/fiam/gounidecode COMMON = common.go $(BIN_GO_APPS): bin/%: %.go $(GOPATH)/src/$(GH)/fiam/gounidecode # 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 $@ $*.go $(COMMON) override_dh_auto_configure: mkdir -p saved -mv go.mod go.sum saved/ override_dh_auto_build: $(WRAPPERS) $(BIN_BASH_SCRIPTS) $(BIN_DL_SCRIPTS) \ $(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/ override_dh_install: dh_install mv $(PKG_BIN_DIR)/transmute $(PKG_BIN_DIR)/xml2json \ $(PKG_BIN_DIR)/xtract debian/$(PACKAGE)/$(LIB_DIR)/ mv $(PKG_BIN_DIR)/transmute.sh $(PKG_BIN_DIR)/transmute mv $(PKG_BIN_DIR)/xtract.sh $(PKG_BIN_DIR)/xtract 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 $(GOCACHE) $(GOPATH) if [ -d saved ]; then mv saved/* . && rmdir saved; fi