File: rules

package info (click to toggle)
ncbi-entrez-direct 14.6.20210224%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 2,056 kB
  • sloc: sh: 12,086; perl: 6,399; xml: 1,297; makefile: 128
file content (159 lines) | stat: -rwxr-xr-x 5,048 bytes parent folder | download
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