Tue, 31 Jul 2012 12:27:54 +0200
Correct '-rpath /opkg/lib64' because OpenPKG fails to support multiarch.
1 ##
2 ## openpkg.spec -- OpenPKG RPM Package Specification
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 ##
24 # NOTICE: This OpenPKG RPM specification is _very_ special, because
25 # it is used both for bootstrapping OpenPKG with its OpenPKG RPM and
26 # for regular builds of OpenPKG RPM in order to upgrade an existing
27 # installation. For this it has to interact correctly with the
28 # "openpkg.boot" script. See the documentation in the file "README"
29 # and the source of the companion script "openpkg.boot" for details,
30 # but do not touch anything here until you are 100% sure about what
31 # you are doing. In short: This script is allowed to use only a very
32 # restricted subset of the OpenPKG RPM functionality!
34 # BUILD REQUIREMENTS:
35 # o any sh(1)
36 # o any tar(1)
37 # o any make(1)
38 # o any cc(1)
40 # the used software versions
41 %define V_rpm_major 5.1
42 %define V_rpm_minor 9
43 %define V_popt 1.16
44 %define V_db 4.7.25
45 %define V_lua 5.1.4
46 %define V_sqlite 3.6.17
47 %define V_zlib 1.2.7
48 %define V_bzip2 1.0.6
49 %define V_beecrypt 4.2.1
50 %define V_curl 7.26.0
51 %define V_pcre 8.31
52 %define V_make 3.82
53 %define V_gzip 1.5
54 %define V_patch 2.6.1
55 %define V_tar 1.26
56 %define V_bash 4.2
57 %define V_bash_pl 29
58 %define V_uuid 1.6.2
59 %define V_config 20120627
60 %define V_perl 5.16.0
61 %define V_openssl 1.0.1c
62 %define V_xz 5.0.4
63 %define V_shtool 2.0.8
64 %define V_libarchive 3.0.3
65 %define V_diffutils 3.2
66 %define V_svs 1.1.0
68 # package information
69 Name: openpkg
70 Summary: OpenPKG Framework
71 URL: http://openpkg.org/
72 Vendor: OpenPKG GmbH
73 Packager: OpenPKG GmbH
74 Distribution: OpenPKG
75 Class: BOOT
76 Group: Bootstrapping
77 License: Proprietary, Open Source
78 Version: 4.6.7
79 Release: 20120800
81 # list of pristine upstream sources
82 Source0: ftp://ftp.gnu.org/gnu/patch/patch-%{V_patch}.tar.gz
83 Source1: ftp://ftp.cwru.edu/pub/bash/bash-%{V_bash}.tar.gz
84 Source2: ftp://ftp.gnu.org/gnu/make/make-%{V_make}.tar.gz
85 Source3: ftp://ftp.gnu.org/gnu/tar/tar-%{V_tar}.tar.gz
86 Source4: http://download.openpkg.org/components/versioned/config/config-%{V_config}.tar.gz
87 Source5: http://download.openpkg.org/components/derived/gzip/gzip-%{V_gzip}.tar
88 Source6: http://download.openpkg.org/components/derived/perl/perl-%{V_perl}-mini.tar.gz
89 Source7: http://rpm5.org/files/rpm/rpm-%{V_rpm_major}/rpm-%{V_rpm_major}.%{V_rpm_minor}.tar.gz
90 Source8: ftp://ftp.openssl.org/source/openssl-%{V_openssl}.tar.gz
91 Source9: ftp://ftp.ossp.org/pkg/lib/uuid/uuid-%{V_uuid}.tar.gz
92 Source10: http://curl.haxx.se/download/curl-%{V_curl}.tar.gz
93 Source11: http://switch.dl.sourceforge.net/beecrypt/beecrypt-%{V_beecrypt}.tar.gz
94 Source12: http://www.bzip.org/%{V_bzip2}/bzip2-%{V_bzip2}.tar.gz
95 Source13: http://www.zlib.net/zlib-%{V_zlib}.tar.gz
96 Source14: http://rpm5.org/files/popt/popt-%{V_popt}.tar.gz
97 Source15: http://www.sqlite.org/sqlite-%{V_sqlite}.tar.gz
98 Source16: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-%{V_pcre}.tar.gz
99 Source17: http://libarchive.googlecode.com/files/libarchive-%{V_libarchive}.tar.gz
100 Source18: ftp://ftp.gnu.org/gnu/diffutils/diffutils-%{V_diffutils}.tar.gz
101 Source19: ftp://ftp.ossp.org/pkg/tool/svs/svs-%{V_svs}.tar.gz
102 Source20: http://tukaani.org/xz/xz-%{V_xz}.tar.gz
104 # list of local patches against pristine upstream sources
105 Source100: bash.patch
106 Source101: bash.patch.vendor
107 Source102: beecrypt.patch
108 Source103: make.patch
109 Source104: openssl.patch
110 Source105: perl.patch
111 Source106: tar.patch
112 Source107: rpm.patch
113 Source108: popt.patch
114 Source109: sqlite.patch
115 Source110: curl.patch
116 Source111: pcre.patch
117 Source112: diffutils.patch
118 Source113: libarchive.patch
119 Source114: patch.strnlen.c
120 Source115: patch.Makefile.in
121 Source116: xz.patch
122 Source117: zlib.patch
124 # list of local sources
125 Source200: README
126 Source201: etc.prereq.sh
127 Source202: etc.usrgrp.sh
128 Source203: etc.wrapbin.sh
129 Source204: etc.wrapsrc.sh
130 Source205: dot.bash_login
131 Source206: dot.bashrc
132 Source207: dot.lsyncrc
133 Source208: local.README
134 Source209: lsync
135 Source210: lsync.8
136 Source211: lsync.pod
137 Source212: man.sh
138 Source213: openpkg.1
139 Source214: openpkg.boot
140 Source215: openpkg.com.pgp
141 Source216: openpkg.net.pgp
142 Source217: openpkg.org.pgp
143 Source218: openpkg.pod
144 Source219: openpkg.sh
145 Source220: rc
146 Source221: rc.8
147 Source222: rc.conf
148 Source223: rc.func
149 Source224: rc.openpkg
150 Source225: rc.pod
151 Source226: release.8
152 Source227: release.pod
153 Source228: release.sh
154 Source229: root.README
155 Source230: rpm-config.8
156 Source231: rpm-config.pod
157 Source232: rpm-config.sh
158 Source233: rpmdb
159 Source234: rpmtool
160 Source235: rpmtool.8
161 Source236: rpmtool.pod
162 Source237: shtool
163 Source238: shtool.sh
164 Source239: uuid.8
165 Source240: uuid.pod
166 Source241: uuid.sh
167 Source242: rpmmacros
168 Source243: rpmpopt
169 Source244: curl.sh
170 Source245: index.pl
171 Source246: index.8
172 Source247: index.pod
173 Source248: build.pl
174 Source249: build.8
175 Source250: build.pod
176 Source251: makeproxy.pl
177 Source252: makeproxy.8
178 Source253: lint-fsl.pl
179 Source254: lint-rc.pl
180 Source255: lint-rpm.pl
181 Source256: lint-spec.pl
182 Source257: dev.pl
183 Source258: dev.8
184 Source259: dev.pod
185 Source260: openpkg.mk
186 Source261: openpkg.c
187 Source262: Makefile
188 Source263: mutex.c
189 Source264: mutex.mk
190 Source265: register.sh
191 Source266: register.pod
192 Source267: register.8
193 Source268: rpm.sh
194 Source269: license.lua
195 Source270: license-BOOT.txt
196 Source271: license-COMMUNITY.txt
197 Source272: license-EVAL.txt
198 Source273: license-EXAMPLE.txt
199 Source274: license-PROMO.txt
200 Source275: license-RECOVERY.txt
201 Source276: license.sh
202 Source277: license.pod
203 Source278: license.8
204 Source279: rpmlua
205 Source280: sea.sh
206 Source281: sea.pod
207 Source282: sea.8
208 Source283: stack.sh
209 Source284: stack.pod
210 Source285: stack.8
211 Source286: search.pl
212 Source287: search.pod
213 Source288: search.8
214 Source289: mirror.pl
215 Source290: mirror.pod
216 Source291: mirror.8
218 # build information
219 BuildRoot: %{l_buildroot}
220 AutoReq: no
221 AutoReqProv: no
222 Provides: %{l_prefix}
223 Provides: OpenPKG
224 Provides: openpkg = %{release}-%{release}
226 %description
227 This is the OpenPKG Framework, the so-called "bootstrap" package
228 of OpenPKG. OpenPKG is a cross-platform, self-contained, RPM-based
229 software packaging solution, targeting the flexible building of
230 software stacks on Unix platforms. The RPM Package Manager (RPM)
231 is the underlying, sophisticated and portable package management
232 tool which drives the automated building, installation, management
233 and deinstallation of all Unix software components in an OpenPKG
234 software stack.
236 This OpenPKG package contains the following individual
237 software components (individual licenses listed in brackets):
238 OpenPKG Framework %(echo "%{version}" | awk '{ printf("%%-7s", $1); }') [Proprietary]
239 rpm5.org RPM %(echo "%{V_rpm_major}.%{V_rpm_minor}" | awk '{ printf("%%-7s", $1); }') [LGPL]
240 rpm5.org POPT %(echo "%{V_popt}" | awk '{ printf("%%-7s", $1); }') [LGPL]
241 BeeCrypt %(echo "%{V_beecrypt}" | awk '{ printf("%%-7s", $1); }') [LGPL]
242 Lua %(echo "%{V_lua}" | awk '{ printf("%%-7s", $1); }') [MIT]
243 Berkeley-DB %(echo "%{V_db}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT]
244 SQLite %(echo "%{V_sqlite}" | awk '{ printf("%%-7s", $1); }') [Public-Domain]
245 PCRE %(echo "%{V_pcre}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT]
246 ZLib %(echo "%{V_zlib}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT]
247 XZ %(echo "%{V_xz}" | awk '{ printf("%%-7s", $1); }') [PD/LGPL/GPL]
248 GNU Bzip2 %(echo "%{V_bzip2}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT]
249 GNU Gzip %(echo "%{V_gzip}" | awk '{ printf("%%-7s", $1); }') [GPL]
250 GNU Tar %(echo "%{V_tar}" | awk '{ printf("%%-7s", $1); }') [GPL]
251 GNU Patch %(echo "%{V_patch}" | awk '{ printf("%%-7s", $1); }') [GPL]
252 GNU Shtool %(echo "%{V_shtool}" | awk '{ printf("%%-7s", $1); }') [GPL]
253 GNU Make %(echo "%{V_make}" | awk '{ printf("%%-7s", $1); }') [GPL]
254 GNU Bash %(echo "%{V_bash}.%{V_bash_pl}" | awk '{ printf("%%-7s", $1); }') [GPL]
255 GNU DiffUtils %(echo "%{V_diffutils}" | awk '{ printf("%%-7s", $1); }') [GPL]
256 BSD libarchive %(echo "%{V_libarchive}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT]
257 OSSP uuid %(echo "%{V_uuid}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT]
258 OSSP svs %(echo "%{V_svs}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT]
259 cURL %(echo "%{V_curl}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT]
260 OpenSSL %(echo "%{V_openssl}" | awk '{ printf("%%-7s", $1); }') [BSD]
261 Perl %(echo "%{V_perl}" | awk '{ printf("%%-7s", $1); }') [Artistic]
263 %track
264 prog openpkg:bash = {
265 version = %{V_bash}
266 url = ftp://ftp.cwru.edu/pub/bash/
267 regex = bash-(__VER__)\.tar\.gz
268 }
269 prog openpkg:bzip2 = {
270 version = %{V_bzip2}
271 url = http://www.bzip.org/downloads.html
272 regex = bzip2-(__VER__)\.tar\.gz
273 }
274 prog openpkg:curl = {
275 version = %{V_curl}
276 url = http://curl.haxx.se/download/
277 regex = curl-(__VER__)\.tar\.gz
278 }
279 prog openpkg:pcre = {
280 version = %{V_pcre}
281 url = ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
282 regex = pcre-(__VER__)\.tar\.gz
283 }
284 prog openpkg:gzip = {
285 version = %{V_gzip}
286 url = ftp://ftp.gnu.org/gnu/gzip/
287 regex = gzip-(__VER__)\.tar(\.gz)?
288 }
289 prog openpkg:make = {
290 version = %{V_make}
291 url = ftp://ftp.gnu.org/gnu/make/
292 regex = make-(__VER__)\.tar\.gz
293 }
294 prog openpkg:patch = {
295 version = %{V_patch}
296 url = ftp://ftp.gnu.org/gnu/patch/
297 regex = patch-(__VER__)\.tar\.gz
298 }
299 prog openpkg:popt = {
300 version = %{V_popt}
301 url = http://rpm5.org/files/popt/
302 regex = popt-(\d+\.\d+)\.tar\.gz
303 }
304 prog openpkg:rpm = {
305 version = %{V_rpm_major}.%{V_rpm_minor}
306 url = http://rpm5.org/files/rpm/rpm-%{V_rpm_major}/
307 regex = rpm-(\d+\.\d+[.ab]\d+)\.tar\.gz
308 }
309 prog openpkg:tar = {
310 version = %{V_tar}
311 url = ftp://ftp.gnu.org/gnu/tar/
312 regex = tar-(__VER__)\.tar\.gz
313 }
314 prog openpkg:zlib = {
315 version = %{V_zlib}
316 url = http://www.zlib.net/
317 regex = zlib-(__VER__)\.tar\.gz
318 }
319 prog openpkg:diffutils = {
320 version = %{V_diffutils}
321 url = ftp://alpha.gnu.org/gnu/diffutils/
322 regex = diffutils-(__VER__)\.tar\.gz
323 }
324 prog openpkg:libarchive = {
325 version = %{V_libarchive}
326 url = http://code.google.com/p/libarchive/downloads/list
327 regex = libarchive-(__VER__)\.tar\.gz
328 }
329 prog openpkg:uuid = {
330 version = %{V_uuid}
331 url = ftp://ftp.ossp.org/pkg/lib/uuid/
332 regex = uuid-(__VER__)\.tar\.gz
333 }
334 prog openpkg:svs = {
335 version = %{V_svs}
336 url = ftp://ftp.ossp.org/pkg/tool/svs/
337 regex = svs-(__VER__)\.tar\.gz
338 }
339 prog openpkg:config = {
340 version = %{V_config}
341 url = http://download.openpkg.org/components/versioned/config/
342 regex = config-(__VER__)\.tar\.gz
343 }
344 prog openpkg:beecrypt = {
345 version = %{V_beecrypt}
346 url = http://sourceforge.net/project/showfiles.php?group_id=8924&package_id=9007
347 regex = beecrypt-(__VER__)\.tar\.gz
348 }
349 prog openpkg:perl = {
350 version = %{V_perl}
351 url = http://download.openpkg.org/components/derived/perl/
352 regex = perl-(__VER__)-mini\.tar\.gz
353 }
354 prog openpkg:openssl = {
355 version = %{V_openssl}
356 url = ftp://ftp.openssl.org/source/
357 regex = openssl-(\d+\.\d+\.\d+[a-z]?)\.tar\.gz
358 }
359 prog openpkg:lua = {
360 version = %{V_lua}
361 url = http://www.lua.org/download.html
362 regex = lua-(\d+\.\d+\.\d+)\.tar\.gz
363 }
364 prog openpkg:sqlite = {
365 version = %{V_sqlite}
366 url = http://www.sqlite.org/download.html
367 regex = sqlite-(\d+\.\d+\.\d+(?:\.\d+)?)\.tar\.gz
368 }
369 prog openpkg:xz = {
370 version = %{V_xz}
371 url = http://tukaani.org/xz/
372 regex = xz-(\d+\.\d+\.\d+)\.tar\.gz
373 }
375 %prep
376 # skip in bootstrap phase 2 (see openpkg.boot)
377 [ ".$OPENPKG_BOOT" = .1 ] && exit 0
379 # switch into a temporary build area
380 rm -rf openpkg-%{version}
381 mkdir openpkg-%{version}
382 cd openpkg-%{version}
383 rm -f .buildenv
384 touch .buildenv
386 # provide a bootstrap alternative to %{SOURCE xxx} because else
387 # it is not possible to upgrade a newer OpenPKG RPM with an older
388 # OpenPKG RPM.
389 echo >>.buildenv 'SOURCE () {'
390 echo >>.buildenv ' if [ -f "%{_specdir}/$1" ]; then'
391 echo >>.buildenv ' echo "%{_specdir}/$1"'
392 echo >>.buildenv ' else'
393 echo >>.buildenv ' echo "%{_sourcedir}/$1"'
394 echo >>.buildenv ' fi'
395 echo >>.buildenv '}'
396 echo >>.buildenv 'VERBOSE () {'
397 echo >>.buildenv ' if [ -f "%{_specdir}/rpmtool" ]; then'
398 echo >>.buildenv ' echo "$*" | sh %{_specdir}/rpmtool msg'
399 echo >>.buildenv ' else'
400 echo >>.buildenv ' echo "$*" | sh %{_sourcedir}/rpmtool msg'
401 echo >>.buildenv ' fi'
402 echo >>.buildenv '}'
403 . ./.buildenv
405 # display verbosity header
406 set +x; VERBOSE "PREPARATION: Determine Build Tool Paths"; set -x
408 # determine path to shtool
409 shtool=`SOURCE shtool`
410 echo "shtool=$shtool" >>./.buildenv
412 # determine development tools
413 # - bootstrapping: %{l_xxx} is set via sed(1)
414 # - upgrading new: %{l_xxx} is set via rpmmacros
415 # - upgrading old: %{l_xxx} is not set at all
417 # manually make sure tar(1) is available
418 l_tar=""; export l_tar
419 [ ".%{?l_tar:set}" = .set ] && l_tar="%{l_tar}"
420 [ ".%{?use_tar:set}" = .set ] && l_tar="%{use_tar}"
421 if [ ".$l_tar" = . ]; then
422 l_tar=`sh $shtool path gtar tar`
423 if [ ".$l_tar" = . ]; then
424 echo "openpkg: prerequisite tool \`gtar' or \`tar' not found"
425 exit 1
426 fi
427 fi
428 echo "l_tar=\"$l_tar\"; export l_tar" >>.buildenv
430 # manually make sure make(1) is available
431 l_make=""; export l_make
432 [ ".%{?l_make:set}" = .set ] && l_make="%{l_make}"
433 [ ".%{?use_make:set}" = .set ] && l_make="%{use_make}"
434 if [ ".$l_make" = . ]; then
435 l_make=`sh $shtool path gmake make`
436 if [ ".$l_make" = . ]; then
437 echo "openpkg: prerequisite tool \`gmake' or \`make' not found"
438 exit 1
439 fi
440 fi
441 echo "l_make=\"$l_make\"; export l_make" >>.buildenv
443 # manually make sure cc(1) is available
444 l_cc=""; export l_cc
445 [ ".%{?l_cc:set}" = .set ] && l_cc="%{l_cc}"
446 [ ".%{?use_cc:set}" = .set ] && l_cc="%{use_cc}"
447 if [ ".$l_cc" = . ]; then
448 l_cc=`sh $shtool path gcc cc`
449 if [ ".$l_cc" = . ]; then
450 echo "openpkg: prerequisite tool \`gcc' or \`cc' not found"
451 exit 1
452 fi
453 fi
454 echo "l_cc=\"$l_cc\"; export l_cc" >>.buildenv
456 # manually make sure ar(1) is available
457 l_ar=""; export l_ar
458 [ ".%{?l_ar:set}" = .set ] && l_ar="%{l_ar}"
459 [ ".%{?use_ar:set}" = .set ] && l_ar="%{use_ar}"
460 if [ ".$l_ar" = . ]; then
461 l_ar=`sh $shtool path ar`
462 if [ ".$l_ar" = . ]; then
463 echo "openpkg: prerequisite tool \`ar' not found"
464 exit 1
465 fi
466 fi
467 echo "l_ar=\"$l_ar\"; export l_ar" >>.buildenv
469 # manually make sure ld(1) is available
470 l_ld=""; export l_ld
471 [ ".%{?l_ld:set}" = .set ] && l_ld="%{l_ld}"
472 [ ".%{?use_ld:set}" = .set ] && l_ld="%{use_ld}"
473 if [ ".$l_ld" = . ]; then
474 l_ld=`sh $shtool path ld`
475 if [ ".$l_ld" = . ]; then
476 echo "openpkg: prerequisite tool \`ld' not found"
477 exit 1
478 fi
479 fi
480 echo "l_ld=\"$l_ld\"; export l_ld" >>.buildenv
482 # manually make sure as(1) is available
483 l_as=""; export l_as
484 [ ".%{?l_as:set}" = .set ] && l_as="%{l_as}"
485 [ ".%{?use_as:set}" = .set ] && l_as="%{use_as}"
486 if [ ".$l_as" = . ]; then
487 l_as=`sh $shtool path as`
488 if [ ".$l_as" = . ]; then
489 echo "openpkg: prerequisite tool \`as' not found"
490 exit 1
491 fi
492 fi
493 echo "l_as=\"$l_as\"; export l_as" >>.buildenv
495 # manually make sure strip(1) is available or use a null replacement
496 l_strip=""; export l_strip
497 [ ".%{?l_strip:set}" = .set ] && l_strip="%{l_strip}"
498 [ ".%{?use_strip:set}" = .set ] && l_strip="%{use_strip}"
499 if [ ".$l_strip" = . ]; then
500 l_strip=`sh $shtool path strip ls`
501 if [ ".$l_strip" = . ]; then
502 echo "openpkg: prerequisite tool \`strip' not found"
503 exit 1
504 fi
505 fi
506 echo "l_strip=\"$l_strip\"; export l_strip" >>.buildenv
508 # determine path to etc.usrgrp.sh script
509 usrgrp=`SOURCE etc.usrgrp.sh`
510 echo "usrgrp=$usrgrp; export usrgrp" >>./.buildenv
512 # display verbosity header
513 set +x; VERBOSE "PREPARATION: Determine OpenPKG User/Group Name/Id Pairs"; set -x
515 # determine user/group name/id pairs
516 # - bootstrapping: %{l_[smrn]{usr,grp}} is set via sed(1)
517 # - upgrading new: %{l_[smrn]{usr,grp}} is set via rpmmacros
518 # - upgrading old: %{l_[smrn]{usr,grp}} is not set at all
519 susr=""; [ ".%{?l_susr:set}" = .set ] && susr="%{l_susr}"
520 sgrp=""; [ ".%{?l_sgrp:set}" = .set ] && sgrp="%{l_sgrp}"
521 musr=""; [ ".%{?l_musr:set}" = .set ] && musr="%{l_musr}"
522 mgrp=""; [ ".%{?l_mgrp:set}" = .set ] && mgrp="%{l_mgrp}"
523 rusr=""; [ ".%{?l_rusr:set}" = .set ] && rusr="%{l_rusr}"
524 rgrp=""; [ ".%{?l_rgrp:set}" = .set ] && rgrp="%{l_rgrp}"
525 nusr=""; [ ".%{?l_nusr:set}" = .set ] && nusr="%{l_nusr}"
526 ngrp=""; [ ".%{?l_ngrp:set}" = .set ] && ngrp="%{l_ngrp}"
527 # corresponding ids
528 suid=""; [ ".%{?l_suid:set}" = .set ] && suid="%{l_suid}"
529 sgid=""; [ ".%{?l_sgid:set}" = .set ] && sgid="%{l_sgid}"
530 muid=""; [ ".%{?l_muid:set}" = .set ] && muid="%{l_muid}"
531 mgid=""; [ ".%{?l_mgid:set}" = .set ] && mgid="%{l_mgid}"
532 ruid=""; [ ".%{?l_ruid:set}" = .set ] && ruid="%{l_ruid}"
533 rgid=""; [ ".%{?l_rgid:set}" = .set ] && rgid="%{l_rgid}"
534 nuid=""; [ ".%{?l_nuid:set}" = .set ] && nuid="%{l_nuid}"
535 ngid=""; [ ".%{?l_ngid:set}" = .set ] && ngid="%{l_ngid}"
536 # compat:
537 usr=""; [ ".%{?l_fsusr:set}" = .set ] && usr="%{l_fsusr}"
538 grp=""; [ ".%{?l_fsgrp:set}" = .set ] && grp="%{l_fsgrp}"
539 eval `sh $usrgrp \
540 --usr="$usr" --grp="$grp" \
541 --susr="$susr" --sgrp="$sgrp" \
542 --musr="$musr" --mgrp="$mgrp" \
543 --rusr="$rusr" --rgrp="$rgrp" \
544 --nusr="$nusr" --ngrp="$ngrp" \
545 --suid="$suid" --sgid="$sgid" \
546 --muid="$muid" --mgid="$mgid" \
547 --ruid="$ruid" --rgid="$rgid" \
548 --nuid="$nuid" --ngid="$ngid"`
549 echo "susr=\"$susr\"; export susr" >>.buildenv
550 echo "sgrp=\"$sgrp\"; export sgrp" >>.buildenv
551 echo "musr=\"$musr\"; export musr" >>.buildenv
552 echo "mgrp=\"$mgrp\"; export mgrp" >>.buildenv
553 echo "rusr=\"$rusr\"; export rusr" >>.buildenv
554 echo "rgrp=\"$rgrp\"; export rgrp" >>.buildenv
555 echo "nusr=\"$nusr\"; export nusr" >>.buildenv
556 echo "ngrp=\"$ngrp\"; export ngrp" >>.buildenv
557 echo "suid=\"$suid\"; export suid" >>.buildenv
558 echo "sgid=\"$sgid\"; export sgid" >>.buildenv
559 echo "muid=\"$muid\"; export muid" >>.buildenv
560 echo "mgid=\"$mgid\"; export mgid" >>.buildenv
561 echo "ruid=\"$ruid\"; export ruid" >>.buildenv
562 echo "rgid=\"$rgid\"; export rgid" >>.buildenv
563 echo "nuid=\"$nuid\"; export nuid" >>.buildenv
564 echo "ngid=\"$ngid\"; export ngid" >>.buildenv
566 # display verbosity header
567 set +x; VERBOSE "PREPARATION: Determine OpenPKG Instance Environment"; set -x
569 # determine installation location id
570 if [ ".%{?l_tag_fmt:set}" = .set ]; then
571 tag="%{l_tag_fmt}"
572 else
573 tag="<compat>"
574 fi
575 echo "tag=\"$tag\"; export tag" >>.buildenv
577 # determine platform id
578 s=`(uname -s) 2>/dev/null` || s='Unknown'
579 r=`(uname -r) 2>/dev/null` || r='0.0'
580 plid="${s}/${r}"
581 echo "plid=\"$plid\"; export plid" >>.buildenv
583 # determine platform-specific build environment
584 case $plid in
585 FreeBSD/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
586 NetBSD/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
587 Linux/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
588 SunOS/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin" ;;
589 UnixWare/*) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin" ;;
590 AIX/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin" ;;
591 Darwin/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
592 OSF1/V5.* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
593 HP-UX/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
594 IRIX*/6.* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
595 CYGWIN*/* ) l_build_path="/bin:/usr/bin:/usr/sbin" ;;
596 * ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
597 esac
598 case $plid in
599 FreeBSD/* ) l_build_ldlp="/lib:/usr/lib" ;;
600 NetBSD/* ) l_build_ldlp="/lib:/usr/lib" ;;
601 Linux/* ) l_build_ldlp="/lib:/usr/lib" ;;
602 SunOS/* ) l_build_ldlp="/usr/lib:/usr/ccs/lib" ;;
603 UnixWare/*) l_build_ldlp="/usr/lib:/usr/ccs/lib" ;;
604 AIX/* ) l_build_ldlp="/usr/lib:/usr/ccs/lib" ;;
605 Darwin/* ) l_build_ldlp="/usr/lib" ;;
606 OSF1/V5.* ) l_build_ldlp="/usr/lib" ;;
607 HP-UX/* ) l_build_ldlp="/usr/lib" ;;
608 IRIX*/6.* ) l_build_ldlp="/usr/lib" ;;
609 CYGWIN*/* ) l_build_ldlp="/lib:/usr/lib" ;;
610 * ) l_build_ldlp="/usr/lib" ;;
611 esac
612 case $plid in
613 * ) l_build_ulim=":" ;;
614 esac
615 echo "l_build_path=\"$l_build_path\"; export l_build_path" >>.buildenv
616 echo "l_build_ldlp=\"$l_build_ldlp\"; export l_build_ldlp" >>.buildenv
617 echo "l_build_ulim=\"$l_build_ulim\"; export l_build_ulim" >>.buildenv
619 # ACTIVATE AGAIN AFTER ALL 4.2.5 VERSIONS WERE UPGRADED TO AT LEAST 4.2.7
620 # determine status of unprivileged operation
621 if [ ".%{?l_unprivileged:set}" = .set ]; then
622 l_unprivileged="%{l_unprivileged}"
623 else
624 l_unprivileged="no"
625 fi
626 echo "l_unprivileged=\"$l_unprivileged\"; export l_unprivileged" >>.buildenv
628 # display verbosity header
629 set +x; VERBOSE "PREPARATION: Build GNU gzip (Compression Tool)"; set -x
631 # bootstrap GNU zip tool
632 ${l_tar} xf `SOURCE gzip-%{V_gzip}.tar` 2>/dev/null || true
633 ( cd gzip-%{V_gzip}
634 ( echo "ac_cv_prog_cc_g=no"
635 echo "ac_cv_header_getopt_h=no"
636 ) >config.cache
637 case $plid in
638 Darwin/* ) echo "gzip_cv_assembler=no" >>config.cache ;;
639 esac
640 CC="${l_cc}" \
641 GREP="grep" \
642 ./configure \
643 --cache-file=./config.cache
644 ${l_make} || exit $?
645 ( mv gzip ..; ${l_make} clean || true; mv ../gzip . ) || exit $?
646 ) || exit $?
647 l_gzip="`pwd`/gzip-%{V_gzip}/gzip"; export l_gzip
648 echo "l_gzip=\"$l_gzip\"; export l_gzip" >>.buildenv
650 # display verbosity header
651 set +x; VERBOSE "PREPARATION: Unpack GNU configuration guessing utilities"; set -x
653 # unpack GNU config.guess
654 ${l_gzip} -dc `SOURCE config-%{V_config}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
656 # display verbosity header
657 set +x; VERBOSE "PREPARATION: Build GNU patch (Source Patching Tool)"; set -x
659 # bootstrap GNU patch tool
660 ${l_gzip} -dc `SOURCE patch-%{V_patch}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
661 ( cd patch-%{V_patch}
662 chmod a+x install-sh
663 echo '#!' >update-version.sh
664 cp `SOURCE patch.Makefile.in` Makefile.in
665 cp `SOURCE patch.strnlen.c` gl/lib/strnlen.c
666 ( echo 'ac_cv_func_setmode=${ac_cv_func_setmode=no}'
667 echo 'ac_cv_prog_cc_g=no'
668 false=`sh $shtool path false`
669 echo "ac_cv_path_ed_PROGRAM=\${ac_cv_path_ed_PROGRAM=$false}"
670 ) >config.cache
671 CC="${l_cc}" \
672 ./configure \
673 --cache-file=./config.cache \
674 --enable-merge \
675 --disable-largefile
676 ${l_make} || exit $?
677 ( mv src/patch ..; ${l_make} clean || true; mv ../patch . ) || exit $?
678 ) || exit $?
679 l_patch="`pwd`/patch-%{V_patch}/patch"; export l_patch
680 case `sh $shtool platform -n -L -S "" -C "+" -F "%<ap>-%<sp>"` in
681 *-cygwin* )
682 # Cygwin under Windows Vista dislikes executables with
683 # "patch" in the same and would require a "*.manifest"
684 # file applied with the "mt.exe" from the "Windows
685 # Software Development Kit (SDK)" in order to escape from
686 # UAC. An easy alternative is to just rename the file to a
687 # different name.
688 mv patch-%{V_patch}/patch patch-%{V_patch}/pitch
689 l_patch="`pwd`/patch-%{V_patch}/pitch"
690 ;;
691 esac
692 echo "l_patch=\"$l_patch\"; export l_patch" >>.buildenv
694 # display verbosity header
695 set +x; VERBOSE "BUILD: Build GNU tar (Archiving Tool)"; set -x
697 # build GNU tar tool
698 ${l_gzip} -dc `SOURCE tar-%{V_tar}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
699 ( cd tar-%{V_tar}
700 ${l_patch} -p0 <`SOURCE tar.patch`
701 ( echo 'am_cv_func_iconv=no'
702 echo 'am_cv_lib_iconv=no'
703 echo 'ac_cv_lib_iconv_iconv=no'
704 echo 'ac_cv_header_iconv_h=no'
705 echo 'ac_cv_type_iconv_t=no'
706 ) >config.cache
707 CC="${l_cc}" \
708 MAKEINFO="true" \
709 GREP="grep" \
710 FORCE_UNSAFE_CONFIGURE=1 \
711 ./configure \
712 --cache-file=./config.cache \
713 --prefix=%{l_prefix} \
714 --with-gzip=%{l_prefix}/lib/openpkg/gzip \
715 --with-bzip2=%{l_prefix}/lib/openpkg/bzip2 \
716 --disable-nls
717 ${l_make} || exit $?
718 ( mv src/tar ..; ${l_make} clean || true; mv ../tar . ) || exit $?
719 ) || exit $?
720 l_tar="`pwd`/tar-%{V_tar}/tar"; export l_tar
721 echo "l_tar=\"$l_tar\"; export l_tar" >>.buildenv
723 # display verbosity header
724 set +x; VERBOSE "PREPARATION: Unpack Distribution Tarballs"; set -x
726 # unpack distribution tarballs
727 ${l_gzip} -dc `SOURCE rpm-%{V_rpm_major}.%{V_rpm_minor}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
728 ${l_gzip} -dc `SOURCE popt-%{V_popt}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
729 ${l_gzip} -dc `SOURCE sqlite-%{V_sqlite}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
730 ${l_gzip} -dc `SOURCE zlib-%{V_zlib}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
731 ${l_gzip} -dc `SOURCE bzip2-%{V_bzip2}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
732 ${l_gzip} -dc `SOURCE xz-%{V_xz}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
733 ${l_gzip} -dc `SOURCE curl-%{V_curl}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
734 ${l_gzip} -dc `SOURCE pcre-%{V_pcre}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
735 ${l_gzip} -dc `SOURCE make-%{V_make}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
736 ${l_gzip} -dc `SOURCE bash-%{V_bash}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
737 ${l_gzip} -dc `SOURCE uuid-%{V_uuid}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
738 ${l_gzip} -dc `SOURCE beecrypt-%{V_beecrypt}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
739 ${l_gzip} -dc `SOURCE perl-%{V_perl}-mini.tar.gz` | ${l_tar} xf - 2>/dev/null || true
740 ${l_gzip} -dc `SOURCE openssl-%{V_openssl}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
741 ${l_gzip} -dc `SOURCE libarchive-%{V_libarchive}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
742 ${l_gzip} -dc `SOURCE diffutils-%{V_diffutils}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
743 ${l_gzip} -dc `SOURCE svs-%{V_svs}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
745 # update config.guess/config.sub
746 for dir in curl-%{V_curl} make-%{V_make} bash-%{V_bash}/support; do
747 chmod u+w $dir/config.guess $dir/config.sub >/dev/null 2>&1 || true
748 cp config/config.guess $dir/
749 cp config/config.sub $dir/
750 done
752 # display verbosity header
753 set +x; VERBOSE "PREPARATION: Apply OpenPKG Patches to Distributions"; set -x
755 # apply OpenPKG patches to distribution trees
756 ( cd rpm-%{V_rpm_major}.%{V_rpm_minor}
757 sed -e "s;@l_prefix@;%{l_prefix};g" <`SOURCE rpm.patch` | ${l_patch} -p0
758 ) || exit $?
759 ( cd make-%{V_make}
760 ${l_patch} -p0 <`SOURCE make.patch`
761 ) || exit $?
762 ( cd bash-%{V_bash}
763 ${l_patch} -p0 <`SOURCE bash.patch`
764 ${l_patch} -p0 <`SOURCE bash.patch.vendor`
765 sleep 1
766 touch y.tab.[ch]
767 touch configure config.h.in
768 ) || exit $?
769 ( cd beecrypt-%{V_beecrypt}
770 ${l_patch} -p0 <`SOURCE beecrypt.patch`
771 ) || exit $?
772 ( cd perl-%{V_perl}
773 ${l_patch} -p0 <`SOURCE perl.patch`
774 ) || exit $?
775 ( cd openssl-%{V_openssl}
776 ${l_patch} -p0 <`SOURCE openssl.patch`
777 ) || exit $?
778 ( cd popt-%{V_popt}
779 ${l_patch} -p0 <`SOURCE popt.patch`
780 ) || exit $?
781 ( cd sqlite-%{V_sqlite}
782 ${l_patch} -p0 <`SOURCE sqlite.patch`
783 ) || exit $?
784 ( cd curl-%{V_curl}
785 ${l_patch} -p0 <`SOURCE curl.patch`
786 ) || exit $?
787 ( cd pcre-%{V_pcre}
788 ${l_patch} -p0 <`SOURCE pcre.patch`
789 ) || exit $?
790 ( cd diffutils-%{V_diffutils}
791 ${l_patch} -p0 <`SOURCE diffutils.patch`
792 ) || exit $?
793 ( cd libarchive-%{V_libarchive}
794 ${l_patch} -p0 <`SOURCE libarchive.patch`
795 ) || exit $?
796 ( cd zlib-%{V_zlib}
797 ${l_patch} -p0 <`SOURCE zlib.patch`
798 ) || exit $?
799 ( cd xz-%{V_xz}
800 ${l_patch} -p0 <`SOURCE xz.patch`
801 ) || exit $?
803 # display verbosity header
804 set +x; VERBOSE "PREPARATION: Build GNU make (Build Tool)"; set -x
806 # bootstrap GNU make tool
807 ( cd make-%{V_make}
808 CC="${l_cc}" \
809 ./configure \
810 --without-libiconv-prefix \
811 --without-libintl-prefix \
812 --disable-nls \
813 --disable-largefile
814 ${l_make}
815 ( mv make ..; ${l_make} clean || true; mv ../make . ) || exit $?
816 ) || exit $?
817 l_make="`pwd`/make-%{V_make}/make"; export l_make
818 echo "l_make=\"$l_make\"; export l_make" >>.buildenv
820 %build
821 # skip in bootstrap phase 2 (see openpkg.boot)
822 [ ".$OPENPKG_BOOT" = .1 ] && exit 0
824 # switch into a temporary build area
825 cd openpkg-%{version}
826 . ./.buildenv
828 # display verbosity header
829 set +x; VERBOSE "BUILD: Build GNU bash (Bourne-Again Shell)"; set -x
831 # build GNU bash tool
832 ( cd bash-%{V_bash}
833 sh $shtool subst \
834 -e 's;@l_openpkg_release@;OpenPKG;' \
835 version.c
836 ( # force disabled wide-character support
837 echo "ac_cv_header_wchar_h=no"
838 echo "ac_cv_header_wctype_h=no"
839 echo "ac_cv_func_mbsrtowcs=no"
840 # force disabled internationalization support
841 echo "ac_cv_header_libintl_h=no"
842 echo "ac_cv_func_gettext=no"
843 echo "ac_cv_func_textdomain=no"
844 echo "ac_cv_func_bindtextdomain=no"
845 echo "ac_cv_lib_intl_bindtextdomain=no"
846 # disable building with debug symbols
847 echo "ac_cv_prog_cc_g=no"
848 ) >config.cache
849 AUTOCONF="true"
850 export AUTOCONF
851 CC="${l_cc}"
852 export CC
853 LDFLAGS=""
854 export LDFLAGS
855 case "$plid" in
856 Darwin/* ) LDFLAGS="-Wl,-search_paths_first" ;;
857 esac
858 ./configure \
859 --cache-file=./config.cache \
860 --prefix=%{l_prefix} \
861 --without-curses \
862 --without-gnu-malloc \
863 --disable-nls
864 ${l_make} || exit $?
865 ( mv bash ..; ${l_make} clean || true; mv ../bash . ) || exit $?
866 ) || exit $?
868 # display verbosity header
869 set +x; VERBOSE "BUILD: Build GNU bzip2 (Compression Library)"; set -x
871 # build BZIP2 library
872 ( cd bzip2-%{V_bzip2}
873 ${l_make} CC="${l_cc}" CFLAGS="-O" libbz2.a bzip2 || exit $?
874 ( echo "# libbz2.la - a libtool library file"
875 echo "# Generated by ltmain.sh - GNU libtool x.x.x"
876 echo "dlname=''"
877 echo "library_names=''"
878 echo "old_library='libbz2.a'"
879 echo "dependency_libs=''"
880 echo "current=0"
881 echo "age=0"
882 echo "revision=0"
883 echo "installed=no"
884 echo "dlopen=''"
885 echo "dlpreopen=''"
886 echo "libdir='%{l_prefix}'"
887 ) >libbz2.la
888 ln -s . .libs
889 ) || exit $?
891 # display verbosity header
892 set +x; VERBOSE "BUILD: Build Zlib (Compression Library)"; set -x
894 # build ZLIB library
895 ( cd zlib-%{V_zlib}
896 CC="${l_cc}" CFLAGS="-O" ./configure
897 ${l_make} CC="${l_cc}" libz.a || exit $? # intentionally do not pass CFLAGS here
898 ) || exit $?
900 # display verbosity header
901 set +x; VERBOSE "BUILD: Build XZ (Compression Library)"; set -x
903 # build XZ library
904 ( cd xz-%{V_xz}
905 opts=""
906 case "$plid" in
907 Darwin/* ) opts="--disable-assembler" ;;
908 esac
909 CC="${l_cc}" \
910 CFLAGS="-O" \
911 ./configure \
912 --prefix=%{l_prefix} \
913 --libdir="%{l_prefix}/lib" \
914 --mandir=%{l_prefix}/man \
915 --without-libiconv-prefix \
916 --without-libintl-prefix \
917 --disable-nls \
918 --disable-shared \
919 $opts
920 ${l_make} || exit $?
921 ) || exit $?
923 # display verbosity header
924 set +x; VERBOSE "BUILD: Build OSSP uuid (UUID Generation Tool)"; set -x
926 # build OSSP uuid tool
927 ( cd uuid-%{V_uuid}
928 CC="${l_cc}" \
929 CFLAGS="-O" \
930 GREP="grep" \
931 ./configure \
932 --prefix=%{l_prefix} \
933 --disable-shared
934 ${l_make} || exit $?
935 ) || exit $?
937 # display verbosity header
938 set +x; VERBOSE "BUILD: Build Perl (Programming Language)"; set -x
940 # build Perl tool
941 ( cd perl-%{V_perl}
942 chmod -R u+w .
943 sh $shtool subst \
944 -e 's;\(.*for thislib in $libswanted.*\);libswanted=`echo " $libswanted " | sed -e "s/ bind / /g" -e "s/ db / /g" -e "s/ gdbm / /g" -e "s/ iconv / /g"`\; \1;' \
945 -e 's;package=perl5;package=perl;' \
946 Configure
947 sh $shtool subst \
948 -e 's; */usr/local/lib;;' \
949 hints/freebsd.sh hints/netbsd.sh
950 libdirs=""
951 for dir in %{l_prefix}/lib /lib64 /usr/lib64 /lib /usr/lib /usr/ccs/lib; do
952 [ -d $dir ] && libdirs="$libdirs $dir"
953 done
954 ./Configure \
955 -d -e -s \
956 -Dprefix=%{l_prefix} \
957 -Dvendorprefix=%{l_prefix} \
958 -Dinstallprefix=%{l_prefix} \
959 -Dinstallstyle="lib/perl5" \
960 -Dman1dir=%{l_prefix}/man/man1 \
961 -Dman3dir=%{l_prefix}/man/man3 \
962 -Dcc="${l_cc}" -Uoptimize \
963 -Dlocincpth="%{l_prefix}/include" \
964 -Dloclibpth="%{l_prefix}/lib" \
965 -Dldflags="-L""%{l_prefix}/lib" \
966 -Dlibpth="$libdirs" \
967 -Dglibpth="$libdirs" \
968 -Dscriptdir="%{l_prefix}/bin" \
969 -Uinstallusrbinperl \
970 -Adefine:useshrplib='false' \
971 -Ui_malloc -Ui_iconv -Ui_db
972 case `sh $shtool platform -n -L -S "" -C "+" -F "%<ap>-%<sp>"` in
973 *-cygwin* ) miniperl="miniperl.exe" ;;
974 * ) miniperl="miniperl" ;;
975 esac
976 ${l_make} $miniperl || exit $?
977 rm -f *.o >/dev/null 2>&1 || true
978 ) || exit $?
979 l_perl="`pwd`/perl-%{V_perl}/miniperl"; export l_perl
980 echo "l_perl=\"$l_perl\"; export l_perl" >>.buildenv
982 # display verbosity header
983 set +x; VERBOSE "BUILD: Build OpenSSL (Crypography and SSL/TLS Toolkit)"; set -x
985 # build OpenSSL toolkit
986 ( cd openssl-%{V_openssl}
987 sh $shtool subst \
988 -e 's;-m486;-march=i486;g' \
989 -e 's;BN_LLONG *;;' \
990 Configure
991 sh $shtool subst \
992 -e 's;test "$OSTYPE" = msdosdjgpp;true;' \
993 util/point.sh
994 sh $shtool subst \
995 -e "1s;^.*\$;#!$l_perl;" \
996 Configure `find . -name "*.pl" -print`
997 opts=""
998 case `sh $shtool platform -n -L -S "" -C "+" -F "%<ap>-%<sp>"` in
999 *-solaris* ) opts="-lnsl -lsocket" ;;
1000 esac
1001 case `sh $shtool platform -n -L -S "" -C "+" -F "%<ap>-%<sp>"` in
1002 amd64-* ) opts="$opts -fPIC" ;;
1003 ia64-* ) opts="$opts -fPIC" ;;
1004 sparc64-freebsd* ) opts="$opts -fPIC" ;;
1005 esac
1006 CC="${l_cc}" \
1007 PERL="${l_perl}" \
1008 ./config \
1009 --prefix=%{l_prefix} \
1010 no-asm no-shared no-dso \
1011 no-zlib no-idea no-threads no-krb5 no-hw \
1012 $opts
1013 ${l_make} CC="${l_cc}" build_libs build_apps || exit $?
1014 ( mkdir lib; cd lib; ln -s ../lib*.a . ) || exit $?
1015 ) || exit $?
1017 # build BSD libarchive
1018 ( cd libarchive-%{V_libarchive}
1019 CC="${l_cc}" \
1020 CFLAGS="-O -D_POSIX_PTHREAD_SEMANTICS" \
1021 CPPFLAGS="-I`pwd`/../zlib-%{V_zlib} -I`pwd`/../bzip2-%{V_bzip2} -I`pwd`/../xz-%{V_xz}/src/liblzma/api -I`pwd`/../openssl-%{V_openssl}/include" \
1022 LDFLAGS="-L`pwd`/../zlib-%{V_zlib} -L`pwd`/../bzip2-%{V_bzip2} -L`pwd`/../xz-%{V_xz}/src/liblzma/.libs -L`pwd`/../openssl-%{V_openssl}" \
1023 GREP="grep" \
1024 ./configure \
1025 --prefix=%{l_prefix} \
1026 --libdir="%{l_prefix}/lib" \
1027 --enable-bsdtar \
1028 --enable-bsdcpio \
1029 --with-zlib \
1030 --with-bz2lib \
1031 --with-lzma \
1032 --without-lzmadec \
1033 --with-openssl \
1034 --without-xml2 \
1035 --without-expat \
1036 --without-iconv \
1037 --disable-shared
1038 ${l_make} || exit $?
1039 ( mv bsdcpio bsdtar ..; ${l_make} clean || true; mv ../bsdcpio ../bsdtar . ) || exit $?
1040 ) || exit $?
1042 # build GNU diffutils
1043 ( cd diffutils-%{V_diffutils}
1044 CC="${l_cc}" \
1045 CFLAGS="-O" \
1046 ./configure \
1047 --prefix=%{l_prefix} \
1048 --disable-nls
1049 ${l_make} || exit $?
1050 ( mv src/diff src/diff3 src/sdiff src/cmp ..
1051 ${l_make} clean || true
1052 mv ../diff ../diff3 ../sdiff ../cmp .
1053 ) || exit $?
1054 ) || exit $?
1056 # display verbosity header
1057 set +x; VERBOSE "BUILD: Build cURL (URL Fetching Tool)"; set -x
1059 # build cURL tool
1060 ( cd curl-%{V_curl}
1061 ( echo 'ac_cv_header_openssl_engine_h=no'
1062 echo 'lt_cv_prog_compiler_c_o_F77=no'
1063 echo 'lt_cv_sys_max_cmd_len=100'
1064 ) >config.cache
1065 CC="${l_cc}" \
1066 CFLAGS="-I`pwd`/../zlib-%{V_zlib}" \
1067 CPPFLAGS="-I`pwd`/../zlib-%{V_zlib}" \
1068 LDFLAGS="-L`pwd`/../zlib-%{V_zlib}" \
1069 GREP="grep" \
1070 ./configure \
1071 --cache-file=./config.cache \
1072 --libdir="%{l_prefix}/lib" \
1073 --without-libidn \
1074 --disable-shared \
1075 --disable-thread \
1076 --disable-ipv6 \
1077 --disable-ldap \
1078 --with-zlib=`pwd`/../zlib-%{V_zlib} \
1079 --with-ssl=`pwd`/../openssl-%{V_openssl} \
1080 --with-ca-bundle=%{l_prefix}/etc/openpkg/openpkg.x509
1081 ${l_make} || exit $?
1082 mv src/curl ..; ${l_make} clean || true; mv ../curl .
1083 ) || exit $?
1085 # build PCRE library
1086 ( cd pcre-%{V_pcre}
1087 CC="${l_cc}" \
1088 GREP="grep" \
1089 ./configure \
1090 --disable-cpp \
1091 --disable-utf8 \
1092 --disable-shared
1093 ${l_make} || exit $?
1094 ) || exit $?
1096 # display verbosity header
1097 set +x; VERBOSE "BUILD: Build BeeCrypt (Cryptography Library)"; set -x
1099 # build BeeCrypt library
1100 ( cd beecrypt-%{V_beecrypt}
1101 sh $shtool subst \
1102 -e 's;^[ ][ ]*#;#;' \
1103 aes.c base64.c blockmode.c blowfish.c entropy.c fips186.c md4.c md5.c \
1104 mp.c mtprng.c ripemd128.c ripemd160.c ripemd256.c ripemd320.c rsa.c \
1105 sha1.c sha224.c sha256.c sha2k64.c sha384.c sha512.c timestamp.c
1106 sh $shtool subst \
1107 -e 's;cppglue\.lo;;g' \
1108 -e 's;cppglue\.cxx;;g' \
1109 -e '/^CXX = /s;@CXX@;@CC@;g' \
1110 Makefile.in
1111 ( echo 'ac_cv_have_dev_dsp=no'
1112 echo 'ac_cv_have_dev_audio=no'
1113 echo 'ac_cv_func_gettimeofday=yes'
1114 echo 'bc_cv_as_noexecstack=no'
1115 ) >config.cache
1116 CC="${l_cc}" \
1117 CFLAGS="-O" \
1118 ./configure \
1119 --cache-file=./config.cache \
1120 --prefix=%{l_prefix} \
1121 --libdir="%{l_prefix}/lib" \
1122 --with-cpu=none \
1123 --with-arch=none \
1124 --without-cplusplus \
1125 --without-java \
1126 --without-python \
1127 --disable-expert-mode \
1128 --disable-aio \
1129 --disable-openmp \
1130 --disable-threads \
1131 --disable-shared
1132 ${l_make} || exit $?
1133 cp .libs/libbeecrypt.a .
1134 ) || exit $?
1136 # display verbosity header
1137 set +x; VERBOSE "BUILD: Build POPT (Option Parsing Library)"; set -x
1139 # build POPT library
1140 ( cd popt-%{V_popt}
1141 CC="${l_cc}" \
1142 CPPFLAGS="-DOPENPKG -DPOPT_fprintf=fprintf" \
1143 GREP="grep" \
1144 ./configure \
1145 --prefix=%{l_prefix} \
1146 --libdir="%{l_prefix}/lib" \
1147 --disable-shared \
1148 --with-included-gettext \
1149 --without-libintl-prefix \
1150 --without-libiconv-prefix \
1151 --disable-nls
1152 ${l_make}
1153 ) || exit $?
1155 # display verbosity header
1156 set +x; VERBOSE "BUILD: Build SQLite (RDBMS Library)"; set -x
1158 # build SQLite library
1159 ( cd sqlite-%{V_sqlite}
1160 CC="${l_cc}" \
1161 LIBS="-lm" \
1162 GREP="grep" \
1163 ./configure \
1164 --prefix=%{l_prefix} \
1165 --libdir="%{l_prefix}/lib" \
1166 --disable-threadsafe \
1167 --disable-readline \
1168 --disable-debug \
1169 --disable-amalgamation \
1170 --disable-tcl \
1171 --disable-shared
1172 ${l_make}
1173 ) || exit $?
1175 # display verbosity header
1176 set +x; VERBOSE "BUILD: Build RPM (RPM Package Manager)"; set -x
1178 # build RPM
1179 ( br=`pwd`
1180 cd rpm-%{V_rpm_major}.%{V_rpm_minor}
1182 # cheat GNU Autoconf
1183 ( echo 'ac_cv_path_MSGFMT=:'
1184 echo 'ac_cv_path_GMSGFMT=:'
1185 echo 'ac_cv_path_XGETTEXT=:'
1186 echo 'ac_cv_path_MSGMERGE=:'
1187 echo "ac_cv_header_getopt_h=no"
1188 echo "ac_cv_lib_gz_gzread=no"
1189 ) >config.cache
1191 # use miniperl
1192 PERL="${l_perl}"
1193 export PERL
1195 # set build tool flags
1196 CC="${l_cc}"
1197 CFLAGS=""
1198 CPPFLAGS="-DRPM_VENDOR_OPENPKG"
1199 LDFLAGS=""
1200 LIBS=""
1201 LIBS="$LIBS -lm"
1202 export CC
1203 export CFLAGS
1204 export CPPFLAGS
1205 export LDFLAGS
1206 export LIBS
1208 # special platform workarounds
1209 GREP="grep"
1210 export GREP
1212 # determine POPT option, RPM macros and Lua script file paths
1213 RPMPOPT="%{l_prefix}/lib/openpkg/rpmpopt"
1214 RPMPOPT="$RPMPOPT:%{l_prefix}/etc/openpkg/rpmpopt"
1215 RPMPOPT="$RPMPOPT:%{l_prefix}/etc/openpkg/rpmpopt.d/*"
1216 RPMPOPT="$RPMPOPT:~/.openpkg/rpmpopt"
1217 RPMPOPT="$RPMPOPT:@../../.openpkg/rpmpopt"
1218 RPMPOPT="$RPMPOPT:@../.openpkg/rpmpopt"
1219 RPMPOPT="$RPMPOPT:@./.openpkg/rpmpopt"
1220 RPMMACROS="%{l_prefix}/lib/openpkg/rpmmacros"
1221 RPMMACROS="$RPMMACROS:%{l_prefix}/etc/openpkg/rpmmacros"
1222 RPMMACROS="$RPMMACROS:%{l_prefix}/etc/openpkg/rpmmacros.d/*"
1223 RPMMACROS="$RPMMACROS:~/.openpkg/rpmmacros"
1224 RPMMACROS="$RPMMACROS:@../../.openpkg/rpmmacros"
1225 RPMMACROS="$RPMMACROS:@../.openpkg/rpmmacros"
1226 RPMMACROS="$RPMMACROS:@./.openpkg/rpmmacros"
1227 RPMLUA="%{l_prefix}/lib/openpkg/rpmlua"
1228 RPMLUA="$RPMLUA:%{l_prefix}/etc/openpkg/rpmlua"
1229 RPMLUA="$RPMLUA:%{l_prefix}/etc/openpkg/rpmlua.d/*"
1230 RPMLUA="$RPMLUA:~/.openpkg/rpmlua"
1231 RPMLUA="$RPMLUA:@../../.openpkg/rpmlua"
1232 RPMLUA="$RPMLUA:@../.openpkg/rpmlua"
1233 RPMLUA="$RPMLUA:@./.openpkg/rpmlua"
1235 # parametrize integrity checking framework
1236 sh $shtool subst \
1237 -e "s;0000000000000000000000000000000000000000;7D121A8FC05DC18A4329E9EF67042EC961B7AE34;" \
1238 -e "s;0\\.0\\.0;0.9.0;" \
1239 rpmqv.c
1241 # disable building of any tests
1242 # (mainly because those would fail because of integrity checking anyway)
1243 sh $shtool subst \
1244 -e 's;tools scripts tests doc;tools scripts doc;' \
1245 Makefile.in
1247 # configure program
1248 ./configure \
1249 --cache-file=./config.cache \
1250 --prefix=%{l_prefix} \
1251 --libdir="%{l_prefix}/lib" \
1252 --mandir="%{l_prefix}/man" \
1253 --includedir="%{l_prefix}/include/openpkg" \
1254 --with-name="OpenPKG RPM" \
1255 --with-path-cfg="%{l_prefix}/etc/openpkg" \
1256 --with-path-rpmpopt="$RPMPOPT" \
1257 --with-path-macros="$RPMMACROS" \
1258 --with-path-rpmlua="$RPMLUA" \
1259 --with-path-lib="%{l_prefix}/lib/openpkg" \
1260 --with-path-locale="%{l_prefix}/share/openpkg/locale" \
1261 --with-path-database="%{l_prefix}/RPM/DB" \
1262 --with-path-sources="%{l_prefix}/RPM" \
1263 --with-bugreport="openpkg-users@openpkg.org" \
1264 --with-beecrypt="$br/beecrypt-%{V_beecrypt}" \
1265 --with-openssl="$br/openssl-%{V_openssl}" \
1266 --with-zlib="$br/zlib-%{V_zlib}" \
1267 --with-bzip2="$br/bzip2-%{V_bzip2}" \
1268 --with-popt="$br/popt-%{V_popt}" \
1269 --with-sqlite="$br/sqlite-%{V_sqlite}" \
1270 --with-pcre="$br/pcre-%{V_pcre}" \
1271 --with-uuid="$br/uuid-%{V_uuid}" \
1272 --with-lua="internal" \
1273 --with-db="internal" \
1274 --without-db-rpc \
1275 --without-db-largefile \
1276 --with-db-tools-integrated \
1277 --with-db-mutex="UNIX/fcntl" \
1278 --without-file \
1279 --without-neon \
1280 --without-pthreads \
1281 --without-libelf \
1282 --without-selinux \
1283 --without-perl \
1284 --without-python \
1285 --without-apidocs \
1286 --disable-build-warnings \
1287 --disable-build-extlibdep \
1288 --disable-build-intlibdep \
1289 --disable-build-lafiles \
1290 --disable-shared \
1291 --disable-rpath \
1292 --disable-nls
1294 # build program
1295 ${l_make}
1296 ) || exit $?
1298 # display verbosity header
1299 set +x; VERBOSE "BUILD: Build OpenPKG Frontend (Set-UID Wrapper)"; set -x
1301 # build "openpkg" executable
1302 ${l_make} -f `SOURCE openpkg.mk` \
1303 CC="${l_cc}" \
1304 OPENPKG_PREFIX="%{l_prefix}" \
1305 OPENPKG_SUSR="%{l_susr}" \
1306 OPENPKG_MUSR="%{l_musr}" \
1307 OPENPKG_DOT_C="`SOURCE openpkg.c`"
1309 # display verbosity header
1310 set +x; VERBOSE "BUILD: Build OpenPKG Mutual Exclusion (MutEx) Utility"; set -x
1312 # build "mutex" executable
1313 ${l_make} -f `SOURCE mutex.mk` \
1314 CC="${l_cc}" \
1315 CPPFLAGS="-Ipopt-%{V_popt}" \
1316 LDFLAGS="-Lpopt-%{V_popt} -Lpopt-%{V_popt}/.libs" \
1317 MUTEX_DOT_C="`SOURCE mutex.c`"
1319 %install
1320 # skip in bootstrap phase 2 (see openpkg.boot)
1321 [ ".$OPENPKG_BOOT" = .1 ] && exit 0
1323 # switch into a temporary build area
1324 cd openpkg-%{version}
1325 . ./.buildenv
1327 # display verbosity header
1328 set +x; VERBOSE "INSTALL: Create Installation Filesystem Hierarchy"; set -x
1330 # create installation hierarchy
1331 rm -rf $RPM_BUILD_ROOT
1332 sh $shtool mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}
1333 for dir in bin etc include info lib libexec man sbin share var cgi pub local; do
1334 test -d $RPM_BUILD_ROOT%{l_prefix}/$dir || \
1335 mkdir $RPM_BUILD_ROOT%{l_prefix}/$dir
1336 done
1337 for i in 1 2 3 4 5 6 7 8 9; do
1338 test -d $RPM_BUILD_ROOT%{l_prefix}/man/man$i || \
1339 mkdir $RPM_BUILD_ROOT%{l_prefix}/man/man$i
1340 test -d $RPM_BUILD_ROOT%{l_prefix}/man/cat$i || \
1341 mkdir $RPM_BUILD_ROOT%{l_prefix}/man/cat$i
1342 done
1343 for dir in PKG bin etc include info lib man sbin; do
1344 test -d $RPM_BUILD_ROOT%{l_prefix}/local/$dir || \
1345 mkdir $RPM_BUILD_ROOT%{l_prefix}/local/$dir
1346 done
1347 for i in 1 2 3 4 5 6 7 8 9; do
1348 test -d $RPM_BUILD_ROOT%{l_prefix}/local/man/man$i || \
1349 mkdir $RPM_BUILD_ROOT%{l_prefix}/local/man/man$i
1350 test -d $RPM_BUILD_ROOT%{l_prefix}/local/man/cat$i || \
1351 mkdir $RPM_BUILD_ROOT%{l_prefix}/local/man/cat$i
1352 done
1353 test -d $RPM_BUILD_ROOT%{l_prefix}/RPM || \
1354 mkdir $RPM_BUILD_ROOT%{l_prefix}/RPM
1355 for dir in SRC PKG DB TR TMP; do
1356 test -d $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir || \
1357 mkdir $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir
1358 done
1359 mkdir $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg
1361 # display verbosity header
1362 set +x; VERBOSE "INSTALL: Installation of RPM"; set -x
1364 # install RPM into installation hierarchy
1365 ( cd rpm-%{V_rpm_major}.%{V_rpm_minor}
1366 ${l_make} install DESTDIR="$RPM_BUILD_ROOT"
1367 cp lua/rpmlua $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/lua
1368 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/lua
1369 ) || exit $?
1371 # post-adjust RPM installation
1372 mv $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/macros \
1373 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmmacros
1375 # display verbosity header
1376 set +x; VERBOSE "INSTALL: Install Additional Files"; set -x
1378 # add additional development files
1379 cp rpm-%{V_rpm_major}.%{V_rpm_minor}/rpmio/glob.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1380 cp zlib-%{V_zlib}/zlib.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1381 cp zlib-%{V_zlib}/zconf.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1382 cp zlib-%{V_zlib}/libz.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmz.a
1383 cp bzip2-%{V_bzip2}/bzlib.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1384 cp bzip2-%{V_bzip2}/libbz2.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmbz2.a
1385 cp beecrypt-%{V_beecrypt}/include/beecrypt/beecrypt.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1386 cp beecrypt-%{V_beecrypt}/libbeecrypt.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmbeecrypt.a
1387 cp popt-%{V_popt}/popt.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1388 cp popt-%{V_popt}/.libs/libpopt.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmpopt.a
1389 cp sqlite-%{V_sqlite}/sqlite3.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1390 cp sqlite-%{V_sqlite}/.libs/libsqlite3.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmsqlite3.a
1392 # display verbosity header
1393 set +x; VERBOSE "INSTALL: Post-Adjust Installation"; set -x
1395 # move C API into custom locations
1396 mv $RPM_BUILD_ROOT%{l_prefix}/lib/librpm* \
1397 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/
1398 mv $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig/rpm.pc \
1399 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/
1400 # FIXME: does the rpm.pc really work this way?
1402 # move rpm tool to custom location
1403 mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpm \
1404 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm
1405 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpm.8 \
1406 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm.8
1407 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm >/dev/null 2>&1 || true
1409 # move rpm2cpio tool to custom location
1410 mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpm2cpio \
1411 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio
1412 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpm2cpio.8 \
1413 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio.8
1414 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio >/dev/null 2>&1 || true
1416 # move rpmconstant tool to custom location
1417 mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpmconstant \
1418 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmconstant
1419 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmconstant.8 \
1420 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmconstant.8
1421 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmconstant >/dev/null 2>&1 || true
1423 # move rpmcache tool to custom location
1424 mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpmcache \
1425 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmcache
1426 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmcache.8 \
1427 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmcache.8
1428 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmcache >/dev/null 2>&1 || true
1430 # move rpmgrep tool to custom location
1431 mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpmgrep \
1432 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmgrep
1433 mv $RPM_BUILD_ROOT%{l_prefix}/man/man1/rpmgrep.1 \
1434 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmgrep.1
1435 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmgrep >/dev/null 2>&1 || true
1437 # move manual pages to custom location
1438 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmdeps.8 \
1439 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmdeps.8
1440 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmgraph.8 \
1441 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmgraph.8
1442 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmbuild.8 \
1443 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmbuild.8
1445 # display verbosity header
1446 set +x; VERBOSE "INSTALL: Stripping Down Installation"; set -x
1448 # strip RPM installation
1449 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/bin/* \
1450 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/* >/dev/null 2>&1 || true
1451 for file in rpmbuild gendiff; do
1452 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/$file >/dev/null 2>&1 || true
1453 done
1454 for dir in RPMS SRPMS SPEC SOURCES BUILD; do
1455 rm -rf $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir >/dev/null 2>&1 || true
1456 done
1457 rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/* >/dev/null 2>&1 || true
1458 rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man3/* >/dev/null 2>&1 || true
1459 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/lib*.la >/dev/null 2>&1 || true
1460 rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig >/dev/null 2>&1 || true
1461 for file in \
1462 brp-compress brp-python-bytecompile brp-java-gcjcompile brp-strip brp-strip-comment-note \
1463 brp-nobuildrootpath brp-strip-shared brp-strip-static-archive brp-sparc64-linux check-files \
1464 cross-build executabledeps.sh find-debuginfo.sh find-lang.sh find-prov.pl find-req.pl \
1465 find-provides.perl find-requires.perl getpo.sh http.req javadeps.sh libtooldeps.sh mono-find-provides \
1466 mono-find-requires osgideps.pl pkgconfigdeps.sh perldeps.pl perl.prov perl.req pythondeps.sh \
1467 php.prov php.req rpmdb_loadcvt rpm.daily rpm.log rpm.xinetd symclash.py symclash.sh tgpg u_pkg.sh \
1468 vpkg-provides.sh vpkg-provides2.sh install-sh mkinstalldirs; do
1469 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$file >/dev/null 2>&1 || true
1470 done
1471 for file in \
1472 db_archive db_checkpoint db_deadlock db_dump db_hotbackup db_load \
1473 db_printlog db_recover db_stat db_upgrade db_verify; do
1474 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$file >/dev/null 2>&1 || true
1475 done
1477 # display verbosity header
1478 set +x; VERBOSE "INSTALL: Install Additional Tools"; set -x
1480 # install lsync tool
1481 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1482 <`SOURCE lsync` \
1483 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lsync
1484 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lsync
1485 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1486 <`SOURCE dot.lsyncrc` \
1487 >$RPM_BUILD_ROOT%{l_prefix}/local/.lsyncrc
1488 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1489 <`SOURCE lsync.8` \
1490 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lsync.8
1492 # install rpm-config tool
1493 ( l_prefix="%{l_prefix}"
1494 l_cc="%{l_cc}"
1495 l_cflags=""
1496 l_cppflags="-DOPENPKG -I${l_prefix}/include/openpkg/rpm -I${l_prefix}/include/openpkg"
1497 l_ldflags="-L${l_prefix}/lib/openpkg"
1498 l_libs="-lrpmbuild -lrpm -lrpmio -lrpmdb -lrpmmisc -lrpmsqlite3 -lrpmpopt -lrpmbeecrypt -lrpmbz2 -lrpmz"
1499 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1500 -e "s:@l_cc@:$l_cc:g" \
1501 -e "s:@l_cflags@:$l_cflags:g" \
1502 -e "s:@l_cppflags@:$l_cppflags:g" \
1503 -e "s:@l_ldflags@:$l_ldflags:g" \
1504 -e "s:@l_libs@:$l_libs:g" \
1505 -e "s:@l_version@:%{V_rpm_major}.%{V_rpm_minor}:g" \
1506 <`SOURCE rpm-config.sh` \
1507 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config
1508 ) || exit $?
1509 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config
1510 sed -e "s:RPM_VERSION:%{V_rpm_major}.%{V_rpm_minor}:g" \
1511 <`SOURCE rpm-config.8` \
1512 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config.8
1514 # install OpenPKG registry commands
1515 mv $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm \
1516 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpm
1517 sed -e "s;@l_prefix@;%{l_prefix};g" \
1518 `SOURCE rpm.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm
1519 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm
1520 sed -e "s;@l_prefix@;%{l_prefix};g" \
1521 `SOURCE register.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register
1522 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register
1523 cp `SOURCE register.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register.8
1525 # allow GNU shtool to be called as "openpkg shtool" from external, too.
1526 sed -e "s;@l_prefix@;%{l_prefix};g" \
1527 `SOURCE shtool.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/shtool.sh
1528 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/shtool.sh
1530 # install OpenPKG tool chain command subset
1531 cp `SOURCE curl.sh` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/curl.sh
1532 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/curl.sh
1533 cp `SOURCE build.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.pl
1534 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.pl
1535 cp `SOURCE build.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.8
1536 cp `SOURCE index.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/index.pl
1537 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/index.pl
1538 cp `SOURCE index.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/index.8
1539 cp `SOURCE search.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/search.pl
1540 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/search.pl
1541 cp `SOURCE search.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/search.8
1542 cp `SOURCE mirror.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/mirror.pl
1543 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/mirror.pl
1544 cp `SOURCE mirror.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/mirror.8
1545 cp `SOURCE makeproxy.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/makeproxy.pl
1546 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/makeproxy.pl
1547 cp `SOURCE makeproxy.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/makeproxy.8
1548 cp `SOURCE lint-fsl.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-fsl.pl
1549 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-fsl.pl
1550 cp `SOURCE lint-rc.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-rc.pl
1551 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-rc.pl
1552 cp `SOURCE lint-rpm.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-rpm.pl
1553 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-rpm.pl
1554 cp `SOURCE lint-spec.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-spec.pl
1555 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-spec.pl
1556 cp `SOURCE dev.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/dev.pl
1557 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/dev.pl
1558 cp `SOURCE dev.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/dev.8
1559 cp `SOURCE sea.sh` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/sea.sh
1560 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/sea.sh
1561 cp `SOURCE sea.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/sea.8
1562 cp `SOURCE stack.sh` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/stack.sh
1563 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/stack.sh
1564 cp `SOURCE stack.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/stack.8
1566 # install RPM extension
1567 ( cd perl-%{V_perl}
1568 cp miniperl $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/miniperl
1569 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/miniperl
1570 ) || exit $?
1571 ( cd openssl-%{V_openssl}
1572 cp apps/openssl $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openssl
1573 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openssl
1574 ) || exit $?
1575 ( cd curl-%{V_curl}
1576 cp curl $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/curl
1577 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/curl
1578 ) || exit $?
1579 ( cd bzip2-%{V_bzip2}
1580 cp bzip2 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bzip2
1581 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bzip2
1582 ) || exit $?
1583 ( cd gzip-%{V_gzip}
1584 cp gzip $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/gzip
1585 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/gzip
1586 ) || exit $?
1587 ( cd xz-%{V_xz}
1588 cp src/xz/xz $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/xz
1589 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/xz
1590 ) || exit $?
1591 ( cd patch-%{V_patch}
1592 cp patch $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/patch
1593 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/patch
1594 ) || exit $?
1595 ( cd tar-%{V_tar}
1596 cp tar $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/tar
1597 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/tar
1598 ) || exit $?
1599 ( cd bash-%{V_bash}
1600 cp bash $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bash
1601 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bash
1602 ) || exit $?
1603 ( cd uuid-%{V_uuid}
1604 cp uuid $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/uuid
1605 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/uuid
1606 ) || exit $?
1607 ( cd sqlite-%{V_sqlite}
1608 cp sqlite3 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/sqlite3
1609 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/sqlite3
1610 ) || exit $?
1611 ( cd libarchive-%{V_libarchive}
1612 cp bsdcpio $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bsdcpio
1613 cp bsdtar $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bsdtar
1614 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bsdcpio
1615 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bsdtar
1616 ) || exit $?
1617 ( cd diffutils-%{V_diffutils}
1618 ${l_strip} diff diff3 sdiff cmp
1619 cp diff diff3 sdiff cmp $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/
1620 ) || exit $?
1621 ( cd svs-%{V_svs}
1622 sed -e "s;/bin/sh;%{l_prefix}/lib/openpkg/bash;" \
1623 -e "s;^\( *\)\(diff \);\1%{l_prefix}/lib/openpkg/\2;" \
1624 <svs.sh >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/svs
1625 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/svs
1626 cp svs.1 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/svs.1
1627 ) || exit $?
1628 sed -e "s;@l_prefix@;%{l_prefix};g" \
1629 -e "s;@l_musr@;%{l_musr};g" \
1630 -e "s;@l_mgrp@;%{l_mgrp};g" \
1631 <`SOURCE uuid.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/uuid
1632 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/uuid
1633 sed -e "s;@l_prefix@;%{l_prefix};g" \
1634 <`SOURCE uuid.8` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/uuid.8
1635 sed -e "s;@l_prefix@;%{l_prefix};g" \
1636 <`SOURCE release.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/release
1637 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/release
1638 sed -e "s;@l_prefix@;%{l_prefix};g" \
1639 <`SOURCE release.8` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/release.8
1640 sed -e "s;@l_prefix@;%{l_prefix};g" \
1641 -e "s;@l_musr@;%{l_musr};g" \
1642 -e "s;@l_mgrp@;%{l_mgrp};g" \
1643 <`SOURCE rpmdb` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmdb
1644 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmdb
1645 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1646 <`SOURCE rpmtool` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmtool
1647 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmtool
1648 sed -e "s;@l_prefix@;%{l_prefix};g" \
1649 -e "s;@l_musr@;%{l_musr};g" \
1650 -e "s;@l_mgrp@;%{l_mgrp};g" \
1651 <`SOURCE license.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/license
1652 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/license
1653 sed -e "s;@l_prefix@;%{l_prefix};g" \
1654 <`SOURCE license.8` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/license.8
1656 # install OpenPKG tool chain execution frontend and execution wrapper
1657 cp openpkg $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg
1658 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg
1659 chmod 4775 $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg
1660 sed -e "s;@l_prefix@;%{l_prefix};g" \
1661 <`SOURCE openpkg.sh` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openpkg
1662 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openpkg
1663 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1664 <`SOURCE openpkg.1` \
1665 >$RPM_BUILD_ROOT%{l_prefix}/man/man1/openpkg.1
1667 # install more OpenPKG tool chain commands
1668 sed -e "s;@l_prefix@;%{l_prefix};g" \
1669 <`SOURCE man.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/man
1670 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/man
1672 # install OpenPKG mutex utility
1673 cp mutex $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/mutex
1675 # install an own copy of shtool
1676 cp $shtool $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/shtool
1677 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/shtool
1679 # display verbosity header
1680 set +x; VERBOSE "INSTALL: Install Configuration Files"; set -x
1682 # install a few README files
1683 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1684 <`SOURCE root.README` \
1685 >$RPM_BUILD_ROOT%{l_prefix}/README
1686 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1687 <`SOURCE local.README` \
1688 >$RPM_BUILD_ROOT%{l_prefix}/local/README
1690 # install Bash environment
1691 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1692 <`SOURCE dot.bashrc` \
1693 >$RPM_BUILD_ROOT%{l_prefix}/.bashrc
1694 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1695 <`SOURCE dot.bash_login` \
1696 >$RPM_BUILD_ROOT%{l_prefix}/.bash_login
1698 # install Run-Command files
1699 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1700 -e "s:@l_susr@:%{l_susr}:g" \
1701 -e "s:@l_musr@:%{l_musr}:g" \
1702 <`SOURCE rc` \
1703 >$RPM_BUILD_ROOT%{l_prefix}/etc/rc
1704 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/etc/rc
1705 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1706 <`SOURCE rc.conf` \
1707 >$RPM_BUILD_ROOT%{l_prefix}/etc/rc.conf
1708 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.conf
1709 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1710 <`SOURCE rc.func` \
1711 >$RPM_BUILD_ROOT%{l_prefix}/etc/rc.func
1712 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.func
1713 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
1714 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1715 -e "s:@l_musr@:%{l_musr}:g" \
1716 <`SOURCE rc.openpkg` \
1717 >$RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/rc.openpkg
1718 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/rc.openpkg
1719 ( echo "#!/bin/sh"
1720 echo "exec %{l_prefix}/etc/rc \${1+\"\$@\"}"
1721 ) >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc
1722 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc
1723 ln $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc \
1724 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rc
1725 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1726 <`SOURCE rc.8` \
1727 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc.8
1729 # create configuration directory
1730 test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg || \
1731 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg
1733 # install platform identification file
1734 sh $shtool platform -n -L -S "" -C "+" -F "%<ap>-any-%<sp>" \
1735 >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/platform
1736 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/platform
1738 # install UUID configuration file (ghost)
1739 touch $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/uuid
1740 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/uuid
1742 # install registry configuration files (ghost)
1743 touch \
1744 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.conf \
1745 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.prep \
1746 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.tran \
1747 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.util
1748 chmod 644 \
1749 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.conf \
1750 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.prep \
1751 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.tran \
1752 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.util
1754 # install default managers configuration file
1755 ( echo "##"
1756 echo "## managers -- OpenPKG Instance Managers"
1757 echo "##"
1758 echo ""
1759 echo "%{l_susr}"
1760 echo "%{l_musr}"
1761 echo ""
1762 ) >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/managers
1764 # install default release information file
1765 release_tag=""
1766 release_url=""
1767 l_stack=""; [ ".%{?l_stack:set}" = .set ] && l_stack="%{l_stack}"
1768 case "$l_stack" in
1769 http: | https: | ftp: | file: )
1770 release_url="$l_stack"
1771 ;;
1772 [a-zA-Z]* )
1773 release_tag="$l_stack"
1774 ;;
1775 esac
1776 ( echo "##"
1777 echo "## release -- OpenPKG Release Information"
1778 echo "##"
1779 echo ""
1780 echo "TAG=$release_tag"
1781 echo "URL=$release_url"
1782 echo ""
1783 ) >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/release
1785 # install overriding RPM configuration files
1786 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1787 <`SOURCE rpmpopt` \
1788 >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmpopt
1789 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1790 -e "s:@l_prefix_static@:%{l_prefix}:g" \
1791 -e "s;@l_build_path@;$l_build_path;g" \
1792 -e "s;@l_build_ldlp@;$l_build_ldlp;g" \
1793 -e "s;@l_build_ulim@;$l_build_ulim;g" \
1794 -e "s;@l_unprivileged@;$l_unprivileged;g" \
1795 -e "s:@TAG@:$tag:g" \
1796 -e "s:@SUSR@:$susr:g" \
1797 -e "s:@SGRP@:$sgrp:g" \
1798 -e "s:@MUSR@:$musr:g" \
1799 -e "s:@MGRP@:$mgrp:g" \
1800 -e "s:@RUSR@:$rusr:g" \
1801 -e "s:@RGRP@:$rgrp:g" \
1802 -e "s:@NUSR@:$nusr:g" \
1803 -e "s:@NGRP@:$ngrp:g" \
1804 <`SOURCE rpmmacros` \
1805 >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmmacros
1806 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1807 <`SOURCE rpmlua` \
1808 >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmlua
1809 cp `SOURCE openpkg.org.pgp` \
1810 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/openpkg.org.pgp
1811 cp `SOURCE openpkg.com.pgp` \
1812 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/openpkg.com.pgp
1813 cp `SOURCE openpkg.net.pgp` \
1814 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/openpkg.net.pgp
1816 # install license data
1817 test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d || \
1818 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d
1819 cp `SOURCE license-BOOT.txt` \
1820 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/BOOT
1821 cp `SOURCE license-COMMUNITY.txt` \
1822 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/COMMUNITY
1823 cp `SOURCE license-EVAL.txt` \
1824 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/EVAL
1825 cp `SOURCE license-EXAMPLE.txt` \
1826 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/EXAMPLE
1827 cp `SOURCE license-PROMO.txt` \
1828 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/PROMO
1829 cp `SOURCE license-RECOVERY.txt` \
1830 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/RECOVERY
1831 cp `SOURCE license.lua` \
1832 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/license.lua
1833 touch $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license
1835 # provide directories for easy overriding of RPM configuration files
1836 test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmmacros.d || \
1837 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmmacros.d
1838 test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmpopt.d || \
1839 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmpopt.d
1840 test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmlua.d || \
1841 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmlua.d
1843 # display verbosity header
1844 set +x; VERBOSE "INSTALL: Done. Thank you for flying OpenPKG..."; set -x
1846 %files
1847 %defattr(-,%{?l_musr}%{!?l_musr:%{l_fsusr}},%{?l_mgrp}%{!?l_mgrp:%{l_fsgrp}})
1848 %{l_prefix}/README
1849 %config(noreplace) %{l_prefix}/.bashrc
1850 %config(noreplace) %{l_prefix}/.bash_login
1851 %dir %{l_prefix}/RPM
1852 %dir %{l_prefix}/RPM/SRC
1853 %dir %{l_prefix}/RPM/PKG
1854 %dir %{l_prefix}/RPM/TR
1855 %dir %{l_prefix}/RPM/DB
1856 %dir %{l_prefix}/RPM/TMP
1857 %dir %{l_prefix}/cgi
1858 %dir %{l_prefix}/bin
1859 %attr(4755,%{l_susr},%{l_mgrp}) %{l_prefix}/bin/openpkg
1860 %dir %{l_prefix}/etc
1861 %{l_prefix}/etc/rc
1862 %config(noreplace) %{l_prefix}/etc/rc.conf
1863 %{l_prefix}/etc/rc.func
1864 %dir %{l_prefix}/etc/rc.d
1865 %{l_prefix}/etc/rc.d/rc.openpkg
1866 %dir %{l_prefix}/etc/openpkg
1867 %ghost %{l_prefix}/etc/openpkg/license
1868 %dir %{l_prefix}/etc/openpkg/license.d
1869 %{l_prefix}/etc/openpkg/license.d/BOOT
1870 %{l_prefix}/etc/openpkg/license.d/COMMUNITY
1871 %{l_prefix}/etc/openpkg/license.d/EVAL
1872 %{l_prefix}/etc/openpkg/license.d/EXAMPLE
1873 %{l_prefix}/etc/openpkg/license.d/PROMO
1874 %{l_prefix}/etc/openpkg/license.d/RECOVERY
1875 %ghost %{l_prefix}/etc/openpkg/uuid
1876 %config %{l_prefix}/etc/openpkg/release
1877 %config %{l_prefix}/etc/openpkg/platform
1878 %config %{l_prefix}/etc/openpkg/rpmmacros
1879 %config %{l_prefix}/etc/openpkg/rpmpopt
1880 %config %{l_prefix}/etc/openpkg/rpmlua
1881 %dir %{l_prefix}/etc/openpkg/rpmmacros.d
1882 %dir %{l_prefix}/etc/openpkg/rpmpopt.d
1883 %dir %{l_prefix}/etc/openpkg/rpmlua.d
1884 %ghost %{l_prefix}/etc/openpkg/register.conf
1885 %ghost %{l_prefix}/etc/openpkg/register.prep
1886 %ghost %{l_prefix}/etc/openpkg/register.tran
1887 %ghost %{l_prefix}/etc/openpkg/register.util
1888 %config %attr(664,%{l_musr},%{l_mgrp}) %{l_prefix}/etc/openpkg/managers
1889 %{l_prefix}/etc/openpkg/openpkg.org.pgp
1890 %{l_prefix}/etc/openpkg/openpkg.com.pgp
1891 %{l_prefix}/etc/openpkg/openpkg.net.pgp
1892 %dir %{l_prefix}/include
1893 %dir %{l_prefix}/include/openpkg
1894 %dir %{l_prefix}/include/openpkg/rpm
1895 %{l_prefix}/include/openpkg/rpm/argv.h
1896 %{l_prefix}/include/openpkg/rpm/beecrypt.h
1897 %{l_prefix}/include/openpkg/rpm/bzlib.h
1898 %{l_prefix}/include/openpkg/rpm/db.h
1899 %{l_prefix}/include/openpkg/rpm/envvar.h
1900 %{l_prefix}/include/openpkg/rpm/fs.h
1901 %{l_prefix}/include/openpkg/rpm/fts.h
1902 %{l_prefix}/include/openpkg/rpm/glob.h
1903 %{l_prefix}/include/openpkg/rpm/mire.h
1904 %{l_prefix}/include/openpkg/rpm/misc.h
1905 %{l_prefix}/include/openpkg/rpm/pkgio.h
1906 %{l_prefix}/include/openpkg/rpm/popt.h
1907 %{l_prefix}/include/openpkg/rpm/rpm4compat.h
1908 %{l_prefix}/include/openpkg/rpm/rpmal.h
1909 %{l_prefix}/include/openpkg/rpm/rpmbc.h
1910 %{l_prefix}/include/openpkg/rpm/rpmbuild.h
1911 %{l_prefix}/include/openpkg/rpm/rpmcb.h
1912 %{l_prefix}/include/openpkg/rpm/rpmcli.h
1913 %{l_prefix}/include/openpkg/rpm/rpmconstant.h
1914 %{l_prefix}/include/openpkg/rpm/rpmdav.h
1915 %{l_prefix}/include/openpkg/rpm/rpmdb.h
1916 %{l_prefix}/include/openpkg/rpm/rpmds.h
1917 %{l_prefix}/include/openpkg/rpm/rpmevr.h
1918 %{l_prefix}/include/openpkg/rpm/rpmfc.h
1919 %{l_prefix}/include/openpkg/rpm/rpmfi.h
1920 %{l_prefix}/include/openpkg/rpm/rpmgc.h
1921 %{l_prefix}/include/openpkg/rpm/rpmgi.h
1922 %{l_prefix}/include/openpkg/rpm/rpmhash.h
1923 %{l_prefix}/include/openpkg/rpm/rpmio-stub.h
1924 %{l_prefix}/include/openpkg/rpm/rpmio.h
1925 %{l_prefix}/include/openpkg/rpm/rpmiotypes.h
1926 %{l_prefix}/include/openpkg/rpm/rpmku.h
1927 %{l_prefix}/include/openpkg/rpm/rpmlib.h
1928 %{l_prefix}/include/openpkg/rpm/rpmlog.h
1929 %{l_prefix}/include/openpkg/rpm/rpmmacro.h
1930 %{l_prefix}/include/openpkg/rpm/rpmmg.h
1931 %{l_prefix}/include/openpkg/rpm/rpmns.h
1932 %{l_prefix}/include/openpkg/rpm/rpmnss.h
1933 %{l_prefix}/include/openpkg/rpm/rpmpgp.h
1934 %{l_prefix}/include/openpkg/rpm/rpmps.h
1935 %{l_prefix}/include/openpkg/rpm/rpmspec.h
1936 %{l_prefix}/include/openpkg/rpm/rpmsq.h
1937 %{l_prefix}/include/openpkg/rpm/rpmssl.h
1938 %{l_prefix}/include/openpkg/rpm/rpmsw.h
1939 %{l_prefix}/include/openpkg/rpm/rpmsx.h
1940 %{l_prefix}/include/openpkg/rpm/rpmtag.h
1941 %{l_prefix}/include/openpkg/rpm/rpmte.h
1942 %{l_prefix}/include/openpkg/rpm/rpmts.h
1943 %{l_prefix}/include/openpkg/rpm/rpmurl.h
1944 %{l_prefix}/include/openpkg/rpm/rpmuuid.h
1945 %{l_prefix}/include/openpkg/rpm/rpmversion.h
1946 %{l_prefix}/include/openpkg/rpm/rpmwf.h
1947 %{l_prefix}/include/openpkg/rpm/rpmxar.h
1948 %{l_prefix}/include/openpkg/rpm/rpmzlog.h
1949 %{l_prefix}/include/openpkg/rpm/signature.h
1950 %{l_prefix}/include/openpkg/rpm/sqlite3.h
1951 %{l_prefix}/include/openpkg/rpm/ugid.h
1952 %{l_prefix}/include/openpkg/rpm/yarn.h
1953 %{l_prefix}/include/openpkg/rpm/zconf.h
1954 %{l_prefix}/include/openpkg/rpm/zlib.h
1955 %dir %{l_prefix}/info
1956 %dir %{l_prefix}/lib
1957 %dir %{l_prefix}/lib/openpkg
1958 %{l_prefix}/lib/openpkg/bash
1959 %{l_prefix}/lib/openpkg/bsdcpio
1960 %{l_prefix}/lib/openpkg/bsdtar
1961 %{l_prefix}/lib/openpkg/bzip2
1962 %{l_prefix}/lib/openpkg/curl
1963 %{l_prefix}/lib/openpkg/db_tool
1964 %{l_prefix}/lib/openpkg/cmp
1965 %{l_prefix}/lib/openpkg/diff
1966 %{l_prefix}/lib/openpkg/diff3
1967 %{l_prefix}/lib/openpkg/sdiff
1968 %{l_prefix}/lib/openpkg/gzip
1969 %{l_prefix}/lib/openpkg/librpm.a
1970 %{l_prefix}/lib/openpkg/librpmbeecrypt.a
1971 %{l_prefix}/lib/openpkg/librpmbuild.a
1972 %{l_prefix}/lib/openpkg/librpmbz2.a
1973 %{l_prefix}/lib/openpkg/librpmdb.a
1974 %{l_prefix}/lib/openpkg/librpmio.a
1975 %{l_prefix}/lib/openpkg/librpmmisc.a
1976 %{l_prefix}/lib/openpkg/librpmpopt.a
1977 %{l_prefix}/lib/openpkg/librpmsqlite3.a
1978 %{l_prefix}/lib/openpkg/librpmz.a
1979 %{l_prefix}/lib/openpkg/license.lua
1980 %{l_prefix}/lib/openpkg/miniperl
1981 %{l_prefix}/lib/openpkg/mutex
1982 %{l_prefix}/lib/openpkg/openpkg
1983 %{l_prefix}/lib/openpkg/openssl
1984 %{l_prefix}/lib/openpkg/patch
1985 %{l_prefix}/lib/openpkg/rc
1986 %{l_prefix}/lib/openpkg/rpm
1987 %{l_prefix}/lib/openpkg/rpm.pc
1988 %{l_prefix}/lib/openpkg/rpmdb
1989 %{l_prefix}/lib/openpkg/rpmdeps
1990 %{l_prefix}/lib/openpkg/lua
1991 %{l_prefix}/lib/openpkg/rpmmacros
1992 %{l_prefix}/lib/openpkg/rpmpopt
1993 %{l_prefix}/lib/openpkg/rpmtool
1994 %{l_prefix}/lib/openpkg/shtool
1995 %{l_prefix}/lib/openpkg/sqlite3
1996 %{l_prefix}/lib/openpkg/tar
1997 %{l_prefix}/lib/openpkg/uuid
1998 %{l_prefix}/lib/openpkg/xz
1999 %dir %{l_prefix}/libexec
2000 %dir %{l_prefix}/libexec/openpkg
2001 %{l_prefix}/libexec/openpkg/build.8
2002 %{l_prefix}/libexec/openpkg/build.pl
2003 %{l_prefix}/libexec/openpkg/curl.sh
2004 %{l_prefix}/libexec/openpkg/dev.8
2005 %{l_prefix}/libexec/openpkg/dev.pl
2006 %{l_prefix}/libexec/openpkg/index.8
2007 %{l_prefix}/libexec/openpkg/index.pl
2008 %{l_prefix}/libexec/openpkg/license
2009 %{l_prefix}/libexec/openpkg/license.8
2010 %{l_prefix}/libexec/openpkg/lsync
2011 %{l_prefix}/libexec/openpkg/lsync.8
2012 %{l_prefix}/libexec/openpkg/lint-fsl.pl
2013 %{l_prefix}/libexec/openpkg/lint-rc.pl
2014 %{l_prefix}/libexec/openpkg/lint-rpm.pl
2015 %{l_prefix}/libexec/openpkg/lint-spec.pl
2016 %{l_prefix}/libexec/openpkg/makeproxy.8
2017 %{l_prefix}/libexec/openpkg/makeproxy.pl
2018 %{l_prefix}/libexec/openpkg/man
2019 %{l_prefix}/libexec/openpkg/mirror.8
2020 %{l_prefix}/libexec/openpkg/mirror.pl
2021 %{l_prefix}/libexec/openpkg/rc
2022 %{l_prefix}/libexec/openpkg/rc.8
2023 %{l_prefix}/libexec/openpkg/register
2024 %{l_prefix}/libexec/openpkg/register.8
2025 %{l_prefix}/libexec/openpkg/release
2026 %{l_prefix}/libexec/openpkg/release.8
2027 %{l_prefix}/libexec/openpkg/rpm
2028 %{l_prefix}/libexec/openpkg/rpm-config
2029 %{l_prefix}/libexec/openpkg/rpm-config.8
2030 %{l_prefix}/libexec/openpkg/rpm.8
2031 %{l_prefix}/libexec/openpkg/rpmconstant
2032 %{l_prefix}/libexec/openpkg/rpmconstant.8
2033 %{l_prefix}/libexec/openpkg/rpm2cpio
2034 %{l_prefix}/libexec/openpkg/rpm2cpio.8
2035 %{l_prefix}/libexec/openpkg/rpmbuild.8
2036 %{l_prefix}/libexec/openpkg/rpmcache
2037 %{l_prefix}/libexec/openpkg/rpmcache.8
2038 %{l_prefix}/libexec/openpkg/rpmdeps.8
2039 %{l_prefix}/libexec/openpkg/rpmgraph.8
2040 %{l_prefix}/libexec/openpkg/rpmgrep
2041 %{l_prefix}/libexec/openpkg/rpmgrep.1
2042 %{l_prefix}/libexec/openpkg/sea.8
2043 %{l_prefix}/libexec/openpkg/sea.sh
2044 %{l_prefix}/libexec/openpkg/search.8
2045 %{l_prefix}/libexec/openpkg/search.pl
2046 %{l_prefix}/libexec/openpkg/stack.8
2047 %{l_prefix}/libexec/openpkg/stack.sh
2048 %{l_prefix}/libexec/openpkg/shtool.sh
2049 %{l_prefix}/libexec/openpkg/svs
2050 %{l_prefix}/libexec/openpkg/svs.1
2051 %{l_prefix}/libexec/openpkg/uuid
2052 %{l_prefix}/libexec/openpkg/uuid.8
2053 %dir %{l_prefix}/man
2054 %dir %{l_prefix}/man/man1
2055 %dir %{l_prefix}/man/man2
2056 %dir %{l_prefix}/man/man3
2057 %dir %{l_prefix}/man/man4
2058 %dir %{l_prefix}/man/man5
2059 %dir %{l_prefix}/man/man6
2060 %dir %{l_prefix}/man/man7
2061 %dir %{l_prefix}/man/man8
2062 %dir %{l_prefix}/man/man9
2063 %dir %{l_prefix}/man/cat1
2064 %dir %{l_prefix}/man/cat2
2065 %dir %{l_prefix}/man/cat3
2066 %dir %{l_prefix}/man/cat4
2067 %dir %{l_prefix}/man/cat5
2068 %dir %{l_prefix}/man/cat6
2069 %dir %{l_prefix}/man/cat7
2070 %dir %{l_prefix}/man/cat8
2071 %dir %{l_prefix}/man/cat9
2072 %{l_prefix}/man/man1/openpkg.1
2073 %dir %{l_prefix}/sbin
2074 %dir %{l_prefix}/pub
2075 %dir %{l_prefix}/share
2076 %dir %{l_prefix}/var
2077 %dir %{l_prefix}/local
2078 %{l_prefix}/local/README
2079 %{l_prefix}/local/.lsyncrc
2080 %dir %{l_prefix}/local/PKG
2081 %dir %{l_prefix}/local/bin
2082 %dir %{l_prefix}/local/etc
2083 %dir %{l_prefix}/local/include
2084 %dir %{l_prefix}/local/info
2085 %dir %{l_prefix}/local/lib
2086 %dir %{l_prefix}/local/man
2087 %dir %{l_prefix}/local/man/man1
2088 %dir %{l_prefix}/local/man/man2
2089 %dir %{l_prefix}/local/man/man3
2090 %dir %{l_prefix}/local/man/man4
2091 %dir %{l_prefix}/local/man/man5
2092 %dir %{l_prefix}/local/man/man6
2093 %dir %{l_prefix}/local/man/man7
2094 %dir %{l_prefix}/local/man/man8
2095 %dir %{l_prefix}/local/man/man9
2096 %dir %{l_prefix}/local/man/cat1
2097 %dir %{l_prefix}/local/man/cat2
2098 %dir %{l_prefix}/local/man/cat3
2099 %dir %{l_prefix}/local/man/cat4
2100 %dir %{l_prefix}/local/man/cat5
2101 %dir %{l_prefix}/local/man/cat6
2102 %dir %{l_prefix}/local/man/cat7
2103 %dir %{l_prefix}/local/man/cat8
2104 %dir %{l_prefix}/local/man/cat9
2105 %dir %{l_prefix}/local/sbin
2107 %clean
2108 # skip in bootstrap phase 2 (see openpkg.boot)
2109 [ ".$OPENPKG_BOOT" = .1 ] && exit 0
2111 # cleanup build area
2112 rm -rf openpkg-%{version} >/dev/null 2>&1 || true
2114 # cleanup installation area
2115 rm -rf $RPM_BUILD_ROOT >/dev/null 2>&1 || true
2117 %pre
2118 # always performed for upgrades and because it doesn't harm!
2119 # [ ".$1" != .1 ] && exit 0
2121 # this procedure is only usable with root privileges
2122 # (for non-root installations it is not required at all)
2123 cusr=`(id -un) 2>/dev/null ||\
2124 (id | sed -e 's;^[^(]*(\([^)]*\)).*;\1;') 2>/dev/null ||\
2125 (whoami) 2>/dev/null ||\
2126 (who am i | cut "-d " -f1) 2>/dev/null ||\
2127 echo $LOGNAME`
2129 # determine runtime details (for both inside and outside RPM!!)
2130 # - bootstrapping: $xxx is set from etc.wrapbin.sh
2131 # - upgrading new: %{l_[smrn]{usr,grp}} is set via rpmmacros
2132 # - upgrading old: %{l_[smrn]{usr,grp}} is not set at all
2133 [ ".$susr" = . ] && susr="%{?l_susr}%{!?l_susr:root}"
2134 [ ".$sgrp" = . ] && sgrp="%{?l_sgrp}%{!?l_sgrp:wheel}"
2135 [ ".$musr" = . ] && musr="%{?l_musr}%{!?l_musr:%{l_fsusr}}"
2136 [ ".$mgrp" = . ] && mgrp="%{?l_mgrp}%{!?l_mgrp:%{l_fsgrp}}"
2137 [ ".$rusr" = . ] && rusr="%{?l_rusr}%{!?l_rusr:%{l_fsusr}-r}"
2138 [ ".$rgrp" = . ] && rgrp="%{?l_rgrp}%{!?l_rgrp:%{l_fsgrp}-r}"
2139 [ ".$nusr" = . ] && nusr="%{?l_nusr}%{!?l_nusr:%{l_fsusr}-n}"
2140 [ ".$ngrp" = . ] && ngrp="%{?l_ngrp}%{!?l_ngrp:%{l_fsgrp}-n}"
2141 [ ".$suid" = . ] && suid="%{?l_suid}"
2142 [ ".$sgid" = . ] && sgid="%{?l_sgid}"
2143 [ ".$muid" = . ] && muid="%{?l_muid}"
2144 [ ".$mgid" = . ] && mgid="%{?l_mgid}"
2145 [ ".$ruid" = . ] && ruid="%{?l_ruid}"
2146 [ ".$rgid" = . ] && rgid="%{?l_rgid}"
2147 [ ".$nuid" = . ] && nuid="%{?l_nuid}"
2148 [ ".$ngid" = . ] && ngid="%{?l_ngid}"
2150 # if any of these optional params are not used we won't have a
2151 # corresponding macro either, so make use of one conditionally
2152 [ ".$suid" = . ] && [ ".%{?l_suid:set}" = .set ] && suid="%{?l_suid}"
2153 [ ".$sgid" = . ] && [ ".%{?l_sgid:set}" = .set ] && sgid="%{?l_sgid}"
2154 [ ".$muid" = . ] && [ ".%{?l_muid:set}" = .set ] && muid="%{?l_muid}"
2155 [ ".$mgid" = . ] && [ ".%{?l_mgid:set}" = .set ] && mgid="%{?l_mgid}"
2156 [ ".$ruid" = . ] && [ ".%{?l_ruid:set}" = .set ] && ruid="%{?l_ruid}"
2157 [ ".$rgid" = . ] && [ ".%{?l_rgid:set}" = .set ] && rgid="%{?l_rgid}"
2158 [ ".$nuid" = . ] && [ ".%{?l_nuid:set}" = .set ] && nuid="%{?l_nuid}"
2159 [ ".$ngid" = . ] && [ ".%{?l_ngid:set}" = .set ] && ngid="%{?l_ngid}"
2161 # determine prefix
2162 [ ".$prefix" = . ] && prefix="%{l_prefix}"
2163 prefix=`echo "$prefix" | sed -e 's;//*;/;g' -e 's;/$;;'`
2165 # Pre-flight check before update to make sure that the currently
2166 # activated license is still valid. This is done just be friendly
2167 # to people and to not too easily shoot theirself into the foot
2168 # by blindly upgrading and then having to recognize that the new
2169 # OpenPKG Framework is no longer covered by the old license.
2170 if [ ".$1" = .2 ]; then
2171 ( OPENPKG_FRAMEWORK_RELEASE="%{release}"
2172 export OPENPKG_FRAMEWORK_RELEASE
2173 # LATER:
2174 # $prefix/bin/openpkg rpm -q openpkg >/dev/null 2>&1 || exit $?
2175 # if [ $? -ne 0 ]; then
2176 # NOW:
2177 output="`$prefix/bin/openpkg rpm -q openpkg 2>&1 | grep 'ENVIRONMENT ANOMALY'`"
2178 if [ ".$output" != . ]; then
2179 id="`($prefix/bin/openpkg license active) 2>/dev/null`"
2180 [ ".$id" = . ] && id="UNKNOWN"
2181 ( echo "Attention, your currently active license \"$id\" does"
2182 echo "not allow you to use this newer version of the OpenPKG Framework!"
2183 echo "We cancel this update to prevent you from a run-time failure."
2184 echo "Please first upgrade to a newer license with the command:"
2185 echo " \$ $prefix/bin/openpkg license update $id <file>"
2186 ) | $prefix/lib/openpkg/rpmtool msg -b -t error
2187 exit 42
2188 fi
2189 ) || exit $?
2190 fi
2192 # register instance in presence file
2193 presence="/etc/openpkg"
2194 exists=`cat $presence 2>/dev/null | egrep "^ *${prefix} *\$"`
2195 if [ ".$exists" = . ]; then
2196 ( umask 022
2197 echo "${prefix}" >>$presence
2198 ) 2>/dev/null || true
2199 fi
2201 # determine user/group ids
2202 for class in s m r n; do
2203 eval "xusr=\"\$${class}usr\""
2204 eval "xgrp=\"\$${class}grp\""
2205 eval "xuid=\"\$${class}uid\""
2206 eval "xgid=\"\$${class}gid\""
2207 if [ ".$xuid" = . ]; then
2208 case "$plid" in
2209 Darwin/10.[1-9]* | Darwin/1[1-9].* )
2210 xuid=`dscl . -read "/users/${xusr}" UniqueID 2>/dev/null | awk '{ print $2; }'`
2211 ;;
2212 * )
2213 xuid=`(getent passwd "${xusr}"; \
2214 grep "^${xusr}:" /etc/passwd; \
2215 ypmatch "${xusr}" passwd; \
2216 nismatch "${xusr}" passwd; \
2217 nidump passwd . | grep "^${xusr}:") 2>/dev/null | \
2218 sed -e 'q' | awk -F: '{ print $3; }'`
2219 ;;
2220 esac
2221 if [ ".$xuid" = . ]; then
2222 # seek for a reasonably uid/gid pair
2223 xuid=1000
2224 ok=0
2225 while [ ".$ok" = .0 ]; do
2226 eval "u_exists=\$u_exists_$xuid"
2227 if [ ".$u_exists" = . ]; then
2228 case "$plid" in
2229 Darwin/10.[1-9]* | Darwin/1[1-9].* )
2230 u_exists=`dscl . -search /users UniqueID "$xuid" 2>/dev/null`
2231 ;;
2232 * )
2233 u_exists=`(getent passwd; cat /etc/passwd; ypcat passwd; niscat passwd; nidump passwd .) 2>/dev/null |\
2234 grep "^[^:]*:[^:]*:$xuid:"`
2235 ;;
2236 esac
2237 fi
2238 eval "g_exists=\$g_exists_$xuid"
2239 if [ ".$g_exists" = . ]; then
2240 case "$plid" in
2241 Darwin/10.[1-9]* | Darwin/1[1-9].* )
2242 g_exists=`dscl . -search /groups PrimaryGroupID "$xuid" 2>/dev/null`
2243 ;;
2244 * )
2245 g_exists=`(getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null |\
2246 grep "^[^:]*:[^:]*:$xuid:"`
2247 esac
2248 fi
2249 if [ ".$u_exists" = . -a ".$g_exists" = . ]; then
2250 ok=1
2251 break
2252 fi
2253 xuid=`expr $xuid + 1`
2254 done
2255 eval "u_exists_$xuid=yes"
2256 eval "g_exists_$xuid=yes"
2257 fi
2258 fi
2259 if [ ".$xgid" = . ]; then
2260 xgid=`(getent group "${xgrp}"; \
2261 grep "^${xgrp}:" /etc/group; \
2262 ypmatch "${xgrp}" group; \
2263 nismatch "${xgrp}" group; \
2264 nidump group . | grep "^${xgrp}:"; \
2265 dscl . -read "/groups/${xgrp}" | grep RecordName) 2>/dev/null | \
2266 sed -e 'q' | awk -F: '{ print $3; }'`
2267 if [ ".$xgid" = . ]; then
2268 xgid="$xuid"
2269 fi
2270 fi
2271 eval "${class}uid=\"$xuid\""
2272 eval "${class}gid=\"$xgid\""
2273 done
2275 # determine platform id
2276 s=`(uname -s) 2>/dev/null` || s='Unknown'
2277 r=`(uname -r) 2>/dev/null` || r='0.0'
2278 plid="${s}/${r}"
2280 # add entry to /etc/shells
2281 shell="${prefix}/lib/openpkg/bash"
2282 if [ -f /etc/shells ]; then
2283 exists=`cat /etc/shells 2>/dev/null | grep "^$shell"`
2284 if [ ".$exists" = . ]; then
2285 if [ ".$cusr" != ".root" ]; then
2286 echo "openpkg:WARNING: skipping addition of $shell to /etc/shells" 1>&2
2287 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
2288 else
2289 echo "${shell}" >>/etc/shells
2290 fi
2291 fi
2292 fi
2294 # clear pending deferred actions
2295 rm -f %{l_prefix}.pre-group-process.sh %{l_prefix}.pre-post-process.sh >/dev/null 2>&1
2297 # create the hierarchy user/group
2298 for req in "superuser:${susr}:${suid}:${sgrp}:${sgid}" \
2299 "management:${musr}:${muid}:${mgrp}:${mgid}" \
2300 "restricted:${rusr}:${ruid}:${rgrp}:${rgid}" \
2301 "non-privileged:${nusr}:${nuid}:${ngrp}:${ngid}"; do
2302 # split request into class/usr/uid/grp/gid
2303 OIFS="$IFS"; IFS=":"; set -- $req; IFS="$OIFS"
2304 class="$1"; usr="$2"; uid="$3"; grp="$4"; gid="$5"
2306 # check whether user already exists
2307 exists=`(getent passwd "$usr"; \
2308 grep "^$usr:" /etc/passwd; \
2309 ypmatch "$usr" passwd; \
2310 nismatch "$usr" passwd; \
2311 nidump passwd . | grep "^$usr:"; \
2312 dscl . -read "/users/$usr" | grep RecordName) 2>/dev/null | \
2313 sed -e 'q'`
2314 if [ ".$exists" = . ]; then
2315 if [ ".$cusr" != ".root" ]; then
2316 echo "openpkg:WARNING: skipping creation of OpenPKG $class user $usr" 1>&2
2317 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
2318 else
2319 # add entry to passwd database
2320 realname="${prefix} OpenPKG ($class)"
2321 case "$plid" in
2322 FreeBSD/* | NetBSD/* )
2323 file=/etc/master.passwd
2324 entry="${usr}:*:${uid}:${gid}::0:0:${realname}:${prefix}:${shell}"
2325 update="(PATH=\$PATH:/usr/sbin; pwd_mkdb -p /etc/master.passwd)"
2326 ;;
2327 Linux/* )
2328 file=/etc/passwd
2329 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
2330 update="(PATH=\$PATH:/usr/sbin; pwconv)"
2331 ;;
2332 SunOS/5.* | UnixWare/* )
2333 file=/etc/passwd
2334 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
2335 update="(PATH=\$PATH:/usr/sbin; pwconv)"
2336 ;;
2337 AIX/* )
2338 # intentionally do nothing here
2339 :
2340 ;;
2341 OSF1/V5.* )
2342 file=/etc/passwd
2343 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
2344 update="(PATH=\$PATH:/usr/sbin; mkpasswd /etc/passwd)"
2345 ;;
2346 HP-UX/* )
2347 file=/etc/passwd
2348 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
2349 update=":"
2350 ;;
2351 Darwin/* )
2352 # intentionally do nothing here
2353 :
2354 ;;
2355 IRIX*/6.* )
2356 file=/etc/passwd
2357 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
2358 if [ -f /etc/shadow ]
2359 then update="(PATH=\$PATH:/sbin; pwconv)"
2360 else update=":"
2361 fi
2362 ;;
2363 CYGWIN*/* )
2364 file=/etc/passwd
2365 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
2366 update=":"
2367 ;;
2368 esac
2369 case "$plid" in
2370 Darwin/10.[1-9]* | Darwin/1[1-9].* )
2371 dscl . -create "/users/${usr}"
2372 dscl . -create "/users/${usr}" Password "*"
2373 dscl . -create "/users/${usr}" UniqueID "${uid}"
2374 dscl . -create "/users/${usr}" PrimaryGroupID "${gid}"
2375 dscl . -create "/users/${usr}" RealName "${realname}"
2376 dscl . -create "/users/${usr}" NFSHomeDirectory "${prefix}"
2377 dscl . -create "/users/${usr}" UserShell "${shell}"
2378 ;;
2379 Darwin/* )
2380 niutil -create . "/users/${usr}"
2381 niutil -createprop . "/users/${usr}" passwd "*"
2382 niutil -createprop . "/users/${usr}" uid "${uid}"
2383 niutil -createprop . "/users/${usr}" gid "${gid}"
2384 niutil -createprop . "/users/${usr}" realname "${realname}"
2385 niutil -createprop . "/users/${usr}" home "${prefix}"
2386 niutil -createprop . "/users/${usr}" shell "${shell}"
2387 ;;
2388 AIX/* )
2389 mkuser id="${uid}" gecos="${realname}" home="${prefix}" "${usr}"
2390 cp /etc/security/login.cfg /etc/security/login.cfg.bak && \
2391 sed -e "/^usw:/,/^[^ ]/s;\\( *shells =.*\\) *\$;\\1,$shell;" \
2392 </etc/security/login.cfg.bak >/etc/security/login.cfg && \
2393 rm -f /etc/security/login.cfg.bak >/dev/null 2>&1
2394 # defer both the setting of the primary group and the shell,
2395 # as they do not exist at this stage of processing.
2396 echo "chuser pgrp=\"${grp}\" \"${usr}\"" >>%{l_prefix}.pre-group-process.sh
2397 echo "chuser shell=\"${shell}\" \"${usr}\"" >>%{l_prefix}.pre-post-process.sh
2398 ;;
2399 * )
2400 cp $file $file.bak && \
2401 (grep -v '^+:' $file.bak; echo $entry; grep '^+:' $file.bak) >$file
2402 rm -f $file.bak >/dev/null 2>&1
2403 eval $update
2404 [ $? -ne 0 ] && exit $?
2405 ;;
2406 esac
2407 fi
2408 fi
2410 # check whether group already exists
2411 exists=`(getent group "$grp"; \
2412 grep "^$grp:" /etc/group; \
2413 ypmatch "$grp" group; \
2414 nismatch "$grp" group; \
2415 nidump group . | grep "^$grp:"; \
2416 dscl . -read "/groups/$grp" | grep RecordName) 2>/dev/null | \
2417 sed -e 'q'`
2418 if [ ".$exists" = . ]; then
2419 if [ ".$cusr" != ".root" ]; then
2420 echo "openpkg:WARNING: skipping creation of OpenPKG $class group $grp" 1>&2
2421 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
2422 else
2423 case "$plid" in
2424 Darwin/10.[1-9]* | Darwin/1[1-9].* )
2425 dscl . -create "/groups/${grp}"
2426 dscl . -create "/groups/${grp}" Password "*"
2427 dscl . -create "/groups/${grp}" PrimaryGroupID "${gid}"
2428 dscl . -create "/groups/${grp}" GroupMembership "${usr}"
2429 ;;
2430 Darwin/* )
2431 niutil -create . "/groups/${grp}"
2432 niutil -createprop . "/groups/${grp}" gid "${gid}"
2433 niutil -createprop . "/groups/${grp}" users "${usr}"
2434 ;;
2435 AIX/* )
2436 mkgroup id="${gid}" users="${usr}" "${grp}"
2437 ;;
2438 * )
2439 # add entry to group database
2440 file=/etc/group
2441 entry="${grp}:*:${gid}:${usr}"
2442 cp $file $file.bak && \
2443 (grep -v '^+:' $file.bak; echo $entry; grep '^+:' $file.bak) >$file
2444 rm -f $file.bak >/dev/null 2>&1
2445 ;;
2446 esac
2447 fi
2448 fi
2449 done
2451 # optional group processing (deferred adjustment of primary group)
2452 if [ -f %{l_prefix}.pre-group-process.sh ]; then
2453 sh %{l_prefix}.pre-group-process.sh
2454 rm -f %{l_prefix}.pre-group-process.sh
2455 fi
2457 # invalidate passwd and group tables from Name Service Cache Daemon to
2458 # ensure chown/chgrp works immediately after pwconv on Linux and Solaris
2459 if [ -x /usr/sbin/nscd ]; then
2460 /usr/sbin/nscd -i passwd >/dev/null 2>&1 || true
2461 /usr/sbin/nscd -i group >/dev/null 2>&1 || true
2462 fi
2464 # create the startup/shutdown transfer script
2465 name_old="`echo "$prefix" | sed -e 's;/;;g'`"
2466 name="openpkg-`echo "$prefix" | sed -e 's;[^a-zA-Z0-9];;g'`"
2467 if [ ".$cusr" != ".root" ]; then
2468 echo "openpkg:WARNING: skipping creation of system run-command hooks" 1>&2
2469 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
2470 else
2471 case "$plid" in
2472 FreeBSD/* )
2473 if [ -f /etc/rc.d/${name_old} ]; then
2474 rm -f /etc/rc.d/${name_old}
2475 fi
2476 if [ ! -f /etc/rc.d/${name} ]; then
2477 # install transfer script
2478 rm -f /etc/rc.d/${name} >/dev/null 2>&1
2479 ( echo "#!/bin/sh"
2480 echo "##"
2481 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2482 echo "##"
2483 echo ""
2484 echo "# PROVIDE: ${name}"
2485 echo "# REQUIRE: LOGIN"
2486 echo "# KEYWORD: shutdown"
2487 echo ""
2488 echo ". /etc/rc.subr"
2489 echo ""
2490 echo "name=\"openpkg_${name}\""
2491 echo "start_cmd=\"openpkg_rc_all start\""
2492 echo "stop_cmd=\"openpkg_rc_all stop\""
2493 echo "restart_cmd=\"openpkg_rc_all stop start\""
2494 echo ""
2495 echo "openpkg_rc_all () {"
2496 echo " if [ -f ${prefix}/bin/openpkg ]; then"
2497 echo " ${prefix}/bin/openpkg rc all \"\$@\""
2498 echo " fi"
2499 echo "}"
2500 echo ""
2501 echo "load_rc_config \$name"
2502 echo "run_rc_command \"\$1\""
2503 echo ""
2504 ) >/etc/rc.d/${name}
2505 chmod 755 /etc/rc.d/${name}
2506 fi
2507 ;;
2508 NetBSD/* )
2509 if [ -f /etc/rc.d/${name_old} ]; then
2510 rm -f /etc/rc.d/${name_old}
2511 fi
2512 if [ ! -f /etc/rc.d/${name} ]; then
2513 ( echo "#!/bin/sh"
2514 echo "##"
2515 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2516 echo "##"
2517 echo "## PROVIDE: ${name}"
2518 echo "## REQUIRE: DAEMON LOGIN NETWORK SERVERS"
2519 echo "##"
2520 echo ""
2521 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2522 echo "case \$1 in"
2523 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2524 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2525 echo " restart ) exec ${prefix}/bin/openpkg rc all stop start ;;"
2526 echo " status ) ;;"
2527 echo "esac"
2528 ) >/etc/rc.d/${name}
2529 chmod 755 /etc/rc.d/${name}
2530 fi
2531 ;;
2532 Linux/* )
2533 if [ -f /etc/gentoo-release ]; then
2534 if [ -f /etc/init.d/${name_old} ]; then
2535 rm -f /etc/init.d/${name_old}
2536 fi
2537 if [ ! -f /etc/init.d/${name} ]; then
2538 # install transfer script
2539 ( echo "#!/sbin/runscript"
2540 echo "##"
2541 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2542 echo "##"
2543 echo ""
2544 echo "depend() {"
2545 echo " after *"
2546 echo "}"
2547 echo ""
2548 echo "checkconfig() {"
2549 echo " [ -f ${prefix}/bin/openpkg ] || return 1"
2550 echo " case $1 in"
2551 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2552 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2553 echo " esac"
2554 echo "}"
2555 echo ""
2556 echo "start() {"
2557 echo " checkconfig || return 1"
2558 echo " ebegin "Starting OpenPKG ${prefix} hierarchy""
2559 echo " exec ${prefix}/bin/openpkg rc all start"
2560 echo " eend 0"
2561 echo "}"
2562 echo ""
2563 echo "stop() {"
2564 echo " checkconfig || return 1"
2565 echo " ebegin "Stopping OpenPKG ${prefix} hierarchy""
2566 echo " exec ${prefix}/bin/openpkg rc all stop"
2567 echo " eend 0"
2568 echo "}"
2569 ) >/etc/init.d/${name}
2570 chmod 755 /etc/init.d/${name}
2571 /sbin/rc-update add ${name} default
2572 fi
2573 elif [ -f /etc/redhat-release ]; then
2574 sroot=/etc/rc.d/init.d
2575 if [ ! -f $sroot/${name} ]; then
2576 # install transfer script
2577 ( echo "#!/bin/sh"
2578 echo "##"
2579 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2580 echo "##"
2581 echo ""
2582 echo "# chkconfig: 2345 99 00"
2583 echo "# description: OpenPKG ${prefix}"
2584 echo ""
2585 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2586 echo "case \$1 in"
2587 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2588 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2589 echo "esac"
2590 ) >$sroot/${name}
2591 chmod 755 $sroot/${name}
2592 # activate script
2593 /sbin/chkconfig --add ${name}
2594 /sbin/chkconfig ${name} on
2595 fi
2596 else
2597 # sroot: script root directory
2598 # lroot: link root directory
2599 if [ -f /etc/debian_version ]; then
2600 sroot=/etc/init.d
2601 lroot=/etc/rc%%d.d
2602 elif [ -f /etc/mandrake-release ]; then
2603 sroot=/etc/rc.d/init.d
2604 lroot=/etc/rc.d/rc%%d.d
2605 elif [ -f /etc/SuSE-release ]; then
2606 sroot=/etc/init.d
2607 lroot=/etc/init.d/rc%%d.d
2608 elif [ -f /etc/slackware-version ]; then
2609 sroot=/etc/rc.d
2610 lroot=/etc/rc.d/rc%%d.d
2611 name="rc.${name}"
2612 for i in 0 1 2 3 4 5 6; do
2613 l=`echo $lroot | sed -e "s;%%d;$i;"`
2614 if [ ! -d $l ]; then
2615 mkdir $l 2>&1 || true
2616 fi
2617 done
2618 else
2619 echo "WARNING: you are not running one of the supported standard" 1>&2
2620 echo "WARNING: Linux platforms (Debian, RedHat, Mandrake, SuSE, Gentoo)." 1>&2
2621 echo "WARNING: Guessing the location of the system init scripts!" 1>&2
2622 sroot=""
2623 lroot=""
2624 for sr in /etc/rc.d/init.d /etc/init.d /sbin/init.d; do
2625 if [ -d $sr ]; then
2626 sroot="$sr"
2627 break
2628 fi
2629 done
2630 for lr in /etc/rc.d/rc2.d /etc/rc2.d /sbin/init.d/rc2.d; do
2631 if [ -d $lr ]; then
2632 lroot="`echo $lr | sed -e 's;2;%%d;'`"
2633 break
2634 fi
2635 done
2636 if [ ".$sroot" = . -o ".$lroot" = . ]; then
2637 echo "ERROR: Failed to guess the location of the system init scripts!" 1>&2
2638 exit 1
2639 fi
2640 fi
2641 if [ -f $sroot/${name_old} ]; then
2642 rm -f $sroot/${name_old}
2643 fi
2644 if [ ! -f $sroot/${name} ]; then
2645 # install transfer script
2646 ( echo "#!/bin/sh"
2647 echo "##"
2648 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2649 echo "##"
2650 echo ""
2651 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2652 echo "case \$1 in"
2653 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2654 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2655 echo "esac"
2656 ) >$sroot/${name}
2657 chmod 755 $sroot/${name}
2658 # create corresponding symbolic links
2659 for i in 2 3 4 5; do
2660 ln -s $sroot/${name} `echo $lroot | sed -e "s;%%d;$i;"`/S99${name}
2661 done
2662 for i in 0 1 6; do
2663 ln -s $sroot/${name} `echo $lroot | sed -e "s;%%d;$i;"`/K00${name}
2664 done
2665 fi
2666 fi
2667 ;;
2668 SunOS/5.* )
2669 if [ -f /etc/init.d/${name_old} ]; then
2670 rm -f /etc/init.d/${name_old}
2671 fi
2672 if [ ! -f /etc/init.d/${name} ]; then
2673 # install transfer script
2674 ( echo "#!/bin/sh"
2675 echo "##"
2676 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2677 echo "##"
2678 echo ""
2679 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2680 echo "case \$1 in"
2681 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2682 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2683 echo "esac"
2684 ) >/etc/init.d/${name}
2685 chmod 755 /etc/init.d/${name}
2686 # create corresponding symbolic links
2687 ( cd /etc
2688 ln init.d/${name} rc3.d/S99${name}
2689 ln init.d/${name} rc0.d/K00${name}
2690 ln init.d/${name} rc1.d/K00${name}
2691 ) || exit $?
2692 fi
2693 ;;
2694 UnixWare/* )
2695 if [ -f /etc/init.d/${name_old} ]; then
2696 rm -f /etc/init.d/${name_old}
2697 fi
2698 if [ ! -f /etc/init.d/${name} ]; then
2699 # install transfer script
2700 ( echo "#!/bin/sh"
2701 echo "##"
2702 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2703 echo "##"
2704 echo ""
2705 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2706 echo "case \$1 in"
2707 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2708 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2709 echo "esac"
2710 ) >/etc/init.d/${name}
2711 chmod 755 /etc/init.d/${name}
2712 # create corresponding symbolic links
2713 ( cd /etc
2714 ln init.d/${name} rc2.d/S99${name}
2715 ln init.d/${name} rc0.d/K00${name}
2716 ln init.d/${name} rc1.d/K00${name}
2717 ) || exit $?
2718 fi
2719 ;;
2720 AIX/* )
2721 if [ -f /etc/rc.d/init.d/${name_old} ]; then
2722 rm -f /etc/rc.d/init.d/${name_old}
2723 fi
2724 if [ ! -f /etc/rc.d/init.d/${name} ]; then
2725 # install transfer script
2726 ( echo "#!/bin/sh"
2727 echo "##"
2728 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2729 echo "##"
2730 echo ""
2731 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2732 echo "case \$1 in"
2733 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2734 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2735 echo "esac"
2736 ) >/etc/rc.d/init.d/${name}
2737 chmod 755 /etc/rc.d/init.d/${name}
2738 # create corresponding symbolic links
2739 ( cd /etc/rc.d
2740 ln -s ../init.d/${name} rc2.d/S99${name}
2741 ) || exit $?
2742 fi
2743 ;;
2744 OSF1/V5.* )
2745 if [ -f /sbin/init.d/${name_old} ]; then
2746 rm -f /sbin/init.d/${name_old}
2747 fi
2748 if [ ! -f /sbin/init.d/${name} ]; then
2749 # install transfer script
2750 ( echo "#!/bin/sh"
2751 echo "##"
2752 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2753 echo "##"
2754 echo ""
2755 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2756 echo "case \$1 in"
2757 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2758 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2759 echo "esac"
2760 ) >/sbin/init.d/${name}
2761 chmod 755 /sbin/init.d/${name}
2762 # create corresponding symbolic links
2763 ( cd /sbin
2764 ln -s ../init.d/${name} rc3.d/S99${name}
2765 ln -s ../init.d/${name} rc0.d/K00${name}
2766 ) || exit $?
2767 fi
2768 ;;
2769 HP-UX/* )
2770 if [ -f /sbin/init.d/${name_old} ]; then
2771 rm -f /sbin/init.d/${name_old}
2772 fi
2773 if [ ! -f /sbin/init.d/${name} ]; then
2774 # install transfer script
2775 ( echo "#!/bin/sh"
2776 echo "##"
2777 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2778 echo "##"
2779 echo ""
2780 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2781 echo "case \$1 in"
2782 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2783 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2784 echo "esac"
2785 ) >/sbin/init.d/${name}
2786 chmod 755 /sbin/init.d/${name}
2787 # create corresponding symbolic links
2788 ( cd /sbin
2789 ln -s ../init.d/${name} rc2.d/S900${name}
2790 ln -s ../init.d/${name} rc1.d/K100${name}
2791 ) || exit $?
2792 fi
2793 ;;
2794 Darwin/* )
2795 if [ -d /Library/StartupItems/${name_old} ]; then
2796 rm -rf /Library/StartupItems/${name_old}
2797 fi
2798 darwin_rc_dir="/Library/StartupItems/${name}"
2799 if [ ! -d ${darwin_rc_dir} ]; then
2800 mkdir -p ${darwin_rc_dir}
2801 fi
2803 # make sure hierarchy is activated in /etc/hostconfig
2804 # FIXME: cs: simple and bad code here without any detection of existing entries
2805 darwin_rc_var="`echo ${name} | sed -e 's;-;_;g' | tr '[a-z]' '[A-Z]'`"
2806 echo "${darwin_rc_var}=-YES-" >>/etc/hostconfig
2808 # install transfer script
2809 if [ ! -f ${darwin_rc_dir}/${name} ]; then
2810 rm -f ${darwin_rc_dir}/${name} >/dev/null 2>&1
2811 ( echo "#!/bin/sh"
2812 echo "##"
2813 echo "## ${darwin_rc_dir}/${name}"
2814 echo "## -- startup transfer script for OpenPKG ${prefix} hierarchy"
2815 echo "##"
2816 echo ""
2817 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2818 echo ""
2819 echo ". /etc/rc.common"
2820 echo ""
2821 echo "if [ \"\${${darwin_rc_var}:=-NO-}\" = \"-YES-\" ]; then"
2822 echo " ConsoleMessage \"OpenPKG ${prefix} hierarchy\""
2823 echo " ${prefix}/bin/openpkg rc all start"
2824 echo "fi"
2825 ) >${darwin_rc_dir}/${name}
2826 chmod 755 ${darwin_rc_dir}/${name}
2827 fi
2829 # install startup parameter list
2830 if [ ! -f ${darwin_rc_dir}/StartupParameters.plist ]; then
2831 rm -f ${darwin_rc_dir}/StartupParameters.plist >/dev/null 2>&1
2832 ( echo "{"
2833 echo " Description = \"OpenPKG ${prefix} hierarchy\";"
2834 echo " Provides = (\"OpenPKG ${prefix}\");"
2835 echo " Requires = (\"Disks\", \"Network Configuration\", \"Resolver\");"
2836 echo " Uses = (\"Cron\");"
2837 echo " OrderPreference = \"Last\";"
2838 echo " Messages ="
2839 echo " {"
2840 echo " start = \"Starting OpenPKG ${prefix} hierarchy\";"
2841 echo " stop = \"Stopping OpenPKG ${prefix} hierarchy\";"
2842 echo " };"
2843 echo "}"
2844 ) >${darwin_rc_dir}/StartupParameters.plist
2845 chmod 644 ${darwin_rc_dir}/StartupParameters.plist
2846 fi
2847 ;;
2848 IRIX*/6.* )
2849 if [ -f /etc/init.d/${name_old} ]; then
2850 rm -f /etc/init.d/${name_old}
2851 fi
2852 if [ ! -f /etc/init.d/${name} ]; then
2853 # install transfer script
2854 ( echo "#!/bin/sh"
2855 echo "##"
2856 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2857 echo "##"
2858 echo ""
2859 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2860 echo "case \$1 in"
2861 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2862 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2863 echo "esac"
2864 ) >/etc/init.d/${name}
2865 chmod 755 /etc/init.d/${name}
2866 # create corresponding links
2867 ( cd /etc
2868 ln -f init.d/${name} rc2.d/S99${name}
2869 ln -f init.d/${name} rc0.d/K00${name}
2870 ) || exit $?
2871 fi
2872 ;;
2873 CYGWIN*/* )
2874 if [ -f /etc/rc.d/init.d/${name_old} ]; then
2875 rm -f /etc/rc.d/init.d/${name_old}
2876 fi
2877 if [ ! -f /etc/rc.d/init.d/${name} ]; then
2878 # install transfer script
2879 ( echo "#!/bin/sh"
2880 echo "##"
2881 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2882 echo "##"
2883 echo ""
2884 echo "test -f /etc/rc.d/init.d/functions && . /etc/rc.d/init.d/functions"
2885 echo "test -f /etc/sysconfig/network && . /etc/sysconfig/network"
2886 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2887 echo "case \$1 in"
2888 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2889 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2890 echo "esac"
2891 ) >/etc/rc.d/init.d/${name}
2892 chmod 755 /etc/rc.d/init.d/${name}
2893 # create corresponding symbolic links
2894 ( cd /etc/rc.d
2895 ln -s ../init.d/${name} rc2.d/S90${name}
2896 ln -s ../init.d/${name} rc1.d/K10${name}
2897 ) || exit $?
2898 fi
2899 ;;
2900 esac
2901 fi
2903 # create the cron transfer entries
2904 if [ ".$cusr" != ".root" ]; then
2905 echo "openpkg:WARNING: skipping creation of system cron hooks" 1>&2
2906 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
2907 else
2908 case "$plid" in
2909 FreeBSD/* | Linux/* )
2910 if [ -f /etc/slackware-version ]; then
2911 exists=`crontab -l | egrep "($prefix/bin/openpkg|$prefix/etc/rc)"`
2912 if [ ".$exists" = . ]; then
2913 EDITOR=/tmp/vipw.$$
2914 VISUAL="$EDITOR"
2915 export EDITOR
2916 export VISUAL
2917 ( echo "#!/bin/sh"
2918 echo "( echo \"# <OpenPKG prefix=$prefix pkg=openpkg>\""
2919 echo " echo \"# chronological tasks of ${prefix} OpenPKG hierarchy\""
2920 echo " echo \"0 0 1 * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron monthly\""
2921 echo " echo \"0 0 * * 0 [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron weekly\""
2922 echo " echo \"0 0 * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron daily\""
2923 echo " echo \"0 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron hourly\""
2924 echo " echo \"0,15,30,45 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron quarterly\""
2925 echo " echo \"# </OpenPKG>\""
2926 echo ") >>\$1"
2927 ) >$EDITOR
2928 chmod a+x $EDITOR
2929 ( PATH="$PATH:/usr/bin"; crontab -e ) || exit $?
2930 rm -f $EDITOR
2931 fi
2932 else
2933 exists=`egrep "($prefix/bin/openpkg|$prefix/etc/rc)" /etc/crontab`
2934 if [ ".$exists" = . ]; then
2935 ( echo "# <OpenPKG prefix=$prefix pkg=openpkg>"
2936 echo "# chronological tasks of ${prefix} OpenPKG hierarchy"
2937 echo "0 0 1 * * root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron monthly"
2938 echo "0 0 * * 0 root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron weekly"
2939 echo "0 0 * * * root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron daily"
2940 echo "0 * * * * root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron hourly"
2941 echo "*/15 * * * * root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron quarterly"
2942 echo "# </OpenPKG>"
2943 ) >>/etc/crontab
2944 fi
2945 fi
2946 ;;
2947 SunOS/5.* | OSF1/V5.* | NetBSD/* | HP-UX/* | UnixWare/* | AIX/* | CYGWIN*/* | Darwin/* )
2948 exists=`crontab -l | egrep "($prefix/bin/openpkg|$prefix/etc/rc)"`
2949 if [ ".$exists" = . ]; then
2950 EDITOR=/tmp/vipw.$$
2951 VISUAL="$EDITOR"
2952 export EDITOR
2953 export VISUAL
2954 ( echo "#!/bin/sh"
2955 echo "( echo \"# <OpenPKG prefix=$prefix pkg=openpkg>\""
2956 echo " echo \"# chronological tasks of ${prefix} OpenPKG hierarchy\""
2957 echo " echo \"0 0 1 * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron monthly\""
2958 echo " echo \"0 0 * * 0 [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron weekly\""
2959 echo " echo \"0 0 * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron daily\""
2960 echo " echo \"0 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron hourly\""
2961 echo " echo \"0,15,30,45 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron quarterly\""
2962 echo " echo \"# </OpenPKG>\""
2963 echo ") >>\$1"
2964 ) >$EDITOR
2965 chmod a+x $EDITOR
2966 ( PATH="$PATH:/usr/bin"; crontab -e ) || exit $?
2967 rm -f $EDITOR
2968 fi
2969 ;;
2970 IRIX*/6.* )
2971 exists=`crontab -l | egrep "($prefix/bin/openpkg|$prefix/etc/rc)"`
2972 if [ ".$exists" = . ]; then
2973 ( crontab -l
2974 echo "# <OpenPKG prefix=$prefix pkg=openpkg>"
2975 echo "# chronological tasks of ${prefix} OpenPKG hierarchy"
2976 echo "0 0 1 * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron monthly"
2977 echo "0 0 * * 0 [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron weekly"
2978 echo "0 0 * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron daily"
2979 echo "0 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron hourly"
2980 echo "0,15,30,45 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron quarterly"
2981 echo "# </OpenPKG>"
2982 ) | /usr/bin/crontab || exit $?
2983 fi
2984 ;;
2985 esac
2986 fi
2988 # remember what OpenPKG RPM version was installed, so we can
2989 # correctly upgrade the RPM database in the %post section (see below).
2990 if [ -d ${prefix}/RPM/DB ]; then
2991 if [ -x "${prefix}/bin/openpkg" -a -x "${prefix}/libexec/openpkg/rpm" ]; then
2992 # OpenPKG >= 2.0
2993 rpm="${prefix}/bin/openpkg rpm"
2994 else
2995 # OpenPKG 1.x
2996 rpm="${prefix}/bin/rpm"
2997 fi
2998 rm -f ${prefix}/RPM/DB/.version >/dev/null 2>&1 || true
2999 $rpm --version 2>/dev/null |\
3000 sed -e 's;^;X;' \
3001 -e 's;^X[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$;\1;' \
3002 -e 's;^X[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$;\1;' \
3003 -e 's;^X.*$;0.0;' \
3004 >${prefix}/RPM/DB/.version
3005 fi
3007 %post
3008 # optional post-processing from "pre" section
3009 if [ -f %{l_prefix}.pre-post-process.sh ]; then
3010 sh %{l_prefix}.pre-post-process.sh
3011 rm -f %{l_prefix}.pre-post-process.sh
3012 fi
3014 # update or initially create OpenPKG UUID configuration
3015 %{l_prefix}/bin/openpkg uuid update >/dev/null 2>&1 || true
3017 # when upgrading from RPM 4 to RPM 5 there will be no
3018 # initial license at all, so create one
3019 if [ ! -f %{l_prefix}/etc/openpkg/license ]; then
3020 echo "BOOT" >%{l_prefix}/etc/openpkg/license
3021 ( chown %{l_musr}:%{l_mgrp} %{l_prefix}/etc/openpkg/license
3022 chmod 644 %{l_prefix}/etc/openpkg/license
3023 ) >/dev/null 2>&1 || true
3024 fi
3026 # finally switch from a possibly active BOOT license to EVAL license
3027 # (notice: this is really the earliest time we can switch because the
3028 # previous command had to create the <prefix>/etc/openpkg/uuid first!)
3029 if [ ".`cat %{l_prefix}/etc/openpkg/license`" = ".BOOT" ]; then
3030 echo "EVAL" >%{l_prefix}/etc/openpkg/license
3031 fi
3033 # determine new and old OpenPKG RPM version
3034 V_rpm_new="%{V_rpm_major}.%{V_rpm_minor}"
3035 if [ -f %{l_prefix}/RPM/DB/.version ]; then
3036 V_rpm_old="`cat %{l_prefix}/RPM/DB/.version`"
3037 rm -f %{l_prefix}/RPM/DB/.version >/dev/null 2>&1 || true
3038 else
3039 V_rpm_old="0.0"
3040 fi
3042 # make sure all RPM database files are present and that their
3043 # attributes are correct, etc. This is not a database rebuild
3044 # operation, so this is fully harmless and can be done always.
3045 %{l_prefix}/lib/openpkg/rpmdb --quiet --fixate >/dev/null 2>&1 || true
3047 # check RPM database for upgrade requirements
3048 if [ ".$1" = .2 -a ".$V_rpm_old" != ".$V_rpm_new" ]; then
3049 # RPM 4.0/4.1 does not allow concurrent database access, so we
3050 # cannot upgrade the database immediately from here (because
3051 # we are still running within the execution context of the
3052 # old RPM which in turn has the database locked) and instead
3053 # have to just drop a note to the administrator about database
3054 # upgrading. RPM >= 4.2 in general allows concurrent database
3055 # access, but the whole stuff is too risky here, too.
3056 ( echo "You are upgrading the OpenPKG bootstrap from a previous"
3057 echo "RPM $V_rpm_old based version to this RPM $V_rpm_new based"
3058 echo "version. The RPM database in %{l_prefix}/RPM/DB/ can be"
3059 echo "reused, but you first have to upgrade it as soon as"
3060 echo "possible to the latest format files by executing:"
3061 echo " \$ %{l_prefix}/bin/openpkg rpm --db-rebuild"
3062 echo "In case of problems with the RPM database you can always"
3063 echo "execute the command:"
3064 echo " \$ %{l_prefix}/bin/openpkg rpm --db-cleanup"
3065 ) | %{l_prefix}/lib/openpkg/rpmtool msg -b -t warn
3066 fi
3068 # system command overriding support
3069 # ATTENTION: THIS BETTER SHOULD BE REPLACED WITH A MORE GENERIC
3070 # BUILD COMMAND OVERRIDE SOLUTION!
3071 if [ ! -d %{l_prefix}/lib/openpkg/override ]; then
3072 mkdir %{l_prefix}/lib/openpkg/override >/dev/null 2>&1 || true
3073 fi
3074 chown %{l_musr}:%{l_mgrp} %{l_prefix}/lib/openpkg/override >/dev/null 2>&1 || true
3075 case "`cat %{l_prefix}/etc/openpkg/platform`" in
3076 *-*-debian* | *-*-ubuntu* )
3077 # FIXME: Evil hack to workaround build problems under Debian
3078 # (at least 3.1) (and similar platforms) where a Debian
3079 # install-info(8) exists which is both API and functionally
3080 # incompatible to the de-facto standardized install-info(8)
3081 # command from GNU Texinfo.
3082 if [ ! -f %{l_prefix}/lib/openpkg/override/install-info ]; then
3083 ( echo "#!/bin/sh"
3084 echo "echo 'OpenPKG: NOTICE: install-info(8) command execution overridden'"
3085 echo "exit 0"
3086 ) >%{l_prefix}/lib/openpkg/override/install-info
3087 chmod 775 %{l_prefix}/lib/openpkg/override/install-info
3088 fi
3089 ;;
3090 *-*-macosx* | *-*-darwin* )
3091 # FIXME: Evil hack to workaround the fact that Mac OS X'
3092 # linker by default prefers the /usr/lib libraries and does
3093 # not honor the -L options the way one would expect it.
3094 gcc="`%{l_prefix}/lib/openpkg/shtool path gcc`"
3095 cc="`%{l_prefix}/lib/openpkg/shtool path cc`"
3096 ld="`%{l_prefix}/lib/openpkg/shtool path ld`"
3097 if [ ".$gcc" != . -a ! -f %{l_prefix}/lib/openpkg/override/gcc ]; then
3098 ( echo "#!/bin/sh"
3099 echo "case \" \$* \" in"
3100 echo " *\" -c \"* | *\" -E \"* ) exec $gcc \"\$@\" ;;"
3101 echo " * ) exec $gcc -Wl,-search_paths_first \"\$@\" ;;"
3102 echo "esac"
3103 ) >%{l_prefix}/lib/openpkg/override/gcc
3104 chmod 775 %{l_prefix}/lib/openpkg/override/gcc
3105 fi
3106 if [ ".$cc" != . -a ! -f %{l_prefix}/lib/openpkg/override/cc ]; then
3107 ( echo "#!/bin/sh"
3108 echo "case \" \$* \" in"
3109 echo " *\" -c \"* | *\" -E \"* ) exec $gcc \"\$@\" ;;"
3110 echo " * ) exec $cc -Wl,-search_paths_first \"\$@\" ;;"
3111 echo "esac"
3112 ) >%{l_prefix}/lib/openpkg/override/cc
3113 chmod 775 %{l_prefix}/lib/openpkg/override/cc
3114 fi
3115 if [ ".$ld" != . -a ! -f %{l_prefix}/lib/openpkg/override/ld ]; then
3116 ( echo "#!/bin/sh"
3117 echo "exec $ld -search_paths_first \"\$@\""
3118 ) >%{l_prefix}/lib/openpkg/override/ld
3119 chmod 775 %{l_prefix}/lib/openpkg/override/ld
3120 fi
3121 ;;
3122 esac
3124 # special support for fully unprivileged environments
3125 # where we cannot switch the user at all with su(1),
3126 # so we provide a dummy su(1) override command.
3127 if [ ".%{l_unprivileged}" = ".yes" ]; then
3128 ( echo "#!/bin/sh"
3129 echo "while [ \$# -gt 0 ]; do"
3130 echo " case \"\$1\" in"
3131 echo " - | -* ) shift ;;"
3132 echo " * ) shift; break ;;"
3133 echo " esac"
3134 echo "done"
3135 echo "exec /bin/sh \${1+\"\$@\"}"
3136 ) >%{l_prefix}/lib/openpkg/override/su
3137 chmod 775 %{l_prefix}/lib/openpkg/override/su
3138 fi
3140 # FIXME: hack to workaround problems in environments with too few
3141 # development tools. ATTENTION: see one paragraph above.
3142 if [ ! -d %{l_prefix}/lib/openpkg/fallback ]; then
3143 mkdir %{l_prefix}/lib/openpkg/fallback >/dev/null 2>&1 || true
3144 fi
3145 chown %{l_musr}:%{l_mgrp} %{l_prefix}/lib/openpkg/fallback >/dev/null 2>&1 || true
3147 # cruel platform hack
3148 case "`cat %{l_prefix}/etc/openpkg/platform`" in
3149 *-*-cygwin* )
3150 # Cygwin under Windows Vista dislikes executables with
3151 # "patch" in the same and would require a "*.manifest"
3152 # file applied with the "mt.exe" from the "Windows
3153 # Software Development Kit (SDK)" in order to escape from
3154 # UAC. An easy alternative is to just rename the file to a
3155 # different name.
3156 cp %{l_prefix}/lib/openpkg/patch \
3157 %{l_prefix}/lib/openpkg/pitch
3158 %{l_prefix}/lib/openpkg/shtool subst \
3159 -e 's;openpkg/patch;openpkg/pitch;g' \
3160 %{l_prefix}/etc/openpkg/rpmmacros
3161 ;;
3162 esac
3164 # print license
3165 ( echo ""
3166 echo "NOTICE: Proprietary components of the OpenPKG Framework are covered"
3167 echo "by the following terms and conditions and require a valid run-time"
3168 echo "license, issued by the OpenPKG GmbH. An initial license, which allows"
3169 echo "30 days of free use for evaluation purposes, is already pre-installed."
3170 echo "Please go to http://openpkg.com/go/framework-license to obtain"
3171 echo "your permanent license."
3172 echo ""
3173 %{l_prefix}/bin/openpkg --license
3174 echo "______________________________________________________________________________"
3175 echo ""
3176 echo "NOTICE: Open Source components of the OpenPKG Framework are covered"
3177 echo "by various standard Open Source distribution licenses, including"
3178 echo "the MIT, BSD, LGPL, GPL, Public-Domain and Artistic licenses."
3179 echo "They all allow you the use of those components free of charge."
3180 echo "See http://www.opensource.org/licenses for more details."
3181 echo ""
3182 ) | %{l_prefix}/lib/openpkg/rpmtool msg -b -t notice
3184 # register package with central OpenPKG registry
3185 ( nohup %{l_prefix}/bin/openpkg register \
3186 </dev/null >/dev/null 2>&1 &
3187 ) </dev/null >/dev/null 2>&1 || true
3189 %preun
3190 [ ".$1" != .0 ] && exit 0
3192 # remove override files
3193 if [ -d %{l_prefix}/lib/openpkg/override ]; then
3194 rm -rf %{l_prefix}/lib/openpkg/override >/dev/null 2>&1 || true
3195 fi
3197 # remove fallback files
3198 if [ -d %{l_prefix}/lib/openpkg/fallback ]; then
3199 rm -rf %{l_prefix}/lib/openpkg/fallback >/dev/null 2>&1 || true
3200 fi
3202 # remove files which are not RPM controlled
3203 rm -rf %{l_prefix}/RPM/TMP/* %{l_prefix}/RPM/TMP/.[a-z]* >/dev/null 2>&1 || true
3204 rm -rf %{l_prefix}/RPM/SRC/* %{l_prefix}/RPM/SRC/.[a-z]* >/dev/null 2>&1 || true
3205 rm -rf %{l_prefix}/RPM/PKG/* %{l_prefix}/RPM/PKG/.[a-z]* >/dev/null 2>&1 || true
3206 rm -rf %{l_prefix}/RPM/TR/* %{l_prefix}/RPM/TR/.[a-z]* >/dev/null 2>&1 || true
3207 rm -rf %{l_prefix}/RPM/DB/* %{l_prefix}/RPM/DB/.[a-z]* >/dev/null 2>&1 || true
3209 # The following code usually would be done in a %postun section.
3210 # But because we already had to remove the database in this %preun
3211 # section (see the 'rm' commands above) in order to make RPM happy
3212 # inside its own removal procedure, RPM would no longer find the
3213 # %postun script (because it's recorded in the database files). So
3214 # we have to perform the procedure already in this %preun script.
3215 # except for the removal of the top-level directory it does not
3216 # matter. But the top-level directory can only be removed after
3217 # the RPM removal procedure took place, so we play a little delay
3218 # trick below.
3220 # determine current user
3221 cusr=`(id -un) 2>/dev/null ||\
3222 (id | sed -e 's;^[^(]*(\([^)]*\)).*;\1;') 2>/dev/null ||\
3223 (whoami) 2>/dev/null ||\
3224 (who am i | cut "-d " -f1) 2>/dev/null ||\
3225 echo $LOGNAME`
3227 # determine runtime details (for both inside and outside RPM!!)
3228 user="%{l_musr}"
3229 group="%{l_mgrp}"
3230 prefix="%{l_prefix}"
3231 prefix=`echo "$prefix" | sed -e 's;//*;/;g' -e 's;/$;;'`
3233 # determine platform id
3234 s=`(uname -s) 2>/dev/null` || s='Unknown'
3235 r=`(uname -r) 2>/dev/null` || r='0.0'
3236 plid="${s}/${r}"
3238 # unregister instance in presence file
3239 presence="/etc/openpkg"
3240 exists=`cat $presence 2>/dev/null | egrep "^ *${prefix} *\$"`
3241 if [ ".$exists" != . ]; then
3242 if [ ".$cusr" != ".root" ]; then
3243 echo "openpkg:WARNING: skipping unregistering of $prefix in $presence" 1>&2
3244 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
3245 else
3246 cp $presence $presence.bak && \
3247 egrep -v "^ *${prefix} *\$" $presence.bak >$presence
3248 rm -f $presence.bak >/dev/null 2>&1
3249 if [ ".`cat $presence`" = . ]; then
3250 rm -f $presence >/dev/null 2>&1
3251 fi
3252 fi
3253 fi
3255 # remove entry in /etc/shells
3256 shell="${prefix}/lib/openpkg/bash"
3257 exists=`cat /etc/shells 2>/dev/null | grep "^$shell"`
3258 if [ ".$exists" != . ]; then
3259 if [ ".$cusr" != ".root" ]; then
3260 echo "openpkg:WARNING: skipping deletion of $shell from /etc/shells" 1>&2
3261 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
3262 else
3263 cp /etc/shells /etc/shells.bak && \
3264 grep -v "^${shell}" /etc/shells.bak >/etc/shells
3265 rm -f /etc/shells.bak >/dev/null 2>&1
3266 fi
3267 fi
3269 # remove the hierarchy user/group
3270 for req in "super-user:%{l_susr}:%{l_suid}:%{l_sgrp}:%{l_sgid}" \
3271 "management:%{l_musr}:%{l_muid}:%{l_mgrp}:%{l_mgid}" \
3272 "restricted:%{l_rusr}:%{l_ruid}:%{l_rgrp}:%{l_rgid}" \
3273 "non-privileged:%{l_nusr}:%{l_nuid}:%{l_ngrp}:%{l_ngid}"; do
3274 # split request into class/usr/uid/grp/gid
3275 OIFS="$IFS"; IFS=":"; set -- $req; IFS="$OIFS"
3276 class="$1"; usr="$2"; uid="$3"; grp="$4"; gid="$5"
3278 # check whether user already exists
3279 exists=`(getent passwd "$usr"; \
3280 grep "^$usr:" /etc/passwd; \
3281 ypmatch "$usr" passwd; \
3282 nismatch "$usr" passwd; \
3283 nidump passwd . | grep "^$usr:"; \
3284 dscl . -read "/users/$usr" | grep RecordName) 2>/dev/null | \
3285 sed -e 'q'`
3286 if [ ".$exists" != . ]; then
3287 if [ ".$cusr" != ".root" ]; then
3288 echo "openpkg:WARNING: skipping deletion of OpenPKG $class user $usr" 1>&2
3289 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
3290 elif [ ".$usr" = ".root" ]; then
3291 echo "openpkg:WARNING: skipping deletion of OpenPKG $class user $usr" 1>&2
3292 echo "openpkg:WARNING: (would remove system standard user)" 1>&2
3293 else
3294 case "$plid" in
3295 FreeBSD/* | NetBSD/* )
3296 cp /etc/master.passwd /etc/master.passwd.bak && \
3297 grep -v "^${usr}:" /etc/master.passwd.bak >/etc/master.passwd
3298 ( PATH="$PATH:/usr/sbin"; pwd_mkdb -p /etc/master.passwd ) || exit $?
3299 rm -f /etc/master.passwd.bak >/dev/null 2>&1
3300 ;;
3301 Linux/* | SunOS/5.* | UnixWare/* )
3302 cp /etc/passwd /etc/passwd.bak && \
3303 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
3304 ( PATH="$PATH:/usr/sbin"; pwconv ) || exit $?
3305 rm -f /etc/passwd.bak >/dev/null 2>&1
3306 ;;
3307 AIX/* )
3308 rmuser -p "${usr}"
3309 cp /etc/security/login.cfg /etc/security/login.cfg.bak && \
3310 sed -e "/^usw:/,/^[^ ]/s;\\( *shells =.*\\),$shell\\(.*\\)\$;\\1\\2;" \
3311 </etc/security/login.cfg.bak >/etc/security/login.cfg && \
3312 rm -f /etc/security/login.cfg.bak >/dev/null 2>&1
3313 ;;
3314 OSF1/V5.* )
3315 cp /etc/passwd /etc/passwd.bak && \
3316 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
3317 ( PATH="$PATH:/usr/sbin"; mkpasswd /etc/passwd ) || exit $?
3318 rm -f /etc/passwd.bak >/dev/null 2>&1
3319 ;;
3320 HP-UX/* )
3321 cp /etc/passwd /etc/passwd.bak && \
3322 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
3323 rm -f /etc/passwd.bak >/dev/null 2>&1
3324 ;;
3325 Darwin/10.[1-9]* | Darwin/1[1-9].* )
3326 dscl . -delete "/users/${usr}"
3327 ;;
3328 Darwin/* )
3329 niutil -destroy . "/users/${usr}"
3330 ;;
3331 IRIX*/6.* )
3332 cp /etc/passwd /etc/passwd.bak && \
3333 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
3334 if [ -f /etc/shadow ]
3335 then ( PATH="$PATH:/usr/sbin"; pwconv ) || exit $?
3336 fi
3337 rm -f /etc/passwd.bak >/dev/null 2>&1
3338 ;;
3339 CYGWIN*/* )
3340 cp /etc/passwd /etc/passwd.bak && \
3341 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
3342 rm -f /etc/passwd.bak >/dev/null 2>&1
3343 ;;
3344 esac
3345 fi
3346 fi
3348 # check whether group already exists
3349 exists=`(getent group "$grp"; \
3350 grep "^$grp:" /etc/group; \
3351 ypmatch "$grp" group; \
3352 nismatch "$grp" group; \
3353 nidump group . | grep "^$grp:"; \
3354 dscl . -read "/groups/$grp" | grep RecordName) 2>/dev/null | \
3355 sed -e 'q'`
3356 if [ ".$exists" != . ]; then
3357 if [ ".$cusr" != ".root" ]; then
3358 echo "openpkg:WARNING: skipping deletion of OpenPKG $class group $grp" 1>&2
3359 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
3360 elif [ ".$usr" = ".root" ] || [ ".$grp" = ".root" ] || [ ".$grp" = ".wheel" ]; then
3361 echo "openpkg:WARNING: skipping deletion of OpenPKG $class group $grp" 1>&2
3362 echo "openpkg:WARNING: (would remove system standard group)" 1>&2
3363 else
3364 case "$plid" in
3365 Darwin/10.[1-9]* | Darwin/1[1-9].* )
3366 dscl . -delete "/groups/${grp}"
3367 ;;
3368 Darwin/* )
3369 niutil -destroy . "/groups/${grp}"
3370 ;;
3371 AIX/* )
3372 rmgroup "${grp}"
3373 ;;
3374 * )
3375 cp /etc/group /etc/group.bak && \
3376 grep -v "^${grp}:" /etc/group.bak >/etc/group
3377 rm -f /etc/group.bak >/dev/null 2>&1
3378 ;;
3379 esac
3380 fi
3381 fi
3382 done
3384 # invalidate passwd and group tables from Name Service Cache Daemon to
3385 # ensure chown/chgrp works immediately after pwconv on Linux and Solaris
3386 if [ -x /usr/sbin/nscd ]; then
3387 /usr/sbin/nscd -i passwd >/dev/null 2>&1 || true
3388 /usr/sbin/nscd -i group >/dev/null 2>&1 || true
3389 fi
3391 # remove the startup/shutdown transfer scripts
3392 name=`echo "$prefix" | sed -e 's;/;;g'`
3393 if [ ".$cusr" != ".root" ]; then
3394 echo "openpkg:WARNING: skipping deletion of system run-command hooks" 1>&2
3395 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
3396 else
3397 case "$plid" in
3398 FreeBSD/* )
3399 rm -f /etc/rc.d/${name} >/dev/null 2>&1
3400 ;;
3401 NetBSD/* )
3402 rm -f /etc/rc.d/${name} >/dev/null 2>&1
3403 ;;
3404 Linux/* )
3405 if [ -f /etc/gentoo-release ]; then
3406 /sbin/rc-update del ${name} >/dev/null 2>&1
3407 rm -f /etc/init.d/${name} >/dev/null 2>&1
3408 elif [ -f /etc/redhat-release ]; then
3409 /sbin/chkconfig ${name} off >/dev/null 2>&1
3410 /sbin/chkconfig --del ${name} >/dev/null 2>&1
3411 rm -f /etc/rc.d/init.d/${name} >/dev/null 2>&1
3412 else
3413 # sroot: script root directory
3414 # lroot: link root directory
3415 if [ -f /etc/debian_version ]; then
3416 sroot=/etc/init.d
3417 lroot=/etc/rc%%d.d
3418 elif [ -f /etc/mandrake-release ]; then
3419 sroot=/etc/rc.d/init.d
3420 lroot=/etc/rc.d/rc%%d.d
3421 elif [ -f /etc/SuSE-release ]; then
3422 sroot=/etc/init.d
3423 lroot=/etc/init.d/rc%%d.d
3424 elif [ -f /etc/slackware-version ]; then
3425 sroot=/etc/rc.d
3426 lroot=/etc/rc.d/rc%%d.d
3427 name="rc.${name}"
3428 else
3429 echo "WARNING: you are not running one of the supported standard" 1>&2
3430 echo "WARNING: Linux platforms (Debian, RedHat, Mandrake, SuSE, Gentoo)." 1>&2
3431 echo "WARNING: Guessing the location of the system init scripts!" 1>&2
3432 sroot=""
3433 lroot=""
3434 for sr in /etc/rc.d/init.d /etc/init.d /sbin/init.d; do
3435 if [ -d $sr ]; then
3436 sroot="$sr"
3437 break
3438 fi
3439 done
3440 for lr in /etc/rc.d/rc2.d /etc/rc2.d /sbin/init.d/rc2.d; do
3441 if [ -d $lr ]; then
3442 lroot="`echo $lr | sed -e 's;2;%%d;'`"
3443 break
3444 fi
3445 done
3446 if [ ".$sroot" = . -o ".$lroot" = . ]; then
3447 echo "ERROR: Failed to guess the location of the system init scripts!" 1>&2
3448 exit 1
3449 fi
3450 fi
3451 rm -f ${sroot}/${name} >/dev/null 2>&1
3452 for i in 2 3 4 5; do
3453 rm -f `echo $lroot | sed -e "s;%%d;$i;"`/S99${name} >/dev/null 2>&1
3454 done
3455 for i in 0 1 6; do
3456 rm -f `echo $lroot | sed -e "s;%%d;$i;"`/K00${name} >/dev/null 2>&1
3457 done
3458 if [ -f /etc/slackware-version ]; then
3459 for i in 0 1 2 3 4 5 6; do
3460 l=`echo $lroot | sed -e "s;%%d;$i;"`
3461 if [ -d $l ]; then
3462 rmdir $l >/dev/null 2>&1 || true
3463 fi
3464 done
3465 fi
3466 fi
3467 ;;
3468 SunOS/5.* )
3469 rm -f /etc/init.d/${name} >/dev/null 2>&1
3470 rm -f /etc/rc3.d/S99${name} >/dev/null 2>&1
3471 rm -f /etc/rc0.d/K00${name} >/dev/null 2>&1
3472 rm -f /etc/rc1.d/K00${name} >/dev/null 2>&1
3473 ;;
3474 UnixWare/* )
3475 rm -f /etc/init.d/${name} >/dev/null 2>&1
3476 rm -f /etc/rc2.d/S99${name} >/dev/null 2>&1
3477 rm -f /etc/rc0.d/K00${name} >/dev/null 2>&1
3478 rm -f /etc/rc1.d/K00${name} >/dev/null 2>&1
3479 ;;
3480 AIX/* )
3481 rm -f /etc/rc.d/init.d/${name} >/dev/null 2>&1
3482 rm -f /etc/rc.d/rc2.d/S99${name} >/dev/null 2>&1
3483 ;;
3484 OSF1/V5.* )
3485 rm -f /sbin/init.d/${name} >/dev/null 2>&1
3486 rm -f /sbin/rc3.d/S99${name} >/dev/null 2>&1
3487 rm -f /sbin/rc0.d/K00${name} >/dev/null 2>&1
3488 ;;
3489 HP-UX/* )
3490 rm -f /sbin/init.d/${name} >/dev/null 2>&1
3491 rm -f /etc/rc2.d/S900${name} >/dev/null 2>&1
3492 rm -f /etc/rc1.d/K100${name} >/dev/null 2>&1
3493 ;;
3494 Darwin/* )
3495 darwin_rc_var="`echo ${name} | sed -e 's;-;_;g' | tr '[a-z]' '[A-Z]'`"
3496 cp /etc/hostconfig /etc/hostconfig.bak && \
3497 grep -v "^${darwin_rc_var}=" /etc/hostconfig.bak >/etc/hostconfig
3498 rm -f /etc/hostconfig.bak >/dev/null 2>&1
3499 rm -rf /Library/StartupItems/${name} >/dev/null 2>&1
3500 ;;
3501 IRIX*/6.* )
3502 rm -f /etc/init.d/${name} >/dev/null 2>&1
3503 rm -f /etc/rc2.d/S99${name} >/dev/null 2>&1
3504 rm -f /etc/rc0.d/K00${name} >/dev/null 2>&1
3505 ;;
3506 CYGWIN*/* )
3507 rm -f /etc/rc.d/init.d/${name} >/dev/null 2>&1
3508 rm -f /etc/rc.d/rc2.d/S90${name} >/dev/null 2>&1
3509 rm -f /etc/rc.d/rc1.d/K10${name} >/dev/null 2>&1
3510 ;;
3511 esac
3512 fi
3514 # remove the cron transfer entries
3515 if [ ".$cusr" != ".root" ]; then
3516 echo "openpkg:WARNING: skipping deletion of system cron hooks" 1>&2
3517 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
3518 else
3519 case "$plid" in
3520 FreeBSD/* | Linux/* )
3521 if [ -f /etc/slackware-version ]; then
3522 EDITOR=/tmp/vipw.$$
3523 VISUAL="$EDITOR"
3524 export EDITOR
3525 export VISUAL
3526 p=`echo $prefix | sed -e 's;/;\\\\\\\\/;g'`
3527 ( echo "cp \$1 \$1.bak"
3528 echo "cat \$1.bak | sed -e \"/<OpenPKG prefix=$p pkg=openpkg>/,/<\\\\/OpenPKG>/d\" >\$1"
3529 echo "rm -f \$1.bak"
3530 ) >$EDITOR
3531 chmod a+x $EDITOR
3532 ( PATH="$PATH:/usr/bin"; crontab -e ) || exit $?
3533 rm -f $EDITOR
3534 else
3535 exists=`grep "<OpenPKG prefix=$prefix pkg=openpkg>" /etc/crontab`
3536 if [ ".$exists" != . ]; then
3537 p=`echo $prefix | sed -e 's;/;\\\\/;g'`
3538 cp /etc/crontab /etc/crontab.bak
3539 cat /etc/crontab.bak |\
3540 sed -e "/<OpenPKG prefix=$p pkg=openpkg>/,/<\\/OpenPKG>/d" \
3541 >/etc/crontab
3542 rm -f /etc/crontab.bak >/dev/null 2>&1
3543 fi
3544 fi
3545 ;;
3546 SunOS/5.* | OSF1/V5.* | NetBSD/* | HP-UX/* | UnixWare/* | AIX/* | CYGWIN*/* | Darwin/* )
3547 EDITOR=/tmp/vipw.$$
3548 VISUAL="$EDITOR"
3549 export EDITOR
3550 export VISUAL
3551 p=`echo $prefix | sed -e 's;/;\\\\\\\\/;g'`
3552 ( echo "cp \$1 \$1.bak"
3553 echo "cat \$1.bak | sed -e \"/<OpenPKG prefix=$p pkg=openpkg>/,/<\\\\/OpenPKG>/d\" >\$1"
3554 echo "rm -f \$1.bak"
3555 ) >$EDITOR
3556 chmod a+x $EDITOR
3557 ( PATH="$PATH:/usr/bin"; crontab -e ) || exit $?
3558 rm -f $EDITOR
3559 ;;
3560 IRIX*/6.* )
3561 p=`echo $prefix | sed -e 's;/;\\\\\\/;g'`
3562 ( crontab -l |
3563 sed -e "/<OpenPKG prefix=$p pkg=openpkg>/,/<\/OpenPKG>/d"
3564 ) | /usr/bin/crontab || exit $?
3565 ;;
3566 esac
3567 fi
3569 # delayed removal of top-level directory.
3570 ( sleep 2
3571 rm -rf %{l_prefix}/RPM/PKG/* >/dev/null 2>&1 || true
3572 rm -rf %{l_prefix}/RPM/SRC/* >/dev/null 2>&1 || true
3573 rm -rf %{l_prefix}/RPM/CACHE/* >/dev/null 2>&1 || true
3574 rm -rf %{l_prefix}/RPM/TMP/* %{l_prefix}/RPM/TMP/.[a-z]* >/dev/null 2>&1 || true
3575 rm -rf %{l_prefix}/RPM/DB/* %{l_prefix}/RPM/DB/.[a-z]* >/dev/null 2>&1 || true
3576 rmdir %{l_prefix}/RPM/DB >/dev/null 2>&1 || true
3577 rmdir %{l_prefix}/RPM >/dev/null 2>&1 || true
3578 rmdir %{l_prefix} >/dev/null 2>&1 || true
3579 ) </dev/null >/dev/null 2>/dev/null &