1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
#!/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
|