| |
1 ## |
| |
2 ## Makefile -- OpenPKG Framework Developer Procedures |
| |
3 ## Copyright (c) 2000-2012 OpenPKG GmbH <http://openpkg.com/> |
| |
4 ## |
| |
5 ## This software is property of the OpenPKG GmbH, DE MUC HRB 160208. |
| |
6 ## All rights reserved. Licenses which grant limited permission to use, |
| |
7 ## copy, modify and distribute this software are available from the |
| |
8 ## OpenPKG GmbH. |
| |
9 ## |
| |
10 ## THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED |
| |
11 ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| |
12 ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
| |
13 ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR |
| |
14 ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| |
15 ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| |
16 ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
| |
17 ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| |
18 ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
| |
19 ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
| |
20 ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| |
21 ## SUCH DAMAGE. |
| |
22 ## |
| |
23 |
| |
24 PATH = /usr/opkg/bin:/usr/opkg/sbin:/bin:/sbin:/usr/bin:/usr/sbin |
| |
25 PREFIX = /openpkg |
| |
26 USER = openpkg |
| |
27 GROUP = openpkg |
| |
28 TAG = openpkg |
| |
29 |
| |
30 SH = /bin/sh |
| |
31 RPM = $(PREFIX)/bin/openpkg rpm |
| |
32 SUDO = sudo |
| |
33 SCP = scp |
| |
34 RSYNC = rsync |
| |
35 RSYNC_REM = /v/openpkg/sw/bin/rsync |
| |
36 MTN = mtn |
| |
37 |
| |
38 UPLOAD1 = openpkg@experimental.openpkg.org:/v/openpkg/download/data/framework/release/source/ |
| |
39 UPLOAD2 = openpkg@experimental.openpkg.org:/v/openpkg/download/data/components/cache/openpkg/ |
| |
40 |
| |
41 all: |
| |
42 @echo "Individual Steps:" |
| |
43 @echo " $(MAKE) fetch-sh fetch third-party distribution files (standalone)" |
| |
44 @echo " $(MAKE) fetch-rpm fetch third-party distribution files (requires $(PREFIX))" |
| |
45 @echo " $(MAKE) build-src-sh build SOURCE SHELL package (standalone)" |
| |
46 @echo " $(MAKE) build-bin-sh build BINARY SHELL package (standalone)" |
| |
47 @echo " $(MAKE) build-src-rpm build SOURCE RPM package (requires $(PREFIX))" |
| |
48 @echo " $(MAKE) build-bin-rpm build BINARY RPM package (requires $(PREFIX))" |
| |
49 @echo " $(MAKE) install-bin-sh install BINARY SHELL package (requires $(PREFIX))" |
| |
50 @echo " $(MAKE) install-bin-rpm install BINARY RPM package (requires $(PREFIX))" |
| |
51 @echo " $(MAKE) uninstall uninstall entire instance under $(PREFIX)" |
| |
52 @echo " $(MAKE) upload-dst upload latest DISTRIBUTION files" |
| |
53 @echo " $(MAKE) upload-pkg upload latest SOURCE SHELL+RPM packages" |
| |
54 @echo " $(MAKE) upload-src upload latest SOURCE repository revisions" |
| |
55 @echo " $(MAKE) clean remove temporary files" |
| |
56 @echo "" |
| |
57 @echo "All-In-One Steps:" |
| |
58 @echo " $(MAKE) bootstrap BOOTSTRAP instance under $(PREFIX) from scratch" |
| |
59 @echo " $(MAKE) update UPDATE instance under $(PREFIX)" |
| |
60 @echo " $(MAKE) upload upload all results" |
| |
61 |
| |
62 ## |
| |
63 ## Individual Steps |
| |
64 ## |
| |
65 |
| |
66 fetch-sh: |
| |
67 @echo "++ fetching third-party distribution files (manually)"; \ |
| |
68 eval `egrep '^%define *V_.*' openpkg.spec | \ |
| |
69 sed -e 's%^.*\(V_[a-z][a-zA-Z0-9_]*\) *\([^ ][^ ]*\).*$$%\1="\2";%'`; \ |
| |
70 for url in \ |
| |
71 `egrep '^Source[0-9][0-9]*: *(http|ftp)://' openpkg.spec | \ |
| |
72 sed -e 's;^Source[0-9][0-9]*: *;;' -e 's;%{\(V_[a-z][a-zA-Z0-9_]*\)};$${\1};g'`; do \ |
| |
73 eval "url=\"$$url\""; \ |
| |
74 file=`echo "$$url" | sed -e 's;^.*/\([^/]*\)$$;../dst/\1;'`; \ |
| |
75 if [ ! -f $$file ]; then \ |
| |
76 echo "-- downloading $$url"; \ |
| |
77 if [ ".`(which curl) 2>/dev/null | egrep '^/'`" != . ]; then \ |
| |
78 curl -s -L -o "$$file" "$$url" || true; \ |
| |
79 elif [ ".`(which wget) 2>/dev/null | egrep '^/'`" != . ]; then \ |
| |
80 wget -q -O "$$file" "$$url" || true; \ |
| |
81 elif [ ".`(which fetch) 2>/dev/null | egrep '^/'`" != . ]; then \ |
| |
82 fetch -o "$$file" "$$url" || true; \ |
| |
83 elif [ ".`(which lwp-download) 2>/dev/null | egrep '^/'`" != . ]; then \ |
| |
84 lwp-download "$$url" "$$file" || true; \ |
| |
85 else \ |
| |
86 echo "ERROR: sorry, no download tool found in \$$PATH (\"curl\", \"wget\", \"fetch\", \"lwp-download\")" 1>&2; \ |
| |
87 exit 1; \ |
| |
88 fi; \ |
| |
89 if [ ! -f "$$file" ]; then \ |
| |
90 echo "ERROR: failed to download \"$$url\"" 1>&2; \ |
| |
91 exit 1; \ |
| |
92 fi; \ |
| |
93 fi; \ |
| |
94 done |
| |
95 |
| |
96 fetch-rpm: |
| |
97 @echo "++ fetching third-party distribution files (via RPM)"; \ |
| |
98 PATH="$(PATH)" $(RPM) -bf *.spec |
| |
99 |
| |
100 build-src-sh: |
| |
101 @echo "++ building SOURCE SHELL package"; \ |
| |
102 PATH="$(PATH)" $(SH) openpkg.boot -s |
| |
103 |
| |
104 build-bin-sh: |
| |
105 @echo "++ building BINARY SHELL package"; \ |
| |
106 cd ../pkg && TMPDIR="`cd ../tmp && pwd`" && export TMPDIR && \ |
| |
107 PATH="$(PATH)" $(SH) openpkg-*-`date '+%Y%m%d'`.src.sh \ |
| |
108 --prefix=$(PREFIX) \ |
| |
109 --user=$(USER) \ |
| |
110 --group=$(GROUP) \ |
| |
111 --tag=$(TAG) |
| |
112 |
| |
113 build-src-rpm: |
| |
114 @echo "++ building SOURCE RPM package"; \ |
| |
115 PATH="$(PATH)" $(RPM) -bs openpkg.spec |
| |
116 |
| |
117 build-bin-rpm: |
| |
118 @echo "++ building BINARY RPM package"; \ |
| |
119 PATH="$(PATH)" $(RPM) -bb openpkg.spec |
| |
120 |
| |
121 install-bin-sh: |
| |
122 @echo "++ installing BINARY SHELL package"; \ |
| |
123 d=`cd ../pkg && pwd` && cd / && PATH="$(PATH)" $(SUDO) $(SH) $$d/openpkg-*-`date '+%Y%m%d'`.*-*-*.sh |
| |
124 |
| |
125 install-bin-rpm: |
| |
126 @echo "++ installing BINARY RPM package"; \ |
| |
127 d=`cd ../pkg && pwd` && cd / && PATH="$(PATH)" $(SUDO) $(RPM) -Uvh --replacepkgs $$d/openpkg-*-`date '+%Y%m%d'`.*-*-*.rpm |
| |
128 |
| |
129 uninstall: |
| |
130 -@echo "++ uninstalling ENTIRE instance"; \ |
| |
131 cd /; $(RPM) -qa | grep -v '^openpkg-[0-9]' | xargs $(SUDO) $(RPM) -e; \ |
| |
132 $(SUDO) $(RPM) -e openpkg |
| |
133 |
| |
134 upload-dst: |
| |
135 @echo "++ uploading vendor DISTRIBUTION files:"; \ |
| |
136 $(RSYNC) -raH --delete -v --progress --rsync-path=$(RSYNC_REM) ../dst/ $(UPLOAD2) |
| |
137 |
| |
138 upload-pkg: |
| |
139 @echo "++ uploading SOURCE SHELL/RPM package(s):"; \ |
| |
140 $(RSYNC) -raH --delete -v --progress --rsync-path=$(RSYNC_REM) ../pkg/*.src.* $(UPLOAD1) |
| |
141 |
| |
142 upload-src: |
| |
143 @echo "++ uploading SOURCE repository revision(s):"; \ |
| |
144 $(MTN) sync |
| |
145 |
| |
146 clean: |
| |
147 -rm -rf ../tmp/* |
| |
148 |
| |
149 pod2man: |
| |
150 pod2man --section=1 --center="OpenPKG" --release="OPENPKG(8)" --date="OpenPKG" --quotes=none openpkg.pod >openpkg.1 |
| |
151 pod2man --section=8 --center="OpenPKG" --release="RC(8)" --date="OpenPKG" --quotes=none rc.pod >rc.8 |
| |
152 pod2man --section=8 --center="OpenPKG" --release="RPMTOOL(8)" --date="OpenPKG" --quotes=none rpmtool.pod >rpmtool.8 |
| |
153 pod2man --section=8 --center="OpenPKG" --release="LSYNC(8)" --date="OpenPKG" --quotes=none lsync.pod >lsync.8 |
| |
154 pod2man --section=8 --center="OpenPKG" --release="RPM-CONFIG(8)" --date="OpenPKG" --quotes=none rpm-config.pod >rpm-config.8 |
| |
155 pod2man --section=8 --center="OpenPKG" --release="UUID(8)" --date="OpenPKG" --quotes=none uuid.pod >uuid.8 |
| |
156 pod2man --section=8 --center="OpenPKG" --release="RELEASE(8)" --date="OpenPKG" --quotes=none release.pod >release.8 |
| |
157 pod2man --section=8 --center="OpenPKG" --release="BUILD(8)" --date="OpenPKG" --quotes=none build.pod >build.8 |
| |
158 pod2man --section=8 --center="OpenPKG" --release="INDEX(8)" --date="OpenPKG" --quotes=none index.pod >index.8 |
| |
159 pod2man --section=8 --center="OpenPKG" --release="SEARCH(8)" --date="OpenPKG" --quotes=none search.pod >search.8 |
| |
160 pod2man --section=8 --center="OpenPKG" --release="MIRROR(8)" --date="OpenPKG" --quotes=none mirror.pod >mirror.8 |
| |
161 pod2man --section=8 --center="OpenPKG" --release="MAKEPROXY(8)" --date="OpenPKG" --quotes=none makeproxy.pod >makeproxy.8 |
| |
162 pod2man --section=8 --center="OpenPKG" --release="REGISTER(8)" --date="OpenPKG" --quotes=none register.pod >register.8 |
| |
163 pod2man --section=8 --center="OpenPKG" --release="LICENSE(8)" --date="OpenPKG" --quotes=none license.pod >license.8 |
| |
164 pod2man --section=8 --center="OpenPKG" --release="DEV(8)" --date="OpenPKG" --quotes=none dev.pod >dev.8 |
| |
165 pod2man --section=8 --center="OpenPKG" --release="SEA(8)" --date="OpenPKG" --quotes=none sea.pod >sea.8 |
| |
166 pod2man --section=8 --center="OpenPKG" --release="STACK(8)" --date="OpenPKG" --quotes=none stack.pod >stack.8 |
| |
167 |
| |
168 ## |
| |
169 ## All-In-One Steps |
| |
170 ## |
| |
171 |
| |
172 bootstrap: build-src-sh build-bin-sh install-bin-sh |
| |
173 |
| |
174 update: build-bin-rpm install-bin-rpm |
| |
175 |
| |
176 upload: build-src-sh build-src-rpm upload-pkg upload-src |
| |
177 |