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