Tue, 31 Jul 2012 12:23:42 +0200
Resynchronize with upstream package maintainer version.
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: 20120708
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 --mandir=%{l_prefix}/man \
914 --without-libiconv-prefix \
915 --without-libintl-prefix \
916 --disable-nls \
917 --disable-shared \
918 $opts
919 ${l_make} || exit $?
920 ) || exit $?
922 # display verbosity header
923 set +x; VERBOSE "BUILD: Build OSSP uuid (UUID Generation Tool)"; set -x
925 # build OSSP uuid tool
926 ( cd uuid-%{V_uuid}
927 CC="${l_cc}" \
928 CFLAGS="-O" \
929 GREP="grep" \
930 ./configure \
931 --prefix=%{l_prefix} \
932 --disable-shared
933 ${l_make} || exit $?
934 ) || exit $?
936 # display verbosity header
937 set +x; VERBOSE "BUILD: Build Perl (Programming Language)"; set -x
939 # build Perl tool
940 ( cd perl-%{V_perl}
941 chmod -R u+w .
942 sh $shtool subst \
943 -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;' \
944 -e 's;package=perl5;package=perl;' \
945 Configure
946 sh $shtool subst \
947 -e 's; */usr/local/lib;;' \
948 hints/freebsd.sh hints/netbsd.sh
949 libdirs=""
950 for dir in %{l_prefix}/lib /lib64 /usr/lib64 /lib /usr/lib /usr/ccs/lib; do
951 [ -d $dir ] && libdirs="$libdirs $dir"
952 done
953 ./Configure \
954 -d -e -s \
955 -Dprefix=%{l_prefix} \
956 -Dvendorprefix=%{l_prefix} \
957 -Dinstallprefix=%{l_prefix} \
958 -Dinstallstyle="lib/perl5" \
959 -Dman1dir=%{l_prefix}/man/man1 \
960 -Dman3dir=%{l_prefix}/man/man3 \
961 -Dcc="${l_cc}" -Uoptimize \
962 -Dlocincpth="%{l_prefix}/include" \
963 -Dloclibpth="%{l_prefix}/lib" \
964 -Dldflags="-L""%{l_prefix}/lib" \
965 -Dlibpth="$libdirs" \
966 -Dglibpth="$libdirs" \
967 -Dscriptdir="%{l_prefix}/bin" \
968 -Uinstallusrbinperl \
969 -Adefine:useshrplib='false' \
970 -Ui_malloc -Ui_iconv -Ui_db
971 case `sh $shtool platform -n -L -S "" -C "+" -F "%<ap>-%<sp>"` in
972 *-cygwin* ) miniperl="miniperl.exe" ;;
973 * ) miniperl="miniperl" ;;
974 esac
975 ${l_make} $miniperl || exit $?
976 rm -f *.o >/dev/null 2>&1 || true
977 ) || exit $?
978 l_perl="`pwd`/perl-%{V_perl}/miniperl"; export l_perl
979 echo "l_perl=\"$l_perl\"; export l_perl" >>.buildenv
981 # display verbosity header
982 set +x; VERBOSE "BUILD: Build OpenSSL (Crypography and SSL/TLS Toolkit)"; set -x
984 # build OpenSSL toolkit
985 ( cd openssl-%{V_openssl}
986 sh $shtool subst \
987 -e 's;-m486;-march=i486;g' \
988 -e 's;BN_LLONG *;;' \
989 Configure
990 sh $shtool subst \
991 -e 's;test "$OSTYPE" = msdosdjgpp;true;' \
992 util/point.sh
993 sh $shtool subst \
994 -e "1s;^.*\$;#!$l_perl;" \
995 Configure `find . -name "*.pl" -print`
996 opts=""
997 case `sh $shtool platform -n -L -S "" -C "+" -F "%<ap>-%<sp>"` in
998 *-solaris* ) opts="-lnsl -lsocket" ;;
999 esac
1000 case `sh $shtool platform -n -L -S "" -C "+" -F "%<ap>-%<sp>"` in
1001 amd64-* ) opts="$opts -fPIC" ;;
1002 ia64-* ) opts="$opts -fPIC" ;;
1003 sparc64-freebsd* ) opts="$opts -fPIC" ;;
1004 esac
1005 CC="${l_cc}" \
1006 PERL="${l_perl}" \
1007 ./config \
1008 --prefix=%{l_prefix} \
1009 no-asm no-shared no-dso \
1010 no-zlib no-idea no-threads no-krb5 no-hw \
1011 $opts
1012 ${l_make} CC="${l_cc}" build_libs build_apps || exit $?
1013 ( mkdir lib; cd lib; ln -s ../lib*.a . ) || exit $?
1014 ) || exit $?
1016 # build BSD libarchive
1017 ( cd libarchive-%{V_libarchive}
1018 CC="${l_cc}" \
1019 CFLAGS="-O -D_POSIX_PTHREAD_SEMANTICS" \
1020 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" \
1021 LDFLAGS="-L`pwd`/../zlib-%{V_zlib} -L`pwd`/../bzip2-%{V_bzip2} -L`pwd`/../xz-%{V_xz}/src/liblzma/.libs -L`pwd`/../openssl-%{V_openssl}" \
1022 GREP="grep" \
1023 ./configure \
1024 --prefix=%{l_prefix} \
1025 --enable-bsdtar \
1026 --enable-bsdcpio \
1027 --with-zlib \
1028 --with-bz2lib \
1029 --with-lzma \
1030 --without-lzmadec \
1031 --with-openssl \
1032 --without-xml2 \
1033 --without-expat \
1034 --without-iconv \
1035 --disable-shared
1036 ${l_make} || exit $?
1037 ( mv bsdcpio bsdtar ..; ${l_make} clean || true; mv ../bsdcpio ../bsdtar . ) || exit $?
1038 ) || exit $?
1040 # build GNU diffutils
1041 ( cd diffutils-%{V_diffutils}
1042 CC="${l_cc}" \
1043 CFLAGS="-O" \
1044 ./configure \
1045 --prefix=%{l_prefix} \
1046 --disable-nls
1047 ${l_make} || exit $?
1048 ( mv src/diff src/diff3 src/sdiff src/cmp ..
1049 ${l_make} clean || true
1050 mv ../diff ../diff3 ../sdiff ../cmp .
1051 ) || exit $?
1052 ) || exit $?
1054 # display verbosity header
1055 set +x; VERBOSE "BUILD: Build cURL (URL Fetching Tool)"; set -x
1057 # build cURL tool
1058 ( cd curl-%{V_curl}
1059 ( echo 'ac_cv_header_openssl_engine_h=no'
1060 echo 'lt_cv_prog_compiler_c_o_F77=no'
1061 echo 'lt_cv_sys_max_cmd_len=100'
1062 ) >config.cache
1063 CC="${l_cc}" \
1064 CFLAGS="-I`pwd`/../zlib-%{V_zlib}" \
1065 CPPFLAGS="-I`pwd`/../zlib-%{V_zlib}" \
1066 LDFLAGS="-L`pwd`/../zlib-%{V_zlib}" \
1067 GREP="grep" \
1068 ./configure \
1069 --cache-file=./config.cache \
1070 --without-libidn \
1071 --disable-shared \
1072 --disable-thread \
1073 --disable-ipv6 \
1074 --disable-ldap \
1075 --with-zlib=`pwd`/../zlib-%{V_zlib} \
1076 --with-ssl=`pwd`/../openssl-%{V_openssl} \
1077 --with-ca-bundle=%{l_prefix}/etc/openpkg/openpkg.x509
1078 ${l_make} || exit $?
1079 mv src/curl ..; ${l_make} clean || true; mv ../curl .
1080 ) || exit $?
1082 # build PCRE library
1083 ( cd pcre-%{V_pcre}
1084 CC="${l_cc}" \
1085 GREP="grep" \
1086 ./configure \
1087 --disable-cpp \
1088 --disable-utf8 \
1089 --disable-shared
1090 ${l_make} || exit $?
1091 ) || exit $?
1093 # display verbosity header
1094 set +x; VERBOSE "BUILD: Build BeeCrypt (Cryptography Library)"; set -x
1096 # build BeeCrypt library
1097 ( cd beecrypt-%{V_beecrypt}
1098 sh $shtool subst \
1099 -e 's;^[ ][ ]*#;#;' \
1100 aes.c base64.c blockmode.c blowfish.c entropy.c fips186.c md4.c md5.c \
1101 mp.c mtprng.c ripemd128.c ripemd160.c ripemd256.c ripemd320.c rsa.c \
1102 sha1.c sha224.c sha256.c sha2k64.c sha384.c sha512.c timestamp.c
1103 sh $shtool subst \
1104 -e 's;cppglue\.lo;;g' \
1105 -e 's;cppglue\.cxx;;g' \
1106 -e '/^CXX = /s;@CXX@;@CC@;g' \
1107 Makefile.in
1108 ( echo 'ac_cv_have_dev_dsp=no'
1109 echo 'ac_cv_have_dev_audio=no'
1110 echo 'ac_cv_func_gettimeofday=yes'
1111 echo 'bc_cv_as_noexecstack=no'
1112 ) >config.cache
1113 CC="${l_cc}" \
1114 CFLAGS="-O" \
1115 ./configure \
1116 --cache-file=./config.cache \
1117 --prefix=%{l_prefix} \
1118 --with-cpu=none \
1119 --with-arch=none \
1120 --without-cplusplus \
1121 --without-java \
1122 --without-python \
1123 --disable-expert-mode \
1124 --disable-aio \
1125 --disable-openmp \
1126 --disable-threads \
1127 --disable-shared
1128 ${l_make} || exit $?
1129 cp .libs/libbeecrypt.a .
1130 ) || exit $?
1132 # display verbosity header
1133 set +x; VERBOSE "BUILD: Build POPT (Option Parsing Library)"; set -x
1135 # build POPT library
1136 ( cd popt-%{V_popt}
1137 CC="${l_cc}" \
1138 CPPFLAGS="-DOPENPKG -DPOPT_fprintf=fprintf" \
1139 GREP="grep" \
1140 ./configure \
1141 --prefix=%{l_prefix} \
1142 --disable-shared \
1143 --with-included-gettext \
1144 --without-libintl-prefix \
1145 --without-libiconv-prefix \
1146 --disable-nls
1147 ${l_make}
1148 ) || exit $?
1150 # display verbosity header
1151 set +x; VERBOSE "BUILD: Build SQLite (RDBMS Library)"; set -x
1153 # build SQLite library
1154 ( cd sqlite-%{V_sqlite}
1155 CC="${l_cc}" \
1156 LIBS="-lm" \
1157 GREP="grep" \
1158 ./configure \
1159 --prefix=%{l_prefix} \
1160 --disable-threadsafe \
1161 --disable-readline \
1162 --disable-debug \
1163 --disable-amalgamation \
1164 --disable-tcl \
1165 --disable-shared
1166 ${l_make}
1167 ) || exit $?
1169 # display verbosity header
1170 set +x; VERBOSE "BUILD: Build RPM (RPM Package Manager)"; set -x
1172 # build RPM
1173 ( br=`pwd`
1174 cd rpm-%{V_rpm_major}.%{V_rpm_minor}
1176 # cheat GNU Autoconf
1177 ( echo 'ac_cv_path_MSGFMT=:'
1178 echo 'ac_cv_path_GMSGFMT=:'
1179 echo 'ac_cv_path_XGETTEXT=:'
1180 echo 'ac_cv_path_MSGMERGE=:'
1181 echo "ac_cv_header_getopt_h=no"
1182 echo "ac_cv_lib_gz_gzread=no"
1183 ) >config.cache
1185 # use miniperl
1186 PERL="${l_perl}"
1187 export PERL
1189 # set build tool flags
1190 CC="${l_cc}"
1191 CFLAGS=""
1192 CPPFLAGS="-DRPM_VENDOR_OPENPKG"
1193 LDFLAGS=""
1194 LIBS=""
1195 LIBS="$LIBS -lm"
1196 export CC
1197 export CFLAGS
1198 export CPPFLAGS
1199 export LDFLAGS
1200 export LIBS
1202 # special platform workarounds
1203 GREP="grep"
1204 export GREP
1206 # determine POPT option, RPM macros and Lua script file paths
1207 RPMPOPT="%{l_prefix}/lib/openpkg/rpmpopt"
1208 RPMPOPT="$RPMPOPT:%{l_prefix}/etc/openpkg/rpmpopt"
1209 RPMPOPT="$RPMPOPT:%{l_prefix}/etc/openpkg/rpmpopt.d/*"
1210 RPMPOPT="$RPMPOPT:~/.openpkg/rpmpopt"
1211 RPMPOPT="$RPMPOPT:@../../.openpkg/rpmpopt"
1212 RPMPOPT="$RPMPOPT:@../.openpkg/rpmpopt"
1213 RPMPOPT="$RPMPOPT:@./.openpkg/rpmpopt"
1214 RPMMACROS="%{l_prefix}/lib/openpkg/rpmmacros"
1215 RPMMACROS="$RPMMACROS:%{l_prefix}/etc/openpkg/rpmmacros"
1216 RPMMACROS="$RPMMACROS:%{l_prefix}/etc/openpkg/rpmmacros.d/*"
1217 RPMMACROS="$RPMMACROS:~/.openpkg/rpmmacros"
1218 RPMMACROS="$RPMMACROS:@../../.openpkg/rpmmacros"
1219 RPMMACROS="$RPMMACROS:@../.openpkg/rpmmacros"
1220 RPMMACROS="$RPMMACROS:@./.openpkg/rpmmacros"
1221 RPMLUA="%{l_prefix}/lib/openpkg/rpmlua"
1222 RPMLUA="$RPMLUA:%{l_prefix}/etc/openpkg/rpmlua"
1223 RPMLUA="$RPMLUA:%{l_prefix}/etc/openpkg/rpmlua.d/*"
1224 RPMLUA="$RPMLUA:~/.openpkg/rpmlua"
1225 RPMLUA="$RPMLUA:@../../.openpkg/rpmlua"
1226 RPMLUA="$RPMLUA:@../.openpkg/rpmlua"
1227 RPMLUA="$RPMLUA:@./.openpkg/rpmlua"
1229 # parametrize integrity checking framework
1230 sh $shtool subst \
1231 -e "s;0000000000000000000000000000000000000000;7D121A8FC05DC18A4329E9EF67042EC961B7AE34;" \
1232 -e "s;0\\.0\\.0;0.9.0;" \
1233 rpmqv.c
1235 # disable building of any tests
1236 # (mainly because those would fail because of integrity checking anyway)
1237 sh $shtool subst \
1238 -e 's;tools scripts tests doc;tools scripts doc;' \
1239 Makefile.in
1241 # configure program
1242 ./configure \
1243 --cache-file=./config.cache \
1244 --prefix=%{l_prefix} \
1245 --mandir="%{l_prefix}/man" \
1246 --includedir="%{l_prefix}/include/openpkg" \
1247 --with-name="OpenPKG RPM" \
1248 --with-path-cfg="%{l_prefix}/etc/openpkg" \
1249 --with-path-rpmpopt="$RPMPOPT" \
1250 --with-path-macros="$RPMMACROS" \
1251 --with-path-rpmlua="$RPMLUA" \
1252 --with-path-lib="%{l_prefix}/lib/openpkg" \
1253 --with-path-locale="%{l_prefix}/share/openpkg/locale" \
1254 --with-path-database="%{l_prefix}/RPM/DB" \
1255 --with-path-sources="%{l_prefix}/RPM" \
1256 --with-bugreport="openpkg-users@openpkg.org" \
1257 --with-beecrypt="$br/beecrypt-%{V_beecrypt}" \
1258 --with-openssl="$br/openssl-%{V_openssl}" \
1259 --with-zlib="$br/zlib-%{V_zlib}" \
1260 --with-bzip2="$br/bzip2-%{V_bzip2}" \
1261 --with-popt="$br/popt-%{V_popt}" \
1262 --with-sqlite="$br/sqlite-%{V_sqlite}" \
1263 --with-pcre="$br/pcre-%{V_pcre}" \
1264 --with-uuid="$br/uuid-%{V_uuid}" \
1265 --with-lua="internal" \
1266 --with-db="internal" \
1267 --without-db-rpc \
1268 --without-db-largefile \
1269 --with-db-tools-integrated \
1270 --with-db-mutex="UNIX/fcntl" \
1271 --without-file \
1272 --without-neon \
1273 --without-pthreads \
1274 --without-libelf \
1275 --without-selinux \
1276 --without-perl \
1277 --without-python \
1278 --without-apidocs \
1279 --disable-build-warnings \
1280 --disable-build-extlibdep \
1281 --disable-build-intlibdep \
1282 --disable-build-lafiles \
1283 --disable-shared \
1284 --disable-rpath \
1285 --disable-nls
1287 # build program
1288 ${l_make}
1289 ) || exit $?
1291 # display verbosity header
1292 set +x; VERBOSE "BUILD: Build OpenPKG Frontend (Set-UID Wrapper)"; set -x
1294 # build "openpkg" executable
1295 ${l_make} -f `SOURCE openpkg.mk` \
1296 CC="${l_cc}" \
1297 OPENPKG_PREFIX="%{l_prefix}" \
1298 OPENPKG_SUSR="%{l_susr}" \
1299 OPENPKG_MUSR="%{l_musr}" \
1300 OPENPKG_DOT_C="`SOURCE openpkg.c`"
1302 # display verbosity header
1303 set +x; VERBOSE "BUILD: Build OpenPKG Mutual Exclusion (MutEx) Utility"; set -x
1305 # build "mutex" executable
1306 ${l_make} -f `SOURCE mutex.mk` \
1307 CC="${l_cc}" \
1308 CPPFLAGS="-Ipopt-%{V_popt}" \
1309 LDFLAGS="-Lpopt-%{V_popt} -Lpopt-%{V_popt}/.libs" \
1310 MUTEX_DOT_C="`SOURCE mutex.c`"
1312 %install
1313 # skip in bootstrap phase 2 (see openpkg.boot)
1314 [ ".$OPENPKG_BOOT" = .1 ] && exit 0
1316 # switch into a temporary build area
1317 cd openpkg-%{version}
1318 . ./.buildenv
1320 # display verbosity header
1321 set +x; VERBOSE "INSTALL: Create Installation Filesystem Hierarchy"; set -x
1323 # create installation hierarchy
1324 rm -rf $RPM_BUILD_ROOT
1325 sh $shtool mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}
1326 for dir in bin etc include info lib libexec man sbin share var cgi pub local; do
1327 test -d $RPM_BUILD_ROOT%{l_prefix}/$dir || \
1328 mkdir $RPM_BUILD_ROOT%{l_prefix}/$dir
1329 done
1330 for i in 1 2 3 4 5 6 7 8 9; do
1331 test -d $RPM_BUILD_ROOT%{l_prefix}/man/man$i || \
1332 mkdir $RPM_BUILD_ROOT%{l_prefix}/man/man$i
1333 test -d $RPM_BUILD_ROOT%{l_prefix}/man/cat$i || \
1334 mkdir $RPM_BUILD_ROOT%{l_prefix}/man/cat$i
1335 done
1336 for dir in PKG bin etc include info lib man sbin; do
1337 test -d $RPM_BUILD_ROOT%{l_prefix}/local/$dir || \
1338 mkdir $RPM_BUILD_ROOT%{l_prefix}/local/$dir
1339 done
1340 for i in 1 2 3 4 5 6 7 8 9; do
1341 test -d $RPM_BUILD_ROOT%{l_prefix}/local/man/man$i || \
1342 mkdir $RPM_BUILD_ROOT%{l_prefix}/local/man/man$i
1343 test -d $RPM_BUILD_ROOT%{l_prefix}/local/man/cat$i || \
1344 mkdir $RPM_BUILD_ROOT%{l_prefix}/local/man/cat$i
1345 done
1346 test -d $RPM_BUILD_ROOT%{l_prefix}/RPM || \
1347 mkdir $RPM_BUILD_ROOT%{l_prefix}/RPM
1348 for dir in SRC PKG DB TR TMP; do
1349 test -d $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir || \
1350 mkdir $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir
1351 done
1352 mkdir $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg
1354 # display verbosity header
1355 set +x; VERBOSE "INSTALL: Installation of RPM"; set -x
1357 # install RPM into installation hierarchy
1358 ( cd rpm-%{V_rpm_major}.%{V_rpm_minor}
1359 ${l_make} install DESTDIR="$RPM_BUILD_ROOT"
1360 cp lua/rpmlua $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/lua
1361 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/lua
1362 ) || exit $?
1364 # post-adjust RPM installation
1365 mv $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/macros \
1366 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmmacros
1368 # display verbosity header
1369 set +x; VERBOSE "INSTALL: Install Additional Files"; set -x
1371 # add additional development files
1372 cp rpm-%{V_rpm_major}.%{V_rpm_minor}/rpmio/glob.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1373 cp zlib-%{V_zlib}/zlib.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1374 cp zlib-%{V_zlib}/zconf.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1375 cp zlib-%{V_zlib}/libz.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmz.a
1376 cp bzip2-%{V_bzip2}/bzlib.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1377 cp bzip2-%{V_bzip2}/libbz2.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmbz2.a
1378 cp beecrypt-%{V_beecrypt}/include/beecrypt/beecrypt.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1379 cp beecrypt-%{V_beecrypt}/libbeecrypt.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmbeecrypt.a
1380 cp popt-%{V_popt}/popt.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1381 cp popt-%{V_popt}/.libs/libpopt.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmpopt.a
1382 cp sqlite-%{V_sqlite}/sqlite3.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/
1383 cp sqlite-%{V_sqlite}/.libs/libsqlite3.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmsqlite3.a
1385 # display verbosity header
1386 set +x; VERBOSE "INSTALL: Post-Adjust Installation"; set -x
1388 # move C API into custom locations
1389 mv $RPM_BUILD_ROOT%{l_prefix}/lib/librpm* \
1390 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/
1391 mv $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig/rpm.pc \
1392 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/
1393 # FIXME: does the rpm.pc really work this way?
1395 # move rpm tool to custom location
1396 mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpm \
1397 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm
1398 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpm.8 \
1399 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm.8
1400 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm >/dev/null 2>&1 || true
1402 # move rpm2cpio tool to custom location
1403 mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpm2cpio \
1404 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio
1405 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpm2cpio.8 \
1406 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio.8
1407 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio >/dev/null 2>&1 || true
1409 # move rpmconstant tool to custom location
1410 mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpmconstant \
1411 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmconstant
1412 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmconstant.8 \
1413 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmconstant.8
1414 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmconstant >/dev/null 2>&1 || true
1416 # move rpmcache tool to custom location
1417 mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpmcache \
1418 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmcache
1419 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmcache.8 \
1420 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmcache.8
1421 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmcache >/dev/null 2>&1 || true
1423 # move rpmgrep tool to custom location
1424 mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpmgrep \
1425 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmgrep
1426 mv $RPM_BUILD_ROOT%{l_prefix}/man/man1/rpmgrep.1 \
1427 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmgrep.1
1428 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmgrep >/dev/null 2>&1 || true
1430 # move manual pages to custom location
1431 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmdeps.8 \
1432 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmdeps.8
1433 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmgraph.8 \
1434 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmgraph.8
1435 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmbuild.8 \
1436 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmbuild.8
1438 # display verbosity header
1439 set +x; VERBOSE "INSTALL: Stripping Down Installation"; set -x
1441 # strip RPM installation
1442 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/bin/* \
1443 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/* >/dev/null 2>&1 || true
1444 for file in rpmbuild gendiff; do
1445 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/$file >/dev/null 2>&1 || true
1446 done
1447 for dir in RPMS SRPMS SPEC SOURCES BUILD; do
1448 rm -rf $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir >/dev/null 2>&1 || true
1449 done
1450 rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/* >/dev/null 2>&1 || true
1451 rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man3/* >/dev/null 2>&1 || true
1452 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/lib*.la >/dev/null 2>&1 || true
1453 rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig >/dev/null 2>&1 || true
1454 for file in \
1455 brp-compress brp-python-bytecompile brp-java-gcjcompile brp-strip brp-strip-comment-note \
1456 brp-nobuildrootpath brp-strip-shared brp-strip-static-archive brp-sparc64-linux check-files \
1457 cross-build executabledeps.sh find-debuginfo.sh find-lang.sh find-prov.pl find-req.pl \
1458 find-provides.perl find-requires.perl getpo.sh http.req javadeps.sh libtooldeps.sh mono-find-provides \
1459 mono-find-requires osgideps.pl pkgconfigdeps.sh perldeps.pl perl.prov perl.req pythondeps.sh \
1460 php.prov php.req rpmdb_loadcvt rpm.daily rpm.log rpm.xinetd symclash.py symclash.sh tgpg u_pkg.sh \
1461 vpkg-provides.sh vpkg-provides2.sh install-sh mkinstalldirs; do
1462 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$file >/dev/null 2>&1 || true
1463 done
1464 for file in \
1465 db_archive db_checkpoint db_deadlock db_dump db_hotbackup db_load \
1466 db_printlog db_recover db_stat db_upgrade db_verify; do
1467 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$file >/dev/null 2>&1 || true
1468 done
1470 # display verbosity header
1471 set +x; VERBOSE "INSTALL: Install Additional Tools"; set -x
1473 # install lsync tool
1474 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1475 <`SOURCE lsync` \
1476 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lsync
1477 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lsync
1478 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1479 <`SOURCE dot.lsyncrc` \
1480 >$RPM_BUILD_ROOT%{l_prefix}/local/.lsyncrc
1481 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1482 <`SOURCE lsync.8` \
1483 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lsync.8
1485 # install rpm-config tool
1486 ( l_prefix="%{l_prefix}"
1487 l_cc="%{l_cc}"
1488 l_cflags=""
1489 l_cppflags="-DOPENPKG -I${l_prefix}/include/openpkg/rpm -I${l_prefix}/include/openpkg"
1490 l_ldflags="-L${l_prefix}/lib/openpkg"
1491 l_libs="-lrpmbuild -lrpm -lrpmio -lrpmdb -lrpmmisc -lrpmsqlite3 -lrpmpopt -lrpmbeecrypt -lrpmbz2 -lrpmz"
1492 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1493 -e "s:@l_cc@:$l_cc:g" \
1494 -e "s:@l_cflags@:$l_cflags:g" \
1495 -e "s:@l_cppflags@:$l_cppflags:g" \
1496 -e "s:@l_ldflags@:$l_ldflags:g" \
1497 -e "s:@l_libs@:$l_libs:g" \
1498 -e "s:@l_version@:%{V_rpm_major}.%{V_rpm_minor}:g" \
1499 <`SOURCE rpm-config.sh` \
1500 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config
1501 ) || exit $?
1502 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config
1503 sed -e "s:RPM_VERSION:%{V_rpm_major}.%{V_rpm_minor}:g" \
1504 <`SOURCE rpm-config.8` \
1505 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config.8
1507 # install OpenPKG registry commands
1508 mv $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm \
1509 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpm
1510 sed -e "s;@l_prefix@;%{l_prefix};g" \
1511 `SOURCE rpm.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm
1512 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm
1513 sed -e "s;@l_prefix@;%{l_prefix};g" \
1514 `SOURCE register.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register
1515 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register
1516 cp `SOURCE register.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register.8
1518 # allow GNU shtool to be called as "openpkg shtool" from external, too.
1519 sed -e "s;@l_prefix@;%{l_prefix};g" \
1520 `SOURCE shtool.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/shtool.sh
1521 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/shtool.sh
1523 # install OpenPKG tool chain command subset
1524 cp `SOURCE curl.sh` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/curl.sh
1525 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/curl.sh
1526 cp `SOURCE build.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.pl
1527 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.pl
1528 cp `SOURCE build.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.8
1529 cp `SOURCE index.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/index.pl
1530 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/index.pl
1531 cp `SOURCE index.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/index.8
1532 cp `SOURCE search.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/search.pl
1533 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/search.pl
1534 cp `SOURCE search.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/search.8
1535 cp `SOURCE mirror.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/mirror.pl
1536 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/mirror.pl
1537 cp `SOURCE mirror.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/mirror.8
1538 cp `SOURCE makeproxy.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/makeproxy.pl
1539 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/makeproxy.pl
1540 cp `SOURCE makeproxy.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/makeproxy.8
1541 cp `SOURCE lint-fsl.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-fsl.pl
1542 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-fsl.pl
1543 cp `SOURCE lint-rc.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-rc.pl
1544 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-rc.pl
1545 cp `SOURCE lint-rpm.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-rpm.pl
1546 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-rpm.pl
1547 cp `SOURCE lint-spec.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-spec.pl
1548 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-spec.pl
1549 cp `SOURCE dev.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/dev.pl
1550 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/dev.pl
1551 cp `SOURCE dev.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/dev.8
1552 cp `SOURCE sea.sh` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/sea.sh
1553 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/sea.sh
1554 cp `SOURCE sea.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/sea.8
1555 cp `SOURCE stack.sh` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/stack.sh
1556 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/stack.sh
1557 cp `SOURCE stack.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/stack.8
1559 # install RPM extension
1560 ( cd perl-%{V_perl}
1561 cp miniperl $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/miniperl
1562 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/miniperl
1563 ) || exit $?
1564 ( cd openssl-%{V_openssl}
1565 cp apps/openssl $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openssl
1566 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openssl
1567 ) || exit $?
1568 ( cd curl-%{V_curl}
1569 cp curl $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/curl
1570 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/curl
1571 ) || exit $?
1572 ( cd bzip2-%{V_bzip2}
1573 cp bzip2 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bzip2
1574 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bzip2
1575 ) || exit $?
1576 ( cd gzip-%{V_gzip}
1577 cp gzip $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/gzip
1578 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/gzip
1579 ) || exit $?
1580 ( cd xz-%{V_xz}
1581 cp src/xz/xz $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/xz
1582 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/xz
1583 ) || exit $?
1584 ( cd patch-%{V_patch}
1585 cp patch $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/patch
1586 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/patch
1587 ) || exit $?
1588 ( cd tar-%{V_tar}
1589 cp tar $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/tar
1590 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/tar
1591 ) || exit $?
1592 ( cd bash-%{V_bash}
1593 cp bash $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bash
1594 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bash
1595 ) || exit $?
1596 ( cd uuid-%{V_uuid}
1597 cp uuid $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/uuid
1598 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/uuid
1599 ) || exit $?
1600 ( cd sqlite-%{V_sqlite}
1601 cp sqlite3 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/sqlite3
1602 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/sqlite3
1603 ) || exit $?
1604 ( cd libarchive-%{V_libarchive}
1605 cp bsdcpio $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bsdcpio
1606 cp bsdtar $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bsdtar
1607 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bsdcpio
1608 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bsdtar
1609 ) || exit $?
1610 ( cd diffutils-%{V_diffutils}
1611 ${l_strip} diff diff3 sdiff cmp
1612 cp diff diff3 sdiff cmp $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/
1613 ) || exit $?
1614 ( cd svs-%{V_svs}
1615 sed -e "s;/bin/sh;%{l_prefix}/lib/openpkg/bash;" \
1616 -e "s;^\( *\)\(diff \);\1%{l_prefix}/lib/openpkg/\2;" \
1617 <svs.sh >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/svs
1618 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/svs
1619 cp svs.1 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/svs.1
1620 ) || exit $?
1621 sed -e "s;@l_prefix@;%{l_prefix};g" \
1622 -e "s;@l_musr@;%{l_musr};g" \
1623 -e "s;@l_mgrp@;%{l_mgrp};g" \
1624 <`SOURCE uuid.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/uuid
1625 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/uuid
1626 sed -e "s;@l_prefix@;%{l_prefix};g" \
1627 <`SOURCE uuid.8` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/uuid.8
1628 sed -e "s;@l_prefix@;%{l_prefix};g" \
1629 <`SOURCE release.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/release
1630 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/release
1631 sed -e "s;@l_prefix@;%{l_prefix};g" \
1632 <`SOURCE release.8` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/release.8
1633 sed -e "s;@l_prefix@;%{l_prefix};g" \
1634 -e "s;@l_musr@;%{l_musr};g" \
1635 -e "s;@l_mgrp@;%{l_mgrp};g" \
1636 <`SOURCE rpmdb` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmdb
1637 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmdb
1638 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1639 <`SOURCE rpmtool` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmtool
1640 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmtool
1641 sed -e "s;@l_prefix@;%{l_prefix};g" \
1642 -e "s;@l_musr@;%{l_musr};g" \
1643 -e "s;@l_mgrp@;%{l_mgrp};g" \
1644 <`SOURCE license.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/license
1645 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/license
1646 sed -e "s;@l_prefix@;%{l_prefix};g" \
1647 <`SOURCE license.8` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/license.8
1649 # install OpenPKG tool chain execution frontend and execution wrapper
1650 cp openpkg $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg
1651 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg
1652 chmod 4775 $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg
1653 sed -e "s;@l_prefix@;%{l_prefix};g" \
1654 <`SOURCE openpkg.sh` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openpkg
1655 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openpkg
1656 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1657 <`SOURCE openpkg.1` \
1658 >$RPM_BUILD_ROOT%{l_prefix}/man/man1/openpkg.1
1660 # install more OpenPKG tool chain commands
1661 sed -e "s;@l_prefix@;%{l_prefix};g" \
1662 <`SOURCE man.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/man
1663 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/man
1665 # install OpenPKG mutex utility
1666 cp mutex $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/mutex
1668 # install an own copy of shtool
1669 cp $shtool $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/shtool
1670 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/shtool
1672 # display verbosity header
1673 set +x; VERBOSE "INSTALL: Install Configuration Files"; set -x
1675 # install a few README files
1676 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1677 <`SOURCE root.README` \
1678 >$RPM_BUILD_ROOT%{l_prefix}/README
1679 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1680 <`SOURCE local.README` \
1681 >$RPM_BUILD_ROOT%{l_prefix}/local/README
1683 # install Bash environment
1684 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1685 <`SOURCE dot.bashrc` \
1686 >$RPM_BUILD_ROOT%{l_prefix}/.bashrc
1687 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1688 <`SOURCE dot.bash_login` \
1689 >$RPM_BUILD_ROOT%{l_prefix}/.bash_login
1691 # install Run-Command files
1692 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1693 -e "s:@l_susr@:%{l_susr}:g" \
1694 -e "s:@l_musr@:%{l_musr}:g" \
1695 <`SOURCE rc` \
1696 >$RPM_BUILD_ROOT%{l_prefix}/etc/rc
1697 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/etc/rc
1698 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1699 <`SOURCE rc.conf` \
1700 >$RPM_BUILD_ROOT%{l_prefix}/etc/rc.conf
1701 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.conf
1702 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1703 <`SOURCE rc.func` \
1704 >$RPM_BUILD_ROOT%{l_prefix}/etc/rc.func
1705 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.func
1706 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
1707 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1708 -e "s:@l_musr@:%{l_musr}:g" \
1709 <`SOURCE rc.openpkg` \
1710 >$RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/rc.openpkg
1711 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/rc.openpkg
1712 ( echo "#!/bin/sh"
1713 echo "exec %{l_prefix}/etc/rc \${1+\"\$@\"}"
1714 ) >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc
1715 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc
1716 ln $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc \
1717 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rc
1718 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1719 <`SOURCE rc.8` \
1720 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc.8
1722 # create configuration directory
1723 test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg || \
1724 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg
1726 # install platform identification file
1727 sh $shtool platform -n -L -S "" -C "+" -F "%<ap>-any-%<sp>" \
1728 >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/platform
1729 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/platform
1731 # install UUID configuration file (ghost)
1732 touch $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/uuid
1733 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/uuid
1735 # install registry configuration files (ghost)
1736 touch \
1737 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.conf \
1738 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.prep \
1739 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.tran \
1740 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.util
1741 chmod 644 \
1742 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.conf \
1743 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.prep \
1744 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.tran \
1745 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.util
1747 # install default managers configuration file
1748 ( echo "##"
1749 echo "## managers -- OpenPKG Instance Managers"
1750 echo "##"
1751 echo ""
1752 echo "%{l_susr}"
1753 echo "%{l_musr}"
1754 echo ""
1755 ) >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/managers
1757 # install default release information file
1758 release_tag=""
1759 release_url=""
1760 l_stack=""; [ ".%{?l_stack:set}" = .set ] && l_stack="%{l_stack}"
1761 case "$l_stack" in
1762 http: | https: | ftp: | file: )
1763 release_url="$l_stack"
1764 ;;
1765 [a-zA-Z]* )
1766 release_tag="$l_stack"
1767 ;;
1768 esac
1769 ( echo "##"
1770 echo "## release -- OpenPKG Release Information"
1771 echo "##"
1772 echo ""
1773 echo "TAG=$release_tag"
1774 echo "URL=$release_url"
1775 echo ""
1776 ) >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/release
1778 # install overriding RPM configuration files
1779 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1780 <`SOURCE rpmpopt` \
1781 >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmpopt
1782 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1783 -e "s:@l_prefix_static@:%{l_prefix}:g" \
1784 -e "s;@l_build_path@;$l_build_path;g" \
1785 -e "s;@l_build_ldlp@;$l_build_ldlp;g" \
1786 -e "s;@l_build_ulim@;$l_build_ulim;g" \
1787 -e "s;@l_unprivileged@;$l_unprivileged;g" \
1788 -e "s:@TAG@:$tag:g" \
1789 -e "s:@SUSR@:$susr:g" \
1790 -e "s:@SGRP@:$sgrp:g" \
1791 -e "s:@MUSR@:$musr:g" \
1792 -e "s:@MGRP@:$mgrp:g" \
1793 -e "s:@RUSR@:$rusr:g" \
1794 -e "s:@RGRP@:$rgrp:g" \
1795 -e "s:@NUSR@:$nusr:g" \
1796 -e "s:@NGRP@:$ngrp:g" \
1797 <`SOURCE rpmmacros` \
1798 >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmmacros
1799 sed -e "s:@l_prefix@:%{l_prefix}:g" \
1800 <`SOURCE rpmlua` \
1801 >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmlua
1802 cp `SOURCE openpkg.org.pgp` \
1803 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/openpkg.org.pgp
1804 cp `SOURCE openpkg.com.pgp` \
1805 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/openpkg.com.pgp
1806 cp `SOURCE openpkg.net.pgp` \
1807 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/openpkg.net.pgp
1809 # install license data
1810 test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d || \
1811 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d
1812 cp `SOURCE license-BOOT.txt` \
1813 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/BOOT
1814 cp `SOURCE license-COMMUNITY.txt` \
1815 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/COMMUNITY
1816 cp `SOURCE license-EVAL.txt` \
1817 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/EVAL
1818 cp `SOURCE license-EXAMPLE.txt` \
1819 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/EXAMPLE
1820 cp `SOURCE license-PROMO.txt` \
1821 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/PROMO
1822 cp `SOURCE license-RECOVERY.txt` \
1823 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/RECOVERY
1824 cp `SOURCE license.lua` \
1825 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/license.lua
1826 touch $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license
1828 # provide directories for easy overriding of RPM configuration files
1829 test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmmacros.d || \
1830 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmmacros.d
1831 test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmpopt.d || \
1832 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmpopt.d
1833 test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmlua.d || \
1834 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmlua.d
1836 # display verbosity header
1837 set +x; VERBOSE "INSTALL: Done. Thank you for flying OpenPKG..."; set -x
1839 %files
1840 %defattr(-,%{?l_musr}%{!?l_musr:%{l_fsusr}},%{?l_mgrp}%{!?l_mgrp:%{l_fsgrp}})
1841 %{l_prefix}/README
1842 %config(noreplace) %{l_prefix}/.bashrc
1843 %config(noreplace) %{l_prefix}/.bash_login
1844 %dir %{l_prefix}/RPM
1845 %dir %{l_prefix}/RPM/SRC
1846 %dir %{l_prefix}/RPM/PKG
1847 %dir %{l_prefix}/RPM/TR
1848 %dir %{l_prefix}/RPM/DB
1849 %dir %{l_prefix}/RPM/TMP
1850 %dir %{l_prefix}/cgi
1851 %dir %{l_prefix}/bin
1852 %attr(4755,%{l_susr},%{l_mgrp}) %{l_prefix}/bin/openpkg
1853 %dir %{l_prefix}/etc
1854 %{l_prefix}/etc/rc
1855 %config(noreplace) %{l_prefix}/etc/rc.conf
1856 %{l_prefix}/etc/rc.func
1857 %dir %{l_prefix}/etc/rc.d
1858 %{l_prefix}/etc/rc.d/rc.openpkg
1859 %dir %{l_prefix}/etc/openpkg
1860 %ghost %{l_prefix}/etc/openpkg/license
1861 %dir %{l_prefix}/etc/openpkg/license.d
1862 %{l_prefix}/etc/openpkg/license.d/BOOT
1863 %{l_prefix}/etc/openpkg/license.d/COMMUNITY
1864 %{l_prefix}/etc/openpkg/license.d/EVAL
1865 %{l_prefix}/etc/openpkg/license.d/EXAMPLE
1866 %{l_prefix}/etc/openpkg/license.d/PROMO
1867 %{l_prefix}/etc/openpkg/license.d/RECOVERY
1868 %ghost %{l_prefix}/etc/openpkg/uuid
1869 %config %{l_prefix}/etc/openpkg/release
1870 %config %{l_prefix}/etc/openpkg/platform
1871 %config %{l_prefix}/etc/openpkg/rpmmacros
1872 %config %{l_prefix}/etc/openpkg/rpmpopt
1873 %config %{l_prefix}/etc/openpkg/rpmlua
1874 %dir %{l_prefix}/etc/openpkg/rpmmacros.d
1875 %dir %{l_prefix}/etc/openpkg/rpmpopt.d
1876 %dir %{l_prefix}/etc/openpkg/rpmlua.d
1877 %ghost %{l_prefix}/etc/openpkg/register.conf
1878 %ghost %{l_prefix}/etc/openpkg/register.prep
1879 %ghost %{l_prefix}/etc/openpkg/register.tran
1880 %ghost %{l_prefix}/etc/openpkg/register.util
1881 %config %attr(664,%{l_musr},%{l_mgrp}) %{l_prefix}/etc/openpkg/managers
1882 %{l_prefix}/etc/openpkg/openpkg.org.pgp
1883 %{l_prefix}/etc/openpkg/openpkg.com.pgp
1884 %{l_prefix}/etc/openpkg/openpkg.net.pgp
1885 %dir %{l_prefix}/include
1886 %dir %{l_prefix}/include/openpkg
1887 %dir %{l_prefix}/include/openpkg/rpm
1888 %{l_prefix}/include/openpkg/rpm/argv.h
1889 %{l_prefix}/include/openpkg/rpm/beecrypt.h
1890 %{l_prefix}/include/openpkg/rpm/bzlib.h
1891 %{l_prefix}/include/openpkg/rpm/db.h
1892 %{l_prefix}/include/openpkg/rpm/envvar.h
1893 %{l_prefix}/include/openpkg/rpm/fs.h
1894 %{l_prefix}/include/openpkg/rpm/fts.h
1895 %{l_prefix}/include/openpkg/rpm/glob.h
1896 %{l_prefix}/include/openpkg/rpm/mire.h
1897 %{l_prefix}/include/openpkg/rpm/misc.h
1898 %{l_prefix}/include/openpkg/rpm/pkgio.h
1899 %{l_prefix}/include/openpkg/rpm/popt.h
1900 %{l_prefix}/include/openpkg/rpm/rpm4compat.h
1901 %{l_prefix}/include/openpkg/rpm/rpmal.h
1902 %{l_prefix}/include/openpkg/rpm/rpmbc.h
1903 %{l_prefix}/include/openpkg/rpm/rpmbuild.h
1904 %{l_prefix}/include/openpkg/rpm/rpmcb.h
1905 %{l_prefix}/include/openpkg/rpm/rpmcli.h
1906 %{l_prefix}/include/openpkg/rpm/rpmconstant.h
1907 %{l_prefix}/include/openpkg/rpm/rpmdav.h
1908 %{l_prefix}/include/openpkg/rpm/rpmdb.h
1909 %{l_prefix}/include/openpkg/rpm/rpmds.h
1910 %{l_prefix}/include/openpkg/rpm/rpmevr.h
1911 %{l_prefix}/include/openpkg/rpm/rpmfc.h
1912 %{l_prefix}/include/openpkg/rpm/rpmfi.h
1913 %{l_prefix}/include/openpkg/rpm/rpmgc.h
1914 %{l_prefix}/include/openpkg/rpm/rpmgi.h
1915 %{l_prefix}/include/openpkg/rpm/rpmhash.h
1916 %{l_prefix}/include/openpkg/rpm/rpmio-stub.h
1917 %{l_prefix}/include/openpkg/rpm/rpmio.h
1918 %{l_prefix}/include/openpkg/rpm/rpmiotypes.h
1919 %{l_prefix}/include/openpkg/rpm/rpmku.h
1920 %{l_prefix}/include/openpkg/rpm/rpmlib.h
1921 %{l_prefix}/include/openpkg/rpm/rpmlog.h
1922 %{l_prefix}/include/openpkg/rpm/rpmmacro.h
1923 %{l_prefix}/include/openpkg/rpm/rpmmg.h
1924 %{l_prefix}/include/openpkg/rpm/rpmns.h
1925 %{l_prefix}/include/openpkg/rpm/rpmnss.h
1926 %{l_prefix}/include/openpkg/rpm/rpmpgp.h
1927 %{l_prefix}/include/openpkg/rpm/rpmps.h
1928 %{l_prefix}/include/openpkg/rpm/rpmspec.h
1929 %{l_prefix}/include/openpkg/rpm/rpmsq.h
1930 %{l_prefix}/include/openpkg/rpm/rpmssl.h
1931 %{l_prefix}/include/openpkg/rpm/rpmsw.h
1932 %{l_prefix}/include/openpkg/rpm/rpmsx.h
1933 %{l_prefix}/include/openpkg/rpm/rpmtag.h
1934 %{l_prefix}/include/openpkg/rpm/rpmte.h
1935 %{l_prefix}/include/openpkg/rpm/rpmts.h
1936 %{l_prefix}/include/openpkg/rpm/rpmurl.h
1937 %{l_prefix}/include/openpkg/rpm/rpmuuid.h
1938 %{l_prefix}/include/openpkg/rpm/rpmversion.h
1939 %{l_prefix}/include/openpkg/rpm/rpmwf.h
1940 %{l_prefix}/include/openpkg/rpm/rpmxar.h
1941 %{l_prefix}/include/openpkg/rpm/rpmzlog.h
1942 %{l_prefix}/include/openpkg/rpm/signature.h
1943 %{l_prefix}/include/openpkg/rpm/sqlite3.h
1944 %{l_prefix}/include/openpkg/rpm/ugid.h
1945 %{l_prefix}/include/openpkg/rpm/yarn.h
1946 %{l_prefix}/include/openpkg/rpm/zconf.h
1947 %{l_prefix}/include/openpkg/rpm/zlib.h
1948 %dir %{l_prefix}/info
1949 %dir %{l_prefix}/lib
1950 %dir %{l_prefix}/lib/openpkg
1951 %{l_prefix}/lib/openpkg/bash
1952 %{l_prefix}/lib/openpkg/bsdcpio
1953 %{l_prefix}/lib/openpkg/bsdtar
1954 %{l_prefix}/lib/openpkg/bzip2
1955 %{l_prefix}/lib/openpkg/curl
1956 %{l_prefix}/lib/openpkg/db_tool
1957 %{l_prefix}/lib/openpkg/cmp
1958 %{l_prefix}/lib/openpkg/diff
1959 %{l_prefix}/lib/openpkg/diff3
1960 %{l_prefix}/lib/openpkg/sdiff
1961 %{l_prefix}/lib/openpkg/gzip
1962 %{l_prefix}/lib/openpkg/librpm.a
1963 %{l_prefix}/lib/openpkg/librpmbeecrypt.a
1964 %{l_prefix}/lib/openpkg/librpmbuild.a
1965 %{l_prefix}/lib/openpkg/librpmbz2.a
1966 %{l_prefix}/lib/openpkg/librpmdb.a
1967 %{l_prefix}/lib/openpkg/librpmio.a
1968 %{l_prefix}/lib/openpkg/librpmmisc.a
1969 %{l_prefix}/lib/openpkg/librpmpopt.a
1970 %{l_prefix}/lib/openpkg/librpmsqlite3.a
1971 %{l_prefix}/lib/openpkg/librpmz.a
1972 %{l_prefix}/lib/openpkg/license.lua
1973 %{l_prefix}/lib/openpkg/miniperl
1974 %{l_prefix}/lib/openpkg/mutex
1975 %{l_prefix}/lib/openpkg/openpkg
1976 %{l_prefix}/lib/openpkg/openssl
1977 %{l_prefix}/lib/openpkg/patch
1978 %{l_prefix}/lib/openpkg/rc
1979 %{l_prefix}/lib/openpkg/rpm
1980 %{l_prefix}/lib/openpkg/rpm.pc
1981 %{l_prefix}/lib/openpkg/rpmdb
1982 %{l_prefix}/lib/openpkg/rpmdeps
1983 %{l_prefix}/lib/openpkg/lua
1984 %{l_prefix}/lib/openpkg/rpmmacros
1985 %{l_prefix}/lib/openpkg/rpmpopt
1986 %{l_prefix}/lib/openpkg/rpmtool
1987 %{l_prefix}/lib/openpkg/shtool
1988 %{l_prefix}/lib/openpkg/sqlite3
1989 %{l_prefix}/lib/openpkg/tar
1990 %{l_prefix}/lib/openpkg/uuid
1991 %{l_prefix}/lib/openpkg/xz
1992 %dir %{l_prefix}/libexec
1993 %dir %{l_prefix}/libexec/openpkg
1994 %{l_prefix}/libexec/openpkg/build.8
1995 %{l_prefix}/libexec/openpkg/build.pl
1996 %{l_prefix}/libexec/openpkg/curl.sh
1997 %{l_prefix}/libexec/openpkg/dev.8
1998 %{l_prefix}/libexec/openpkg/dev.pl
1999 %{l_prefix}/libexec/openpkg/index.8
2000 %{l_prefix}/libexec/openpkg/index.pl
2001 %{l_prefix}/libexec/openpkg/license
2002 %{l_prefix}/libexec/openpkg/license.8
2003 %{l_prefix}/libexec/openpkg/lsync
2004 %{l_prefix}/libexec/openpkg/lsync.8
2005 %{l_prefix}/libexec/openpkg/lint-fsl.pl
2006 %{l_prefix}/libexec/openpkg/lint-rc.pl
2007 %{l_prefix}/libexec/openpkg/lint-rpm.pl
2008 %{l_prefix}/libexec/openpkg/lint-spec.pl
2009 %{l_prefix}/libexec/openpkg/makeproxy.8
2010 %{l_prefix}/libexec/openpkg/makeproxy.pl
2011 %{l_prefix}/libexec/openpkg/man
2012 %{l_prefix}/libexec/openpkg/mirror.8
2013 %{l_prefix}/libexec/openpkg/mirror.pl
2014 %{l_prefix}/libexec/openpkg/rc
2015 %{l_prefix}/libexec/openpkg/rc.8
2016 %{l_prefix}/libexec/openpkg/register
2017 %{l_prefix}/libexec/openpkg/register.8
2018 %{l_prefix}/libexec/openpkg/release
2019 %{l_prefix}/libexec/openpkg/release.8
2020 %{l_prefix}/libexec/openpkg/rpm
2021 %{l_prefix}/libexec/openpkg/rpm-config
2022 %{l_prefix}/libexec/openpkg/rpm-config.8
2023 %{l_prefix}/libexec/openpkg/rpm.8
2024 %{l_prefix}/libexec/openpkg/rpmconstant
2025 %{l_prefix}/libexec/openpkg/rpmconstant.8
2026 %{l_prefix}/libexec/openpkg/rpm2cpio
2027 %{l_prefix}/libexec/openpkg/rpm2cpio.8
2028 %{l_prefix}/libexec/openpkg/rpmbuild.8
2029 %{l_prefix}/libexec/openpkg/rpmcache
2030 %{l_prefix}/libexec/openpkg/rpmcache.8
2031 %{l_prefix}/libexec/openpkg/rpmdeps.8
2032 %{l_prefix}/libexec/openpkg/rpmgraph.8
2033 %{l_prefix}/libexec/openpkg/rpmgrep
2034 %{l_prefix}/libexec/openpkg/rpmgrep.1
2035 %{l_prefix}/libexec/openpkg/sea.8
2036 %{l_prefix}/libexec/openpkg/sea.sh
2037 %{l_prefix}/libexec/openpkg/search.8
2038 %{l_prefix}/libexec/openpkg/search.pl
2039 %{l_prefix}/libexec/openpkg/stack.8
2040 %{l_prefix}/libexec/openpkg/stack.sh
2041 %{l_prefix}/libexec/openpkg/shtool.sh
2042 %{l_prefix}/libexec/openpkg/svs
2043 %{l_prefix}/libexec/openpkg/svs.1
2044 %{l_prefix}/libexec/openpkg/uuid
2045 %{l_prefix}/libexec/openpkg/uuid.8
2046 %dir %{l_prefix}/man
2047 %dir %{l_prefix}/man/man1
2048 %dir %{l_prefix}/man/man2
2049 %dir %{l_prefix}/man/man3
2050 %dir %{l_prefix}/man/man4
2051 %dir %{l_prefix}/man/man5
2052 %dir %{l_prefix}/man/man6
2053 %dir %{l_prefix}/man/man7
2054 %dir %{l_prefix}/man/man8
2055 %dir %{l_prefix}/man/man9
2056 %dir %{l_prefix}/man/cat1
2057 %dir %{l_prefix}/man/cat2
2058 %dir %{l_prefix}/man/cat3
2059 %dir %{l_prefix}/man/cat4
2060 %dir %{l_prefix}/man/cat5
2061 %dir %{l_prefix}/man/cat6
2062 %dir %{l_prefix}/man/cat7
2063 %dir %{l_prefix}/man/cat8
2064 %dir %{l_prefix}/man/cat9
2065 %{l_prefix}/man/man1/openpkg.1
2066 %dir %{l_prefix}/sbin
2067 %dir %{l_prefix}/pub
2068 %dir %{l_prefix}/share
2069 %dir %{l_prefix}/var
2070 %dir %{l_prefix}/local
2071 %{l_prefix}/local/README
2072 %{l_prefix}/local/.lsyncrc
2073 %dir %{l_prefix}/local/PKG
2074 %dir %{l_prefix}/local/bin
2075 %dir %{l_prefix}/local/etc
2076 %dir %{l_prefix}/local/include
2077 %dir %{l_prefix}/local/info
2078 %dir %{l_prefix}/local/lib
2079 %dir %{l_prefix}/local/man
2080 %dir %{l_prefix}/local/man/man1
2081 %dir %{l_prefix}/local/man/man2
2082 %dir %{l_prefix}/local/man/man3
2083 %dir %{l_prefix}/local/man/man4
2084 %dir %{l_prefix}/local/man/man5
2085 %dir %{l_prefix}/local/man/man6
2086 %dir %{l_prefix}/local/man/man7
2087 %dir %{l_prefix}/local/man/man8
2088 %dir %{l_prefix}/local/man/man9
2089 %dir %{l_prefix}/local/man/cat1
2090 %dir %{l_prefix}/local/man/cat2
2091 %dir %{l_prefix}/local/man/cat3
2092 %dir %{l_prefix}/local/man/cat4
2093 %dir %{l_prefix}/local/man/cat5
2094 %dir %{l_prefix}/local/man/cat6
2095 %dir %{l_prefix}/local/man/cat7
2096 %dir %{l_prefix}/local/man/cat8
2097 %dir %{l_prefix}/local/man/cat9
2098 %dir %{l_prefix}/local/sbin
2100 %clean
2101 # skip in bootstrap phase 2 (see openpkg.boot)
2102 [ ".$OPENPKG_BOOT" = .1 ] && exit 0
2104 # cleanup build area
2105 rm -rf openpkg-%{version} >/dev/null 2>&1 || true
2107 # cleanup installation area
2108 rm -rf $RPM_BUILD_ROOT >/dev/null 2>&1 || true
2110 %pre
2111 # always performed for upgrades and because it doesn't harm!
2112 # [ ".$1" != .1 ] && exit 0
2114 # this procedure is only usable with root privileges
2115 # (for non-root installations it is not required at all)
2116 cusr=`(id -un) 2>/dev/null ||\
2117 (id | sed -e 's;^[^(]*(\([^)]*\)).*;\1;') 2>/dev/null ||\
2118 (whoami) 2>/dev/null ||\
2119 (who am i | cut "-d " -f1) 2>/dev/null ||\
2120 echo $LOGNAME`
2122 # determine runtime details (for both inside and outside RPM!!)
2123 # - bootstrapping: $xxx is set from etc.wrapbin.sh
2124 # - upgrading new: %{l_[smrn]{usr,grp}} is set via rpmmacros
2125 # - upgrading old: %{l_[smrn]{usr,grp}} is not set at all
2126 [ ".$susr" = . ] && susr="%{?l_susr}%{!?l_susr:root}"
2127 [ ".$sgrp" = . ] && sgrp="%{?l_sgrp}%{!?l_sgrp:wheel}"
2128 [ ".$musr" = . ] && musr="%{?l_musr}%{!?l_musr:%{l_fsusr}}"
2129 [ ".$mgrp" = . ] && mgrp="%{?l_mgrp}%{!?l_mgrp:%{l_fsgrp}}"
2130 [ ".$rusr" = . ] && rusr="%{?l_rusr}%{!?l_rusr:%{l_fsusr}-r}"
2131 [ ".$rgrp" = . ] && rgrp="%{?l_rgrp}%{!?l_rgrp:%{l_fsgrp}-r}"
2132 [ ".$nusr" = . ] && nusr="%{?l_nusr}%{!?l_nusr:%{l_fsusr}-n}"
2133 [ ".$ngrp" = . ] && ngrp="%{?l_ngrp}%{!?l_ngrp:%{l_fsgrp}-n}"
2134 [ ".$suid" = . ] && suid="%{?l_suid}"
2135 [ ".$sgid" = . ] && sgid="%{?l_sgid}"
2136 [ ".$muid" = . ] && muid="%{?l_muid}"
2137 [ ".$mgid" = . ] && mgid="%{?l_mgid}"
2138 [ ".$ruid" = . ] && ruid="%{?l_ruid}"
2139 [ ".$rgid" = . ] && rgid="%{?l_rgid}"
2140 [ ".$nuid" = . ] && nuid="%{?l_nuid}"
2141 [ ".$ngid" = . ] && ngid="%{?l_ngid}"
2143 # if any of these optional params are not used we won't have a
2144 # corresponding macro either, so make use of one conditionally
2145 [ ".$suid" = . ] && [ ".%{?l_suid:set}" = .set ] && suid="%{?l_suid}"
2146 [ ".$sgid" = . ] && [ ".%{?l_sgid:set}" = .set ] && sgid="%{?l_sgid}"
2147 [ ".$muid" = . ] && [ ".%{?l_muid:set}" = .set ] && muid="%{?l_muid}"
2148 [ ".$mgid" = . ] && [ ".%{?l_mgid:set}" = .set ] && mgid="%{?l_mgid}"
2149 [ ".$ruid" = . ] && [ ".%{?l_ruid:set}" = .set ] && ruid="%{?l_ruid}"
2150 [ ".$rgid" = . ] && [ ".%{?l_rgid:set}" = .set ] && rgid="%{?l_rgid}"
2151 [ ".$nuid" = . ] && [ ".%{?l_nuid:set}" = .set ] && nuid="%{?l_nuid}"
2152 [ ".$ngid" = . ] && [ ".%{?l_ngid:set}" = .set ] && ngid="%{?l_ngid}"
2154 # determine prefix
2155 [ ".$prefix" = . ] && prefix="%{l_prefix}"
2156 prefix=`echo "$prefix" | sed -e 's;//*;/;g' -e 's;/$;;'`
2158 # Pre-flight check before update to make sure that the currently
2159 # activated license is still valid. This is done just be friendly
2160 # to people and to not too easily shoot theirself into the foot
2161 # by blindly upgrading and then having to recognize that the new
2162 # OpenPKG Framework is no longer covered by the old license.
2163 if [ ".$1" = .2 ]; then
2164 ( OPENPKG_FRAMEWORK_RELEASE="%{release}"
2165 export OPENPKG_FRAMEWORK_RELEASE
2166 # LATER:
2167 # $prefix/bin/openpkg rpm -q openpkg >/dev/null 2>&1 || exit $?
2168 # if [ $? -ne 0 ]; then
2169 # NOW:
2170 output="`$prefix/bin/openpkg rpm -q openpkg 2>&1 | grep 'ENVIRONMENT ANOMALY'`"
2171 if [ ".$output" != . ]; then
2172 id="`($prefix/bin/openpkg license active) 2>/dev/null`"
2173 [ ".$id" = . ] && id="UNKNOWN"
2174 ( echo "Attention, your currently active license \"$id\" does"
2175 echo "not allow you to use this newer version of the OpenPKG Framework!"
2176 echo "We cancel this update to prevent you from a run-time failure."
2177 echo "Please first upgrade to a newer license with the command:"
2178 echo " \$ $prefix/bin/openpkg license update $id <file>"
2179 ) | $prefix/lib/openpkg/rpmtool msg -b -t error
2180 exit 42
2181 fi
2182 ) || exit $?
2183 fi
2185 # register instance in presence file
2186 presence="/etc/openpkg"
2187 exists=`cat $presence 2>/dev/null | egrep "^ *${prefix} *\$"`
2188 if [ ".$exists" = . ]; then
2189 ( umask 022
2190 echo "${prefix}" >>$presence
2191 ) 2>/dev/null || true
2192 fi
2194 # determine user/group ids
2195 for class in s m r n; do
2196 eval "xusr=\"\$${class}usr\""
2197 eval "xgrp=\"\$${class}grp\""
2198 eval "xuid=\"\$${class}uid\""
2199 eval "xgid=\"\$${class}gid\""
2200 if [ ".$xuid" = . ]; then
2201 case "$plid" in
2202 Darwin/10.[1-9]* | Darwin/1[1-9].* )
2203 xuid=`dscl . -read "/users/${xusr}" UniqueID 2>/dev/null | awk '{ print $2; }'`
2204 ;;
2205 * )
2206 xuid=`(getent passwd "${xusr}"; \
2207 grep "^${xusr}:" /etc/passwd; \
2208 ypmatch "${xusr}" passwd; \
2209 nismatch "${xusr}" passwd; \
2210 nidump passwd . | grep "^${xusr}:") 2>/dev/null | \
2211 sed -e 'q' | awk -F: '{ print $3; }'`
2212 ;;
2213 esac
2214 if [ ".$xuid" = . ]; then
2215 # seek for a reasonably uid/gid pair
2216 xuid=1000
2217 ok=0
2218 while [ ".$ok" = .0 ]; do
2219 eval "u_exists=\$u_exists_$xuid"
2220 if [ ".$u_exists" = . ]; then
2221 case "$plid" in
2222 Darwin/10.[1-9]* | Darwin/1[1-9].* )
2223 u_exists=`dscl . -search /users UniqueID "$xuid" 2>/dev/null`
2224 ;;
2225 * )
2226 u_exists=`(getent passwd; cat /etc/passwd; ypcat passwd; niscat passwd; nidump passwd .) 2>/dev/null |\
2227 grep "^[^:]*:[^:]*:$xuid:"`
2228 ;;
2229 esac
2230 fi
2231 eval "g_exists=\$g_exists_$xuid"
2232 if [ ".$g_exists" = . ]; then
2233 case "$plid" in
2234 Darwin/10.[1-9]* | Darwin/1[1-9].* )
2235 g_exists=`dscl . -search /groups PrimaryGroupID "$xuid" 2>/dev/null`
2236 ;;
2237 * )
2238 g_exists=`(getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null |\
2239 grep "^[^:]*:[^:]*:$xuid:"`
2240 esac
2241 fi
2242 if [ ".$u_exists" = . -a ".$g_exists" = . ]; then
2243 ok=1
2244 break
2245 fi
2246 xuid=`expr $xuid + 1`
2247 done
2248 eval "u_exists_$xuid=yes"
2249 eval "g_exists_$xuid=yes"
2250 fi
2251 fi
2252 if [ ".$xgid" = . ]; then
2253 xgid=`(getent group "${xgrp}"; \
2254 grep "^${xgrp}:" /etc/group; \
2255 ypmatch "${xgrp}" group; \
2256 nismatch "${xgrp}" group; \
2257 nidump group . | grep "^${xgrp}:"; \
2258 dscl . -read "/groups/${xgrp}" | grep RecordName) 2>/dev/null | \
2259 sed -e 'q' | awk -F: '{ print $3; }'`
2260 if [ ".$xgid" = . ]; then
2261 xgid="$xuid"
2262 fi
2263 fi
2264 eval "${class}uid=\"$xuid\""
2265 eval "${class}gid=\"$xgid\""
2266 done
2268 # determine platform id
2269 s=`(uname -s) 2>/dev/null` || s='Unknown'
2270 r=`(uname -r) 2>/dev/null` || r='0.0'
2271 plid="${s}/${r}"
2273 # add entry to /etc/shells
2274 shell="${prefix}/lib/openpkg/bash"
2275 if [ -f /etc/shells ]; then
2276 exists=`cat /etc/shells 2>/dev/null | grep "^$shell"`
2277 if [ ".$exists" = . ]; then
2278 if [ ".$cusr" != ".root" ]; then
2279 echo "openpkg:WARNING: skipping addition of $shell to /etc/shells" 1>&2
2280 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
2281 else
2282 echo "${shell}" >>/etc/shells
2283 fi
2284 fi
2285 fi
2287 # clear pending deferred actions
2288 rm -f %{l_prefix}.pre-group-process.sh %{l_prefix}.pre-post-process.sh >/dev/null 2>&1
2290 # create the hierarchy user/group
2291 for req in "superuser:${susr}:${suid}:${sgrp}:${sgid}" \
2292 "management:${musr}:${muid}:${mgrp}:${mgid}" \
2293 "restricted:${rusr}:${ruid}:${rgrp}:${rgid}" \
2294 "non-privileged:${nusr}:${nuid}:${ngrp}:${ngid}"; do
2295 # split request into class/usr/uid/grp/gid
2296 OIFS="$IFS"; IFS=":"; set -- $req; IFS="$OIFS"
2297 class="$1"; usr="$2"; uid="$3"; grp="$4"; gid="$5"
2299 # check whether user already exists
2300 exists=`(getent passwd "$usr"; \
2301 grep "^$usr:" /etc/passwd; \
2302 ypmatch "$usr" passwd; \
2303 nismatch "$usr" passwd; \
2304 nidump passwd . | grep "^$usr:"; \
2305 dscl . -read "/users/$usr" | grep RecordName) 2>/dev/null | \
2306 sed -e 'q'`
2307 if [ ".$exists" = . ]; then
2308 if [ ".$cusr" != ".root" ]; then
2309 echo "openpkg:WARNING: skipping creation of OpenPKG $class user $usr" 1>&2
2310 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
2311 else
2312 # add entry to passwd database
2313 realname="${prefix} OpenPKG ($class)"
2314 case "$plid" in
2315 FreeBSD/* | NetBSD/* )
2316 file=/etc/master.passwd
2317 entry="${usr}:*:${uid}:${gid}::0:0:${realname}:${prefix}:${shell}"
2318 update="(PATH=\$PATH:/usr/sbin; pwd_mkdb -p /etc/master.passwd)"
2319 ;;
2320 Linux/* )
2321 file=/etc/passwd
2322 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
2323 update="(PATH=\$PATH:/usr/sbin; pwconv)"
2324 ;;
2325 SunOS/5.* | UnixWare/* )
2326 file=/etc/passwd
2327 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
2328 update="(PATH=\$PATH:/usr/sbin; pwconv)"
2329 ;;
2330 AIX/* )
2331 # intentionally do nothing here
2332 :
2333 ;;
2334 OSF1/V5.* )
2335 file=/etc/passwd
2336 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
2337 update="(PATH=\$PATH:/usr/sbin; mkpasswd /etc/passwd)"
2338 ;;
2339 HP-UX/* )
2340 file=/etc/passwd
2341 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
2342 update=":"
2343 ;;
2344 Darwin/* )
2345 # intentionally do nothing here
2346 :
2347 ;;
2348 IRIX*/6.* )
2349 file=/etc/passwd
2350 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
2351 if [ -f /etc/shadow ]
2352 then update="(PATH=\$PATH:/sbin; pwconv)"
2353 else update=":"
2354 fi
2355 ;;
2356 CYGWIN*/* )
2357 file=/etc/passwd
2358 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
2359 update=":"
2360 ;;
2361 esac
2362 case "$plid" in
2363 Darwin/10.[1-9]* | Darwin/1[1-9].* )
2364 dscl . -create "/users/${usr}"
2365 dscl . -create "/users/${usr}" Password "*"
2366 dscl . -create "/users/${usr}" UniqueID "${uid}"
2367 dscl . -create "/users/${usr}" PrimaryGroupID "${gid}"
2368 dscl . -create "/users/${usr}" RealName "${realname}"
2369 dscl . -create "/users/${usr}" NFSHomeDirectory "${prefix}"
2370 dscl . -create "/users/${usr}" UserShell "${shell}"
2371 ;;
2372 Darwin/* )
2373 niutil -create . "/users/${usr}"
2374 niutil -createprop . "/users/${usr}" passwd "*"
2375 niutil -createprop . "/users/${usr}" uid "${uid}"
2376 niutil -createprop . "/users/${usr}" gid "${gid}"
2377 niutil -createprop . "/users/${usr}" realname "${realname}"
2378 niutil -createprop . "/users/${usr}" home "${prefix}"
2379 niutil -createprop . "/users/${usr}" shell "${shell}"
2380 ;;
2381 AIX/* )
2382 mkuser id="${uid}" gecos="${realname}" home="${prefix}" "${usr}"
2383 cp /etc/security/login.cfg /etc/security/login.cfg.bak && \
2384 sed -e "/^usw:/,/^[^ ]/s;\\( *shells =.*\\) *\$;\\1,$shell;" \
2385 </etc/security/login.cfg.bak >/etc/security/login.cfg && \
2386 rm -f /etc/security/login.cfg.bak >/dev/null 2>&1
2387 # defer both the setting of the primary group and the shell,
2388 # as they do not exist at this stage of processing.
2389 echo "chuser pgrp=\"${grp}\" \"${usr}\"" >>%{l_prefix}.pre-group-process.sh
2390 echo "chuser shell=\"${shell}\" \"${usr}\"" >>%{l_prefix}.pre-post-process.sh
2391 ;;
2392 * )
2393 cp $file $file.bak && \
2394 (grep -v '^+:' $file.bak; echo $entry; grep '^+:' $file.bak) >$file
2395 rm -f $file.bak >/dev/null 2>&1
2396 eval $update
2397 [ $? -ne 0 ] && exit $?
2398 ;;
2399 esac
2400 fi
2401 fi
2403 # check whether group already exists
2404 exists=`(getent group "$grp"; \
2405 grep "^$grp:" /etc/group; \
2406 ypmatch "$grp" group; \
2407 nismatch "$grp" group; \
2408 nidump group . | grep "^$grp:"; \
2409 dscl . -read "/groups/$grp" | grep RecordName) 2>/dev/null | \
2410 sed -e 'q'`
2411 if [ ".$exists" = . ]; then
2412 if [ ".$cusr" != ".root" ]; then
2413 echo "openpkg:WARNING: skipping creation of OpenPKG $class group $grp" 1>&2
2414 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
2415 else
2416 case "$plid" in
2417 Darwin/10.[1-9]* | Darwin/1[1-9].* )
2418 dscl . -create "/groups/${grp}"
2419 dscl . -create "/groups/${grp}" Password "*"
2420 dscl . -create "/groups/${grp}" PrimaryGroupID "${gid}"
2421 dscl . -create "/groups/${grp}" GroupMembership "${usr}"
2422 ;;
2423 Darwin/* )
2424 niutil -create . "/groups/${grp}"
2425 niutil -createprop . "/groups/${grp}" gid "${gid}"
2426 niutil -createprop . "/groups/${grp}" users "${usr}"
2427 ;;
2428 AIX/* )
2429 mkgroup id="${gid}" users="${usr}" "${grp}"
2430 ;;
2431 * )
2432 # add entry to group database
2433 file=/etc/group
2434 entry="${grp}:*:${gid}:${usr}"
2435 cp $file $file.bak && \
2436 (grep -v '^+:' $file.bak; echo $entry; grep '^+:' $file.bak) >$file
2437 rm -f $file.bak >/dev/null 2>&1
2438 ;;
2439 esac
2440 fi
2441 fi
2442 done
2444 # optional group processing (deferred adjustment of primary group)
2445 if [ -f %{l_prefix}.pre-group-process.sh ]; then
2446 sh %{l_prefix}.pre-group-process.sh
2447 rm -f %{l_prefix}.pre-group-process.sh
2448 fi
2450 # invalidate passwd and group tables from Name Service Cache Daemon to
2451 # ensure chown/chgrp works immediately after pwconv on Linux and Solaris
2452 if [ -x /usr/sbin/nscd ]; then
2453 /usr/sbin/nscd -i passwd >/dev/null 2>&1 || true
2454 /usr/sbin/nscd -i group >/dev/null 2>&1 || true
2455 fi
2457 # create the startup/shutdown transfer script
2458 name_old="`echo "$prefix" | sed -e 's;/;;g'`"
2459 name="openpkg-`echo "$prefix" | sed -e 's;[^a-zA-Z0-9];;g'`"
2460 if [ ".$cusr" != ".root" ]; then
2461 echo "openpkg:WARNING: skipping creation of system run-command hooks" 1>&2
2462 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
2463 else
2464 case "$plid" in
2465 FreeBSD/* )
2466 if [ -f /etc/rc.d/${name_old} ]; then
2467 rm -f /etc/rc.d/${name_old}
2468 fi
2469 if [ ! -f /etc/rc.d/${name} ]; then
2470 # install transfer script
2471 rm -f /etc/rc.d/${name} >/dev/null 2>&1
2472 ( echo "#!/bin/sh"
2473 echo "##"
2474 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2475 echo "##"
2476 echo ""
2477 echo "# PROVIDE: ${name}"
2478 echo "# REQUIRE: LOGIN"
2479 echo "# KEYWORD: shutdown"
2480 echo ""
2481 echo ". /etc/rc.subr"
2482 echo ""
2483 echo "name=\"openpkg_${name}\""
2484 echo "start_cmd=\"openpkg_rc_all start\""
2485 echo "stop_cmd=\"openpkg_rc_all stop\""
2486 echo "restart_cmd=\"openpkg_rc_all stop start\""
2487 echo ""
2488 echo "openpkg_rc_all () {"
2489 echo " if [ -f ${prefix}/bin/openpkg ]; then"
2490 echo " ${prefix}/bin/openpkg rc all \"\$@\""
2491 echo " fi"
2492 echo "}"
2493 echo ""
2494 echo "load_rc_config \$name"
2495 echo "run_rc_command \"\$1\""
2496 echo ""
2497 ) >/etc/rc.d/${name}
2498 chmod 755 /etc/rc.d/${name}
2499 fi
2500 ;;
2501 NetBSD/* )
2502 if [ -f /etc/rc.d/${name_old} ]; then
2503 rm -f /etc/rc.d/${name_old}
2504 fi
2505 if [ ! -f /etc/rc.d/${name} ]; then
2506 ( echo "#!/bin/sh"
2507 echo "##"
2508 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2509 echo "##"
2510 echo "## PROVIDE: ${name}"
2511 echo "## REQUIRE: DAEMON LOGIN NETWORK SERVERS"
2512 echo "##"
2513 echo ""
2514 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2515 echo "case \$1 in"
2516 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2517 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2518 echo " restart ) exec ${prefix}/bin/openpkg rc all stop start ;;"
2519 echo " status ) ;;"
2520 echo "esac"
2521 ) >/etc/rc.d/${name}
2522 chmod 755 /etc/rc.d/${name}
2523 fi
2524 ;;
2525 Linux/* )
2526 if [ -f /etc/gentoo-release ]; then
2527 if [ -f /etc/init.d/${name_old} ]; then
2528 rm -f /etc/init.d/${name_old}
2529 fi
2530 if [ ! -f /etc/init.d/${name} ]; then
2531 # install transfer script
2532 ( echo "#!/sbin/runscript"
2533 echo "##"
2534 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2535 echo "##"
2536 echo ""
2537 echo "depend() {"
2538 echo " after *"
2539 echo "}"
2540 echo ""
2541 echo "checkconfig() {"
2542 echo " [ -f ${prefix}/bin/openpkg ] || return 1"
2543 echo " case $1 in"
2544 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2545 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2546 echo " esac"
2547 echo "}"
2548 echo ""
2549 echo "start() {"
2550 echo " checkconfig || return 1"
2551 echo " ebegin "Starting OpenPKG ${prefix} hierarchy""
2552 echo " exec ${prefix}/bin/openpkg rc all start"
2553 echo " eend 0"
2554 echo "}"
2555 echo ""
2556 echo "stop() {"
2557 echo " checkconfig || return 1"
2558 echo " ebegin "Stopping OpenPKG ${prefix} hierarchy""
2559 echo " exec ${prefix}/bin/openpkg rc all stop"
2560 echo " eend 0"
2561 echo "}"
2562 ) >/etc/init.d/${name}
2563 chmod 755 /etc/init.d/${name}
2564 /sbin/rc-update add ${name} default
2565 fi
2566 elif [ -f /etc/redhat-release ]; then
2567 sroot=/etc/rc.d/init.d
2568 if [ ! -f $sroot/${name} ]; then
2569 # install transfer script
2570 ( echo "#!/bin/sh"
2571 echo "##"
2572 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2573 echo "##"
2574 echo ""
2575 echo "# chkconfig: 2345 99 00"
2576 echo "# description: OpenPKG ${prefix}"
2577 echo ""
2578 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2579 echo "case \$1 in"
2580 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2581 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2582 echo "esac"
2583 ) >$sroot/${name}
2584 chmod 755 $sroot/${name}
2585 # activate script
2586 /sbin/chkconfig --add ${name}
2587 /sbin/chkconfig ${name} on
2588 fi
2589 else
2590 # sroot: script root directory
2591 # lroot: link root directory
2592 if [ -f /etc/debian_version ]; then
2593 sroot=/etc/init.d
2594 lroot=/etc/rc%%d.d
2595 elif [ -f /etc/mandrake-release ]; then
2596 sroot=/etc/rc.d/init.d
2597 lroot=/etc/rc.d/rc%%d.d
2598 elif [ -f /etc/SuSE-release ]; then
2599 sroot=/etc/init.d
2600 lroot=/etc/init.d/rc%%d.d
2601 elif [ -f /etc/slackware-version ]; then
2602 sroot=/etc/rc.d
2603 lroot=/etc/rc.d/rc%%d.d
2604 name="rc.${name}"
2605 for i in 0 1 2 3 4 5 6; do
2606 l=`echo $lroot | sed -e "s;%%d;$i;"`
2607 if [ ! -d $l ]; then
2608 mkdir $l 2>&1 || true
2609 fi
2610 done
2611 else
2612 echo "WARNING: you are not running one of the supported standard" 1>&2
2613 echo "WARNING: Linux platforms (Debian, RedHat, Mandrake, SuSE, Gentoo)." 1>&2
2614 echo "WARNING: Guessing the location of the system init scripts!" 1>&2
2615 sroot=""
2616 lroot=""
2617 for sr in /etc/rc.d/init.d /etc/init.d /sbin/init.d; do
2618 if [ -d $sr ]; then
2619 sroot="$sr"
2620 break
2621 fi
2622 done
2623 for lr in /etc/rc.d/rc2.d /etc/rc2.d /sbin/init.d/rc2.d; do
2624 if [ -d $lr ]; then
2625 lroot="`echo $lr | sed -e 's;2;%%d;'`"
2626 break
2627 fi
2628 done
2629 if [ ".$sroot" = . -o ".$lroot" = . ]; then
2630 echo "ERROR: Failed to guess the location of the system init scripts!" 1>&2
2631 exit 1
2632 fi
2633 fi
2634 if [ -f $sroot/${name_old} ]; then
2635 rm -f $sroot/${name_old}
2636 fi
2637 if [ ! -f $sroot/${name} ]; then
2638 # install transfer script
2639 ( echo "#!/bin/sh"
2640 echo "##"
2641 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2642 echo "##"
2643 echo ""
2644 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2645 echo "case \$1 in"
2646 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2647 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2648 echo "esac"
2649 ) >$sroot/${name}
2650 chmod 755 $sroot/${name}
2651 # create corresponding symbolic links
2652 for i in 2 3 4 5; do
2653 ln -s $sroot/${name} `echo $lroot | sed -e "s;%%d;$i;"`/S99${name}
2654 done
2655 for i in 0 1 6; do
2656 ln -s $sroot/${name} `echo $lroot | sed -e "s;%%d;$i;"`/K00${name}
2657 done
2658 fi
2659 fi
2660 ;;
2661 SunOS/5.* )
2662 if [ -f /etc/init.d/${name_old} ]; then
2663 rm -f /etc/init.d/${name_old}
2664 fi
2665 if [ ! -f /etc/init.d/${name} ]; then
2666 # install transfer script
2667 ( echo "#!/bin/sh"
2668 echo "##"
2669 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2670 echo "##"
2671 echo ""
2672 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2673 echo "case \$1 in"
2674 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2675 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2676 echo "esac"
2677 ) >/etc/init.d/${name}
2678 chmod 755 /etc/init.d/${name}
2679 # create corresponding symbolic links
2680 ( cd /etc
2681 ln init.d/${name} rc3.d/S99${name}
2682 ln init.d/${name} rc0.d/K00${name}
2683 ln init.d/${name} rc1.d/K00${name}
2684 ) || exit $?
2685 fi
2686 ;;
2687 UnixWare/* )
2688 if [ -f /etc/init.d/${name_old} ]; then
2689 rm -f /etc/init.d/${name_old}
2690 fi
2691 if [ ! -f /etc/init.d/${name} ]; then
2692 # install transfer script
2693 ( echo "#!/bin/sh"
2694 echo "##"
2695 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2696 echo "##"
2697 echo ""
2698 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2699 echo "case \$1 in"
2700 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2701 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2702 echo "esac"
2703 ) >/etc/init.d/${name}
2704 chmod 755 /etc/init.d/${name}
2705 # create corresponding symbolic links
2706 ( cd /etc
2707 ln init.d/${name} rc2.d/S99${name}
2708 ln init.d/${name} rc0.d/K00${name}
2709 ln init.d/${name} rc1.d/K00${name}
2710 ) || exit $?
2711 fi
2712 ;;
2713 AIX/* )
2714 if [ -f /etc/rc.d/init.d/${name_old} ]; then
2715 rm -f /etc/rc.d/init.d/${name_old}
2716 fi
2717 if [ ! -f /etc/rc.d/init.d/${name} ]; then
2718 # install transfer script
2719 ( echo "#!/bin/sh"
2720 echo "##"
2721 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2722 echo "##"
2723 echo ""
2724 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2725 echo "case \$1 in"
2726 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2727 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2728 echo "esac"
2729 ) >/etc/rc.d/init.d/${name}
2730 chmod 755 /etc/rc.d/init.d/${name}
2731 # create corresponding symbolic links
2732 ( cd /etc/rc.d
2733 ln -s ../init.d/${name} rc2.d/S99${name}
2734 ) || exit $?
2735 fi
2736 ;;
2737 OSF1/V5.* )
2738 if [ -f /sbin/init.d/${name_old} ]; then
2739 rm -f /sbin/init.d/${name_old}
2740 fi
2741 if [ ! -f /sbin/init.d/${name} ]; then
2742 # install transfer script
2743 ( echo "#!/bin/sh"
2744 echo "##"
2745 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2746 echo "##"
2747 echo ""
2748 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2749 echo "case \$1 in"
2750 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2751 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2752 echo "esac"
2753 ) >/sbin/init.d/${name}
2754 chmod 755 /sbin/init.d/${name}
2755 # create corresponding symbolic links
2756 ( cd /sbin
2757 ln -s ../init.d/${name} rc3.d/S99${name}
2758 ln -s ../init.d/${name} rc0.d/K00${name}
2759 ) || exit $?
2760 fi
2761 ;;
2762 HP-UX/* )
2763 if [ -f /sbin/init.d/${name_old} ]; then
2764 rm -f /sbin/init.d/${name_old}
2765 fi
2766 if [ ! -f /sbin/init.d/${name} ]; then
2767 # install transfer script
2768 ( echo "#!/bin/sh"
2769 echo "##"
2770 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2771 echo "##"
2772 echo ""
2773 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2774 echo "case \$1 in"
2775 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2776 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2777 echo "esac"
2778 ) >/sbin/init.d/${name}
2779 chmod 755 /sbin/init.d/${name}
2780 # create corresponding symbolic links
2781 ( cd /sbin
2782 ln -s ../init.d/${name} rc2.d/S900${name}
2783 ln -s ../init.d/${name} rc1.d/K100${name}
2784 ) || exit $?
2785 fi
2786 ;;
2787 Darwin/* )
2788 if [ -d /Library/StartupItems/${name_old} ]; then
2789 rm -rf /Library/StartupItems/${name_old}
2790 fi
2791 darwin_rc_dir="/Library/StartupItems/${name}"
2792 if [ ! -d ${darwin_rc_dir} ]; then
2793 mkdir -p ${darwin_rc_dir}
2794 fi
2796 # make sure hierarchy is activated in /etc/hostconfig
2797 # FIXME: cs: simple and bad code here without any detection of existing entries
2798 darwin_rc_var="`echo ${name} | sed -e 's;-;_;g' | tr '[a-z]' '[A-Z]'`"
2799 echo "${darwin_rc_var}=-YES-" >>/etc/hostconfig
2801 # install transfer script
2802 if [ ! -f ${darwin_rc_dir}/${name} ]; then
2803 rm -f ${darwin_rc_dir}/${name} >/dev/null 2>&1
2804 ( echo "#!/bin/sh"
2805 echo "##"
2806 echo "## ${darwin_rc_dir}/${name}"
2807 echo "## -- startup transfer script for OpenPKG ${prefix} hierarchy"
2808 echo "##"
2809 echo ""
2810 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2811 echo ""
2812 echo ". /etc/rc.common"
2813 echo ""
2814 echo "if [ \"\${${darwin_rc_var}:=-NO-}\" = \"-YES-\" ]; then"
2815 echo " ConsoleMessage \"OpenPKG ${prefix} hierarchy\""
2816 echo " ${prefix}/bin/openpkg rc all start"
2817 echo "fi"
2818 ) >${darwin_rc_dir}/${name}
2819 chmod 755 ${darwin_rc_dir}/${name}
2820 fi
2822 # install startup parameter list
2823 if [ ! -f ${darwin_rc_dir}/StartupParameters.plist ]; then
2824 rm -f ${darwin_rc_dir}/StartupParameters.plist >/dev/null 2>&1
2825 ( echo "{"
2826 echo " Description = \"OpenPKG ${prefix} hierarchy\";"
2827 echo " Provides = (\"OpenPKG ${prefix}\");"
2828 echo " Requires = (\"Disks\", \"Network Configuration\", \"Resolver\");"
2829 echo " Uses = (\"Cron\");"
2830 echo " OrderPreference = \"Last\";"
2831 echo " Messages ="
2832 echo " {"
2833 echo " start = \"Starting OpenPKG ${prefix} hierarchy\";"
2834 echo " stop = \"Stopping OpenPKG ${prefix} hierarchy\";"
2835 echo " };"
2836 echo "}"
2837 ) >${darwin_rc_dir}/StartupParameters.plist
2838 chmod 644 ${darwin_rc_dir}/StartupParameters.plist
2839 fi
2840 ;;
2841 IRIX*/6.* )
2842 if [ -f /etc/init.d/${name_old} ]; then
2843 rm -f /etc/init.d/${name_old}
2844 fi
2845 if [ ! -f /etc/init.d/${name} ]; then
2846 # install transfer script
2847 ( echo "#!/bin/sh"
2848 echo "##"
2849 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2850 echo "##"
2851 echo ""
2852 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2853 echo "case \$1 in"
2854 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2855 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2856 echo "esac"
2857 ) >/etc/init.d/${name}
2858 chmod 755 /etc/init.d/${name}
2859 # create corresponding links
2860 ( cd /etc
2861 ln -f init.d/${name} rc2.d/S99${name}
2862 ln -f init.d/${name} rc0.d/K00${name}
2863 ) || exit $?
2864 fi
2865 ;;
2866 CYGWIN*/* )
2867 if [ -f /etc/rc.d/init.d/${name_old} ]; then
2868 rm -f /etc/rc.d/init.d/${name_old}
2869 fi
2870 if [ ! -f /etc/rc.d/init.d/${name} ]; then
2871 # install transfer script
2872 ( echo "#!/bin/sh"
2873 echo "##"
2874 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
2875 echo "##"
2876 echo ""
2877 echo "test -f /etc/rc.d/init.d/functions && . /etc/rc.d/init.d/functions"
2878 echo "test -f /etc/sysconfig/network && . /etc/sysconfig/network"
2879 echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0"
2880 echo "case \$1 in"
2881 echo " start ) exec ${prefix}/bin/openpkg rc all start ;;"
2882 echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;"
2883 echo "esac"
2884 ) >/etc/rc.d/init.d/${name}
2885 chmod 755 /etc/rc.d/init.d/${name}
2886 # create corresponding symbolic links
2887 ( cd /etc/rc.d
2888 ln -s ../init.d/${name} rc2.d/S90${name}
2889 ln -s ../init.d/${name} rc1.d/K10${name}
2890 ) || exit $?
2891 fi
2892 ;;
2893 esac
2894 fi
2896 # create the cron transfer entries
2897 if [ ".$cusr" != ".root" ]; then
2898 echo "openpkg:WARNING: skipping creation of system cron hooks" 1>&2
2899 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
2900 else
2901 case "$plid" in
2902 FreeBSD/* | Linux/* )
2903 if [ -f /etc/slackware-version ]; then
2904 exists=`crontab -l | egrep "($prefix/bin/openpkg|$prefix/etc/rc)"`
2905 if [ ".$exists" = . ]; then
2906 EDITOR=/tmp/vipw.$$
2907 VISUAL="$EDITOR"
2908 export EDITOR
2909 export VISUAL
2910 ( echo "#!/bin/sh"
2911 echo "( echo \"# <OpenPKG prefix=$prefix pkg=openpkg>\""
2912 echo " echo \"# chronological tasks of ${prefix} OpenPKG hierarchy\""
2913 echo " echo \"0 0 1 * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron monthly\""
2914 echo " echo \"0 0 * * 0 [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron weekly\""
2915 echo " echo \"0 0 * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron daily\""
2916 echo " echo \"0 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron hourly\""
2917 echo " echo \"0,15,30,45 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron quarterly\""
2918 echo " echo \"# </OpenPKG>\""
2919 echo ") >>\$1"
2920 ) >$EDITOR
2921 chmod a+x $EDITOR
2922 ( PATH="$PATH:/usr/bin"; crontab -e ) || exit $?
2923 rm -f $EDITOR
2924 fi
2925 else
2926 exists=`egrep "($prefix/bin/openpkg|$prefix/etc/rc)" /etc/crontab`
2927 if [ ".$exists" = . ]; then
2928 ( echo "# <OpenPKG prefix=$prefix pkg=openpkg>"
2929 echo "# chronological tasks of ${prefix} OpenPKG hierarchy"
2930 echo "0 0 1 * * root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron monthly"
2931 echo "0 0 * * 0 root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron weekly"
2932 echo "0 0 * * * root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron daily"
2933 echo "0 * * * * root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron hourly"
2934 echo "*/15 * * * * root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron quarterly"
2935 echo "# </OpenPKG>"
2936 ) >>/etc/crontab
2937 fi
2938 fi
2939 ;;
2940 SunOS/5.* | OSF1/V5.* | NetBSD/* | HP-UX/* | UnixWare/* | AIX/* | CYGWIN*/* | Darwin/* )
2941 exists=`crontab -l | egrep "($prefix/bin/openpkg|$prefix/etc/rc)"`
2942 if [ ".$exists" = . ]; then
2943 EDITOR=/tmp/vipw.$$
2944 VISUAL="$EDITOR"
2945 export EDITOR
2946 export VISUAL
2947 ( echo "#!/bin/sh"
2948 echo "( echo \"# <OpenPKG prefix=$prefix pkg=openpkg>\""
2949 echo " echo \"# chronological tasks of ${prefix} OpenPKG hierarchy\""
2950 echo " echo \"0 0 1 * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron monthly\""
2951 echo " echo \"0 0 * * 0 [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron weekly\""
2952 echo " echo \"0 0 * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron daily\""
2953 echo " echo \"0 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron hourly\""
2954 echo " echo \"0,15,30,45 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron quarterly\""
2955 echo " echo \"# </OpenPKG>\""
2956 echo ") >>\$1"
2957 ) >$EDITOR
2958 chmod a+x $EDITOR
2959 ( PATH="$PATH:/usr/bin"; crontab -e ) || exit $?
2960 rm -f $EDITOR
2961 fi
2962 ;;
2963 IRIX*/6.* )
2964 exists=`crontab -l | egrep "($prefix/bin/openpkg|$prefix/etc/rc)"`
2965 if [ ".$exists" = . ]; then
2966 ( crontab -l
2967 echo "# <OpenPKG prefix=$prefix pkg=openpkg>"
2968 echo "# chronological tasks of ${prefix} OpenPKG hierarchy"
2969 echo "0 0 1 * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron monthly"
2970 echo "0 0 * * 0 [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron weekly"
2971 echo "0 0 * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron daily"
2972 echo "0 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron hourly"
2973 echo "0,15,30,45 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron quarterly"
2974 echo "# </OpenPKG>"
2975 ) | /usr/bin/crontab || exit $?
2976 fi
2977 ;;
2978 esac
2979 fi
2981 # remember what OpenPKG RPM version was installed, so we can
2982 # correctly upgrade the RPM database in the %post section (see below).
2983 if [ -d ${prefix}/RPM/DB ]; then
2984 if [ -x "${prefix}/bin/openpkg" -a -x "${prefix}/libexec/openpkg/rpm" ]; then
2985 # OpenPKG >= 2.0
2986 rpm="${prefix}/bin/openpkg rpm"
2987 else
2988 # OpenPKG 1.x
2989 rpm="${prefix}/bin/rpm"
2990 fi
2991 rm -f ${prefix}/RPM/DB/.version >/dev/null 2>&1 || true
2992 $rpm --version 2>/dev/null |\
2993 sed -e 's;^;X;' \
2994 -e 's;^X[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$;\1;' \
2995 -e 's;^X[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$;\1;' \
2996 -e 's;^X.*$;0.0;' \
2997 >${prefix}/RPM/DB/.version
2998 fi
3000 %post
3001 # optional post-processing from "pre" section
3002 if [ -f %{l_prefix}.pre-post-process.sh ]; then
3003 sh %{l_prefix}.pre-post-process.sh
3004 rm -f %{l_prefix}.pre-post-process.sh
3005 fi
3007 # update or initially create OpenPKG UUID configuration
3008 %{l_prefix}/bin/openpkg uuid update >/dev/null 2>&1 || true
3010 # when upgrading from RPM 4 to RPM 5 there will be no
3011 # initial license at all, so create one
3012 if [ ! -f %{l_prefix}/etc/openpkg/license ]; then
3013 echo "BOOT" >%{l_prefix}/etc/openpkg/license
3014 ( chown %{l_musr}:%{l_mgrp} %{l_prefix}/etc/openpkg/license
3015 chmod 644 %{l_prefix}/etc/openpkg/license
3016 ) >/dev/null 2>&1 || true
3017 fi
3019 # finally switch from a possibly active BOOT license to EVAL license
3020 # (notice: this is really the earliest time we can switch because the
3021 # previous command had to create the <prefix>/etc/openpkg/uuid first!)
3022 if [ ".`cat %{l_prefix}/etc/openpkg/license`" = ".BOOT" ]; then
3023 echo "EVAL" >%{l_prefix}/etc/openpkg/license
3024 fi
3026 # determine new and old OpenPKG RPM version
3027 V_rpm_new="%{V_rpm_major}.%{V_rpm_minor}"
3028 if [ -f %{l_prefix}/RPM/DB/.version ]; then
3029 V_rpm_old="`cat %{l_prefix}/RPM/DB/.version`"
3030 rm -f %{l_prefix}/RPM/DB/.version >/dev/null 2>&1 || true
3031 else
3032 V_rpm_old="0.0"
3033 fi
3035 # make sure all RPM database files are present and that their
3036 # attributes are correct, etc. This is not a database rebuild
3037 # operation, so this is fully harmless and can be done always.
3038 %{l_prefix}/lib/openpkg/rpmdb --quiet --fixate >/dev/null 2>&1 || true
3040 # check RPM database for upgrade requirements
3041 if [ ".$1" = .2 -a ".$V_rpm_old" != ".$V_rpm_new" ]; then
3042 # RPM 4.0/4.1 does not allow concurrent database access, so we
3043 # cannot upgrade the database immediately from here (because
3044 # we are still running within the execution context of the
3045 # old RPM which in turn has the database locked) and instead
3046 # have to just drop a note to the administrator about database
3047 # upgrading. RPM >= 4.2 in general allows concurrent database
3048 # access, but the whole stuff is too risky here, too.
3049 ( echo "You are upgrading the OpenPKG bootstrap from a previous"
3050 echo "RPM $V_rpm_old based version to this RPM $V_rpm_new based"
3051 echo "version. The RPM database in %{l_prefix}/RPM/DB/ can be"
3052 echo "reused, but you first have to upgrade it as soon as"
3053 echo "possible to the latest format files by executing:"
3054 echo " \$ %{l_prefix}/bin/openpkg rpm --db-rebuild"
3055 echo "In case of problems with the RPM database you can always"
3056 echo "execute the command:"
3057 echo " \$ %{l_prefix}/bin/openpkg rpm --db-cleanup"
3058 ) | %{l_prefix}/lib/openpkg/rpmtool msg -b -t warn
3059 fi
3061 # system command overriding support
3062 # ATTENTION: THIS BETTER SHOULD BE REPLACED WITH A MORE GENERIC
3063 # BUILD COMMAND OVERRIDE SOLUTION!
3064 if [ ! -d %{l_prefix}/lib/openpkg/override ]; then
3065 mkdir %{l_prefix}/lib/openpkg/override >/dev/null 2>&1 || true
3066 fi
3067 chown %{l_musr}:%{l_mgrp} %{l_prefix}/lib/openpkg/override >/dev/null 2>&1 || true
3068 case "`cat %{l_prefix}/etc/openpkg/platform`" in
3069 *-*-debian* | *-*-ubuntu* )
3070 # FIXME: Evil hack to workaround build problems under Debian
3071 # (at least 3.1) (and similar platforms) where a Debian
3072 # install-info(8) exists which is both API and functionally
3073 # incompatible to the de-facto standardized install-info(8)
3074 # command from GNU Texinfo.
3075 if [ ! -f %{l_prefix}/lib/openpkg/override/install-info ]; then
3076 ( echo "#!/bin/sh"
3077 echo "echo 'OpenPKG: NOTICE: install-info(8) command execution overridden'"
3078 echo "exit 0"
3079 ) >%{l_prefix}/lib/openpkg/override/install-info
3080 chmod 775 %{l_prefix}/lib/openpkg/override/install-info
3081 fi
3082 ;;
3083 *-*-macosx* | *-*-darwin* )
3084 # FIXME: Evil hack to workaround the fact that Mac OS X'
3085 # linker by default prefers the /usr/lib libraries and does
3086 # not honor the -L options the way one would expect it.
3087 gcc="`%{l_prefix}/lib/openpkg/shtool path gcc`"
3088 cc="`%{l_prefix}/lib/openpkg/shtool path cc`"
3089 ld="`%{l_prefix}/lib/openpkg/shtool path ld`"
3090 if [ ".$gcc" != . -a ! -f %{l_prefix}/lib/openpkg/override/gcc ]; then
3091 ( echo "#!/bin/sh"
3092 echo "case \" \$* \" in"
3093 echo " *\" -c \"* | *\" -E \"* ) exec $gcc \"\$@\" ;;"
3094 echo " * ) exec $gcc -Wl,-search_paths_first \"\$@\" ;;"
3095 echo "esac"
3096 ) >%{l_prefix}/lib/openpkg/override/gcc
3097 chmod 775 %{l_prefix}/lib/openpkg/override/gcc
3098 fi
3099 if [ ".$cc" != . -a ! -f %{l_prefix}/lib/openpkg/override/cc ]; then
3100 ( echo "#!/bin/sh"
3101 echo "case \" \$* \" in"
3102 echo " *\" -c \"* | *\" -E \"* ) exec $gcc \"\$@\" ;;"
3103 echo " * ) exec $cc -Wl,-search_paths_first \"\$@\" ;;"
3104 echo "esac"
3105 ) >%{l_prefix}/lib/openpkg/override/cc
3106 chmod 775 %{l_prefix}/lib/openpkg/override/cc
3107 fi
3108 if [ ".$ld" != . -a ! -f %{l_prefix}/lib/openpkg/override/ld ]; then
3109 ( echo "#!/bin/sh"
3110 echo "exec $ld -search_paths_first \"\$@\""
3111 ) >%{l_prefix}/lib/openpkg/override/ld
3112 chmod 775 %{l_prefix}/lib/openpkg/override/ld
3113 fi
3114 ;;
3115 esac
3117 # special support for fully unprivileged environments
3118 # where we cannot switch the user at all with su(1),
3119 # so we provide a dummy su(1) override command.
3120 if [ ".%{l_unprivileged}" = ".yes" ]; then
3121 ( echo "#!/bin/sh"
3122 echo "while [ \$# -gt 0 ]; do"
3123 echo " case \"\$1\" in"
3124 echo " - | -* ) shift ;;"
3125 echo " * ) shift; break ;;"
3126 echo " esac"
3127 echo "done"
3128 echo "exec /bin/sh \${1+\"\$@\"}"
3129 ) >%{l_prefix}/lib/openpkg/override/su
3130 chmod 775 %{l_prefix}/lib/openpkg/override/su
3131 fi
3133 # FIXME: hack to workaround problems in environments with too few
3134 # development tools. ATTENTION: see one paragraph above.
3135 if [ ! -d %{l_prefix}/lib/openpkg/fallback ]; then
3136 mkdir %{l_prefix}/lib/openpkg/fallback >/dev/null 2>&1 || true
3137 fi
3138 chown %{l_musr}:%{l_mgrp} %{l_prefix}/lib/openpkg/fallback >/dev/null 2>&1 || true
3140 # cruel platform hack
3141 case "`cat %{l_prefix}/etc/openpkg/platform`" in
3142 *-*-cygwin* )
3143 # Cygwin under Windows Vista dislikes executables with
3144 # "patch" in the same and would require a "*.manifest"
3145 # file applied with the "mt.exe" from the "Windows
3146 # Software Development Kit (SDK)" in order to escape from
3147 # UAC. An easy alternative is to just rename the file to a
3148 # different name.
3149 cp %{l_prefix}/lib/openpkg/patch \
3150 %{l_prefix}/lib/openpkg/pitch
3151 %{l_prefix}/lib/openpkg/shtool subst \
3152 -e 's;openpkg/patch;openpkg/pitch;g' \
3153 %{l_prefix}/etc/openpkg/rpmmacros
3154 ;;
3155 esac
3157 # print license
3158 ( echo ""
3159 echo "NOTICE: Proprietary components of the OpenPKG Framework are covered"
3160 echo "by the following terms and conditions and require a valid run-time"
3161 echo "license, issued by the OpenPKG GmbH. An initial license, which allows"
3162 echo "30 days of free use for evaluation purposes, is already pre-installed."
3163 echo "Please go to http://openpkg.com/go/framework-license to obtain"
3164 echo "your permanent license."
3165 echo ""
3166 %{l_prefix}/bin/openpkg --license
3167 echo "______________________________________________________________________________"
3168 echo ""
3169 echo "NOTICE: Open Source components of the OpenPKG Framework are covered"
3170 echo "by various standard Open Source distribution licenses, including"
3171 echo "the MIT, BSD, LGPL, GPL, Public-Domain and Artistic licenses."
3172 echo "They all allow you the use of those components free of charge."
3173 echo "See http://www.opensource.org/licenses for more details."
3174 echo ""
3175 ) | %{l_prefix}/lib/openpkg/rpmtool msg -b -t notice
3177 # register package with central OpenPKG registry
3178 ( nohup %{l_prefix}/bin/openpkg register \
3179 </dev/null >/dev/null 2>&1 &
3180 ) </dev/null >/dev/null 2>&1 || true
3182 %preun
3183 [ ".$1" != .0 ] && exit 0
3185 # remove override files
3186 if [ -d %{l_prefix}/lib/openpkg/override ]; then
3187 rm -rf %{l_prefix}/lib/openpkg/override >/dev/null 2>&1 || true
3188 fi
3190 # remove fallback files
3191 if [ -d %{l_prefix}/lib/openpkg/fallback ]; then
3192 rm -rf %{l_prefix}/lib/openpkg/fallback >/dev/null 2>&1 || true
3193 fi
3195 # remove files which are not RPM controlled
3196 rm -rf %{l_prefix}/RPM/TMP/* %{l_prefix}/RPM/TMP/.[a-z]* >/dev/null 2>&1 || true
3197 rm -rf %{l_prefix}/RPM/SRC/* %{l_prefix}/RPM/SRC/.[a-z]* >/dev/null 2>&1 || true
3198 rm -rf %{l_prefix}/RPM/PKG/* %{l_prefix}/RPM/PKG/.[a-z]* >/dev/null 2>&1 || true
3199 rm -rf %{l_prefix}/RPM/TR/* %{l_prefix}/RPM/TR/.[a-z]* >/dev/null 2>&1 || true
3200 rm -rf %{l_prefix}/RPM/DB/* %{l_prefix}/RPM/DB/.[a-z]* >/dev/null 2>&1 || true
3202 # The following code usually would be done in a %postun section.
3203 # But because we already had to remove the database in this %preun
3204 # section (see the 'rm' commands above) in order to make RPM happy
3205 # inside its own removal procedure, RPM would no longer find the
3206 # %postun script (because it's recorded in the database files). So
3207 # we have to perform the procedure already in this %preun script.
3208 # except for the removal of the top-level directory it does not
3209 # matter. But the top-level directory can only be removed after
3210 # the RPM removal procedure took place, so we play a little delay
3211 # trick below.
3213 # determine current user
3214 cusr=`(id -un) 2>/dev/null ||\
3215 (id | sed -e 's;^[^(]*(\([^)]*\)).*;\1;') 2>/dev/null ||\
3216 (whoami) 2>/dev/null ||\
3217 (who am i | cut "-d " -f1) 2>/dev/null ||\
3218 echo $LOGNAME`
3220 # determine runtime details (for both inside and outside RPM!!)
3221 user="%{l_musr}"
3222 group="%{l_mgrp}"
3223 prefix="%{l_prefix}"
3224 prefix=`echo "$prefix" | sed -e 's;//*;/;g' -e 's;/$;;'`
3226 # determine platform id
3227 s=`(uname -s) 2>/dev/null` || s='Unknown'
3228 r=`(uname -r) 2>/dev/null` || r='0.0'
3229 plid="${s}/${r}"
3231 # unregister instance in presence file
3232 presence="/etc/openpkg"
3233 exists=`cat $presence 2>/dev/null | egrep "^ *${prefix} *\$"`
3234 if [ ".$exists" != . ]; then
3235 if [ ".$cusr" != ".root" ]; then
3236 echo "openpkg:WARNING: skipping unregistering of $prefix in $presence" 1>&2
3237 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
3238 else
3239 cp $presence $presence.bak && \
3240 egrep -v "^ *${prefix} *\$" $presence.bak >$presence
3241 rm -f $presence.bak >/dev/null 2>&1
3242 if [ ".`cat $presence`" = . ]; then
3243 rm -f $presence >/dev/null 2>&1
3244 fi
3245 fi
3246 fi
3248 # remove entry in /etc/shells
3249 shell="${prefix}/lib/openpkg/bash"
3250 exists=`cat /etc/shells 2>/dev/null | grep "^$shell"`
3251 if [ ".$exists" != . ]; then
3252 if [ ".$cusr" != ".root" ]; then
3253 echo "openpkg:WARNING: skipping deletion of $shell from /etc/shells" 1>&2
3254 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
3255 else
3256 cp /etc/shells /etc/shells.bak && \
3257 grep -v "^${shell}" /etc/shells.bak >/etc/shells
3258 rm -f /etc/shells.bak >/dev/null 2>&1
3259 fi
3260 fi
3262 # remove the hierarchy user/group
3263 for req in "super-user:%{l_susr}:%{l_suid}:%{l_sgrp}:%{l_sgid}" \
3264 "management:%{l_musr}:%{l_muid}:%{l_mgrp}:%{l_mgid}" \
3265 "restricted:%{l_rusr}:%{l_ruid}:%{l_rgrp}:%{l_rgid}" \
3266 "non-privileged:%{l_nusr}:%{l_nuid}:%{l_ngrp}:%{l_ngid}"; do
3267 # split request into class/usr/uid/grp/gid
3268 OIFS="$IFS"; IFS=":"; set -- $req; IFS="$OIFS"
3269 class="$1"; usr="$2"; uid="$3"; grp="$4"; gid="$5"
3271 # check whether user already exists
3272 exists=`(getent passwd "$usr"; \
3273 grep "^$usr:" /etc/passwd; \
3274 ypmatch "$usr" passwd; \
3275 nismatch "$usr" passwd; \
3276 nidump passwd . | grep "^$usr:"; \
3277 dscl . -read "/users/$usr" | grep RecordName) 2>/dev/null | \
3278 sed -e 'q'`
3279 if [ ".$exists" != . ]; then
3280 if [ ".$cusr" != ".root" ]; then
3281 echo "openpkg:WARNING: skipping deletion of OpenPKG $class user $usr" 1>&2
3282 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
3283 elif [ ".$usr" = ".root" ]; then
3284 echo "openpkg:WARNING: skipping deletion of OpenPKG $class user $usr" 1>&2
3285 echo "openpkg:WARNING: (would remove system standard user)" 1>&2
3286 else
3287 case "$plid" in
3288 FreeBSD/* | NetBSD/* )
3289 cp /etc/master.passwd /etc/master.passwd.bak && \
3290 grep -v "^${usr}:" /etc/master.passwd.bak >/etc/master.passwd
3291 ( PATH="$PATH:/usr/sbin"; pwd_mkdb -p /etc/master.passwd ) || exit $?
3292 rm -f /etc/master.passwd.bak >/dev/null 2>&1
3293 ;;
3294 Linux/* | SunOS/5.* | UnixWare/* )
3295 cp /etc/passwd /etc/passwd.bak && \
3296 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
3297 ( PATH="$PATH:/usr/sbin"; pwconv ) || exit $?
3298 rm -f /etc/passwd.bak >/dev/null 2>&1
3299 ;;
3300 AIX/* )
3301 rmuser -p "${usr}"
3302 cp /etc/security/login.cfg /etc/security/login.cfg.bak && \
3303 sed -e "/^usw:/,/^[^ ]/s;\\( *shells =.*\\),$shell\\(.*\\)\$;\\1\\2;" \
3304 </etc/security/login.cfg.bak >/etc/security/login.cfg && \
3305 rm -f /etc/security/login.cfg.bak >/dev/null 2>&1
3306 ;;
3307 OSF1/V5.* )
3308 cp /etc/passwd /etc/passwd.bak && \
3309 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
3310 ( PATH="$PATH:/usr/sbin"; mkpasswd /etc/passwd ) || exit $?
3311 rm -f /etc/passwd.bak >/dev/null 2>&1
3312 ;;
3313 HP-UX/* )
3314 cp /etc/passwd /etc/passwd.bak && \
3315 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
3316 rm -f /etc/passwd.bak >/dev/null 2>&1
3317 ;;
3318 Darwin/10.[1-9]* | Darwin/1[1-9].* )
3319 dscl . -delete "/users/${usr}"
3320 ;;
3321 Darwin/* )
3322 niutil -destroy . "/users/${usr}"
3323 ;;
3324 IRIX*/6.* )
3325 cp /etc/passwd /etc/passwd.bak && \
3326 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
3327 if [ -f /etc/shadow ]
3328 then ( PATH="$PATH:/usr/sbin"; pwconv ) || exit $?
3329 fi
3330 rm -f /etc/passwd.bak >/dev/null 2>&1
3331 ;;
3332 CYGWIN*/* )
3333 cp /etc/passwd /etc/passwd.bak && \
3334 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
3335 rm -f /etc/passwd.bak >/dev/null 2>&1
3336 ;;
3337 esac
3338 fi
3339 fi
3341 # check whether group already exists
3342 exists=`(getent group "$grp"; \
3343 grep "^$grp:" /etc/group; \
3344 ypmatch "$grp" group; \
3345 nismatch "$grp" group; \
3346 nidump group . | grep "^$grp:"; \
3347 dscl . -read "/groups/$grp" | grep RecordName) 2>/dev/null | \
3348 sed -e 'q'`
3349 if [ ".$exists" != . ]; then
3350 if [ ".$cusr" != ".root" ]; then
3351 echo "openpkg:WARNING: skipping deletion of OpenPKG $class group $grp" 1>&2
3352 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
3353 elif [ ".$usr" = ".root" ] || [ ".$grp" = ".root" ] || [ ".$grp" = ".wheel" ]; then
3354 echo "openpkg:WARNING: skipping deletion of OpenPKG $class group $grp" 1>&2
3355 echo "openpkg:WARNING: (would remove system standard group)" 1>&2
3356 else
3357 case "$plid" in
3358 Darwin/10.[1-9]* | Darwin/1[1-9].* )
3359 dscl . -delete "/groups/${grp}"
3360 ;;
3361 Darwin/* )
3362 niutil -destroy . "/groups/${grp}"
3363 ;;
3364 AIX/* )
3365 rmgroup "${grp}"
3366 ;;
3367 * )
3368 cp /etc/group /etc/group.bak && \
3369 grep -v "^${grp}:" /etc/group.bak >/etc/group
3370 rm -f /etc/group.bak >/dev/null 2>&1
3371 ;;
3372 esac
3373 fi
3374 fi
3375 done
3377 # invalidate passwd and group tables from Name Service Cache Daemon to
3378 # ensure chown/chgrp works immediately after pwconv on Linux and Solaris
3379 if [ -x /usr/sbin/nscd ]; then
3380 /usr/sbin/nscd -i passwd >/dev/null 2>&1 || true
3381 /usr/sbin/nscd -i group >/dev/null 2>&1 || true
3382 fi
3384 # remove the startup/shutdown transfer scripts
3385 name=`echo "$prefix" | sed -e 's;/;;g'`
3386 if [ ".$cusr" != ".root" ]; then
3387 echo "openpkg:WARNING: skipping deletion of system run-command hooks" 1>&2
3388 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
3389 else
3390 case "$plid" in
3391 FreeBSD/* )
3392 rm -f /etc/rc.d/${name} >/dev/null 2>&1
3393 ;;
3394 NetBSD/* )
3395 rm -f /etc/rc.d/${name} >/dev/null 2>&1
3396 ;;
3397 Linux/* )
3398 if [ -f /etc/gentoo-release ]; then
3399 /sbin/rc-update del ${name} >/dev/null 2>&1
3400 rm -f /etc/init.d/${name} >/dev/null 2>&1
3401 elif [ -f /etc/redhat-release ]; then
3402 /sbin/chkconfig ${name} off >/dev/null 2>&1
3403 /sbin/chkconfig --del ${name} >/dev/null 2>&1
3404 rm -f /etc/rc.d/init.d/${name} >/dev/null 2>&1
3405 else
3406 # sroot: script root directory
3407 # lroot: link root directory
3408 if [ -f /etc/debian_version ]; then
3409 sroot=/etc/init.d
3410 lroot=/etc/rc%%d.d
3411 elif [ -f /etc/mandrake-release ]; then
3412 sroot=/etc/rc.d/init.d
3413 lroot=/etc/rc.d/rc%%d.d
3414 elif [ -f /etc/SuSE-release ]; then
3415 sroot=/etc/init.d
3416 lroot=/etc/init.d/rc%%d.d
3417 elif [ -f /etc/slackware-version ]; then
3418 sroot=/etc/rc.d
3419 lroot=/etc/rc.d/rc%%d.d
3420 name="rc.${name}"
3421 else
3422 echo "WARNING: you are not running one of the supported standard" 1>&2
3423 echo "WARNING: Linux platforms (Debian, RedHat, Mandrake, SuSE, Gentoo)." 1>&2
3424 echo "WARNING: Guessing the location of the system init scripts!" 1>&2
3425 sroot=""
3426 lroot=""
3427 for sr in /etc/rc.d/init.d /etc/init.d /sbin/init.d; do
3428 if [ -d $sr ]; then
3429 sroot="$sr"
3430 break
3431 fi
3432 done
3433 for lr in /etc/rc.d/rc2.d /etc/rc2.d /sbin/init.d/rc2.d; do
3434 if [ -d $lr ]; then
3435 lroot="`echo $lr | sed -e 's;2;%%d;'`"
3436 break
3437 fi
3438 done
3439 if [ ".$sroot" = . -o ".$lroot" = . ]; then
3440 echo "ERROR: Failed to guess the location of the system init scripts!" 1>&2
3441 exit 1
3442 fi
3443 fi
3444 rm -f ${sroot}/${name} >/dev/null 2>&1
3445 for i in 2 3 4 5; do
3446 rm -f `echo $lroot | sed -e "s;%%d;$i;"`/S99${name} >/dev/null 2>&1
3447 done
3448 for i in 0 1 6; do
3449 rm -f `echo $lroot | sed -e "s;%%d;$i;"`/K00${name} >/dev/null 2>&1
3450 done
3451 if [ -f /etc/slackware-version ]; then
3452 for i in 0 1 2 3 4 5 6; do
3453 l=`echo $lroot | sed -e "s;%%d;$i;"`
3454 if [ -d $l ]; then
3455 rmdir $l >/dev/null 2>&1 || true
3456 fi
3457 done
3458 fi
3459 fi
3460 ;;
3461 SunOS/5.* )
3462 rm -f /etc/init.d/${name} >/dev/null 2>&1
3463 rm -f /etc/rc3.d/S99${name} >/dev/null 2>&1
3464 rm -f /etc/rc0.d/K00${name} >/dev/null 2>&1
3465 rm -f /etc/rc1.d/K00${name} >/dev/null 2>&1
3466 ;;
3467 UnixWare/* )
3468 rm -f /etc/init.d/${name} >/dev/null 2>&1
3469 rm -f /etc/rc2.d/S99${name} >/dev/null 2>&1
3470 rm -f /etc/rc0.d/K00${name} >/dev/null 2>&1
3471 rm -f /etc/rc1.d/K00${name} >/dev/null 2>&1
3472 ;;
3473 AIX/* )
3474 rm -f /etc/rc.d/init.d/${name} >/dev/null 2>&1
3475 rm -f /etc/rc.d/rc2.d/S99${name} >/dev/null 2>&1
3476 ;;
3477 OSF1/V5.* )
3478 rm -f /sbin/init.d/${name} >/dev/null 2>&1
3479 rm -f /sbin/rc3.d/S99${name} >/dev/null 2>&1
3480 rm -f /sbin/rc0.d/K00${name} >/dev/null 2>&1
3481 ;;
3482 HP-UX/* )
3483 rm -f /sbin/init.d/${name} >/dev/null 2>&1
3484 rm -f /etc/rc2.d/S900${name} >/dev/null 2>&1
3485 rm -f /etc/rc1.d/K100${name} >/dev/null 2>&1
3486 ;;
3487 Darwin/* )
3488 darwin_rc_var="`echo ${name} | sed -e 's;-;_;g' | tr '[a-z]' '[A-Z]'`"
3489 cp /etc/hostconfig /etc/hostconfig.bak && \
3490 grep -v "^${darwin_rc_var}=" /etc/hostconfig.bak >/etc/hostconfig
3491 rm -f /etc/hostconfig.bak >/dev/null 2>&1
3492 rm -rf /Library/StartupItems/${name} >/dev/null 2>&1
3493 ;;
3494 IRIX*/6.* )
3495 rm -f /etc/init.d/${name} >/dev/null 2>&1
3496 rm -f /etc/rc2.d/S99${name} >/dev/null 2>&1
3497 rm -f /etc/rc0.d/K00${name} >/dev/null 2>&1
3498 ;;
3499 CYGWIN*/* )
3500 rm -f /etc/rc.d/init.d/${name} >/dev/null 2>&1
3501 rm -f /etc/rc.d/rc2.d/S90${name} >/dev/null 2>&1
3502 rm -f /etc/rc.d/rc1.d/K10${name} >/dev/null 2>&1
3503 ;;
3504 esac
3505 fi
3507 # remove the cron transfer entries
3508 if [ ".$cusr" != ".root" ]; then
3509 echo "openpkg:WARNING: skipping deletion of system cron hooks" 1>&2
3510 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
3511 else
3512 case "$plid" in
3513 FreeBSD/* | Linux/* )
3514 if [ -f /etc/slackware-version ]; then
3515 EDITOR=/tmp/vipw.$$
3516 VISUAL="$EDITOR"
3517 export EDITOR
3518 export VISUAL
3519 p=`echo $prefix | sed -e 's;/;\\\\\\\\/;g'`
3520 ( echo "cp \$1 \$1.bak"
3521 echo "cat \$1.bak | sed -e \"/<OpenPKG prefix=$p pkg=openpkg>/,/<\\\\/OpenPKG>/d\" >\$1"
3522 echo "rm -f \$1.bak"
3523 ) >$EDITOR
3524 chmod a+x $EDITOR
3525 ( PATH="$PATH:/usr/bin"; crontab -e ) || exit $?
3526 rm -f $EDITOR
3527 else
3528 exists=`grep "<OpenPKG prefix=$prefix pkg=openpkg>" /etc/crontab`
3529 if [ ".$exists" != . ]; then
3530 p=`echo $prefix | sed -e 's;/;\\\\/;g'`
3531 cp /etc/crontab /etc/crontab.bak
3532 cat /etc/crontab.bak |\
3533 sed -e "/<OpenPKG prefix=$p pkg=openpkg>/,/<\\/OpenPKG>/d" \
3534 >/etc/crontab
3535 rm -f /etc/crontab.bak >/dev/null 2>&1
3536 fi
3537 fi
3538 ;;
3539 SunOS/5.* | OSF1/V5.* | NetBSD/* | HP-UX/* | UnixWare/* | AIX/* | CYGWIN*/* | Darwin/* )
3540 EDITOR=/tmp/vipw.$$
3541 VISUAL="$EDITOR"
3542 export EDITOR
3543 export VISUAL
3544 p=`echo $prefix | sed -e 's;/;\\\\\\\\/;g'`
3545 ( echo "cp \$1 \$1.bak"
3546 echo "cat \$1.bak | sed -e \"/<OpenPKG prefix=$p pkg=openpkg>/,/<\\\\/OpenPKG>/d\" >\$1"
3547 echo "rm -f \$1.bak"
3548 ) >$EDITOR
3549 chmod a+x $EDITOR
3550 ( PATH="$PATH:/usr/bin"; crontab -e ) || exit $?
3551 rm -f $EDITOR
3552 ;;
3553 IRIX*/6.* )
3554 p=`echo $prefix | sed -e 's;/;\\\\\\/;g'`
3555 ( crontab -l |
3556 sed -e "/<OpenPKG prefix=$p pkg=openpkg>/,/<\/OpenPKG>/d"
3557 ) | /usr/bin/crontab || exit $?
3558 ;;
3559 esac
3560 fi
3562 # delayed removal of top-level directory.
3563 ( sleep 2
3564 rm -rf %{l_prefix}/RPM/PKG/* >/dev/null 2>&1 || true
3565 rm -rf %{l_prefix}/RPM/SRC/* >/dev/null 2>&1 || true
3566 rm -rf %{l_prefix}/RPM/CACHE/* >/dev/null 2>&1 || true
3567 rm -rf %{l_prefix}/RPM/TMP/* %{l_prefix}/RPM/TMP/.[a-z]* >/dev/null 2>&1 || true
3568 rm -rf %{l_prefix}/RPM/DB/* %{l_prefix}/RPM/DB/.[a-z]* >/dev/null 2>&1 || true
3569 rmdir %{l_prefix}/RPM/DB >/dev/null 2>&1 || true
3570 rmdir %{l_prefix}/RPM >/dev/null 2>&1 || true
3571 rmdir %{l_prefix} >/dev/null 2>&1 || true
3572 ) </dev/null >/dev/null 2>/dev/null &