openpkg/openpkg.spec

Sat, 24 Mar 2012 21:40:49 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 24 Mar 2012 21:40:49 +0100
changeset 414
fd611cde817f
parent 345
b7180006bcf1
child 427
71503088f51b
permissions
-rw-r--r--

Introduce many changes to the buildconf and source code including:
(01) clean up, update, and partially update default config files,
(02) seems that Melware is unable to perform release engineering so
update chan_capi to new daily snapshot to solve echo problems,
(03) correct Asterisk inadequate hard coded gmime version check,
(04) force postgresql pthreads linkage to solve build problem,
(05) remove buggy hard coded LibXML configure definitions,
(06) remove local architecture specification to allow GCC
internal logic to determine proper CPU type instead,
(07) remove vendor sound install target causing uncontrolled
downloads and non RPM managed file installation,
(08) solve long outstanding bug in tcptls causing Asterisk
to ignore any intermediate CA certificate signatures,
(09) back out Digium engineering team's bright idea of replacing the
very portable and pervasive POSIX rand(1) with ast_random(), and
then not even implementing it causing all references to fail in
platforms not providing the very new POSIX.1-2008 mkdtemp(3)
function only distributed by BSD and some Linux,
(10) withdraw advanced linker symbol manipulations from SVR5 builds
until either Binutils supports hybrid versioned and anonymous
linker scripts or GCC stops hard coding versioned linker scripts,
(11) correct missing library linkage, some tailored to a specific OS,
(12) remove outdated logic for the no longer distributed gmime-config(1),
(13) remove local gmime buildconf hacks now that Asterisk has corrected
their own build configuration to almost portably support gmime,
(14) solve build problems relating to undetected LibXML paths,
(15) correct erroneous out of tree include definitions,
(16) improve some variable and comment naming,
(17) simplify sound language path hierarchy creation,
and correct australian english installation logic.

michael@13 1 ##
michael@13 2 ## openpkg.spec -- OpenPKG RPM Package Specification
michael@13 3 ## Copyright (c) 2000-2007 OpenPKG Foundation e.V. <http://openpkg.net/>
michael@13 4 ## Copyright (c) 2000-2007 Ralf S. Engelschall <http://engelschall.com/>
michael@13 5 ##
michael@13 6 ## Permission to use, copy, modify, and distribute this software for
michael@13 7 ## any purpose with or without fee is hereby granted, provided that
michael@13 8 ## the above copyright notice and this permission notice appear in all
michael@13 9 ## copies.
michael@13 10 ##
michael@13 11 ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
michael@13 12 ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
michael@13 13 ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
michael@13 14 ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
michael@13 15 ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
michael@13 16 ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
michael@13 17 ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
michael@13 18 ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
michael@13 19 ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
michael@13 20 ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
michael@13 21 ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
michael@13 22 ## SUCH DAMAGE.
michael@13 23 ##
michael@13 24
michael@13 25 # NOTICE: This OpenPKG RPM specification is _very_ special, because
michael@13 26 # it is used both for bootstrapping OpenPKG with its OpenPKG RPM and
michael@13 27 # for regular builds of OpenPKG RPM in order to upgrade an existing
michael@13 28 # installation. For this it has to interact correctly with the
michael@13 29 # "openpkg.boot" script. See the documentation in the file "README"
michael@13 30 # and the source of the companion script "openpkg.boot" for details,
michael@13 31 # but do not touch anything here until you are 100% sure about what
michael@13 32 # you are doing. In short: This script is allowed to use only a very
michael@13 33 # restricted subset of the OpenPKG RPM functionality!
michael@13 34
michael@13 35 # BUILD REQUIREMENTS:
michael@13 36 # o any sh(1)
michael@13 37 # o any tar(1)
michael@13 38 # o any make(1)
michael@13 39 # o any cc(1)
michael@13 40
michael@13 41 # the package version/release
michael@345 42 %define V_openpkg 20110424
michael@13 43
michael@13 44 # the used software versions
michael@13 45 %define V_rpm 4.2.1
michael@250 46 %define V_zlib 1.2.5
michael@250 47 %define V_bzip2 1.0.5
michael@13 48 %define V_beecrypt 4.1.2
michael@250 49 %define V_curl 7.21.1
michael@250 50 %define V_make 3.82
michael@250 51 %define V_gzip 1.4
michael@13 52 %define V_gzip_r 1.13
michael@250 53 %define V_patch 2.6.1
michael@250 54 %define V_tar 1.23
michael@13 55 %define V_bash 3.2
michael@250 56 %define V_uuid 1.6.2
michael@13 57 %define V_config 20060923
michael@13 58 %define V_registry 1.1.3
michael@13 59 %define V_perl 5.10.0
michael@13 60 %define V_openssl 0.9.8g
michael@13 61 %define V_tools 1.4.5
michael@13 62 %define V_exec 2.0.1-C
michael@13 63
michael@13 64 # package information
michael@13 65 Name: openpkg
michael@13 66 Summary: OpenPKG Bootstrap
michael@13 67 URL: http://www.openpkg.org/
michael@13 68 Vendor: OpenPKG
michael@13 69 Packager: OpenPKG Foundation e.V.
michael@13 70 Distribution: OpenPKG Community
michael@13 71 Class: CORE
michael@13 72 Group: Bootstrapping
michael@13 73 License: MIT/BSD/LGPL/GPL
michael@13 74 Version: %{V_openpkg}
michael@13 75 Release: %{V_openpkg}
michael@13 76
michael@13 77 # list of sources
michael@250 78 Source0: ftp://ftp.gnu.org/gnu/patch/patch-%{V_patch}.tar.gz
michael@13 79 Source1: ftp://ftp.cwru.edu/pub/bash/bash-%{V_bash}.tar.gz
michael@13 80 Source2: ftp://ftp.gnu.org/gnu/make/make-%{V_make}.tar.gz
michael@13 81 Source3: ftp://ftp.gnu.org/gnu/tar/tar-%{V_tar}.tar.gz
michael@13 82 Source4: ftp://ftp.openpkg.org/sources/CPY/config/config-%{V_config}.tar.gz
michael@13 83 Source5: ftp://ftp.openpkg.org/sources/CPY/openpkg-registry/openpkg-registry-%{V_registry}.tar.gz
michael@13 84 Source6: ftp://ftp.openpkg.org/sources/CPY/openpkg-tools/openpkg-tools-%{V_tools}.tar.gz
michael@13 85 Source7: ftp://ftp.openpkg.org/sources/CPY/openpkg/gzip-%{V_gzip}-openpkg-r%{V_gzip_r}.tar
michael@250 86 Source8: ftp://ftp.gnu.org/gnu/gzip/gzip-%{V_gzip}.tar
michael@13 87 Source9: ftp://ftp.openpkg.org/sources/CPY/openpkg/openpkg-executable-%{V_exec}.tar.gz
michael@13 88 Source10: ftp://ftp.openpkg.org/sources/CPY/openpkg/rpm-%{V_rpm}.tar.gz
michael@13 89 Source11: ftp://ftp.openpkg.org/sources/CPY/perl/perl-%{V_perl}-mini.tar.gz
michael@13 90 Source12: ftp://ftp.openssl.org/source/openssl-%{V_openssl}.tar.gz
michael@13 91 Source13: ftp://ftp.ossp.org/pkg/lib/uuid/uuid-%{V_uuid}.tar.gz
michael@13 92 Source14: http://curl.haxx.se/download/curl-%{V_curl}.tar.gz
michael@13 93 Source15: http://switch.dl.sourceforge.net/beecrypt/beecrypt-%{V_beecrypt}.tar.gz
michael@13 94 Source16: http://www.bzip.org/%{V_bzip2}/bzip2-%{V_bzip2}.tar.gz
michael@13 95 Source17: http://www.zlib.net/zlib-%{V_zlib}.tar.gz
michael@13 96 Source100: bash.patch
michael@13 97 Source101: beecrypt.patch
michael@13 98 Source102: make.patch
michael@13 99 Source103: openssl.patch
michael@13 100 Source104: perl.patch
michael@13 101 Source105: tar.patch
michael@13 102 Source106: rpm.patch.bugfix
michael@13 103 Source107: rpm.patch.feature
michael@13 104 Source108: rpm.patch.porting
michael@13 105 Source109: rpm.patch.regen
michael@13 106 Source200: HISTORY
michael@13 107 Source201: README
michael@13 108 Source202: aux.prereq.sh
michael@13 109 Source203: aux.usrgrp.sh
michael@13 110 Source204: aux.wrapbin.sh
michael@13 111 Source205: aux.wrapsrc.sh
michael@13 112 Source206: dot.bash_login
michael@13 113 Source207: dot.bashrc
michael@13 114 Source208: dot.lsyncrc
michael@13 115 Source209: install.sh
michael@13 116 Source210: local.README
michael@13 117 Source211: lsync
michael@13 118 Source212: lsync.8
michael@13 119 Source213: lsync.pod
michael@13 120 Source214: man.sh
michael@13 121 Source215: openpkg.1
michael@13 122 Source216: openpkg.boot
michael@13 123 Source217: openpkg.com.pgp
michael@13 124 Source218: openpkg.net.pgp
michael@13 125 Source219: openpkg.org.pgp
michael@13 126 Source220: openpkg.pod
michael@13 127 Source221: openpkg.sh
michael@13 128 Source222: pod2man.sh
michael@13 129 Source223: rc
michael@13 130 Source224: rc.8
michael@13 131 Source225: rc.conf
michael@13 132 Source226: rc.func
michael@13 133 Source227: rc.openpkg
michael@13 134 Source228: rc.pod
michael@13 135 Source229: release.8
michael@13 136 Source230: release.pod
michael@13 137 Source231: release.sh
michael@13 138 Source232: root.README
michael@13 139 Source233: rpm-config.8
michael@13 140 Source234: rpm-config.pod
michael@13 141 Source235: rpm-config.sh
michael@13 142 Source236: rpmdb
michael@13 143 Source237: rpmtool
michael@13 144 Source238: rpmtool.8
michael@13 145 Source239: rpmtool.pod
michael@13 146 Source240: shtool
michael@13 147 Source241: uuid.8
michael@13 148 Source242: uuid.pod
michael@13 149 Source243: uuid.sh
michael@13 150 Source244: rpmmacros
michael@13 151 Source245: rpmpopt
michael@13 152 Source246: rpmrc
michael@13 153
michael@13 154 # build information
michael@13 155 Prefix: %{l_prefix}
michael@13 156 BuildRoot: %{l_buildroot}
michael@13 157 AutoReq: no
michael@13 158 AutoReqProv: no
michael@13 159 Provides: OpenPKG
michael@13 160
michael@13 161 %description
michael@13 162 This is the bootstrap package for the RPM-based Unix Software
michael@13 163 Package Hierarchy OpenPKG. The RPM Package Manager (RPM) is a
michael@13 164 sophisticated and portable package manager for Unix platforms,
michael@13 165 which supports automated building, installation, management and
michael@13 166 deinstallation of Unix software. RPM was originally designed and
michael@13 167 implemented for the RedHat Linux operating system where it manages
michael@13 168 every file on the whole system. OpenPKG uses RPM only for managing
michael@13 169 the files in a particular filesystem hierarchy dedicated to the
michael@13 170 installation of third-party software packages provided by the
michael@13 171 OpenPKG project.
michael@13 172
michael@13 173 The OpenPKG bootstrap package includes the following software:
michael@13 174 RPM %{V_rpm}, ZLib %{V_zlib}, GNU Bzip2 %{V_bzip2},
michael@13 175 GNU Gzip %{V_gzip}, GNU Tar %{V_tar}, GNU Patch %{V_patch},
michael@13 176 GNU Make %{V_make}, GNU Bash %{V_bash}, cURL %{V_curl},
michael@13 177 OSSP uuid %{V_uuid}, BeeCrypt %{V_beecrypt},
michael@13 178 OpenSSL %{V_openssl}, Perl %{V_perl}
michael@13 179
michael@13 180 %track
michael@13 181 prog openpkg:bash = {
michael@13 182 version = %{V_bash}
michael@13 183 url = ftp://ftp.cwru.edu/pub/bash/
michael@13 184 regex = bash-(__VER__)\.tar\.gz
michael@13 185 }
michael@13 186 prog openpkg:bzip2 = {
michael@13 187 version = %{V_bzip2}
michael@13 188 url = http://www.bzip.org/downloads.html
michael@13 189 regex = bzip2-(__VER__)\.tar\.gz
michael@13 190 }
michael@13 191 prog openpkg:curl = {
michael@13 192 version = %{V_curl}
michael@13 193 url = http://curl.haxx.se/download/
michael@13 194 regex = curl-(__VER__)\.tar\.gz
michael@13 195 }
michael@13 196 prog openpkg:gzip = {
michael@13 197 comment = "rse: intentionally tracked at gnu.org, although fetched from openpkg.org because of uncompression"
michael@13 198 version = %{V_gzip}
michael@13 199 url = ftp://ftp.gnu.org/gnu/gzip/
michael@13 200 regex = gzip-(__VER__)\.tar(\.gz)?
michael@13 201 }
michael@13 202 prog openpkg:gzip_r = {
michael@13 203 version = %{V_gzip_r}
michael@13 204 url = ftp://ftp.openpkg.org/sources/CPY/openpkg/
michael@13 205 regex = gzip-%{V_gzip}-openpkg-r(__VER__)\.tar
michael@13 206 }
michael@13 207 prog openpkg:make = {
michael@13 208 version = %{V_make}
michael@13 209 url = ftp://ftp.gnu.org/gnu/make/
michael@13 210 regex = make-(__VER__)\.tar\.gz
michael@13 211 }
michael@13 212 prog openpkg:patch = {
michael@13 213 disabled
michael@13 214 comment = "rse: directory missing after GNU.org security issues"
michael@13 215 version = %{V_patch}
michael@13 216 url = ftp://alpha.gnu.org/gnu/patch/
michael@13 217 regex = patch-(__VER__)\.tar\.gz
michael@13 218 }
michael@13 219 prog openpkg:rpm = {
michael@13 220 disabled
michael@13 221 comment = "rse: we have a .src.rpm extracted .tar.gz, because there is still no tarball for 4.2.1"
michael@13 222 version = %{V_rpm}
michael@13 223 url = ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.2.x/
michael@13 224 regex = rpm-(4\.2\.\d+)\.tar\.gz
michael@13 225 }
michael@13 226 prog openpkg:tar = {
michael@13 227 version = %{V_tar}
michael@13 228 url = ftp://ftp.gnu.org/gnu/tar/
michael@13 229 regex = tar-(__VER__)\.tar\.gz
michael@13 230 }
michael@13 231 prog openpkg:zlib = {
michael@13 232 version = %{V_zlib}
michael@13 233 url = http://www.zlib.net/
michael@13 234 regex = zlib-(__VER__)\.tar\.gz
michael@13 235 }
michael@13 236 prog openpkg:uuid = {
michael@13 237 version = %{V_uuid}
michael@13 238 url = ftp://ftp.ossp.org/pkg/lib/uuid/
michael@13 239 regex = uuid-(__VER__)\.tar\.gz
michael@13 240 }
michael@13 241 prog openpkg:config = {
michael@13 242 version = %{V_config}
michael@13 243 url = ftp://ftp.openpkg.org/sources/CPY/config/
michael@13 244 regex = config-(__VER__)\.tar\.gz
michael@13 245 }
michael@13 246 prog openpkg:beecrypt = {
michael@13 247 version = %{V_beecrypt}
michael@13 248 url = http://prdownloads.sourceforge.net/beecrypt/
michael@13 249 regex = beecrypt-(__VER__)\.tar\.gz
michael@13 250 }
michael@13 251 prog openpkg:registry = {
michael@13 252 version = %{V_registry}
michael@13 253 url = ftp://ftp.openpkg.org/sources/CPY/openpkg-registry/
michael@13 254 regex = openpkg-registry-(__VER__)\.tar\.gz
michael@13 255 }
michael@13 256 prog openpkg:perl = {
michael@13 257 version = %{V_perl}
michael@13 258 url = ftp://ftp.openpkg.org/sources/CPY/perl/
michael@13 259 regex = perl-(__VER__)-mini\.tar\.gz
michael@13 260 }
michael@13 261 prog openpkg:openssl = {
michael@13 262 version = %{V_openssl}
michael@13 263 url = ftp://ftp.openssl.org/source/
michael@13 264 regex = openssl-(\d+\.\d+\.\d+[a-z]?)\.tar\.gz
michael@13 265 }
michael@13 266 prog openpkg:openpkg-tools = {
michael@13 267 version = %{V_tools}
michael@13 268 url = ftp://ftp.openpkg.org/sources/CPY/openpkg-tools/
michael@13 269 regex = openpkg-tools-(__VER__)\.tar\.gz
michael@13 270 }
michael@13 271 prog openpkg:openpkg-executable = {
michael@13 272 version = %{V_exec}
michael@13 273 url = ftp://ftp.openpkg.org/sources/CPY/openpkg/
michael@13 274 regex = openpkg-executable-(__VER__-C)\.tar\.gz
michael@13 275 }
michael@13 276
michael@13 277 %prep
michael@13 278 # skip in bootstrap phase 2 (see openpkg.boot)
michael@13 279 [ ".$OPENPKG_BOOT" = .1 ] && exit 0
michael@13 280
michael@13 281 # switch into a temporary build area
michael@13 282 rm -rf openpkg-%{version}
michael@13 283 mkdir openpkg-%{version}
michael@13 284 cd openpkg-%{version}
michael@13 285 rm -f .buildenv
michael@13 286 touch .buildenv
michael@13 287
michael@13 288 # provide a bootstrap alternative to %{SOURCE xxx} because else
michael@13 289 # it is not possible to upgrade a newer OpenPKG RPM with an older
michael@13 290 # OpenPKG RPM.
michael@13 291 echo >>.buildenv 'SOURCE () {'
michael@13 292 echo >>.buildenv ' if [ -f "%{_specdir}/$1" ]; then'
michael@13 293 echo >>.buildenv ' echo "%{_specdir}/$1"'
michael@13 294 echo >>.buildenv ' else'
michael@13 295 echo >>.buildenv ' echo "%{_sourcedir}/$1"'
michael@13 296 echo >>.buildenv ' fi'
michael@13 297 echo >>.buildenv '}'
michael@13 298 echo >>.buildenv 'VERBOSE () {'
michael@13 299 echo >>.buildenv ' if [ -f "%{_specdir}/rpmtool" ]; then'
michael@13 300 echo >>.buildenv ' echo "$*" | sh %{_specdir}/rpmtool msg'
michael@13 301 echo >>.buildenv ' else'
michael@13 302 echo >>.buildenv ' echo "$*" | sh %{_sourcedir}/rpmtool msg'
michael@13 303 echo >>.buildenv ' fi'
michael@13 304 echo >>.buildenv '}'
michael@13 305 . ./.buildenv
michael@13 306
michael@13 307 # display verbosity header
michael@13 308 set +x; VERBOSE "PREPARATION: Determine Build Tool Paths"; set -x
michael@13 309
michael@13 310 # determine path to shtool
michael@13 311 shtool=`SOURCE shtool`
michael@13 312 echo "shtool=$shtool" >>./.buildenv
michael@13 313
michael@13 314 # determine development tools
michael@13 315 # - bootstrapping: %{l_xxx} is set via sed(1)
michael@13 316 # - upgrading new: %{l_xxx} is set via rpmmacros
michael@13 317 # - upgrading old: %{l_xxx} is not set at all
michael@13 318
michael@13 319 # manually make sure tar(1) is available
michael@13 320 l_tar=""; export l_tar
michael@13 321 [ ".%{?l_tar:set}" = .set ] && l_tar="%{l_tar}"
michael@13 322 [ ".%{?use_tar:set}" = .set ] && l_tar="%{use_tar}"
michael@13 323 if [ ".$l_tar" = . ]; then
michael@13 324 l_tar=`sh $shtool path gtar tar`
michael@13 325 if [ ".$l_tar" = . ]; then
michael@13 326 echo "openpkg: prerequisite tool \`gtar' or \`tar' not found"
michael@13 327 exit 1
michael@13 328 fi
michael@13 329 fi
michael@13 330 echo "l_tar=\"$l_tar\"; export l_tar" >>.buildenv
michael@13 331
michael@13 332 # manually make sure make(1) is available
michael@13 333 l_make=""; export l_make
michael@13 334 [ ".%{?l_make:set}" = .set ] && l_make="%{l_make}"
michael@13 335 [ ".%{?use_make:set}" = .set ] && l_make="%{use_make}"
michael@13 336 if [ ".$l_make" = . ]; then
michael@13 337 l_make=`sh $shtool path gmake make`
michael@13 338 if [ ".$l_make" = . ]; then
michael@13 339 echo "openpkg: prerequisite tool \`gmake' or \`make' not found"
michael@13 340 exit 1
michael@13 341 fi
michael@13 342 fi
michael@13 343 echo "l_make=\"$l_make\"; export l_make" >>.buildenv
michael@13 344
michael@13 345 # manually make sure cc(1) is available
michael@13 346 l_cc=""; export l_cc
michael@13 347 [ ".%{?l_cc:set}" = .set ] && l_cc="%{l_cc}"
michael@13 348 [ ".%{?use_cc:set}" = .set ] && l_cc="%{use_cc}"
michael@13 349 if [ ".$l_cc" = . ]; then
michael@13 350 l_cc=`sh $shtool path gcc cc`
michael@13 351 if [ ".$l_cc" = . ]; then
michael@13 352 echo "openpkg: prerequisite tool \`gcc' or \`cc' not found"
michael@13 353 exit 1
michael@13 354 fi
michael@13 355 fi
michael@13 356 echo "l_cc=\"$l_cc\"; export l_cc" >>.buildenv
michael@13 357
michael@13 358 # manually make sure ar(1) is available
michael@13 359 l_ar=""; export l_ar
michael@13 360 [ ".%{?l_ar:set}" = .set ] && l_ar="%{l_ar}"
michael@13 361 [ ".%{?use_ar:set}" = .set ] && l_ar="%{use_ar}"
michael@13 362 if [ ".$l_ar" = . ]; then
michael@13 363 l_ar=`sh $shtool path ar`
michael@13 364 if [ ".$l_ar" = . ]; then
michael@13 365 echo "openpkg: prerequisite tool \`ar' not found"
michael@13 366 exit 1
michael@13 367 fi
michael@13 368 fi
michael@13 369 echo "l_ar=\"$l_ar\"; export l_ar" >>.buildenv
michael@13 370
michael@13 371 # manually make sure ld(1) is available
michael@13 372 l_ld=""; export l_ld
michael@13 373 [ ".%{?l_ld:set}" = .set ] && l_ld="%{l_ld}"
michael@13 374 [ ".%{?use_ld:set}" = .set ] && l_ld="%{use_ld}"
michael@13 375 if [ ".$l_ld" = . ]; then
michael@13 376 l_ld=`sh $shtool path ld`
michael@13 377 if [ ".$l_ld" = . ]; then
michael@13 378 echo "openpkg: prerequisite tool \`ld' not found"
michael@13 379 exit 1
michael@13 380 fi
michael@13 381 fi
michael@13 382 echo "l_ld=\"$l_ld\"; export l_ld" >>.buildenv
michael@13 383
michael@13 384 # manually make sure as(1) is available
michael@13 385 l_as=""; export l_as
michael@13 386 [ ".%{?l_as:set}" = .set ] && l_as="%{l_as}"
michael@13 387 [ ".%{?use_as:set}" = .set ] && l_as="%{use_as}"
michael@13 388 if [ ".$l_as" = . ]; then
michael@13 389 l_as=`sh $shtool path as`
michael@13 390 if [ ".$l_as" = . ]; then
michael@13 391 echo "openpkg: prerequisite tool \`as' not found"
michael@13 392 exit 1
michael@13 393 fi
michael@13 394 fi
michael@13 395 echo "l_as=\"$l_as\"; export l_as" >>.buildenv
michael@13 396
michael@13 397 # manually make sure strip(1) is available or use a null replacement
michael@13 398 l_strip=""; export l_strip
michael@13 399 [ ".%{?l_strip:set}" = .set ] && l_strip="%{l_strip}"
michael@13 400 [ ".%{?use_strip:set}" = .set ] && l_strip="%{use_strip}"
michael@13 401 if [ ".$l_strip" = . ]; then
michael@13 402 l_strip=`sh $shtool path strip ls`
michael@13 403 if [ ".$l_strip" = . ]; then
michael@13 404 echo "openpkg: prerequisite tool \`strip' not found"
michael@13 405 exit 1
michael@13 406 fi
michael@13 407 fi
michael@13 408 echo "l_strip=\"$l_strip\"; export l_strip" >>.buildenv
michael@13 409
michael@13 410 # determine path to aux.usrgrp.sh script
michael@13 411 usrgrp=`SOURCE aux.usrgrp.sh`
michael@13 412 echo "usrgrp=$usrgrp; export usrgrp" >>./.buildenv
michael@13 413
michael@13 414 # display verbosity header
michael@13 415 set +x; VERBOSE "PREPARATION: Determine OpenPKG User/Group Name/Id Pairs"; set -x
michael@13 416
michael@13 417 # determine user/group name/id pairs
michael@13 418 # - bootstrapping: %{l_[smrn]{usr,grp}} is set via sed(1)
michael@13 419 # - upgrading new: %{l_[smrn]{usr,grp}} is set via rpmmacros
michael@13 420 # - upgrading old: %{l_[smrn]{usr,grp}} is not set at all
michael@13 421 susr=""; [ ".%{?l_susr:set}" = .set ] && susr="%{l_susr}"
michael@13 422 sgrp=""; [ ".%{?l_sgrp:set}" = .set ] && sgrp="%{l_sgrp}"
michael@13 423 musr=""; [ ".%{?l_musr:set}" = .set ] && musr="%{l_musr}"
michael@13 424 mgrp=""; [ ".%{?l_mgrp:set}" = .set ] && mgrp="%{l_mgrp}"
michael@13 425 rusr=""; [ ".%{?l_rusr:set}" = .set ] && rusr="%{l_rusr}"
michael@13 426 rgrp=""; [ ".%{?l_rgrp:set}" = .set ] && rgrp="%{l_rgrp}"
michael@13 427 nusr=""; [ ".%{?l_nusr:set}" = .set ] && nusr="%{l_nusr}"
michael@13 428 ngrp=""; [ ".%{?l_ngrp:set}" = .set ] && ngrp="%{l_ngrp}"
michael@13 429 # corresponding ids
michael@13 430 suid=""; [ ".%{?l_suid:set}" = .set ] && suid="%{l_suid}"
michael@13 431 sgid=""; [ ".%{?l_sgid:set}" = .set ] && sgid="%{l_sgid}"
michael@13 432 muid=""; [ ".%{?l_muid:set}" = .set ] && muid="%{l_muid}"
michael@13 433 mgid=""; [ ".%{?l_mgid:set}" = .set ] && mgid="%{l_mgid}"
michael@13 434 ruid=""; [ ".%{?l_ruid:set}" = .set ] && ruid="%{l_ruid}"
michael@13 435 rgid=""; [ ".%{?l_rgid:set}" = .set ] && rgid="%{l_rgid}"
michael@13 436 nuid=""; [ ".%{?l_nuid:set}" = .set ] && nuid="%{l_nuid}"
michael@13 437 ngid=""; [ ".%{?l_ngid:set}" = .set ] && ngid="%{l_ngid}"
michael@13 438 # compat:
michael@13 439 usr=""; [ ".%{?l_fsusr:set}" = .set ] && usr="%{l_fsusr}"
michael@13 440 grp=""; [ ".%{?l_fsgrp:set}" = .set ] && grp="%{l_fsgrp}"
michael@13 441 eval `sh $usrgrp \
michael@13 442 --usr="$usr" --grp="$grp" \
michael@13 443 --susr="$susr" --sgrp="$sgrp" \
michael@13 444 --musr="$musr" --mgrp="$mgrp" \
michael@13 445 --rusr="$rusr" --rgrp="$rgrp" \
michael@13 446 --nusr="$nusr" --ngrp="$ngrp" \
michael@13 447 --suid="$suid" --sgid="$sgid" \
michael@13 448 --muid="$muid" --mgid="$mgid" \
michael@13 449 --ruid="$ruid" --rgid="$rgid" \
michael@13 450 --nuid="$nuid" --ngid="$ngid"`
michael@13 451 echo "susr=\"$susr\"; export susr" >>.buildenv
michael@13 452 echo "sgrp=\"$sgrp\"; export sgrp" >>.buildenv
michael@13 453 echo "musr=\"$musr\"; export musr" >>.buildenv
michael@13 454 echo "mgrp=\"$mgrp\"; export mgrp" >>.buildenv
michael@13 455 echo "rusr=\"$rusr\"; export rusr" >>.buildenv
michael@13 456 echo "rgrp=\"$rgrp\"; export rgrp" >>.buildenv
michael@13 457 echo "nusr=\"$nusr\"; export nusr" >>.buildenv
michael@13 458 echo "ngrp=\"$ngrp\"; export ngrp" >>.buildenv
michael@13 459 echo "suid=\"$suid\"; export suid" >>.buildenv
michael@13 460 echo "sgid=\"$sgid\"; export sgid" >>.buildenv
michael@13 461 echo "muid=\"$muid\"; export muid" >>.buildenv
michael@13 462 echo "mgid=\"$mgid\"; export mgid" >>.buildenv
michael@13 463 echo "ruid=\"$ruid\"; export ruid" >>.buildenv
michael@13 464 echo "rgid=\"$rgid\"; export rgid" >>.buildenv
michael@13 465 echo "nuid=\"$nuid\"; export nuid" >>.buildenv
michael@13 466 echo "ngid=\"$ngid\"; export ngid" >>.buildenv
michael@13 467
michael@13 468 # display verbosity header
michael@13 469 set +x; VERBOSE "PREPARATION: Determine OpenPKG Instance Environment"; set -x
michael@13 470
michael@13 471 # determine installation location id
michael@13 472 if [ ".%{?l_tag_fmt:set}" = .set ]; then
michael@13 473 tag="%{l_tag_fmt}"
michael@13 474 else
michael@13 475 tag="<compat>"
michael@13 476 fi
michael@13 477 echo "tag=\"$tag\"; export tag" >>.buildenv
michael@13 478
michael@13 479 # determine platform id
michael@13 480 s=`(uname -s) 2>/dev/null` || s='Unknown'
michael@13 481 r=`(uname -r) 2>/dev/null` || r='0.0'
michael@13 482 plid="${s}/${r}"
michael@13 483 echo "plid=\"$plid\"; export plid" >>.buildenv
michael@13 484
michael@13 485 # determine platform-specific build environment
michael@13 486 case $plid in
michael@13 487 FreeBSD/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
michael@13 488 NetBSD/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
michael@13 489 Linux/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
michael@13 490 SunOS/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin" ;;
michael@13 491 UnixWare/*) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin" ;;
michael@13 492 AIX/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin" ;;
michael@13 493 Darwin/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
michael@13 494 OSF1/V5.* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
michael@13 495 HP-UX/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
michael@13 496 IRIX*/6.* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
michael@13 497 * ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;;
michael@13 498 esac
michael@13 499 case $plid in
michael@13 500 FreeBSD/* ) l_build_ldlp="/lib:/usr/lib" ;;
michael@13 501 NetBSD/* ) l_build_ldlp="/lib:/usr/lib" ;;
michael@13 502 Linux/* ) l_build_ldlp="/lib:/usr/lib" ;;
michael@13 503 SunOS/* ) l_build_ldlp="/usr/lib:/usr/ccs/lib" ;;
michael@13 504 UnixWare/*) l_build_ldlp="/usr/lib:/usr/ccs/lib" ;;
michael@13 505 AIX/* ) l_build_ldlp="/usr/lib:/usr/ccs/lib" ;;
michael@13 506 Darwin/* ) l_build_ldlp="/usr/lib" ;;
michael@13 507 OSF1/V5.* ) l_build_ldlp="/usr/lib" ;;
michael@13 508 HP-UX/* ) l_build_ldlp="/usr/lib" ;;
michael@13 509 IRIX*/6.* ) l_build_ldlp="/usr/lib" ;;
michael@13 510 * ) l_build_ldlp="/usr/lib" ;;
michael@13 511 esac
michael@13 512 case $plid in
michael@13 513 * ) l_build_ulim=":" ;;
michael@13 514 esac
michael@13 515 echo "l_build_path=\"$l_build_path\"; export l_build_path" >>.buildenv
michael@13 516 echo "l_build_ldlp=\"$l_build_ldlp\"; export l_build_ldlp" >>.buildenv
michael@13 517 echo "l_build_ulim=\"$l_build_ulim\"; export l_build_ulim" >>.buildenv
michael@13 518
michael@13 519 # display verbosity header
michael@13 520 set +x; VERBOSE "PREPARATION: Build GNU gzip (Compression Tool)"; set -x
michael@13 521
michael@13 522 # bootstrap GNU zip tool
michael@13 523 ${l_tar} xf `SOURCE gzip-%{V_gzip}.tar` 2>/dev/null || true
michael@13 524 ${l_tar} xf `SOURCE gzip-%{V_gzip}-openpkg-r%{V_gzip_r}.tar` 2>/dev/null || true
michael@13 525 ( cd gzip-%{V_gzip}
michael@13 526 echo "ac_cv_prog_cc_g=no" >config.cache
michael@13 527 case $plid in
michael@13 528 Darwin/* ) echo "gzip_cv_assembler=no" >>config.cache ;;
michael@13 529 esac
michael@13 530 CC="${l_cc}" \
michael@13 531 GREP="grep" \
michael@333 532 MAKE="${l_make}" \
michael@13 533 ./configure \
michael@13 534 --cache-file=./config.cache
michael@13 535 ${l_make} || exit $?
michael@13 536 ( mv gzip ..; ${l_make} clean || true; mv ../gzip . ) || exit $?
michael@13 537 ) || exit $?
michael@13 538 l_gzip="`pwd`/gzip-%{V_gzip}/gzip"; export l_gzip
michael@13 539 echo "l_gzip=\"$l_gzip\"; export l_gzip" >>.buildenv
michael@13 540
michael@13 541 # display verbosity header
michael@13 542 set +x; VERBOSE "PREPARATION: Unpack GNU configuration guessing utilities"; set -x
michael@13 543
michael@13 544 # unpack GNU config.guess
michael@13 545 ${l_gzip} -dc `SOURCE config-%{V_config}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 546
michael@13 547 # display verbosity header
michael@13 548 set +x; VERBOSE "PREPARATION: Build GNU patch (Source Patching Tool)"; set -x
michael@13 549
michael@13 550 # bootstrap GNU patch tool
michael@13 551 ${l_gzip} -dc `SOURCE patch-%{V_patch}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 552 ( cd patch-%{V_patch}
michael@13 553 chmod u+w config.guess config.sub >/dev/null 2>&1 || true
michael@13 554 cp ../config/config.guess .
michael@13 555 cp ../config/config.sub .
michael@13 556 ( echo 'ac_cv_func_setmode=${ac_cv_func_setmode=no}'
michael@13 557 echo 'ac_cv_prog_cc_g=no'
michael@13 558 false=`sh $shtool path false`
michael@13 559 echo "ac_cv_path_ed_PROGRAM=\${ac_cv_path_ed_PROGRAM=$false}"
michael@13 560 ) >config.cache
michael@13 561 CC="${l_cc}" \
michael@329 562 GREP="grep" \
michael@13 563 ./configure \
michael@13 564 --cache-file=./config.cache \
michael@13 565 --disable-largefile
michael@13 566 ${l_make} || exit $?
michael@250 567 ( mv src/patch ..; ${l_make} clean || true; mv ../patch . ) || exit $?
michael@13 568 ) || exit $?
michael@13 569 l_patch="`pwd`/patch-%{V_patch}/patch"; export l_patch
michael@13 570 echo "l_patch=\"$l_patch\"; export l_patch" >>.buildenv
michael@13 571
michael@13 572 # display verbosity header
michael@13 573 set +x; VERBOSE "BUILD: Build GNU tar (Archiving Tool)"; set -x
michael@13 574
michael@13 575 # build GNU tar tool
michael@13 576 ${l_gzip} -dc `SOURCE tar-%{V_tar}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 577 ( cd tar-%{V_tar}
michael@13 578 ${l_patch} -p0 <`SOURCE tar.patch`
michael@13 579 ( echo 'am_cv_func_iconv=no'
michael@13 580 echo 'am_cv_lib_iconv=no'
michael@13 581 echo 'ac_cv_lib_iconv_iconv=no'
michael@13 582 echo 'ac_cv_header_iconv_h=no'
michael@13 583 echo 'ac_cv_type_iconv_t=no'
michael@13 584 ) >config.cache
michael@13 585 CC="${l_cc}" \
michael@333 586 MAKE="${l_make}" \
michael@13 587 MAKEINFO="true" \
michael@13 588 GREP="grep" \
michael@13 589 ./configure \
michael@13 590 --cache-file=./config.cache \
michael@13 591 --prefix=%{l_prefix} \
michael@13 592 --disable-nls
michael@13 593 ${l_make} || exit $?
michael@13 594 ( mv src/tar ..; ${l_make} clean || true; mv ../tar . ) || exit $?
michael@13 595 ) || exit $?
michael@13 596 l_tar="`pwd`/tar-%{V_tar}/tar"; export l_tar
michael@13 597 echo "l_tar=\"$l_tar\"; export l_tar" >>.buildenv
michael@13 598
michael@13 599 # display verbosity header
michael@13 600 set +x; VERBOSE "PREPARATION: Unpack Distribution Tarballs"; set -x
michael@13 601
michael@13 602 # unpack distribution tarballs
michael@13 603 ${l_gzip} -dc `SOURCE rpm-%{V_rpm}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 604 ${l_gzip} -dc `SOURCE zlib-%{V_zlib}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 605 ${l_gzip} -dc `SOURCE bzip2-%{V_bzip2}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 606 ${l_gzip} -dc `SOURCE curl-%{V_curl}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 607 ${l_gzip} -dc `SOURCE make-%{V_make}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 608 ${l_gzip} -dc `SOURCE bash-%{V_bash}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 609 ${l_gzip} -dc `SOURCE uuid-%{V_uuid}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 610 ${l_gzip} -dc `SOURCE beecrypt-%{V_beecrypt}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 611 ${l_gzip} -dc `SOURCE openpkg-registry-%{V_registry}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 612 ${l_gzip} -dc `SOURCE perl-%{V_perl}-mini.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 613 ${l_gzip} -dc `SOURCE openssl-%{V_openssl}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 614 ${l_gzip} -dc `SOURCE openpkg-tools-%{V_tools}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 615 ${l_gzip} -dc `SOURCE openpkg-executable-%{V_exec}.tar.gz` | ${l_tar} xf - 2>/dev/null || true
michael@13 616
michael@13 617 # update config.guess/config.sub
michael@13 618 for dir in rpm-%{V_rpm} rpm-%{V_rpm}/popt beecrypt-%{V_beecrypt} \
michael@13 619 curl-%{V_curl} make-%{V_make} bash-%{V_bash}/support; do
michael@13 620 chmod u+w $dir/config.guess $dir/config.sub >/dev/null 2>&1 || true
michael@13 621 cp config/config.guess $dir/
michael@13 622 cp config/config.sub $dir/
michael@13 623 done
michael@13 624
michael@13 625 # display verbosity header
michael@13 626 set +x; VERBOSE "PREPARATION: Apply OpenPKG Patches to Distributions"; set -x
michael@13 627
michael@13 628 # apply OpenPKG patches to distribution trees
michael@13 629 ( cd rpm-%{V_rpm}
michael@13 630 sed -e "s;@l_prefix@;%{l_prefix};g" <`SOURCE rpm.patch.bugfix` | ${l_patch} -p0
michael@13 631 sed -e "s;@l_prefix@;%{l_prefix};g" <`SOURCE rpm.patch.feature` | ${l_patch} -p0
michael@13 632 sed -e "s;@l_prefix@;%{l_prefix};g" <`SOURCE rpm.patch.porting` | ${l_patch} -p0
michael@13 633 sed -e "s;@l_prefix@;%{l_prefix};g" <`SOURCE rpm.patch.regen` | ${l_patch} -p0
michael@13 634 rm -rf db/docs # just reduce disk size of source tree
michael@13 635 ) || exit $?
michael@13 636 ( cd make-%{V_make}
michael@13 637 ${l_patch} -p0 <`SOURCE make.patch`
michael@13 638 ) || exit $?
michael@13 639 ( cd bash-%{V_bash}
michael@13 640 ${l_patch} -p0 <`SOURCE bash.patch`
michael@13 641 sleep 1
michael@13 642 touch y.tab.[ch]
michael@13 643 touch configure config.h.in
michael@13 644 ) || exit $?
michael@13 645 ( cd beecrypt-%{V_beecrypt}
michael@13 646 ${l_patch} -p0 <`SOURCE beecrypt.patch`
michael@13 647 ) || exit $?
michael@13 648 ( cd perl-%{V_perl}
michael@13 649 ${l_patch} -p0 <`SOURCE perl.patch`
michael@13 650 ) || exit $?
michael@13 651 ( cd openssl-%{V_openssl}
michael@13 652 ${l_patch} -p0 <`SOURCE openssl.patch`
michael@13 653 ) || exit $?
michael@13 654
michael@13 655 # display verbosity header
michael@13 656 set +x; VERBOSE "PREPARATION: Build GNU make (Build Tool)"; set -x
michael@13 657
michael@13 658 # bootstrap GNU make tool
michael@13 659 ( cd make-%{V_make}
michael@13 660 CC="${l_cc}" \
michael@329 661 GREP="grep" \
michael@13 662 ./configure \
michael@13 663 --without-libiconv-prefix \
michael@13 664 --without-libintl-prefix \
michael@13 665 --disable-nls \
michael@13 666 --disable-largefile
michael@13 667 ${l_make}
michael@13 668 ( mv make ..; ${l_make} clean || true; mv ../make . ) || exit $?
michael@13 669 ) || exit $?
michael@13 670 l_make="`pwd`/make-%{V_make}/make"; export l_make
michael@13 671 echo "l_make=\"$l_make\"; export l_make" >>.buildenv
michael@13 672
michael@13 673 %build
michael@13 674 # skip in bootstrap phase 2 (see openpkg.boot)
michael@13 675 [ ".$OPENPKG_BOOT" = .1 ] && exit 0
michael@13 676
michael@13 677 # switch into a temporary build area
michael@13 678 cd openpkg-%{version}
michael@13 679 . ./.buildenv
michael@13 680
michael@13 681 # display verbosity header
michael@13 682 set +x; VERBOSE "BUILD: Build GNU bash (Bourne-Again Shell)"; set -x
michael@13 683
michael@13 684 # build GNU bash tool
michael@13 685 ( cd bash-%{V_bash}
michael@13 686 sh $shtool subst \
michael@13 687 -e 's;@l_openpkg_release@;OpenPKG;' \
michael@13 688 version.c
michael@13 689 ( # force disabled wide-character support
michael@13 690 echo "ac_cv_header_wchar_h=no"
michael@13 691 echo "ac_cv_header_wctype_h=no"
michael@13 692 echo "ac_cv_func_mbsrtowcs=no"
michael@13 693 # force disabled internationalization support
michael@13 694 echo "ac_cv_header_libintl_h=no"
michael@13 695 echo "ac_cv_func_gettext=no"
michael@13 696 echo "ac_cv_func_textdomain=no"
michael@13 697 echo "ac_cv_func_bindtextdomain=no"
michael@13 698 echo "ac_cv_lib_intl_bindtextdomain=no"
michael@13 699 # disable building with debug symbols
michael@13 700 echo "ac_cv_prog_cc_g=no"
michael@13 701 ) >config.cache
michael@13 702 AUTOCONF="true" \
michael@333 703 CC="${l_cc}" \
michael@333 704 MAKE="${l_make}" \
michael@13 705 ./configure \
michael@13 706 --cache-file=./config.cache \
michael@13 707 --prefix=%{l_prefix} \
michael@13 708 --without-curses \
michael@13 709 --without-gnu-malloc \
michael@13 710 --disable-nls
michael@13 711 ${l_make} || exit $?
michael@13 712 ( mv bash ..; ${l_make} clean || true; mv ../bash . ) || exit $?
michael@13 713 ) || exit $?
michael@13 714
michael@13 715 # display verbosity header
michael@13 716 set +x; VERBOSE "BUILD: Build GNU bzip2 (Compression Library)"; set -x
michael@13 717
michael@13 718 # build BZIP2 library
michael@13 719 ( cd bzip2-%{V_bzip2}
michael@13 720 ${l_make} CC="${l_cc}" CFLAGS="-O" libbz2.a bzip2 || exit $?
michael@13 721 ( echo "# libbz2.la - a libtool library file"
michael@13 722 echo "# Generated by ltmain.sh - GNU libtool x.x.x"
michael@13 723 echo "dlname=''"
michael@13 724 echo "library_names=''"
michael@13 725 echo "old_library='libbz2.a'"
michael@13 726 echo "dependency_libs=''"
michael@13 727 echo "current=0"
michael@13 728 echo "age=0"
michael@13 729 echo "revision=0"
michael@13 730 echo "installed=no"
michael@13 731 echo "dlopen=''"
michael@13 732 echo "dlpreopen=''"
michael@13 733 echo "libdir='%{l_prefix}'"
michael@13 734 ) >libbz2.la
michael@13 735 ln -s . .libs
michael@13 736 ) || exit $?
michael@13 737
michael@13 738 # display verbosity header
michael@13 739 set +x; VERBOSE "BUILD: Build Zlib (Compression Library)"; set -x
michael@13 740
michael@13 741 # build ZLIB library
michael@13 742 ( cd zlib-%{V_zlib}
michael@13 743 CC="${l_cc}" CFLAGS="-O" ./configure
michael@13 744 ${l_make} CC="${l_cc}" libz.a || exit $? # intentionally do not pass CFLAGS here
michael@13 745 ) || exit $?
michael@13 746
michael@13 747 # display verbosity header
michael@13 748 set +x; VERBOSE "BUILD: Build OSSP uuid (UUID Generation Tool)"; set -x
michael@13 749
michael@13 750 # build OSSP uuid tool
michael@13 751 ( cd uuid-%{V_uuid}
michael@13 752 CC="${l_cc}" \
michael@13 753 CFLAGS="-O" \
michael@13 754 GREP="grep" \
michael@13 755 ./configure \
michael@13 756 --prefix=%{l_prefix} \
michael@13 757 --disable-shared
michael@13 758 ${l_make} || exit $?
michael@13 759 ( mv uuid ..; ${l_make} clean || true; mv ../uuid . ) || exit $?
michael@13 760 ) || exit $?
michael@13 761
michael@13 762 # display verbosity header
michael@13 763 set +x; VERBOSE "BUILD: Build Perl (Programming Language)"; set -x
michael@13 764
michael@13 765 # build Perl tool
michael@13 766 ( cd perl-%{V_perl}
michael@13 767 chmod -R u+w .
michael@13 768 sh $shtool subst \
michael@13 769 -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;' \
michael@13 770 -e 's;package=perl5;package=perl;' \
michael@13 771 Configure
michael@13 772 sh $shtool subst \
michael@13 773 -e 's; */usr/local/lib;;' \
michael@13 774 hints/freebsd.sh hints/netbsd.sh
michael@13 775 libdirs=""
michael@13 776 for dir in %{l_prefix}/lib /lib64 /usr/lib64 /lib /usr/lib /usr/ccs/lib; do
michael@13 777 [ -d $dir ] && libdirs="$libdirs $dir"
michael@13 778 done
michael@346 779 loclibs=""
michael@346 780 case `(uname -s) 2>/dev/null` in
michael@346 781 Linux ) loclibs="-lm -lrt" ;;
michael@346 782 esac
michael@333 783 PATH=$PATH:`echo "${l_make}" | sed -e 's;\(.*\)/[^/][^/]*$;\1;'` \
michael@13 784 ./Configure \
michael@13 785 -d -e -s \
michael@13 786 -Dprefix=%{l_prefix} \
michael@13 787 -Dvendorprefix=%{l_prefix} \
michael@13 788 -Dinstallprefix=%{l_prefix} \
michael@13 789 -Dinstallstyle="lib/perl5" \
michael@13 790 -Dman1dir=%{l_prefix}/man/man1 \
michael@13 791 -Dman3dir=%{l_prefix}/man/man3 \
michael@13 792 -Dcc="${l_cc}" -Uoptimize \
michael@13 793 -Dlocincpth="%{l_prefix}/include" \
michael@13 794 -Dloclibpth="%{l_prefix}/lib" \
michael@13 795 -Dldflags="-L""%{l_prefix}/lib" \
michael@13 796 -Dlibpth="$libdirs" \
michael@13 797 -Dglibpth="$libdirs" \
michael@346 798 -Dlibs="$loclibs" \
michael@13 799 -Dscriptdir="%{l_prefix}/bin" \
michael@13 800 -Uinstallusrbinperl \
michael@13 801 -Adefine:useshrplib='false' \
michael@13 802 -Ui_malloc -Ui_iconv -Ui_db
michael@13 803 ${l_make} miniperl || exit $?
michael@13 804 rm -f *.o >/dev/null 2>&1 || true
michael@13 805 ) || exit $?
michael@13 806 l_perl="`pwd`/perl-%{V_perl}/miniperl"; export l_perl
michael@13 807 echo "l_perl=\"$l_perl\"; export l_perl" >>.buildenv
michael@13 808
michael@13 809 # display verbosity header
michael@13 810 set +x; VERBOSE "BUILD: Build OpenSSL (Crypography and SSL/TLS Toolkit)"; set -x
michael@13 811
michael@13 812 # build OpenSSL toolkit
michael@13 813 ( cd openssl-%{V_openssl}
michael@13 814 sh $shtool subst \
michael@13 815 -e 's;-m486;-march=i486;g' \
michael@13 816 -e 's;BN_LLONG *;;' \
michael@13 817 Configure
michael@13 818 sh $shtool subst \
michael@13 819 -e 's;test "$OSTYPE" = msdosdjgpp;true;' \
michael@13 820 util/point.sh
michael@13 821 sh $shtool subst \
michael@13 822 -e "1s;^.*\$;#!$l_perl;" \
michael@13 823 Configure `find . -name "*.pl" -print`
michael@13 824 opts=""
michael@13 825 case `sh $shtool platform -n -L -S "" -C "+" -F "%<ap>-%<sp>"` in
michael@13 826 *-solaris* ) opts="-lnsl -lsocket" ;;
michael@13 827 esac
michael@13 828 case `sh $shtool platform -n -L -S "" -C "+" -F "%<ap>-%<sp>"` in
michael@13 829 amd64-* ) opts="$opts -fPIC" ;;
michael@13 830 ia64-* ) opts="$opts -fPIC" ;;
michael@13 831 sparc64-freebsd* ) opts="$opts -fPIC" ;;
michael@13 832 esac
michael@13 833 CC="${l_cc}" \
michael@13 834 PERL="${l_perl}" \
michael@13 835 ./config \
michael@13 836 --prefix=%{l_prefix} \
michael@13 837 no-asm no-shared no-dso \
michael@13 838 no-zlib no-idea no-threads no-krb5 no-hw \
michael@13 839 $opts
michael@13 840 ${l_make} CC="${l_cc}" build_libs build_apps || exit $?
michael@13 841 ( mkdir lib; cd lib; ln -s ../lib*.a . ) || exit $?
michael@13 842 ) || exit $?
michael@13 843
michael@13 844 # display verbosity header
michael@13 845 set +x; VERBOSE "BUILD: Build cURL (URL Fetching Tool)"; set -x
michael@13 846
michael@13 847 # build cURL tool
michael@13 848 ( cd curl-%{V_curl}
michael@13 849 sh $shtool subst \
michael@13 850 -e '/LINENO: error: C[+]* preprocessor/{N;N;N;N;s/.*/:/;}' \
michael@13 851 configure
michael@13 852 ( echo 'ac_cv_header_openssl_engine_h=no'
michael@13 853 echo 'lt_cv_prog_compiler_c_o_F77=no'
michael@13 854 echo 'lt_cv_sys_max_cmd_len=100'
michael@13 855 ) >config.cache
michael@13 856 CC="${l_cc}" \
michael@333 857 MAKE="${l_make}" \
michael@13 858 CFLAGS="-I`pwd`/../zlib-%{V_zlib}" \
michael@13 859 CPPFLAGS="-I`pwd`/../zlib-%{V_zlib}" \
michael@13 860 LDFLAGS="-L`pwd`/../zlib-%{V_zlib}" \
michael@13 861 GREP="grep" \
michael@13 862 ./configure \
michael@13 863 --cache-file=./config.cache \
michael@13 864 --without-libidn \
michael@13 865 --disable-shared \
michael@13 866 --disable-thread \
michael@13 867 --disable-ipv6 \
michael@13 868 --disable-ldap \
michael@13 869 --with-zlib=`pwd`/../zlib-%{V_zlib} \
michael@13 870 --with-ssl=`pwd`/../openssl-%{V_openssl} \
michael@13 871 --with-ca-bundle=%{l_prefix}/etc/openpkg/openpkg.x509
michael@13 872 ${l_make} || exit $?
michael@13 873 ( mv src/curl ..; ${l_make} clean || true; mv ../curl ./src ) || exit $?
michael@13 874 ) || exit $?
michael@13 875
michael@13 876 # display verbosity header
michael@13 877 set +x; VERBOSE "BUILD: Build BeeCrypt (Cryptography Library)"; set -x
michael@13 878
michael@13 879 # build BeeCrypt library
michael@13 880 ( cd beecrypt-%{V_beecrypt}
michael@13 881 sh $shtool subst \
michael@13 882 -e 's;^[ ][ ]*#;#;' \
michael@13 883 aes.c base64.c blowfish.c entropy.c fips186.c fips186.h md5.c \
michael@13 884 md5.h mp.c mtprng.c mtprng.h sha1.c sha1.h sha256.c sha256.h timestamp.c
michael@13 885 sh $shtool subst \
michael@13 886 -e 's;cppglue\.lo;;g' \
michael@13 887 -e 's;cppglue\.cxx;;g' \
michael@13 888 -e '/^CXX = /s;@CXX@;@CC@;g' \
michael@13 889 Makefile.in
michael@13 890 sh $shtool subst \
michael@13 891 -e '/LINENO: error: C[+]* preprocessor/{N;N;N;N;s/.*/:/;}' \
michael@13 892 configure
michael@13 893 ( echo 'ac_cv_have_dev_dsp=no'
michael@13 894 echo 'ac_cv_have_dev_audio=no'
michael@13 895 echo 'ac_cv_func_gettimeofday=yes'
michael@13 896 echo 'bc_cv_as_noexecstack=no'
michael@13 897 ) >config.cache
michael@13 898 CC="${l_cc}" \
michael@333 899 MAKE="${l_make}" \
michael@13 900 CFLAGS="-O" \
michael@13 901 ./configure \
michael@13 902 --cache-file=./config.cache \
michael@13 903 --prefix=%{l_prefix} \
michael@13 904 --without-cplusplus \
michael@13 905 --without-java \
michael@13 906 --without-python \
michael@13 907 --with-cpu=none \
michael@13 908 --with-arch=none \
michael@13 909 --disable-threads \
michael@13 910 --disable-shared
michael@13 911 ${l_make} || exit $?
michael@13 912 cp .libs/libbeecrypt.a .
michael@13 913 ) || exit $?
michael@13 914
michael@13 915 # display verbosity header
michael@13 916 set +x; VERBOSE "BUILD: Build RPM (RPM Package Manager)"; set -x
michael@13 917
michael@13 918 # build RPM
michael@13 919 ( br=`pwd`
michael@13 920 cd rpm-%{V_rpm}
michael@13 921
michael@13 922 # remove object files accidentally distributed with the RPM tarball
michael@13 923 rm -f db/build_unix/*.o
michael@13 924 rm -f db/build_unix/*.lo
michael@13 925
michael@13 926 # remove embedded zlib (we are linking with an external one)
michael@13 927 rm -rf zlib
michael@13 928
michael@13 929 # kill Linux-based preconfigured DB header, to allow the Makefiles to
michael@13 930 # symlink to it the header that is configured for the current system.
michael@13 931 rm -f rpmdb/db.h
michael@13 932
michael@13 933 # make sure we do not trigger Autoconf/Automake tools
michael@13 934 touch configure
michael@13 935 touch config.h.in
michael@13 936
michael@13 937 # disable running of any Autoconf/Automake tools
michael@13 938 ACLOCAL=true
michael@13 939 AUTOCONF=true
michael@13 940 AUTOMAKE=true
michael@13 941 AUTOHEADER=true
michael@13 942 MAKEINFO=true
michael@13 943 AMTAR=true
michael@13 944 export ACLOCAL AUTOMAKE AUTOHEADER MAKEINFO AMTAR
michael@13 945
michael@13 946 # cheat GNU Autoconf
michael@13 947 ( echo 'ac_cv_path_MSGFMT=:'
michael@13 948 echo 'ac_cv_path_GMSGFMT=:'
michael@13 949 echo 'ac_cv_path_XGETTEXT=:'
michael@13 950 echo 'ac_cv_path_MSGMERGE=:'
michael@13 951 echo "ac_cv_path_MKDIR='%{l_prefix}/lib/openpkg/shtool mkdir -f -p -m 755'"
michael@13 952 echo "ac_cv_path___MKDIR='%{l_prefix}/lib/openpkg/shtool mkdir -f -p -m 755'"
michael@13 953 echo "ac_cv_path___PYTHON=true"
michael@13 954 echo "ac_cv_path___DOXYGEN=true"
michael@13 955 echo "acl_cv_rpath=no"
michael@13 956 echo "ac_cv_header_getopt_h=no"
michael@13 957 ) >config.cache
michael@13 958
michael@13 959 # provide platform identification
michael@13 960 os_name=`(uname -s) 2>/dev/null` || os_name='Unknown'
michael@13 961 os_name=`echo "${os_name}" |\
michael@13 962 sed -e 's;[^a-zA-Z0-9];;g' |\
michael@13 963 tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
michael@13 964
michael@13 965 # set build tool flags
michael@13 966 CC="${l_cc}"
michael@13 967 CPPFLAGS="-DOPENPKG -DOPENPKG_${os_name} -I$br/zlib-%{V_zlib} -I$br/bzip2-%{V_bzip2} -I$br/beecrypt-%{V_beecrypt}"
michael@13 968 CFLAGS="$CPPFLAGS"
michael@13 969 LDFLAGS="-L$br/zlib-%{V_zlib} -L$br/bzip2-%{V_bzip2} -L$br/beecrypt-%{V_beecrypt}"
michael@13 970 LIBS="$LDFLAGS -lz -lbz2 -lbeecrypt"
michael@13 971 case $os_name in
michael@13 972 SUNOS* ) LIBS="$LIBS -lresolv" ;;
michael@13 973 IRIX* ) LIBS="$LIBS -lgen" ;;
michael@13 974 esac
michael@13 975 export CC CPPFLAGS CFLAGS LDFLAGS LIBS
michael@13 976
michael@13 977 # adjust for BeeCrypt 4.0
michael@13 978 sh $shtool subst \
michael@13 979 -e 's;beecrypt\.api\.h;beecrypt.h;g' \
michael@13 980 rpmio/rpmio_internal.h
michael@13 981 sh $shtool subst \
michael@13 982 -e 's;\(rsavrfy(\)\(&dig->rsa_pk\);\1\2.n, \2.e;g' \
michael@13 983 lib/signature.c
michael@333 984 sh $shtool subst \
michael@333 985 -e 's;\(^LIBS =\)[ \t]*;\1 -ldb;' \
michael@333 986 -e 's;\(^rpmdb_[^_][^_]*_LDFLAGS =\)[ \t]*;\1 -L$(top_srcdir)/db3;g' \
michael@333 987 rpmdb/Makefile.in
michael@333 988 sh $shtool subst \
michael@333 989 -e 's;\(^myLDFLAGS =\);\1 -L$(top_srcdir)/db3;' \
michael@333 990 Makefile.in
michael@13 991
michael@13 992 # configure the package
michael@333 993 MAKE="${l_make}" \
michael@13 994 sh ./configure \
michael@13 995 --cache-file=./config.cache \
michael@13 996 --prefix=%{l_prefix} \
michael@13 997 --with-db \
michael@13 998 --with-glob \
michael@13 999 --without-python \
michael@13 1000 --without-apidocs \
michael@13 1001 --disable-shared \
michael@13 1002 --disable-rpath \
michael@13 1003 --disable-nls
michael@13 1004
michael@303 1005 # deny automatic dependency calculations
michael@303 1006 rm -f find-provides find-requires
michael@303 1007 ln -s autodeps/none find-provides
michael@303 1008 ln -s autodeps/none find-requires
michael@303 1009
michael@13 1010 # build the package
michael@13 1011 ${l_make}
michael@13 1012 ) || exit $?
michael@13 1013
michael@13 1014 # display verbosity header
michael@13 1015 set +x; VERBOSE "BUILD: Build OpenPKG Frontend (Set-UID Wrapper)"; set -x
michael@13 1016
michael@13 1017 # build "openpkg" executable
michael@13 1018 ( cd openpkg-executable-%{V_exec}
michael@13 1019 ${l_make} \
michael@13 1020 CC="${l_cc}" \
michael@13 1021 OPENPKG_PREFIX="%{l_prefix}" \
michael@13 1022 OPENPKG_SUSR="%{l_susr}" \
michael@13 1023 OPENPKG_MUSR="%{l_musr}"
michael@13 1024 ) || exit $?
michael@13 1025
michael@13 1026 %install
michael@13 1027 # skip in bootstrap phase 2 (see openpkg.boot)
michael@13 1028 [ ".$OPENPKG_BOOT" = .1 ] && exit 0
michael@13 1029
michael@13 1030 # switch into a temporary build area
michael@13 1031 cd openpkg-%{version}
michael@13 1032 . ./.buildenv
michael@13 1033
michael@13 1034 # display verbosity header
michael@13 1035 set +x; VERBOSE "INSTALL: Create Installation Filesystem Hierarchy"; set -x
michael@13 1036
michael@13 1037 # create installation hierarchy
michael@13 1038 rm -rf $RPM_BUILD_ROOT
michael@13 1039 sh $shtool mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}
michael@13 1040 for dir in bin etc include info lib libexec man sbin share var cgi pub local; do
michael@13 1041 test -d $RPM_BUILD_ROOT%{l_prefix}/$dir || \
michael@13 1042 mkdir $RPM_BUILD_ROOT%{l_prefix}/$dir
michael@13 1043 done
michael@13 1044 for i in 1 2 3 4 5 6 7 8 9; do
michael@13 1045 test -d $RPM_BUILD_ROOT%{l_prefix}/man/man$i || \
michael@13 1046 mkdir $RPM_BUILD_ROOT%{l_prefix}/man/man$i
michael@13 1047 test -d $RPM_BUILD_ROOT%{l_prefix}/man/cat$i || \
michael@13 1048 mkdir $RPM_BUILD_ROOT%{l_prefix}/man/cat$i
michael@13 1049 done
michael@13 1050 for dir in PKG bin etc include info lib man sbin; do
michael@13 1051 test -d $RPM_BUILD_ROOT%{l_prefix}/local/$dir || \
michael@13 1052 mkdir $RPM_BUILD_ROOT%{l_prefix}/local/$dir
michael@13 1053 done
michael@13 1054 for i in 1 2 3 4 5 6 7 8 9; do
michael@13 1055 test -d $RPM_BUILD_ROOT%{l_prefix}/local/man/man$i || \
michael@13 1056 mkdir $RPM_BUILD_ROOT%{l_prefix}/local/man/man$i
michael@13 1057 test -d $RPM_BUILD_ROOT%{l_prefix}/local/man/cat$i || \
michael@13 1058 mkdir $RPM_BUILD_ROOT%{l_prefix}/local/man/cat$i
michael@13 1059 done
michael@13 1060 test -d $RPM_BUILD_ROOT%{l_prefix}/RPM || \
michael@13 1061 mkdir $RPM_BUILD_ROOT%{l_prefix}/RPM
michael@13 1062 for dir in SRC PKG DB TMP; do
michael@13 1063 test -d $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir || \
michael@13 1064 mkdir $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir
michael@13 1065 done
michael@13 1066 mkdir $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg
michael@13 1067 mkdir $RPM_BUILD_ROOT%{l_prefix}/include/openpkg
michael@13 1068
michael@13 1069 # display verbosity header
michael@13 1070 set +x; VERBOSE "INSTALL: Installation of RPM"; set -x
michael@13 1071
michael@13 1072 # install RPM into installation hierarchy
michael@13 1073 ( cd rpm-%{V_rpm}
michael@13 1074 DESTDIR="$RPM_BUILD_ROOT"
michael@13 1075 export DESTDIR
michael@13 1076 ${l_make} install
michael@13 1077 ) || exit $?
michael@13 1078
michael@13 1079 # display verbosity header
michael@13 1080 set +x; VERBOSE "INSTALL: Install Additional Files"; set -x
michael@13 1081
michael@13 1082 # add additional development files
michael@13 1083 cp rpm-%{V_rpm}/misc/glob.h $RPM_BUILD_ROOT%{l_prefix}/include/rpm/
michael@13 1084 cp zlib-%{V_zlib}/zlib.h $RPM_BUILD_ROOT%{l_prefix}/include/rpm/
michael@13 1085 cp zlib-%{V_zlib}/zconf.h $RPM_BUILD_ROOT%{l_prefix}/include/rpm/
michael@13 1086 cp zlib-%{V_zlib}/libz.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmz.a
michael@13 1087 cp bzip2-%{V_bzip2}/bzlib.h $RPM_BUILD_ROOT%{l_prefix}/include/rpm/
michael@13 1088 cp bzip2-%{V_bzip2}/libbz2.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmbz2.a
michael@13 1089 cp beecrypt-%{V_beecrypt}/beecrypt.h $RPM_BUILD_ROOT%{l_prefix}/include/rpm/
michael@13 1090 cp beecrypt-%{V_beecrypt}/libbeecrypt.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmbeecrypt.a
michael@13 1091
michael@13 1092 # display verbosity header
michael@13 1093 set +x; VERBOSE "INSTALL: Post-Adjust Installation"; set -x
michael@13 1094
michael@13 1095 # post-adjust RPM installation (namespace-clean POPT inclusion)
michael@13 1096 mv $RPM_BUILD_ROOT%{l_prefix}/lib/libpopt.a \
michael@13 1097 $RPM_BUILD_ROOT%{l_prefix}/lib/librpmpopt.a
michael@13 1098 mv $RPM_BUILD_ROOT%{l_prefix}/include/popt.h \
michael@13 1099 $RPM_BUILD_ROOT%{l_prefix}/include/rpm/popt.h
michael@13 1100
michael@13 1101 # move C API into custom locations
michael@13 1102 mv $RPM_BUILD_ROOT%{l_prefix}/include/rpm \
michael@13 1103 $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm
michael@13 1104 mv $RPM_BUILD_ROOT%{l_prefix}/lib/librpm* \
michael@13 1105 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/
michael@13 1106
michael@13 1107 # move rpm tool to custom location
michael@13 1108 mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpm \
michael@13 1109 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm
michael@13 1110 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpm.8 \
michael@13 1111 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm.8
michael@13 1112
michael@13 1113 # move rpm2cpio tool to custom location
michael@13 1114 mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpm2cpio \
michael@13 1115 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio
michael@13 1116 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpm2cpio.8 \
michael@13 1117 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio.8
michael@13 1118
michael@13 1119 # replace symlinks with hardlinks
michael@13 1120 for entry in rpme:rpmi rpmt:rpmb rpmu:rpmi rpmv:rpmq; do
michael@13 1121 eval `echo $entry | sed -e 's/^\(.*\):\(.*\)$/dst=\1; src=\2/'`
michael@13 1122 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$dst
michael@13 1123 ln $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$src \
michael@13 1124 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$dst
michael@13 1125 done
michael@13 1126 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/rpmbuild
michael@13 1127 ln $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmb \
michael@13 1128 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmbuild
michael@13 1129 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmbuild.8 \
michael@13 1130 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmbuild.8
michael@13 1131
michael@13 1132 # display verbosity header
michael@13 1133 set +x; VERBOSE "INSTALL: Stripping Down Installation"; set -x
michael@13 1134
michael@13 1135 # strip RPM installation
michael@13 1136 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/bin/* \
michael@13 1137 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/* >/dev/null 2>&1 || true
michael@13 1138 for dir in man/ja man/pl man/ru man/sk src; do
michael@13 1139 rm -rf $RPM_BUILD_ROOT%{l_prefix}/$dir >/dev/null 2>&1 || true
michael@13 1140 done
michael@13 1141 rm -rf $RPM_BUILD_ROOT/var >/dev/null 2>&1 || true
michael@13 1142 for file in rpme rpmi rpmsign rpmu rpmverify rpmquery gendiff; do
michael@13 1143 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/$file >/dev/null 2>&1 || true
michael@13 1144 done
michael@13 1145 rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/* >/dev/null 2>&1 || true
michael@13 1146 rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/* >/dev/null 2>&1 || true
michael@13 1147 rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man3/* >/dev/null 2>&1 || true
michael@13 1148 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/rpmpopt >/dev/null 2>&1 || true
michael@13 1149 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/rpmrc >/dev/null 2>&1 || true
michael@13 1150 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/lib*.la >/dev/null 2>&1 || true
michael@13 1151 rm -rf $RPM_BUILD_ROOT%{l_prefix}/var/lib >/dev/null 2>&1 || true
michael@13 1152 for file in \
michael@13 1153 u_pkg.sh vpkg-provides.sh vpkg-provides2.sh rpmdiff.cgi rpmdiff \
michael@303 1154 mkinstalldirs magic.prov magic.req http.req getpo.sh \
michael@303 1155 get_magic.pl find-provides find-requires find-requires.perl \
michael@303 1156 find-req.pl find-provides.perl find-prov.pl find-lang.sh \
michael@303 1157 cpanflute convertrpmrc.sh check-prereqs rpmputtext rpmgettext \
michael@303 1158 brp-compress brp-redhat brp-sparc64-linux brp-strip \
michael@303 1159 brp-strip-shared brp-strip-comment-note rpmrc \
michael@13 1160 config.guess config.sub check-files; do
michael@13 1161 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$file >/dev/null 2>&1 || true
michael@13 1162 done
michael@13 1163
michael@13 1164 # display verbosity header
michael@13 1165 set +x; VERBOSE "INSTALL: Install Additional Tools"; set -x
michael@13 1166
michael@13 1167 # install lsync tool
michael@13 1168 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1169 <`SOURCE lsync` \
michael@13 1170 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lsync
michael@13 1171 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lsync
michael@13 1172 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1173 <`SOURCE dot.lsyncrc` \
michael@13 1174 >$RPM_BUILD_ROOT%{l_prefix}/local/.lsyncrc
michael@13 1175 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1176 <`SOURCE lsync.8` \
michael@13 1177 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lsync.8
michael@13 1178
michael@13 1179 # install rpm-config tool
michael@13 1180 ( l_prefix="%{l_prefix}"
michael@13 1181 l_cc="%{l_cc}"
michael@13 1182 l_cflags=""
michael@13 1183 l_cppflags="-DOPENPKG -I${l_prefix}/include/openpkg/rpm -I${l_prefix}/include/openpkg"
michael@13 1184 l_ldflags="-L${l_prefix}/lib/openpkg"
michael@13 1185 l_libs="-lrpmbuild -lrpm -lrpmio -lrpmdb -lrpmpopt -lrpmbeecrypt -lrpmbz2 -lrpmz"
michael@13 1186 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1187 -e "s:@l_cc@:$l_cc:g" \
michael@13 1188 -e "s:@l_cflags@:$l_cflags:g" \
michael@13 1189 -e "s:@l_cppflags@:$l_cppflags:g" \
michael@13 1190 -e "s:@l_ldflags@:$l_ldflags:g" \
michael@13 1191 -e "s:@l_libs@:$l_libs:g" \
michael@13 1192 -e "s:@l_version@:%{V_rpm}:g" \
michael@13 1193 <`SOURCE rpm-config.sh` \
michael@13 1194 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config
michael@13 1195 ) || exit $?
michael@13 1196 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config
michael@13 1197 sed -e "s:RPM_VERSION:%{V_rpm}:g" \
michael@13 1198 <`SOURCE rpm-config.8` \
michael@13 1199 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config.8
michael@13 1200
michael@13 1201 # install OpenPKG registry commands
michael@13 1202 ( cd openpkg-registry-%{V_registry}
michael@13 1203 mv $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm \
michael@13 1204 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpm
michael@13 1205 sed -e "s;@l_prefix@;%{l_prefix};g" \
michael@13 1206 rpm.sh >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm
michael@13 1207 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm
michael@13 1208 sed -e "s;@l_prefix@;%{l_prefix};g" \
michael@13 1209 register.sh >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register
michael@13 1210 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register
michael@13 1211 cp register.8 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register.8
michael@13 1212 ) || exit $?
michael@13 1213
michael@13 1214 # install OpenPKG Tool Chain command subset
michael@13 1215 ( cd openpkg-tools-%{V_tools}
michael@13 1216 cp cmd/curl.sh $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/curl.sh
michael@13 1217 cp cmd/build.pl $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.pl
michael@13 1218 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.pl
michael@13 1219 cp cmd/build.8 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.8
michael@13 1220 ) || exit $?
michael@13 1221
michael@13 1222 # install RPM extension
michael@13 1223 ( cd rpm-%{V_rpm}
michael@13 1224 cp file/file $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/file
michael@13 1225 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/file
michael@13 1226 ) || exit $?
michael@13 1227 ( cd perl-%{V_perl}
michael@13 1228 cp miniperl $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/miniperl
michael@13 1229 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/miniperl
michael@13 1230 ) || exit $?
michael@13 1231 ( cd openssl-%{V_openssl}
michael@13 1232 cp apps/openssl $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openssl
michael@13 1233 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openssl
michael@13 1234 ) || exit $?
michael@13 1235 ( cd curl-%{V_curl}
michael@13 1236 cp src/curl $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/curl
michael@13 1237 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/curl
michael@13 1238 ) || exit $?
michael@13 1239 ( cd bzip2-%{V_bzip2}
michael@13 1240 cp bzip2 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bzip2
michael@13 1241 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bzip2
michael@13 1242 ) || exit $?
michael@13 1243 ( cd gzip-%{V_gzip}
michael@13 1244 cp gzip $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/gzip
michael@13 1245 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/gzip
michael@13 1246 ) || exit $?
michael@13 1247 ( cd patch-%{V_patch}
michael@13 1248 cp patch $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/patch
michael@13 1249 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/patch
michael@13 1250 ) || exit $?
michael@13 1251 ( cd tar-%{V_tar}
michael@13 1252 cp tar $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/tar
michael@13 1253 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/tar
michael@13 1254 ) || exit $?
michael@13 1255 ( cd bash-%{V_bash}
michael@13 1256 cp bash $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bash
michael@13 1257 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bash
michael@13 1258 ) || exit $?
michael@13 1259 ( cd uuid-%{V_uuid}
michael@13 1260 cp uuid $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/uuid
michael@13 1261 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/uuid
michael@13 1262 ) || exit $?
michael@13 1263 sed -e "s;@l_prefix@;%{l_prefix};g" \
michael@13 1264 -e "s;@l_musr@;%{l_musr};g" \
michael@13 1265 -e "s;@l_mgrp@;%{l_mgrp};g" \
michael@13 1266 <`SOURCE uuid.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/uuid
michael@13 1267 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/uuid
michael@13 1268 sed -e "s;@l_prefix@;%{l_prefix};g" \
michael@13 1269 <`SOURCE uuid.8` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/uuid.8
michael@13 1270 sed -e "s;@l_prefix@;%{l_prefix};g" \
michael@13 1271 <`SOURCE release.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/release
michael@13 1272 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/release
michael@13 1273 sed -e "s;@l_prefix@;%{l_prefix};g" \
michael@13 1274 <`SOURCE release.8` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/release.8
michael@13 1275 sed -e "s;@l_prefix@;%{l_prefix};g" \
michael@13 1276 -e "s;@l_musr@;%{l_musr};g" \
michael@13 1277 -e "s;@l_mgrp@;%{l_mgrp};g" \
michael@13 1278 <`SOURCE rpmdb` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmdb
michael@13 1279 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmdb
michael@13 1280 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1281 <`SOURCE rpmtool` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmtool
michael@13 1282 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmtool
michael@13 1283
michael@13 1284 # install OpenPKG tool chain execution frontend and execution wrapper
michael@13 1285 cp openpkg-executable-%{V_exec}/openpkg $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg
michael@13 1286 ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg
michael@13 1287 chmod 4775 $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg
michael@13 1288 sed -e "s;@l_prefix@;%{l_prefix};g" \
michael@13 1289 <`SOURCE openpkg.sh` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openpkg
michael@13 1290 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openpkg
michael@13 1291 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1292 <`SOURCE openpkg.1` \
michael@13 1293 >$RPM_BUILD_ROOT%{l_prefix}/man/man1/openpkg.1
michael@13 1294
michael@13 1295 # install more OpenPKG tool chain commands
michael@13 1296 sed -e "s;@l_prefix@;%{l_prefix};g" \
michael@13 1297 <`SOURCE install.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/install
michael@13 1298 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/install
michael@13 1299 sed -e "s;@l_prefix@;%{l_prefix};g" \
michael@13 1300 <`SOURCE man.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/man
michael@13 1301 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/man
michael@13 1302
michael@13 1303 # install an own copy of shtool
michael@13 1304 cp $shtool $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/shtool
michael@13 1305 chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/shtool
michael@13 1306
michael@13 1307 # display verbosity header
michael@13 1308 set +x; VERBOSE "INSTALL: Install Configuration Files"; set -x
michael@13 1309
michael@13 1310 # install a few README files
michael@13 1311 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1312 <`SOURCE root.README` \
michael@13 1313 >$RPM_BUILD_ROOT%{l_prefix}/README
michael@13 1314 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1315 <`SOURCE local.README` \
michael@13 1316 >$RPM_BUILD_ROOT%{l_prefix}/local/README
michael@13 1317
michael@13 1318 # install Bash environment
michael@13 1319 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1320 <`SOURCE dot.bashrc` \
michael@13 1321 >$RPM_BUILD_ROOT%{l_prefix}/.bashrc
michael@13 1322 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1323 <`SOURCE dot.bash_login` \
michael@13 1324 >$RPM_BUILD_ROOT%{l_prefix}/.bash_login
michael@13 1325
michael@13 1326 # install Run-Command files
michael@13 1327 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1328 -e "s:@l_susr@:%{l_susr}:g" \
michael@13 1329 -e "s:@l_musr@:%{l_musr}:g" \
michael@13 1330 <`SOURCE rc` \
michael@13 1331 >$RPM_BUILD_ROOT%{l_prefix}/etc/rc
michael@13 1332 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/etc/rc
michael@13 1333 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1334 <`SOURCE rc.conf` \
michael@13 1335 >$RPM_BUILD_ROOT%{l_prefix}/etc/rc.conf
michael@13 1336 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.conf
michael@13 1337 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1338 <`SOURCE rc.func` \
michael@13 1339 >$RPM_BUILD_ROOT%{l_prefix}/etc/rc.func
michael@13 1340 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.func
michael@13 1341 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
michael@13 1342 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1343 -e "s:@l_musr@:%{l_musr}:g" \
michael@13 1344 <`SOURCE rc.openpkg` \
michael@13 1345 >$RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/rc.openpkg
michael@13 1346 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/rc.openpkg
michael@13 1347 ( echo "#!/bin/sh"
michael@13 1348 echo "exec %{l_prefix}/etc/rc \${1+\"\$@\"}"
michael@13 1349 ) >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc
michael@13 1350 chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc
michael@13 1351 ln $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc \
michael@13 1352 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rc
michael@13 1353 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1354 <`SOURCE rc.8` \
michael@13 1355 >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rc.8
michael@13 1356
michael@13 1357 # create configuration directory
michael@13 1358 test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg || \
michael@13 1359 mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg
michael@13 1360
michael@13 1361 # install platform identification file
michael@13 1362 sh $shtool platform -n -L -S "" -C "+" -F "%<ap>-any-%<sp>" \
michael@13 1363 >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/platform
michael@13 1364 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/platform
michael@13 1365
michael@13 1366 # install UUID configuration file (ghost)
michael@13 1367 touch $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/uuid
michael@13 1368 chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/uuid
michael@13 1369
michael@13 1370 # install registry configuration files (ghost)
michael@13 1371 touch \
michael@13 1372 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.conf \
michael@13 1373 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.prep \
michael@13 1374 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.tran \
michael@13 1375 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.util
michael@13 1376 chmod 644 \
michael@13 1377 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.conf \
michael@13 1378 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.prep \
michael@13 1379 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.tran \
michael@13 1380 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/register.util
michael@13 1381
michael@13 1382 # install default managers configuration file
michael@13 1383 ( echo "##"
michael@13 1384 echo "## managers -- OpenPKG Instance Managers"
michael@13 1385 echo "##"
michael@13 1386 echo ""
michael@13 1387 echo "%{l_susr}"
michael@13 1388 echo "%{l_musr}"
michael@13 1389 echo ""
michael@13 1390 ) >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/managers
michael@13 1391
michael@13 1392 # install overriding RPM configuration files
michael@13 1393 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1394 <`SOURCE rpmpopt` \
michael@13 1395 >>$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmpopt
michael@13 1396 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1397 <`SOURCE rpmrc` \
michael@13 1398 >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmrc
michael@13 1399 sed -e "s:@l_prefix@:%{l_prefix}:g" \
michael@13 1400 -e "s:@l_prefix_static@:%{l_prefix}:g" \
michael@13 1401 -e "s;@l_build_path@;$l_build_path;g" \
michael@13 1402 -e "s;@l_build_ldlp@;$l_build_ldlp;g" \
michael@13 1403 -e "s;@l_build_ulim@;$l_build_ulim;g" \
michael@13 1404 -e "s:@TAG@:$tag:g" \
michael@13 1405 -e "s:@SUSR@:$susr:g" \
michael@13 1406 -e "s:@SGRP@:$sgrp:g" \
michael@13 1407 -e "s:@MUSR@:$musr:g" \
michael@13 1408 -e "s:@MGRP@:$mgrp:g" \
michael@13 1409 -e "s:@RUSR@:$rusr:g" \
michael@13 1410 -e "s:@RGRP@:$rgrp:g" \
michael@13 1411 -e "s:@NUSR@:$nusr:g" \
michael@13 1412 -e "s:@NGRP@:$ngrp:g" \
michael@13 1413 <`SOURCE rpmmacros` \
michael@13 1414 >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmmacros
michael@13 1415 cp `SOURCE openpkg.org.pgp` \
michael@13 1416 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/openpkg.org.pgp
michael@13 1417 cp `SOURCE openpkg.com.pgp` \
michael@13 1418 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/openpkg.com.pgp
michael@13 1419 cp `SOURCE openpkg.net.pgp` \
michael@13 1420 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/openpkg.net.pgp
michael@13 1421
michael@13 1422 # display verbosity header
michael@13 1423 set +x; VERBOSE "INSTALL: Done. Thank you for flying OpenPKG..."; set -x
michael@13 1424
michael@13 1425 %files
michael@13 1426 %defattr(-,%{?l_musr}%{!?l_musr:%{l_fsusr}},%{?l_mgrp}%{!?l_mgrp:%{l_fsgrp}})
michael@13 1427 %{l_prefix}/README
michael@13 1428 %config(noreplace) %{l_prefix}/.bashrc
michael@13 1429 %config(noreplace) %{l_prefix}/.bash_login
michael@13 1430 %dir %{l_prefix}/RPM
michael@13 1431 %dir %{l_prefix}/RPM/SRC
michael@13 1432 %dir %{l_prefix}/RPM/PKG
michael@13 1433 %dir %{l_prefix}/RPM/DB
michael@13 1434 %dir %{l_prefix}/RPM/TMP
michael@13 1435 %dir %{l_prefix}/cgi
michael@13 1436 %dir %{l_prefix}/bin
michael@13 1437 %attr(4755,%{l_susr},%{l_mgrp}) %{l_prefix}/bin/openpkg
michael@13 1438 %dir %{l_prefix}/etc
michael@13 1439 %{l_prefix}/etc/rc
michael@13 1440 %config(noreplace) %{l_prefix}/etc/rc.conf
michael@13 1441 %{l_prefix}/etc/rc.func
michael@13 1442 %dir %{l_prefix}/etc/rc.d
michael@13 1443 %{l_prefix}/etc/rc.d/rc.openpkg
michael@13 1444 %dir %{l_prefix}/etc/openpkg
michael@13 1445 %ghost %{l_prefix}/etc/openpkg/uuid
michael@13 1446 %config %{l_prefix}/etc/openpkg/platform
michael@13 1447 %config %{l_prefix}/etc/openpkg/rpmmacros
michael@13 1448 %config %{l_prefix}/etc/openpkg/rpmrc
michael@13 1449 %ghost %{l_prefix}/etc/openpkg/register.conf
michael@13 1450 %ghost %{l_prefix}/etc/openpkg/register.prep
michael@13 1451 %ghost %{l_prefix}/etc/openpkg/register.tran
michael@13 1452 %ghost %{l_prefix}/etc/openpkg/register.util
michael@13 1453 %config %attr(664,%{l_musr},%{l_mgrp}) %{l_prefix}/etc/openpkg/managers
michael@13 1454 %{l_prefix}/etc/openpkg/openpkg.org.pgp
michael@13 1455 %{l_prefix}/etc/openpkg/openpkg.com.pgp
michael@13 1456 %{l_prefix}/etc/openpkg/openpkg.net.pgp
michael@13 1457 %dir %{l_prefix}/include
michael@13 1458 %dir %{l_prefix}/include/openpkg
michael@13 1459 %dir %{l_prefix}/include/openpkg/rpm
michael@13 1460 %{l_prefix}/include/openpkg/rpm/argv.h
michael@13 1461 %{l_prefix}/include/openpkg/rpm/beecrypt.h
michael@13 1462 %{l_prefix}/include/openpkg/rpm/bzlib.h
michael@13 1463 %{l_prefix}/include/openpkg/rpm/db.h
michael@13 1464 %{l_prefix}/include/openpkg/rpm/fts.h
michael@13 1465 %{l_prefix}/include/openpkg/rpm/glob.h
michael@13 1466 %{l_prefix}/include/openpkg/rpm/hdrinline.h
michael@13 1467 %{l_prefix}/include/openpkg/rpm/header.h
michael@13 1468 %{l_prefix}/include/openpkg/rpm/misc.h
michael@13 1469 %{l_prefix}/include/openpkg/rpm/popt.h
michael@13 1470 %{l_prefix}/include/openpkg/rpm/rpmal.h
michael@13 1471 %{l_prefix}/include/openpkg/rpm/rpmbuild.h
michael@13 1472 %{l_prefix}/include/openpkg/rpm/rpmcli.h
michael@13 1473 %{l_prefix}/include/openpkg/rpm/rpmdb.h
michael@13 1474 %{l_prefix}/include/openpkg/rpm/rpmds.h
michael@13 1475 %{l_prefix}/include/openpkg/rpm/rpmerr.h
michael@13 1476 %{l_prefix}/include/openpkg/rpm/rpmfc.h
michael@13 1477 %{l_prefix}/include/openpkg/rpm/rpmfi.h
michael@13 1478 %{l_prefix}/include/openpkg/rpm/rpmfile.h
michael@13 1479 %{l_prefix}/include/openpkg/rpm/rpmhash.h
michael@13 1480 %{l_prefix}/include/openpkg/rpm/rpmio.h
michael@13 1481 %{l_prefix}/include/openpkg/rpm/rpmlib.h
michael@13 1482 %{l_prefix}/include/openpkg/rpm/rpmlog.h
michael@13 1483 %{l_prefix}/include/openpkg/rpm/rpmmacro.h
michael@13 1484 %{l_prefix}/include/openpkg/rpm/rpmmessages.h
michael@13 1485 %{l_prefix}/include/openpkg/rpm/rpmpgp.h
michael@13 1486 %{l_prefix}/include/openpkg/rpm/rpmps.h
michael@13 1487 %{l_prefix}/include/openpkg/rpm/rpmspec.h
michael@13 1488 %{l_prefix}/include/openpkg/rpm/rpmsw.h
michael@13 1489 %{l_prefix}/include/openpkg/rpm/rpmte.h
michael@13 1490 %{l_prefix}/include/openpkg/rpm/rpmts.h
michael@13 1491 %{l_prefix}/include/openpkg/rpm/rpmurl.h
michael@13 1492 %{l_prefix}/include/openpkg/rpm/stringbuf.h
michael@13 1493 %{l_prefix}/include/openpkg/rpm/ugid.h
michael@13 1494 %{l_prefix}/include/openpkg/rpm/zconf.h
michael@13 1495 %{l_prefix}/include/openpkg/rpm/zlib.h
michael@13 1496 %dir %{l_prefix}/info
michael@13 1497 %dir %{l_prefix}/lib
michael@13 1498 %dir %{l_prefix}/lib/openpkg
michael@13 1499 %{l_prefix}/lib/openpkg/bash
michael@13 1500 %{l_prefix}/lib/openpkg/bzip2
michael@13 1501 %{l_prefix}/lib/openpkg/curl
michael@13 1502 %{l_prefix}/lib/openpkg/file
michael@13 1503 %{l_prefix}/lib/openpkg/gzip
michael@13 1504 %{l_prefix}/lib/openpkg/librpm.a
michael@13 1505 %{l_prefix}/lib/openpkg/librpmbeecrypt.a
michael@13 1506 %{l_prefix}/lib/openpkg/librpmbuild.a
michael@13 1507 %{l_prefix}/lib/openpkg/librpmbz2.a
michael@13 1508 %{l_prefix}/lib/openpkg/librpmdb.a
michael@13 1509 %{l_prefix}/lib/openpkg/librpmio.a
michael@13 1510 %{l_prefix}/lib/openpkg/librpmpopt.a
michael@13 1511 %{l_prefix}/lib/openpkg/librpmz.a
michael@13 1512 %{l_prefix}/lib/openpkg/macros
michael@13 1513 %{l_prefix}/lib/openpkg/magic
michael@13 1514 %{l_prefix}/lib/openpkg/magic.mgc
michael@13 1515 %{l_prefix}/lib/openpkg/magic.mime
michael@13 1516 %{l_prefix}/lib/openpkg/magic.mime.mgc
michael@13 1517 %{l_prefix}/lib/openpkg/miniperl
michael@13 1518 %{l_prefix}/lib/openpkg/openpkg
michael@13 1519 %{l_prefix}/lib/openpkg/openssl
michael@13 1520 %{l_prefix}/lib/openpkg/patch
michael@13 1521 %{l_prefix}/lib/openpkg/rc
michael@13 1522 %{l_prefix}/lib/openpkg/rpm
michael@13 1523 %{l_prefix}/lib/openpkg/rpmb
michael@13 1524 %{l_prefix}/lib/openpkg/rpmd
michael@13 1525 %{l_prefix}/lib/openpkg/rpmdb
michael@13 1526 %{l_prefix}/lib/openpkg/rpmdb_dump
michael@13 1527 %{l_prefix}/lib/openpkg/rpmdb_load
michael@13 1528 %{l_prefix}/lib/openpkg/rpmdb_verify
michael@13 1529 %{l_prefix}/lib/openpkg/rpme
michael@13 1530 %{l_prefix}/lib/openpkg/rpmi
michael@13 1531 %{l_prefix}/lib/openpkg/rpmk
michael@13 1532 %{l_prefix}/lib/openpkg/rpmpopt
michael@13 1533 %{l_prefix}/lib/openpkg/rpmq
michael@13 1534 %{l_prefix}/lib/openpkg/rpmt
michael@13 1535 %{l_prefix}/lib/openpkg/rpmtool
michael@13 1536 %{l_prefix}/lib/openpkg/rpmu
michael@13 1537 %{l_prefix}/lib/openpkg/rpmv
michael@13 1538 %{l_prefix}/lib/openpkg/shtool
michael@13 1539 %{l_prefix}/lib/openpkg/tar
michael@13 1540 %{l_prefix}/lib/openpkg/uuid
michael@13 1541 %dir %{l_prefix}/libexec
michael@13 1542 %dir %{l_prefix}/libexec/openpkg
michael@13 1543 %{l_prefix}/libexec/openpkg/build.8
michael@13 1544 %{l_prefix}/libexec/openpkg/build.pl
michael@13 1545 %{l_prefix}/libexec/openpkg/curl.sh
michael@13 1546 %{l_prefix}/libexec/openpkg/install
michael@13 1547 %{l_prefix}/libexec/openpkg/lsync
michael@13 1548 %{l_prefix}/libexec/openpkg/lsync.8
michael@13 1549 %{l_prefix}/libexec/openpkg/man
michael@13 1550 %{l_prefix}/libexec/openpkg/rc
michael@13 1551 %{l_prefix}/libexec/openpkg/rc.8
michael@13 1552 %{l_prefix}/libexec/openpkg/register
michael@13 1553 %{l_prefix}/libexec/openpkg/register.8
michael@13 1554 %{l_prefix}/libexec/openpkg/release
michael@13 1555 %{l_prefix}/libexec/openpkg/release.8
michael@13 1556 %{l_prefix}/libexec/openpkg/rpm
michael@13 1557 %{l_prefix}/libexec/openpkg/rpm-config
michael@13 1558 %{l_prefix}/libexec/openpkg/rpm-config.8
michael@13 1559 %{l_prefix}/libexec/openpkg/rpm.8
michael@13 1560 %{l_prefix}/libexec/openpkg/rpm2cpio
michael@13 1561 %{l_prefix}/libexec/openpkg/rpm2cpio.8
michael@13 1562 %{l_prefix}/libexec/openpkg/rpmbuild
michael@13 1563 %{l_prefix}/libexec/openpkg/rpmbuild.8
michael@13 1564 %{l_prefix}/libexec/openpkg/uuid
michael@13 1565 %{l_prefix}/libexec/openpkg/uuid.8
michael@13 1566 %dir %{l_prefix}/man
michael@13 1567 %dir %{l_prefix}/man/man1
michael@13 1568 %dir %{l_prefix}/man/man2
michael@13 1569 %dir %{l_prefix}/man/man3
michael@13 1570 %dir %{l_prefix}/man/man4
michael@13 1571 %dir %{l_prefix}/man/man5
michael@13 1572 %dir %{l_prefix}/man/man6
michael@13 1573 %dir %{l_prefix}/man/man7
michael@13 1574 %dir %{l_prefix}/man/man8
michael@13 1575 %dir %{l_prefix}/man/man9
michael@13 1576 %dir %{l_prefix}/man/cat1
michael@13 1577 %dir %{l_prefix}/man/cat2
michael@13 1578 %dir %{l_prefix}/man/cat3
michael@13 1579 %dir %{l_prefix}/man/cat4
michael@13 1580 %dir %{l_prefix}/man/cat5
michael@13 1581 %dir %{l_prefix}/man/cat6
michael@13 1582 %dir %{l_prefix}/man/cat7
michael@13 1583 %dir %{l_prefix}/man/cat8
michael@13 1584 %dir %{l_prefix}/man/cat9
michael@13 1585 %{l_prefix}/man/man1/openpkg.1
michael@13 1586 %dir %{l_prefix}/sbin
michael@13 1587 %dir %{l_prefix}/pub
michael@13 1588 %dir %{l_prefix}/share
michael@13 1589 %dir %{l_prefix}/var
michael@13 1590 %dir %{l_prefix}/local
michael@13 1591 %{l_prefix}/local/README
michael@13 1592 %{l_prefix}/local/.lsyncrc
michael@13 1593 %dir %{l_prefix}/local/PKG
michael@13 1594 %dir %{l_prefix}/local/bin
michael@13 1595 %dir %{l_prefix}/local/etc
michael@13 1596 %dir %{l_prefix}/local/include
michael@13 1597 %dir %{l_prefix}/local/info
michael@13 1598 %dir %{l_prefix}/local/lib
michael@13 1599 %dir %{l_prefix}/local/man
michael@13 1600 %dir %{l_prefix}/local/man/man1
michael@13 1601 %dir %{l_prefix}/local/man/man2
michael@13 1602 %dir %{l_prefix}/local/man/man3
michael@13 1603 %dir %{l_prefix}/local/man/man4
michael@13 1604 %dir %{l_prefix}/local/man/man5
michael@13 1605 %dir %{l_prefix}/local/man/man6
michael@13 1606 %dir %{l_prefix}/local/man/man7
michael@13 1607 %dir %{l_prefix}/local/man/man8
michael@13 1608 %dir %{l_prefix}/local/man/man9
michael@13 1609 %dir %{l_prefix}/local/man/cat1
michael@13 1610 %dir %{l_prefix}/local/man/cat2
michael@13 1611 %dir %{l_prefix}/local/man/cat3
michael@13 1612 %dir %{l_prefix}/local/man/cat4
michael@13 1613 %dir %{l_prefix}/local/man/cat5
michael@13 1614 %dir %{l_prefix}/local/man/cat6
michael@13 1615 %dir %{l_prefix}/local/man/cat7
michael@13 1616 %dir %{l_prefix}/local/man/cat8
michael@13 1617 %dir %{l_prefix}/local/man/cat9
michael@13 1618 %dir %{l_prefix}/local/sbin
michael@13 1619
michael@13 1620 %clean
michael@13 1621 # skip in bootstrap phase 2 (see openpkg.boot)
michael@13 1622 [ ".$OPENPKG_BOOT" = .1 ] && exit 0
michael@13 1623
michael@13 1624 # cleanup build area
michael@13 1625 rm -rf openpkg-%{version} >/dev/null 2>&1 || true
michael@13 1626
michael@13 1627 # cleanup installation area
michael@13 1628 rm -rf $RPM_BUILD_ROOT >/dev/null 2>&1 || true
michael@13 1629
michael@13 1630 %pre
michael@13 1631 # always performed for upgrades and because it doesn't harm!
michael@13 1632 # [ ".$1" != .1 ] && exit 0
michael@13 1633
michael@13 1634 # this procedure is only usable with root privileges
michael@13 1635 # (for non-root installations it is not required at all)
michael@13 1636 cusr=`(id -un) 2>/dev/null ||\
michael@13 1637 (id | sed -e 's;^[^(]*(\([^)]*\)).*;\1;') 2>/dev/null ||\
michael@13 1638 (whoami) 2>/dev/null ||\
michael@13 1639 (who am i | cut "-d " -f1) 2>/dev/null ||\
michael@13 1640 echo $LOGNAME`
michael@13 1641
michael@13 1642 # determine runtime details (for both inside and outside RPM!!)
michael@13 1643 # - bootstrapping: $xxx is set from aux.wrapbin.sh
michael@13 1644 # - upgrading new: %{l_[smrn]{usr,grp}} is set via rpmmacros
michael@13 1645 # - upgrading old: %{l_[smrn]{usr,grp}} is not set at all
michael@13 1646 [ ".$susr" = . ] && susr="%{?l_susr}%{!?l_susr:root}"
michael@13 1647 [ ".$sgrp" = . ] && sgrp="%{?l_sgrp}%{!?l_sgrp:wheel}"
michael@13 1648 [ ".$musr" = . ] && musr="%{?l_musr}%{!?l_musr:%{l_fsusr}}"
michael@13 1649 [ ".$mgrp" = . ] && mgrp="%{?l_mgrp}%{!?l_mgrp:%{l_fsgrp}}"
michael@13 1650 [ ".$rusr" = . ] && rusr="%{?l_rusr}%{!?l_rusr:%{l_fsusr}-r}"
michael@13 1651 [ ".$rgrp" = . ] && rgrp="%{?l_rgrp}%{!?l_rgrp:%{l_fsgrp}-r}"
michael@13 1652 [ ".$nusr" = . ] && nusr="%{?l_nusr}%{!?l_nusr:%{l_fsusr}-n}"
michael@13 1653 [ ".$ngrp" = . ] && ngrp="%{?l_ngrp}%{!?l_ngrp:%{l_fsgrp}-n}"
michael@13 1654 [ ".$suid" = . ] && suid="%{?l_suid}"
michael@13 1655 [ ".$sgid" = . ] && sgid="%{?l_sgid}"
michael@13 1656 [ ".$muid" = . ] && muid="%{?l_muid}"
michael@13 1657 [ ".$mgid" = . ] && mgid="%{?l_mgid}"
michael@13 1658 [ ".$ruid" = . ] && ruid="%{?l_ruid}"
michael@13 1659 [ ".$rgid" = . ] && rgid="%{?l_rgid}"
michael@13 1660 [ ".$nuid" = . ] && nuid="%{?l_nuid}"
michael@13 1661 [ ".$ngid" = . ] && ngid="%{?l_ngid}"
michael@13 1662
michael@13 1663 # if any of these optional params are not used we won't have a
michael@13 1664 # corresponding macro either, so make use of one conditionally
michael@13 1665 [ ".$suid" = . ] && [ ".%{?l_suid:set}" = .set ] && suid="%{?l_suid}"
michael@13 1666 [ ".$sgid" = . ] && [ ".%{?l_sgid:set}" = .set ] && sgid="%{?l_sgid}"
michael@13 1667 [ ".$muid" = . ] && [ ".%{?l_muid:set}" = .set ] && muid="%{?l_muid}"
michael@13 1668 [ ".$mgid" = . ] && [ ".%{?l_mgid:set}" = .set ] && mgid="%{?l_mgid}"
michael@13 1669 [ ".$ruid" = . ] && [ ".%{?l_ruid:set}" = .set ] && ruid="%{?l_ruid}"
michael@13 1670 [ ".$rgid" = . ] && [ ".%{?l_rgid:set}" = .set ] && rgid="%{?l_rgid}"
michael@13 1671 [ ".$nuid" = . ] && [ ".%{?l_nuid:set}" = .set ] && nuid="%{?l_nuid}"
michael@13 1672 [ ".$ngid" = . ] && [ ".%{?l_ngid:set}" = .set ] && ngid="%{?l_ngid}"
michael@13 1673
michael@13 1674 # determine prefix
michael@13 1675 [ ".$prefix" = . ] && prefix="%{l_prefix}"
michael@13 1676 prefix=`echo "$prefix" | sed -e 's;//*;/;g' -e 's;/$;;'`
michael@13 1677
michael@13 1678 # register instance in presence file
michael@13 1679 presence="/etc/openpkg"
michael@13 1680 exists=`cat $presence 2>/dev/null | egrep "^ *${prefix} *\$"`
michael@13 1681 if [ ".$exists" = . ]; then
michael@13 1682 ( umask 022
michael@13 1683 echo "${prefix}" >>$presence
michael@13 1684 ) 2>/dev/null || true
michael@13 1685 fi
michael@13 1686
michael@13 1687 # determine user/group ids
michael@13 1688 for class in s m r n; do
michael@13 1689 eval "xusr=\"\$${class}usr\""
michael@13 1690 eval "xgrp=\"\$${class}grp\""
michael@13 1691 eval "xuid=\"\$${class}uid\""
michael@13 1692 eval "xgid=\"\$${class}gid\""
michael@13 1693 if [ ".$xuid" = . ]; then
michael@13 1694 xuid=`(getent passwd "${xusr}"; \
michael@13 1695 grep "^${xusr}:" /etc/passwd; \
michael@13 1696 ypmatch "${xusr}" passwd; \
michael@13 1697 nismatch "${xusr}" passwd; \
michael@13 1698 nidump passwd . | grep "^${xusr}:") 2>/dev/null | \
michael@13 1699 sed -e 'q' | awk -F: '{ print $3; }'`
michael@13 1700 if [ ".$xuid" = . ]; then
michael@13 1701 # seek for a reasonably uid/gid pair
michael@13 1702 xuid=1000
michael@13 1703 ok=0
michael@13 1704 while [ ".$ok" = .0 ]; do
michael@13 1705 eval "u_exists=\$u_exists_$xuid"
michael@13 1706 if [ ".$u_exists" = . ]; then
michael@13 1707 u_exists=`(getent passwd; cat /etc/passwd; ypcat passwd; niscat passwd; nidump passwd .) 2>/dev/null |\
michael@13 1708 grep "^[^:]*:[^:]*:$xuid:"`
michael@13 1709 fi
michael@13 1710 eval "g_exists=\$g_exists_$xuid"
michael@13 1711 if [ ".$g_exists" = . ]; then
michael@13 1712 g_exists=`(getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null |\
michael@13 1713 grep "^[^:]*:[^:]*:$xuid:"`
michael@13 1714 fi
michael@13 1715 if [ ".$u_exists" = . -a ".$g_exists" = . ]; then
michael@13 1716 ok=1
michael@13 1717 break
michael@13 1718 fi
michael@13 1719 xuid=`expr $xuid + 1`
michael@13 1720 done
michael@13 1721 eval "u_exists_$xuid=yes"
michael@13 1722 eval "g_exists_$xuid=yes"
michael@13 1723 fi
michael@13 1724 fi
michael@13 1725 if [ ".$xgid" = . ]; then
michael@13 1726 xgid=`(getent group "${xgrp}"; \
michael@13 1727 grep "^${xgrp}:" /etc/group; \
michael@13 1728 ypmatch "${xgrp}" group; \
michael@13 1729 nismatch "${xgrp}" group; \
michael@13 1730 nidump group . | grep "^${xgrp}:") 2>/dev/null | \
michael@13 1731 sed -e 'q' | awk -F: '{ print $3; }'`
michael@13 1732 if [ ".$xgid" = . ]; then
michael@13 1733 xgid="$xuid"
michael@13 1734 fi
michael@13 1735 fi
michael@13 1736 eval "${class}uid=\"$xuid\""
michael@13 1737 eval "${class}gid=\"$xgid\""
michael@13 1738 done
michael@13 1739
michael@13 1740 # determine platform id
michael@13 1741 s=`(uname -s) 2>/dev/null` || s='Unknown'
michael@13 1742 r=`(uname -r) 2>/dev/null` || r='0.0'
michael@13 1743 plid="${s}/${r}"
michael@13 1744
michael@13 1745 # add entry to /etc/shells
michael@13 1746 shell="${prefix}/lib/openpkg/bash"
michael@13 1747 if [ -f /etc/shells ]; then
michael@13 1748 exists=`cat /etc/shells 2>/dev/null | grep "^$shell"`
michael@13 1749 if [ ".$exists" = . ]; then
michael@13 1750 if [ ".$cusr" != ".root" ]; then
michael@13 1751 echo "openpkg:WARNING: skipping addition of $shell to /etc/shells" 1>&2
michael@13 1752 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
michael@13 1753 else
michael@13 1754 echo "${shell}" >>/etc/shells
michael@13 1755 fi
michael@13 1756 fi
michael@13 1757 fi
michael@13 1758
michael@13 1759 # clear pending deferred actions
michael@13 1760 rm -f %{l_prefix}.pre-group-process.sh %{l_prefix}.pre-post-process.sh >/dev/null 2>&1
michael@13 1761
michael@13 1762 # create the hierarchy user/group
michael@13 1763 for req in "superuser:${susr}:${suid}:${sgrp}:${sgid}" \
michael@13 1764 "management:${musr}:${muid}:${mgrp}:${mgid}" \
michael@13 1765 "restricted:${rusr}:${ruid}:${rgrp}:${rgid}" \
michael@13 1766 "non-privileged:${nusr}:${nuid}:${ngrp}:${ngid}"; do
michael@13 1767 # split request into class/usr/uid/grp/gid
michael@13 1768 OIFS="$IFS"; IFS=":"; set -- $req; IFS="$OIFS"
michael@13 1769 class="$1"; usr="$2"; uid="$3"; grp="$4"; gid="$5"
michael@13 1770
michael@13 1771 # check whether user already exists
michael@13 1772 exists=`(getent passwd "$usr"; \
michael@13 1773 grep "^$usr:" /etc/passwd; \
michael@13 1774 ypmatch "$usr" passwd; \
michael@13 1775 nismatch "$usr" passwd; \
michael@13 1776 nidump passwd . | grep "^$usr:") 2>/dev/null | \
michael@13 1777 sed -e 'q'`
michael@13 1778 if [ ".$exists" = . ]; then
michael@13 1779 if [ ".$cusr" != ".root" ]; then
michael@13 1780 echo "openpkg:WARNING: skipping creation of OpenPKG $class user $usr" 1>&2
michael@13 1781 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
michael@13 1782 else
michael@13 1783 # add entry to passwd database
michael@13 1784 realname="${prefix} OpenPKG ($class)"
michael@13 1785 case "$plid" in
michael@13 1786 FreeBSD/* | NetBSD/* )
michael@13 1787 file=/etc/master.passwd
michael@13 1788 entry="${usr}:*:${uid}:${gid}::0:0:${realname}:${prefix}:${shell}"
michael@13 1789 update="(PATH=\$PATH:/usr/sbin; pwd_mkdb -p /etc/master.passwd)"
michael@13 1790 ;;
michael@13 1791 Linux/* )
michael@13 1792 file=/etc/passwd
michael@13 1793 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
michael@13 1794 update="(PATH=\$PATH:/usr/sbin; pwconv)"
michael@13 1795 ;;
michael@13 1796 SunOS/5.* | UnixWare/* )
michael@13 1797 file=/etc/passwd
michael@13 1798 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
michael@13 1799 update="(PATH=\$PATH:/usr/sbin; pwconv)"
michael@13 1800 ;;
michael@13 1801 AIX/* )
michael@13 1802 # intentionally do nothing here
michael@13 1803 :
michael@13 1804 ;;
michael@13 1805 OSF1/V5.* )
michael@13 1806 file=/etc/passwd
michael@13 1807 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
michael@13 1808 update="(PATH=\$PATH:/usr/sbin; mkpasswd /etc/passwd)"
michael@13 1809 ;;
michael@13 1810 HP-UX/* )
michael@13 1811 file=/etc/passwd
michael@13 1812 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
michael@13 1813 update=":"
michael@13 1814 ;;
michael@13 1815 Darwin/* )
michael@13 1816 # intentionally do nothing here
michael@13 1817 :
michael@13 1818 ;;
michael@13 1819 IRIX*/6.* )
michael@13 1820 file=/etc/passwd
michael@13 1821 entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}"
michael@13 1822 if [ -f /etc/shadow ]
michael@13 1823 then update="(PATH=\$PATH:/sbin; pwconv)"
michael@13 1824 else update=":"
michael@13 1825 fi
michael@13 1826 ;;
michael@13 1827 esac
michael@13 1828 case "$plid" in
michael@13 1829 Darwin/* )
michael@13 1830 niutil -create . "/users/${usr}"
michael@13 1831 niutil -createprop . "/users/${usr}" passwd "*"
michael@13 1832 niutil -createprop . "/users/${usr}" uid "${uid}"
michael@13 1833 niutil -createprop . "/users/${usr}" gid "${gid}"
michael@13 1834 niutil -createprop . "/users/${usr}" realname "${realname}"
michael@13 1835 niutil -createprop . "/users/${usr}" home "${prefix}"
michael@13 1836 niutil -createprop . "/users/${usr}" shell "${shell}"
michael@13 1837 ;;
michael@13 1838 AIX/* )
michael@13 1839 mkuser id="${uid}" gecos="${realname}" home="${prefix}" "${usr}"
michael@13 1840 cp /etc/security/login.cfg /etc/security/login.cfg.bak && \
michael@13 1841 sed -e "/^usw:/,/^[^ ]/s;\\( *shells =.*\\) *\$;\\1,$shell;" \
michael@13 1842 </etc/security/login.cfg.bak >/etc/security/login.cfg && \
michael@13 1843 rm -f /etc/security/login.cfg.bak >/dev/null 2>&1
michael@13 1844 # defer both the setting of the primary group and the shell,
michael@13 1845 # as they do not exist at this stage of processing.
michael@13 1846 echo "chuser pgrp=\"${grp}\" \"${usr}\"" >>%{l_prefix}.pre-group-process.sh
michael@13 1847 echo "chuser shell=\"${shell}\" \"${usr}\"" >>%{l_prefix}.pre-post-process.sh
michael@13 1848 ;;
michael@13 1849 * )
michael@13 1850 cp $file $file.bak && \
michael@13 1851 (grep -v '^+:' $file.bak; echo $entry; grep '^+:' $file.bak) >$file
michael@13 1852 rm -f $file.bak >/dev/null 2>&1
michael@13 1853 eval $update
michael@13 1854 [ $? -ne 0 ] && exit $?
michael@13 1855 ;;
michael@13 1856 esac
michael@13 1857 fi
michael@13 1858 fi
michael@13 1859
michael@13 1860 # check whether group already exists
michael@13 1861 exists=`(getent group "$grp"; \
michael@13 1862 grep "^$grp:" /etc/group; \
michael@13 1863 ypmatch "$grp" group; \
michael@13 1864 nismatch "$grp" group; \
michael@13 1865 nidump group . | grep "^$grp:") 2>/dev/null | \
michael@13 1866 sed -e 'q'`
michael@13 1867 if [ ".$exists" = . ]; then
michael@13 1868 if [ ".$cusr" != ".root" ]; then
michael@13 1869 echo "openpkg:WARNING: skipping creation of OpenPKG $class group $grp" 1>&2
michael@13 1870 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
michael@13 1871 else
michael@13 1872 case "$plid" in
michael@13 1873 Darwin/* )
michael@13 1874 niutil -create . "/groups/${grp}"
michael@13 1875 niutil -createprop . "/groups/${grp}" gid "${gid}"
michael@13 1876 niutil -createprop . "/groups/${grp}" users "${usr}"
michael@13 1877 ;;
michael@13 1878 AIX/* )
michael@13 1879 mkgroup id="${gid}" users="${usr}" "${grp}"
michael@13 1880 ;;
michael@13 1881 * )
michael@13 1882 # add entry to group database
michael@13 1883 file=/etc/group
michael@13 1884 entry="${grp}:*:${gid}:${usr}"
michael@13 1885 cp $file $file.bak && \
michael@13 1886 (grep -v '^+:' $file.bak; echo $entry; grep '^+:' $file.bak) >$file
michael@13 1887 rm -f $file.bak >/dev/null 2>&1
michael@13 1888 ;;
michael@13 1889 esac
michael@13 1890 fi
michael@13 1891 fi
michael@13 1892 done
michael@13 1893
michael@13 1894 # optional group processing (deferred adjustment of primary group)
michael@13 1895 if [ -f %{l_prefix}.pre-group-process.sh ]; then
michael@13 1896 sh %{l_prefix}.pre-group-process.sh
michael@13 1897 rm -f %{l_prefix}.pre-group-process.sh
michael@13 1898 fi
michael@13 1899
michael@13 1900 # invalidate passwd and group tables from Name Service Cache Daemon to
michael@13 1901 # ensure chown/chgrp works immediately after pwconv on Linux and Solaris
michael@13 1902 if [ -x /usr/sbin/nscd ]; then
michael@13 1903 /usr/sbin/nscd -i passwd >/dev/null 2>&1 || true
michael@13 1904 /usr/sbin/nscd -i group >/dev/null 2>&1 || true
michael@13 1905 fi
michael@13 1906
michael@13 1907 # create the startup/shutdown transfer script
michael@13 1908 name=`echo "$prefix" | sed -e 's;/;;g'`
michael@13 1909 if [ ".$cusr" != ".root" ]; then
michael@13 1910 echo "openpkg:WARNING: skipping creation of system run-command hooks" 1>&2
michael@13 1911 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
michael@13 1912 else
michael@13 1913 case "$plid" in
michael@13 1914 FreeBSD/* )
michael@13 1915 if [ ! -f /etc/rc.d/openpkg-${name} ]; then
michael@13 1916 # install transfer script
michael@13 1917 rm -f /etc/rc.d/openpkg-${name} >/dev/null 2>&1
michael@13 1918 ( echo "#!/bin/sh"
michael@13 1919 echo "##"
michael@13 1920 echo "## openpkg-${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
michael@13 1921 echo "##"
michael@13 1922 echo ""
michael@13 1923 echo "# PROVIDE: openpkg-${name}"
michael@13 1924 echo "# REQUIRE: LOGIN"
michael@13 1925 echo "# KEYWORD: shutdown"
michael@13 1926 echo ""
michael@13 1927 echo ". /etc/rc.subr"
michael@13 1928 echo ""
michael@13 1929 echo "name=\"openpkg_${name}\""
michael@13 1930 echo "start_cmd=\"openpkg_rc_all start\""
michael@13 1931 echo "stop_cmd=\"openpkg_rc_all stop\""
michael@13 1932 echo "restart_cmd=\"openpkg_rc_all stop start\""
michael@13 1933 echo ""
michael@13 1934 echo "openpkg_rc_all () {"
michael@13 1935 echo " if [ -f ${prefix}/etc/rc ]; then"
michael@13 1936 echo " ${prefix}/etc/rc all \"\$@\""
michael@13 1937 echo " fi"
michael@13 1938 echo "}"
michael@13 1939 echo ""
michael@13 1940 echo "load_rc_config \$name"
michael@13 1941 echo "run_rc_command \"\$1\""
michael@13 1942 echo ""
michael@13 1943 ) >/etc/rc.d/openpkg-${name}
michael@13 1944 chmod 755 /etc/rc.d/openpkg-${name}
michael@13 1945 fi
michael@13 1946 ;;
michael@13 1947 NetBSD/* )
michael@13 1948 if [ ! -f /etc/rc.d/${name} ]; then
michael@13 1949 ( echo "#!/bin/sh"
michael@13 1950 echo "##"
michael@13 1951 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
michael@13 1952 echo "##"
michael@13 1953 echo "## PROVIDE: ${name}"
michael@13 1954 echo "## REQUIRE: DAEMON LOGIN NETWORK SERVERS"
michael@13 1955 echo "##"
michael@13 1956 echo ""
michael@13 1957 echo "[ ! -f ${prefix}/etc/rc ] && exit 0"
michael@13 1958 echo "case \$1 in"
michael@13 1959 echo " start ) exec ${prefix}/etc/rc all start ;;"
michael@13 1960 echo " stop ) exec ${prefix}/etc/rc all stop ;;"
michael@13 1961 echo " restart ) exec ${prefix}/etc/rc all stop start ;;"
michael@13 1962 echo " status ) ;;"
michael@13 1963 echo "esac"
michael@13 1964 ) >/etc/rc.d/${name}
michael@13 1965 chmod 755 /etc/rc.d/${name}
michael@13 1966 fi
michael@13 1967 ;;
michael@13 1968 Linux/* )
michael@13 1969 if [ -f /etc/gentoo-release ]; then
michael@13 1970 if [ ! -f /etc/init.d/openpkg-${name} ]; then
michael@13 1971 # install transfer script
michael@13 1972 ( echo "#!/sbin/runscript"
michael@13 1973 echo "##"
michael@13 1974 echo "## openpkg-${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
michael@13 1975 echo "##"
michael@13 1976 echo ""
michael@13 1977 echo "depend() {"
michael@13 1978 echo " after *"
michael@13 1979 echo "}"
michael@13 1980 echo ""
michael@13 1981 echo "checkconfig() {"
michael@13 1982 echo " [ -f ${prefix}/etc/rc ] || return 1"
michael@13 1983 echo " case $1 in"
michael@13 1984 echo " start ) exec ${prefix}/etc/rc all start ;;"
michael@13 1985 echo " stop ) exec ${prefix}/etc/rc all stop ;;"
michael@13 1986 echo " esac"
michael@13 1987 echo "}"
michael@13 1988 echo ""
michael@13 1989 echo "start() {"
michael@13 1990 echo " checkconfig || return 1"
michael@13 1991 echo " ebegin "Starting OpenPKG ${prefix} hierarchy""
michael@13 1992 echo " exec ${prefix}/etc/rc all start"
michael@13 1993 echo " eend 0"
michael@13 1994 echo "}"
michael@13 1995 echo ""
michael@13 1996 echo "stop() {"
michael@13 1997 echo " checkconfig || return 1"
michael@13 1998 echo " ebegin "Stopping OpenPKG ${prefix} hierarchy""
michael@13 1999 echo " exec ${prefix}/etc/rc all stop"
michael@13 2000 echo " eend 0"
michael@13 2001 echo "}"
michael@13 2002 ) >/etc/init.d/openpkg-${name}
michael@13 2003 chmod 755 /etc/init.d/openpkg-${name}
michael@13 2004 /sbin/rc-update add openpkg-${name} default
michael@13 2005 fi
michael@13 2006 else
michael@13 2007 # sroot: script root directory
michael@13 2008 # lroot: link root directory
michael@13 2009 if [ -f /etc/debian_version ]; then
michael@13 2010 sroot=/etc/init.d
michael@13 2011 lroot=/etc/rc%d.d
michael@13 2012 elif [ -f /etc/redhat-release -o -f /etc/mandrake-release ]; then
michael@13 2013 sroot=/etc/rc.d/init.d
michael@13 2014 lroot=/etc/rc.d/rc%d.d
michael@13 2015 elif [ -f /etc/SuSE-release ]; then
michael@13 2016 sroot=/etc/init.d
michael@13 2017 lroot=/etc/init.d/rc%d.d
michael@13 2018 elif [ -f /etc/slackware-version ]; then
michael@13 2019 sroot=/etc/rc.d
michael@13 2020 lroot=/etc/rc.d/rc%d.d
michael@13 2021 name="rc.${name}"
michael@13 2022 for i in 0 1 2 3 4 5 6; do
michael@13 2023 l=`echo $lroot | sed -e "s;%d;$i;"`
michael@13 2024 if [ ! -d $l ]; then
michael@13 2025 mkdir $l 2>&1 || true
michael@13 2026 fi
michael@13 2027 done
michael@13 2028 else
michael@13 2029 echo "WARNING: you are not running one of the supported standard" 1>&2
michael@13 2030 echo "WARNING: Linux platforms (Debian, RedHat, Mandrake, SuSE, Gentoo)." 1>&2
michael@13 2031 echo "WARNING: Guessing the location of the system init scripts!" 1>&2
michael@13 2032 sroot=""
michael@13 2033 lroot=""
michael@13 2034 for sr in /etc/rc.d/init.d /etc/init.d /sbin/init.d; do
michael@13 2035 if [ -d $sr ]; then
michael@13 2036 sroot="$sr"
michael@13 2037 break
michael@13 2038 fi
michael@13 2039 done
michael@13 2040 for lr in /etc/rc.d/rc2.d /etc/rc2.d /sbin/init.d/rc2.d; do
michael@13 2041 if [ -d $lr ]; then
michael@13 2042 lroot="`echo $lr | sed -e 's;2;%d;'`"
michael@13 2043 break
michael@13 2044 fi
michael@13 2045 done
michael@13 2046 if [ ".$sroot" = . -o ".$lroot" = . ]; then
michael@13 2047 echo "ERROR: Failed to guess the location of the system init scripts!" 1>&2
michael@13 2048 exit 1
michael@13 2049 fi
michael@13 2050 fi
michael@13 2051 if [ ! -f $sroot/${name} ]; then
michael@13 2052 # install transfer script
michael@13 2053 ( echo "#!/bin/sh"
michael@13 2054 echo "##"
michael@13 2055 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
michael@13 2056 echo "##"
michael@13 2057 echo ""
michael@13 2058 echo "[ ! -f ${prefix}/etc/rc ] && exit 0"
michael@13 2059 echo "case \$1 in"
michael@13 2060 echo " start ) exec ${prefix}/etc/rc all start ;;"
michael@13 2061 echo " stop ) exec ${prefix}/etc/rc all stop ;;"
michael@13 2062 echo "esac"
michael@13 2063 ) >$sroot/${name}
michael@13 2064 chmod 755 $sroot/${name}
michael@13 2065 # create corresponding symbolic links
michael@13 2066 for i in 2 3 4 5; do
michael@13 2067 ln -s $sroot/${name} `echo $lroot | sed -e "s;%d;$i;"`/S99${name}
michael@13 2068 done
michael@13 2069 for i in 0 1 6; do
michael@13 2070 ln -s $sroot/${name} `echo $lroot | sed -e "s;%d;$i;"`/K00${name}
michael@13 2071 done
michael@13 2072 fi
michael@13 2073 fi
michael@13 2074 ;;
michael@329 2075 SunOS/5.1* )
michael@329 2076 if [ ! -d /var/svc/manifest/openpkg ]; then
michael@329 2077 mkdir /var/svc/manifest/openpkg
michael@329 2078 fi
michael@329 2079 if [ ! -f /var/svc/manifest/openpkg/${name}.xml ]; then
michael@329 2080 # install SMF manifest
michael@329 2081 ( echo "<?xml version=\"1.0\"?>"
michael@329 2082 echo "<!DOCTYPE service_bundle SYSTEM \"/usr/share/lib/xml/dtd/service_bundle.dtd.1\">"
michael@329 2083 echo "<service_bundle type='manifest' name='OpenPKG:${name}'>"
michael@329 2084 echo " <service"
michael@329 2085 echo " name='openpkg/${name}'"
michael@329 2086 echo " type='service'"
michael@329 2087 echo " version='1'>"
michael@329 2088 echo " <single_instance />"
michael@329 2089 echo " <dependency"
michael@329 2090 echo " name='filesystem'"
michael@329 2091 echo " type='service'"
michael@329 2092 echo " grouping='require_all'"
michael@329 2093 echo " restart_on='none'>"
michael@329 2094 echo " <service_fmri value='svc:/system/filesystem/local' />"
michael@329 2095 echo " </dependency>"
michael@329 2096 echo " <dependency"
michael@329 2097 echo " name='name-services'"
michael@329 2098 echo " type='service'"
michael@329 2099 echo " grouping='require_all'"
michael@329 2100 echo " restart_on='none'>"
michael@329 2101 echo " <service_fmri value='svc:/milestone/name-services' />"
michael@329 2102 echo " </dependency>"
michael@329 2103 echo " <dependency"
michael@329 2104 echo " name='multi-user-server'"
michael@329 2105 echo " type='service'"
michael@329 2106 echo " grouping='require_all'"
michael@329 2107 echo " restart_on='none'>"
michael@329 2108 echo " <service_fmri value='svc:/milestone/multi-user-server' />"
michael@329 2109 echo " </dependency>"
michael@329 2110 echo " <dependency"
michael@329 2111 echo " name='network'"
michael@329 2112 echo " type='service'"
michael@329 2113 echo " grouping='require_all'"
michael@329 2114 echo " restart_on='none'>"
michael@329 2115 echo " <service_fmri value='svc:/milestone/network' />"
michael@329 2116 echo " </dependency>"
michael@329 2117 echo " <exec_method"
michael@329 2118 echo " type='method'"
michael@329 2119 echo " name='start'"
michael@329 2120 echo " exec='${prefix}/etc/rc all start'"
michael@329 2121 echo " timeout_seconds='180'>"
michael@329 2122 echo " <method_context>"
michael@329 2123 echo " <method_credential user='root' group='root' />"
michael@329 2124 echo " </method_context>"
michael@329 2125 echo " </exec_method>"
michael@329 2126 echo " <exec_method"
michael@329 2127 echo " type='method'"
michael@329 2128 echo " name='stop'"
michael@329 2129 echo " exec='${prefix}/etc/rc all stop'"
michael@329 2130 echo " timeout_seconds='180'>"
michael@329 2131 echo " </exec_method>"
michael@329 2132 echo " <property_group name='startd' type='framework'>"
michael@329 2133 echo " <propval"
michael@329 2134 echo " name='ignore_error'"
michael@329 2135 echo " type='astring'"
michael@329 2136 echo " value='core,signal' />"
michael@329 2137 echo " </property_group>"
michael@329 2138 echo " <property_group name='startd' type='framework'>"
michael@329 2139 echo " <propval"
michael@329 2140 echo " name='duration'"
michael@329 2141 echo " type='astring'"
michael@329 2142 echo " value='transient' />"
michael@329 2143 echo " </property_group>"
michael@329 2144 echo " <property_group name='general' type='framework'>"
michael@329 2145 echo " <propval"
michael@329 2146 echo " name='action_authorization'"
michael@329 2147 echo " type='astring'"
michael@329 2148 echo " value='solaris.smf.manage.openpkg.${name}' />"
michael@329 2149 echo " </property_group>"
michael@329 2150 echo " <instance name='default' enabled='false' />"
michael@329 2151 echo " <stability value='Unstable' />"
michael@329 2152 echo " <template>"
michael@329 2153 echo " <common_name>"
michael@329 2154 echo " <loctext xml:lang='C'>OpenPKG Instance ${prefix}</loctext>"
michael@329 2155 echo " </common_name>"
michael@329 2156 echo " </template>"
michael@329 2157 echo " </service>"
michael@329 2158 echo "</service_bundle>"
michael@329 2159 ) >/var/svc/manifest/openpkg/${name}.xml
michael@329 2160 chmod 644 /var/svc/manifest/openpkg/${name}.xml
michael@329 2161 /usr/sbin/svccfg import /var/svc/manifest/openpkg/${name}.xml
michael@329 2162 ( echo "/usr/sbin/svcadm enable \"svc:/openpkg/${name}:default\""
michael@329 2163 ) >%{l_prefix}.pre-post-process.sh
michael@329 2164 fi
michael@329 2165 ;;
michael@13 2166 SunOS/5.* )
michael@13 2167 if [ ! -f /etc/init.d/${name} ]; then
michael@13 2168 # install transfer script
michael@13 2169 ( echo "#!/bin/sh"
michael@13 2170 echo "##"
michael@13 2171 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
michael@13 2172 echo "##"
michael@13 2173 echo ""
michael@13 2174 echo "[ ! -f ${prefix}/etc/rc ] && exit 0"
michael@13 2175 echo "case \$1 in"
michael@13 2176 echo " start ) exec ${prefix}/etc/rc all start ;;"
michael@13 2177 echo " stop ) exec ${prefix}/etc/rc all stop ;;"
michael@13 2178 echo "esac"
michael@13 2179 ) >/etc/init.d/${name}
michael@13 2180 chmod 755 /etc/init.d/${name}
michael@13 2181 # create corresponding symbolic links
michael@13 2182 ( cd /etc
michael@13 2183 ln init.d/${name} rc3.d/S99${name}
michael@13 2184 ln init.d/${name} rc0.d/K00${name}
michael@13 2185 ln init.d/${name} rc1.d/K00${name}
michael@13 2186 ) || exit $?
michael@13 2187 fi
michael@13 2188 ;;
michael@13 2189 UnixWare/* )
michael@13 2190 if [ ! -f /etc/init.d/${name} ]; then
michael@13 2191 # install transfer script
michael@13 2192 ( echo "#!/bin/sh"
michael@13 2193 echo "##"
michael@13 2194 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
michael@13 2195 echo "##"
michael@13 2196 echo ""
michael@13 2197 echo "[ ! -f ${prefix}/etc/rc ] && exit 0"
michael@13 2198 echo "case \$1 in"
michael@13 2199 echo " start ) exec ${prefix}/etc/rc all start ;;"
michael@13 2200 echo " stop ) exec ${prefix}/etc/rc all stop ;;"
michael@13 2201 echo "esac"
michael@13 2202 ) >/etc/init.d/${name}
michael@13 2203 chmod 755 /etc/init.d/${name}
michael@13 2204 # create corresponding symbolic links
michael@13 2205 ( cd /etc
michael@13 2206 ln init.d/${name} rc2.d/S99${name}
michael@13 2207 ln init.d/${name} rc0.d/K00${name}
michael@13 2208 ln init.d/${name} rc1.d/K00${name}
michael@13 2209 ) || exit $?
michael@13 2210 fi
michael@13 2211 ;;
michael@13 2212 AIX/* )
michael@13 2213 if [ ! -f /etc/rc.d/init.d/${name} ]; then
michael@13 2214 # install transfer script
michael@13 2215 ( echo "#!/bin/sh"
michael@13 2216 echo "##"
michael@13 2217 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
michael@13 2218 echo "##"
michael@13 2219 echo ""
michael@13 2220 echo "[ ! -f ${prefix}/etc/rc ] && exit 0"
michael@13 2221 echo "case \$1 in"
michael@13 2222 echo " start ) exec ${prefix}/etc/rc all start ;;"
michael@13 2223 echo " stop ) exec ${prefix}/etc/rc all stop ;;"
michael@13 2224 echo "esac"
michael@13 2225 ) >/etc/rc.d/init.d/${name}
michael@13 2226 chmod 755 /etc/rc.d/init.d/${name}
michael@13 2227 # create corresponding symbolic links
michael@13 2228 ( cd /etc/rc.d
michael@13 2229 ln -s ../init.d/${name} rc2.d/S99${name}
michael@13 2230 ) || exit $?
michael@13 2231 fi
michael@13 2232 ;;
michael@13 2233 OSF1/V5.* )
michael@13 2234 if [ ! -f /sbin/init.d/${name} ]; then
michael@13 2235 # install transfer script
michael@13 2236 ( echo "#!/bin/sh"
michael@13 2237 echo "##"
michael@13 2238 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
michael@13 2239 echo "##"
michael@13 2240 echo ""
michael@13 2241 echo "[ ! -f ${prefix}/etc/rc ] && exit 0"
michael@13 2242 echo "case \$1 in"
michael@13 2243 echo " start ) exec ${prefix}/etc/rc all start ;;"
michael@13 2244 echo " stop ) exec ${prefix}/etc/rc all stop ;;"
michael@13 2245 echo "esac"
michael@13 2246 ) >/sbin/init.d/${name}
michael@13 2247 chmod 755 /sbin/init.d/${name}
michael@13 2248 # create corresponding symbolic links
michael@13 2249 ( cd /sbin
michael@13 2250 ln -s ../init.d/${name} rc3.d/S99${name}
michael@13 2251 ln -s ../init.d/${name} rc0.d/K00${name}
michael@13 2252 ) || exit $?
michael@13 2253 fi
michael@13 2254 ;;
michael@13 2255 HP-UX/* )
michael@13 2256 if [ ! -f /sbin/init.d/${name} ]; then
michael@13 2257 # install transfer script
michael@13 2258 ( echo "#!/bin/sh"
michael@13 2259 echo "##"
michael@13 2260 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
michael@13 2261 echo "##"
michael@13 2262 echo ""
michael@13 2263 echo "[ ! -f ${prefix}/etc/rc ] && exit 0"
michael@13 2264 echo "case \$1 in"
michael@13 2265 echo " start ) exec ${prefix}/etc/rc all start ;;"
michael@13 2266 echo " stop ) exec ${prefix}/etc/rc all stop ;;"
michael@13 2267 echo "esac"
michael@13 2268 ) >/sbin/init.d/${name}
michael@13 2269 chmod 755 /sbin/init.d/${name}
michael@13 2270 # create corresponding symbolic links
michael@13 2271 ( cd /sbin
michael@13 2272 ln -s ../init.d/${name} rc2.d/S900${name}
michael@13 2273 ln -s ../init.d/${name} rc1.d/K100${name}
michael@13 2274 ) || exit $?
michael@13 2275 fi
michael@13 2276 ;;
michael@13 2277 Darwin/* )
michael@13 2278 darwin_rc_dir="/System/Library/StartupItems/${name}"
michael@13 2279 if [ ! -d ${darwin_rc_dir} ]; then
michael@13 2280 mkdir ${darwin_rc_dir}
michael@13 2281 fi
michael@13 2282
michael@13 2283 # make sure hierarchy is activated in /etc/hostconfig
michael@13 2284 # FIXME: cs: simple and bad code here without any detection of existing entries
michael@13 2285 echo "OPENPKG_${name}=-YES-" >>/etc/hostconfig
michael@13 2286
michael@13 2287 # install transfer script
michael@13 2288 if [ ! -f ${darwin_rc_dir}/${name} ]; then
michael@13 2289 rm -f ${darwin_rc_dir}/${name} >/dev/null 2>&1
michael@13 2290 ( echo "#!/bin/sh"
michael@13 2291 echo "##"
michael@13 2292 echo "## ${darwin_rc_dir}/${name}"
michael@13 2293 echo "## -- startup transfer script for OpenPKG ${prefix} hierarchy"
michael@13 2294 echo "##"
michael@13 2295 echo ""
michael@13 2296 echo "[ ! -f ${prefix}/etc/rc ] && exit 0"
michael@13 2297 echo ""
michael@13 2298 echo ". /etc/rc.common"
michael@13 2299 echo ""
michael@13 2300 echo "if [ \"\${OPENPKG_${name}:=-NO-}\" = \"-YES-\" ]; then"
michael@13 2301 echo " ConsoleMessage \"OpenPKG ${prefix} hierarchy\""
michael@13 2302 echo " ${prefix}/etc/rc all start"
michael@13 2303 echo "fi"
michael@13 2304 ) >${darwin_rc_dir}/${name}
michael@13 2305 chmod 755 ${darwin_rc_dir}/${name}
michael@13 2306 fi
michael@13 2307 # install startup parameter list
michael@13 2308 if [ ! -f ${darwin_rc_dir}/StartupParameters.plist ]; then
michael@13 2309 rm -f ${darwin_rc_dir}/StartupParameters.plist >/dev/null 2>&1
michael@13 2310 ( echo "{"
michael@13 2311 echo " Description = \"OpenPKG ${prefix} hierarchy\";"
michael@13 2312 echo " Provides = (\"OpenPKG ${prefix}\");"
michael@13 2313 echo " Requires = (\"Disks\", \"Network Configuration\", \"Resolver\");"
michael@13 2314 echo " Uses = (\"Cron\");"
michael@13 2315 echo " OrderPreference = \"Last\";"
michael@13 2316 echo " Messages ="
michael@13 2317 echo " {"
michael@13 2318 echo " start = \"Starting OpenPKG ${prefix} hierarchy\";"
michael@13 2319 echo " stop = \"Stopping OpenPKG ${prefix} hierarchy\";"
michael@13 2320 echo " };"
michael@13 2321 echo "}"
michael@13 2322 ) >${darwin_rc_dir}/StartupParameters.plist
michael@13 2323 chmod 644 ${darwin_rc_dir}/StartupParameters.plist
michael@13 2324 fi
michael@13 2325 ;;
michael@13 2326 IRIX*/6.* )
michael@13 2327 if [ ! -f /etc/init.d/${name} ]; then
michael@13 2328 # install transfer script
michael@13 2329 ( echo "#!/bin/sh"
michael@13 2330 echo "##"
michael@13 2331 echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy"
michael@13 2332 echo "##"
michael@13 2333 echo ""
michael@13 2334 echo "[ ! -f ${prefix}/etc/rc ] && exit 0"
michael@13 2335 echo "case \$1 in"
michael@13 2336 echo " start ) exec ${prefix}/etc/rc all start ;;"
michael@13 2337 echo " stop ) exec ${prefix}/etc/rc all stop ;;"
michael@13 2338 echo "esac"
michael@13 2339 ) >/etc/init.d/${name}
michael@13 2340 chmod 755 /etc/init.d/${name}
michael@13 2341 # create corresponding links
michael@13 2342 ( cd /etc
michael@13 2343 ln -f init.d/${name} rc2.d/S99${name}
michael@13 2344 ln -f init.d/${name} rc0.d/K00${name}
michael@13 2345 ) || exit $?
michael@13 2346 fi
michael@13 2347 ;;
michael@13 2348 esac
michael@13 2349 fi
michael@13 2350
michael@13 2351 # create the cron transfer entries
michael@13 2352 if [ ".$cusr" != ".root" ]; then
michael@13 2353 echo "openpkg:WARNING: skipping creation of system cron hooks" 1>&2
michael@13 2354 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
michael@13 2355 else
michael@13 2356 case "$plid" in
michael@13 2357 FreeBSD/* | Linux/* | Darwin/* )
michael@13 2358 if [ -f /etc/slackware-version ]; then
michael@13 2359 exists=`crontab -l | grep "$prefix/etc/rc"`
michael@13 2360 if [ ".$exists" = . ]; then
michael@13 2361 EDITOR=/tmp/vipw.$$
michael@13 2362 VISUAL="$EDITOR"
michael@13 2363 export EDITOR
michael@13 2364 export VISUAL
michael@13 2365 ( echo "#!/bin/sh"
michael@13 2366 echo "( echo \"# <OpenPKG prefix=$prefix pkg=openpkg>\""
michael@13 2367 echo " echo \"# chronological tasks of ${prefix} OpenPKG hierarchy\""
michael@13 2368 echo " echo \"0 0 1 * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all monthly\""
michael@13 2369 echo " echo \"0 0 * * 0 [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all weekly\""
michael@13 2370 echo " echo \"0 0 * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all daily\""
michael@13 2371 echo " echo \"0 * * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all hourly\""
michael@13 2372 echo " echo \"0,15,30,45 * * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all quarterly\""
michael@13 2373 echo " echo \"# </OpenPKG>\""
michael@13 2374 echo ") >>\$1"
michael@13 2375 ) >$EDITOR
michael@13 2376 chmod a+x $EDITOR
michael@13 2377 ( PATH="$PATH:/usr/bin"; crontab -e ) || exit $?
michael@13 2378 rm -f $EDITOR
michael@13 2379 fi
michael@13 2380 else
michael@13 2381 exists=`grep "$prefix/etc/rc" /etc/crontab`
michael@13 2382 if [ ".$exists" = . ]; then
michael@13 2383 ( echo "# <OpenPKG prefix=$prefix pkg=openpkg>"
michael@13 2384 echo "# chronological tasks of ${prefix} OpenPKG hierarchy"
michael@13 2385 echo "0 0 1 * * root [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all monthly"
michael@13 2386 echo "0 0 * * 0 root [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all weekly"
michael@13 2387 echo "0 0 * * * root [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all daily"
michael@13 2388 echo "0 * * * * root [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all hourly"
michael@13 2389 echo "*/15 * * * * root [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all quarterly"
michael@13 2390 echo "# </OpenPKG>"
michael@13 2391 ) >>/etc/crontab
michael@13 2392 fi
michael@13 2393 fi
michael@13 2394 ;;
michael@13 2395 SunOS/5.* | OSF1/V5.* | NetBSD/* | HP-UX/* | UnixWare/* | AIX/* )
michael@13 2396 exists=`crontab -l | grep "$prefix/etc/rc"`
michael@13 2397 if [ ".$exists" = . ]; then
michael@13 2398 EDITOR=/tmp/vipw.$$
michael@13 2399 VISUAL="$EDITOR"
michael@13 2400 export EDITOR
michael@13 2401 export VISUAL
michael@13 2402 ( echo "#!/bin/sh"
michael@13 2403 echo "( echo \"# <OpenPKG prefix=$prefix pkg=openpkg>\""
michael@13 2404 echo " echo \"# chronological tasks of ${prefix} OpenPKG hierarchy\""
michael@13 2405 echo " echo \"0 0 1 * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all monthly\""
michael@13 2406 echo " echo \"0 0 * * 0 [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all weekly\""
michael@13 2407 echo " echo \"0 0 * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all daily\""
michael@13 2408 echo " echo \"0 * * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all hourly\""
michael@13 2409 echo " echo \"0,15,30,45 * * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all quarterly\""
michael@13 2410 echo " echo \"# </OpenPKG>\""
michael@13 2411 echo ") >>\$1"
michael@13 2412 ) >$EDITOR
michael@13 2413 chmod a+x $EDITOR
michael@13 2414 ( PATH="$PATH:/usr/bin"; crontab -e ) || exit $?
michael@13 2415 rm -f $EDITOR
michael@13 2416 fi
michael@13 2417 ;;
michael@13 2418 IRIX*/6.* )
michael@13 2419 exists=`crontab -l | grep "$prefix/etc/rc"`
michael@13 2420 if [ ".$exists" = . ]; then
michael@13 2421 ( crontab -l
michael@13 2422 echo "# <OpenPKG prefix=$prefix pkg=openpkg>"
michael@13 2423 echo "# chronological tasks of ${prefix} OpenPKG hierarchy"
michael@13 2424 echo "0 0 1 * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all monthly"
michael@13 2425 echo "0 0 * * 0 [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all weekly"
michael@13 2426 echo "0 0 * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all daily"
michael@13 2427 echo "0 * * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all hourly"
michael@13 2428 echo "0,15,30,45 * * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all quarterly"
michael@13 2429 echo "# </OpenPKG>"
michael@13 2430 ) | /usr/bin/crontab || exit $?
michael@13 2431 fi
michael@13 2432 ;;
michael@13 2433 esac
michael@13 2434 fi
michael@13 2435
michael@13 2436 # remember what OpenPKG RPM version was installed, so we can
michael@13 2437 # correctly upgrade the RPM database in the %post section (see below).
michael@13 2438 if [ -d ${prefix}/RPM/DB ]; then
michael@13 2439 if [ -x "${prefix}/bin/openpkg" -a -x "${prefix}/libexec/openpkg/rpm" ]; then
michael@13 2440 # OpenPKG 2.0
michael@13 2441 rpm="${prefix}/bin/openpkg rpm"
michael@13 2442 else
michael@13 2443 # OpenPKG 1.x
michael@13 2444 rpm="${prefix}/bin/rpm"
michael@13 2445 fi
michael@13 2446 rm -f ${prefix}/RPM/DB/.version >/dev/null 2>&1 || true
michael@13 2447 $rpm --version |\
michael@13 2448 sed -e 's;^;X;' \
michael@13 2449 -e 's;^X[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$;\1;' \
michael@13 2450 -e 's;^X[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$;\1;' \
michael@13 2451 -e 's;^X.*$;4.0;' \
michael@13 2452 >${prefix}/RPM/DB/.version
michael@13 2453 fi
michael@13 2454
michael@13 2455 %post
michael@13 2456 # optional post-processing from "pre" section
michael@13 2457 if [ -f %{l_prefix}.pre-post-process.sh ]; then
michael@13 2458 sh %{l_prefix}.pre-post-process.sh
michael@13 2459 rm -f %{l_prefix}.pre-post-process.sh
michael@13 2460 fi
michael@13 2461
michael@13 2462 # update or initially create OpenPKG UUID configuration
michael@13 2463 %{l_prefix}/bin/openpkg uuid update >/dev/null 2>&1 || true
michael@13 2464
michael@13 2465 # determine new and old OpenPKG RPM version
michael@13 2466 V_rpm_new="%{V_rpm}"
michael@13 2467 if [ -f %{l_prefix}/RPM/DB/.version ]; then
michael@13 2468 V_rpm_old="`cat %{l_prefix}/RPM/DB/.version`"
michael@13 2469 rm -f %{l_prefix}/RPM/DB/.version >/dev/null 2>&1 || true
michael@13 2470 else
michael@13 2471 V_rpm_old="4.0"
michael@13 2472 fi
michael@13 2473
michael@13 2474 # make sure all RPM database files are present and that their
michael@13 2475 # attributes are correct, etc. This is not a database rebuild
michael@13 2476 # operation, so this is fully harmless and can be done always.
michael@13 2477 %{l_prefix}/lib/openpkg/rpmdb --quiet --fixate
michael@13 2478
michael@13 2479 # check RPM database for upgrade requirements
michael@13 2480 if [ ".$1" = .2 -a ".$V_rpm_old" != ".$V_rpm_new" ]; then
michael@13 2481 # RPM 4.0/4.1 does not allow concurrent database access, so we
michael@13 2482 # cannot upgrade the database immediately from here (because
michael@13 2483 # we are still running within the execution context of the
michael@13 2484 # old RPM which in turn has the database locked) and instead
michael@13 2485 # have to just drop a note to the administrator about database
michael@13 2486 # upgrading. RPM 4.2 in general allows concurrent database
michael@13 2487 # access, but the whole stuff is too risky here, too.
michael@13 2488 ( echo "You are upgrading the OpenPKG bootstrap from a previous"
michael@13 2489 echo "RPM $V_rpm_old based version to this RPM $V_rpm_new based"
michael@13 2490 echo "version. The RPM database in %{l_prefix}/RPM/DB/ can still"
michael@13 2491 echo "be used, but it is strongly recommended to upgrade it as"
michael@13 2492 echo "soon as possible to the latest Berkeley-DB format files by"
michael@13 2493 echo "executing the command:"
michael@13 2494 echo " \$ %{l_prefix}/bin/openpkg rpm --db-rebuild"
michael@13 2495 echo "In case of problems with the RPM database you can always"
michael@13 2496 echo "execute the command:"
michael@13 2497 echo " \$ %{l_prefix}/bin/openpkg rpm --db-cleanup"
michael@13 2498 ) | %{l_prefix}/lib/openpkg/rpmtool msg -b -t warn
michael@13 2499 fi
michael@13 2500
michael@13 2501 # system command overriding support
michael@13 2502 # ATTENTION: THIS BETTER SHOULD BE REPLACED WITH A MORE GENERIC
michael@13 2503 # BUILD COMMAND OVERRIDE SOLUTION!
michael@13 2504 if [ ! -d %{l_prefix}/lib/openpkg/override ]; then
michael@13 2505 mkdir %{l_prefix}/lib/openpkg/override >/dev/null 2>&1 || true
michael@13 2506 fi
michael@13 2507 chown %{l_musr}:%{l_mgrp} %{l_prefix}/lib/openpkg/override >/dev/null 2>&1 || true
michael@13 2508 case "`cat %{l_prefix}/etc/openpkg/platform`" in
michael@13 2509 *-*-debian* | *-*-ubuntu* )
michael@13 2510 # FIXME: Evil hack to workaround build problems under Debian
michael@13 2511 # (at least 3.1) (and similar platforms) where a Debian
michael@13 2512 # install-info(8) exists which is both API and functionally
michael@13 2513 # incompatible to the de-facto standardized install-info(8)
michael@13 2514 # command from GNU Texinfo.
michael@13 2515 if [ ! -f %{l_prefix}/lib/openpkg/override/install-info ]; then
michael@13 2516 ( echo "#!/bin/sh"
michael@13 2517 echo "echo 'OpenPKG: NOTICE: install-info(8) command execution overridden'"
michael@13 2518 echo "exit 0"
michael@13 2519 ) >%{l_prefix}/lib/openpkg/override/install-info
michael@13 2520 chmod 775 %{l_prefix}/lib/openpkg/override/install-info
michael@13 2521 fi
michael@13 2522 ;;
michael@13 2523 *-*-macosx* | *-*-darwin* )
michael@13 2524 # FIXME: Evil hack to workaround the fact that Mac OS X'
michael@13 2525 # linker by default prefers the /usr/lib libraries and does
michael@13 2526 # not honor the -L options the way one would expect it.
michael@13 2527 gcc="`%{l_prefix}/lib/openpkg/shtool path gcc`"
michael@13 2528 cc="`%{l_prefix}/lib/openpkg/shtool path cc`"
michael@13 2529 ld="`%{l_prefix}/lib/openpkg/shtool path ld`"
michael@13 2530 if [ ".$gcc" != . -a ! -f %{l_prefix}/lib/openpkg/override/gcc ]; then
michael@13 2531 ( echo "#!/bin/sh"
michael@13 2532 echo "case \" \$* \" in"
michael@13 2533 echo " *\" -c \"* | *\" -E \"* ) exec $gcc \"\$@\" ;;"
michael@13 2534 echo " * ) exec $gcc -Wl,-search_paths_first \"\$@\" ;;"
michael@13 2535 echo "esac"
michael@13 2536 ) >%{l_prefix}/lib/openpkg/override/gcc
michael@13 2537 chmod 775 %{l_prefix}/lib/openpkg/override/gcc
michael@13 2538 fi
michael@13 2539 if [ ".$cc" != . -a ! -f %{l_prefix}/lib/openpkg/override/cc ]; then
michael@13 2540 ( echo "#!/bin/sh"
michael@13 2541 echo "case \" \$* \" in"
michael@13 2542 echo " *\" -c \"* | *\" -E \"* ) exec $gcc \"\$@\" ;;"
michael@13 2543 echo " * ) exec $cc -Wl,-search_paths_first \"\$@\" ;;"
michael@13 2544 echo "esac"
michael@13 2545 ) >%{l_prefix}/lib/openpkg/override/cc
michael@13 2546 chmod 775 %{l_prefix}/lib/openpkg/override/cc
michael@13 2547 fi
michael@13 2548 if [ ".$ld" != . -a ! -f %{l_prefix}/lib/openpkg/override/ld ]; then
michael@13 2549 ( echo "#!/bin/sh"
michael@13 2550 echo "exec $ld -search_paths_first \"\$@\""
michael@13 2551 ) >%{l_prefix}/lib/openpkg/override/ld
michael@13 2552 chmod 775 %{l_prefix}/lib/openpkg/override/ld
michael@13 2553 fi
michael@13 2554 ;;
michael@13 2555 esac
michael@13 2556
michael@13 2557 # FIXME: hack to workaround problems in environments with too few
michael@13 2558 # development tools. ATTENTION: see one paragraph above.
michael@13 2559 if [ ! -d %{l_prefix}/lib/openpkg/fallback ]; then
michael@13 2560 mkdir %{l_prefix}/lib/openpkg/fallback >/dev/null 2>&1 || true
michael@13 2561 fi
michael@13 2562 chown %{l_musr}:%{l_mgrp} %{l_prefix}/lib/openpkg/fallback >/dev/null 2>&1 || true
michael@13 2563
michael@13 2564 # check for "openpkg" executable from the OpenPKG Community series
michael@13 2565 # print license if not OSS, otherwise register with openpkg.org
michael@13 2566 community_version=`%{l_prefix}/bin/openpkg --license 2>/dev/null | \
michael@13 2567 sed -e 'q' | egrep '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*-C'`
michael@13 2568 if [ ".$community_version" = . ]; then
michael@13 2569 ( echo ""
michael@13 2570 echo "NOTICE: This OpenPKG bootstrap package is based on an \"openpkg\""
michael@13 2571 echo "executable which is covered by the following terms of use:"
michael@13 2572 echo "______________________________________________________________________________"
michael@13 2573 echo ""
michael@13 2574 %{l_prefix}/bin/openpkg --license | sed -e '1d'
michael@13 2575 ) | %{l_prefix}/lib/openpkg/rpmtool msg -b -t notice
michael@13 2576 else
michael@13 2577 %{l_prefix}/bin/openpkg register </dev/null >/dev/null 2>&1 || true
michael@13 2578 fi
michael@13 2579
michael@13 2580 %preun
michael@13 2581 [ ".$1" != .0 ] && exit 0
michael@13 2582
michael@13 2583 # remove override files
michael@13 2584 if [ -d %{l_prefix}/lib/openpkg/override ]; then
michael@13 2585 rm -rf %{l_prefix}/lib/openpkg/override >/dev/null 2>&1 || true
michael@13 2586 fi
michael@13 2587
michael@13 2588 # remove fallback files
michael@13 2589 if [ -d %{l_prefix}/lib/openpkg/fallback ]; then
michael@13 2590 rm -rf %{l_prefix}/lib/openpkg/fallback >/dev/null 2>&1 || true
michael@13 2591 fi
michael@13 2592
michael@13 2593 # remove files which are not RPM controlled
michael@13 2594 rm -rf %{l_prefix}/RPM/TMP/* %{l_prefix}/RPM/TMP/.[a-z]* >/dev/null 2>&1 || true
michael@13 2595 rm -rf %{l_prefix}/RPM/SRC/* %{l_prefix}/RPM/SRC/.[a-z]* >/dev/null 2>&1 || true
michael@13 2596 rm -rf %{l_prefix}/RPM/PKG/* %{l_prefix}/RPM/PKG/.[a-z]* >/dev/null 2>&1 || true
michael@13 2597 rm -rf %{l_prefix}/RPM/DB/* %{l_prefix}/RPM/DB/.[a-z]* >/dev/null 2>&1 || true
michael@13 2598
michael@13 2599 # The following code usually would be done in a %postun section.
michael@13 2600 # But because we already had to remove the database in this %preun
michael@13 2601 # section (see the 'rm' commands above) in order to make RPM happy
michael@13 2602 # inside its own removal procedure, RPM would no longer find the
michael@13 2603 # %postun script (because it's recorded in the database files). So
michael@13 2604 # we have to perform the procedure already in this %preun script.
michael@13 2605 # except for the removal of the top-level directory it does not
michael@13 2606 # matter. But the top-level directory can only be removed after
michael@13 2607 # the RPM removal procedure took place, so we play a little delay
michael@13 2608 # trick below.
michael@13 2609
michael@13 2610 # determine current user
michael@13 2611 cusr=`(id -un) 2>/dev/null ||\
michael@13 2612 (id | sed -e 's;^[^(]*(\([^)]*\)).*;\1;') 2>/dev/null ||\
michael@13 2613 (whoami) 2>/dev/null ||\
michael@13 2614 (who am i | cut "-d " -f1) 2>/dev/null ||\
michael@13 2615 echo $LOGNAME`
michael@13 2616
michael@13 2617 # determine runtime details (for both inside and outside RPM!!)
michael@13 2618 user="%{l_musr}"
michael@13 2619 group="%{l_mgrp}"
michael@13 2620 prefix="%{l_prefix}"
michael@13 2621 prefix=`echo "$prefix" | sed -e 's;//*;/;g' -e 's;/$;;'`
michael@13 2622
michael@13 2623 # determine platform id
michael@13 2624 s=`(uname -s) 2>/dev/null` || s='Unknown'
michael@13 2625 r=`(uname -r) 2>/dev/null` || r='0.0'
michael@13 2626 plid="${s}/${r}"
michael@13 2627
michael@13 2628 # unregister instance in presence file
michael@13 2629 presence="/etc/openpkg"
michael@13 2630 exists=`cat $presence 2>/dev/null | egrep "^ *${prefix} *\$"`
michael@13 2631 if [ ".$exists" != . ]; then
michael@13 2632 if [ ".$cusr" != ".root" ]; then
michael@13 2633 echo "openpkg:WARNING: skipping unregistering of $prefix in $presence" 1>&2
michael@13 2634 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
michael@13 2635 else
michael@13 2636 cp $presence $presence.bak && \
michael@13 2637 egrep -v "^ *${prefix} *\$" $presence.bak >$presence
michael@13 2638 rm -f $presence.bak >/dev/null 2>&1
michael@13 2639 if [ ".`cat $presence`" = . ]; then
michael@13 2640 rm -f $presence >/dev/null 2>&1
michael@13 2641 fi
michael@13 2642 fi
michael@13 2643 fi
michael@13 2644
michael@13 2645 # remove entry in /etc/shells
michael@13 2646 shell="${prefix}/lib/openpkg/bash"
michael@13 2647 exists=`cat /etc/shells 2>/dev/null | grep "^$shell"`
michael@13 2648 if [ ".$exists" != . ]; then
michael@13 2649 if [ ".$cusr" != ".root" ]; then
michael@13 2650 echo "openpkg:WARNING: skipping deletion of $shell from /etc/shells" 1>&2
michael@13 2651 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
michael@13 2652 else
michael@13 2653 cp /etc/shells /etc/shells.bak && \
michael@13 2654 grep -v "^${shell}" /etc/shells.bak >/etc/shells
michael@13 2655 rm -f /etc/shells.bak >/dev/null 2>&1
michael@13 2656 fi
michael@13 2657 fi
michael@13 2658
michael@13 2659 # remove the hierarchy user/group
michael@13 2660 for req in "super-user:%{l_susr}:%{l_suid}:%{l_sgrp}:%{l_sgid}" \
michael@13 2661 "management:%{l_musr}:%{l_muid}:%{l_mgrp}:%{l_mgid}" \
michael@13 2662 "restricted:%{l_rusr}:%{l_ruid}:%{l_rgrp}:%{l_rgid}" \
michael@13 2663 "non-privileged:%{l_nusr}:%{l_nuid}:%{l_ngrp}:%{l_ngid}"; do
michael@13 2664 # split request into class/usr/uid/grp/gid
michael@13 2665 OIFS="$IFS"; IFS=":"; set -- $req; IFS="$OIFS"
michael@13 2666 class="$1"; usr="$2"; uid="$3"; grp="$4"; gid="$5"
michael@13 2667
michael@13 2668 # check whether user already exists
michael@13 2669 exists=`(getent passwd "$usr"; \
michael@13 2670 grep "^$usr:" /etc/passwd; \
michael@13 2671 ypmatch "$usr" passwd; \
michael@13 2672 nismatch "$usr" passwd; \
michael@13 2673 nidump passwd . | grep "^$usr:") 2>/dev/null | \
michael@13 2674 sed -e 'q'`
michael@13 2675 if [ ".$exists" != . ]; then
michael@13 2676 if [ ".$cusr" != ".root" ]; then
michael@13 2677 echo "openpkg:WARNING: skipping deletion of OpenPKG $class user $usr" 1>&2
michael@13 2678 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
michael@13 2679 elif [ ".$usr" = ".root" ]; then
michael@13 2680 echo "openpkg:WARNING: skipping deletion of OpenPKG $class user $usr" 1>&2
michael@13 2681 echo "openpkg:WARNING: (would remove system standard user)" 1>&2
michael@13 2682 else
michael@13 2683 case "$plid" in
michael@13 2684 FreeBSD/* | NetBSD/* )
michael@13 2685 cp /etc/master.passwd /etc/master.passwd.bak && \
michael@13 2686 grep -v "^${usr}:" /etc/master.passwd.bak >/etc/master.passwd
michael@13 2687 ( PATH="$PATH:/usr/sbin"; pwd_mkdb -p /etc/master.passwd ) || exit $?
michael@13 2688 rm -f /etc/master.passwd.bak >/dev/null 2>&1
michael@13 2689 ;;
michael@13 2690 Linux/* | SunOS/5.* | UnixWare/* )
michael@13 2691 cp /etc/passwd /etc/passwd.bak && \
michael@13 2692 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
michael@13 2693 ( PATH="$PATH:/usr/sbin"; pwconv ) || exit $?
michael@13 2694 rm -f /etc/passwd.bak >/dev/null 2>&1
michael@13 2695 ;;
michael@13 2696 AIX/* )
michael@13 2697 rmuser -p "${usr}"
michael@13 2698 cp /etc/security/login.cfg /etc/security/login.cfg.bak && \
michael@13 2699 sed -e "/^usw:/,/^[^ ]/s;\\( *shells =.*\\),$shell\\(.*\\)\$;\\1\\2;" \
michael@13 2700 </etc/security/login.cfg.bak >/etc/security/login.cfg && \
michael@13 2701 rm -f /etc/security/login.cfg.bak >/dev/null 2>&1
michael@13 2702 ;;
michael@13 2703 OSF1/V5.* )
michael@13 2704 cp /etc/passwd /etc/passwd.bak && \
michael@13 2705 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
michael@13 2706 ( PATH="$PATH:/usr/sbin"; mkpasswd /etc/passwd ) || exit $?
michael@13 2707 rm -f /etc/passwd.bak >/dev/null 2>&1
michael@13 2708 ;;
michael@13 2709 HP-UX/* )
michael@13 2710 cp /etc/passwd /etc/passwd.bak && \
michael@13 2711 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
michael@13 2712 rm -f /etc/passwd.bak >/dev/null 2>&1
michael@13 2713 ;;
michael@13 2714 Darwin/* )
michael@13 2715 niutil -destroy . "/users/${usr}"
michael@13 2716 ;;
michael@13 2717 IRIX*/6.* )
michael@13 2718 cp /etc/passwd /etc/passwd.bak && \
michael@13 2719 grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd
michael@13 2720 if [ -f /etc/shadow ]
michael@13 2721 then ( PATH="$PATH:/usr/sbin"; pwconv ) || exit $?
michael@13 2722 fi
michael@13 2723 rm -f /etc/passwd.bak >/dev/null 2>&1
michael@13 2724 ;;
michael@13 2725 esac
michael@13 2726 fi
michael@13 2727 fi
michael@13 2728
michael@13 2729 # check whether group already exists
michael@13 2730 exists=`(getent group "$grp"; \
michael@13 2731 grep "^$grp:" /etc/group; \
michael@13 2732 ypmatch "$grp" group; \
michael@13 2733 nismatch "$grp" group; \
michael@13 2734 nidump group . | grep "^$grp:") 2>/dev/null | \
michael@13 2735 sed -e 'q'`
michael@13 2736 if [ ".$exists" != . ]; then
michael@13 2737 if [ ".$cusr" != ".root" ]; then
michael@13 2738 echo "openpkg:WARNING: skipping deletion of OpenPKG $class group $grp" 1>&2
michael@13 2739 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
michael@13 2740 elif [ ".$usr" = ".root" ] || [ ".$grp" = ".root" ] || [ ".$grp" = ".wheel" ]; then
michael@13 2741 echo "openpkg:WARNING: skipping deletion of OpenPKG $class group $grp" 1>&2
michael@13 2742 echo "openpkg:WARNING: (would remove system standard group)" 1>&2
michael@13 2743 else
michael@13 2744 case "$plid" in
michael@13 2745 Darwin/* )
michael@13 2746 niutil -destroy . "/groups/${grp}"
michael@13 2747 ;;
michael@13 2748 AIX/* )
michael@13 2749 rmgroup "${grp}"
michael@13 2750 ;;
michael@13 2751 * )
michael@13 2752 cp /etc/group /etc/group.bak && \
michael@13 2753 grep -v "^${grp}:" /etc/group.bak >/etc/group
michael@13 2754 rm -f /etc/group.bak >/dev/null 2>&1
michael@13 2755 ;;
michael@13 2756 esac
michael@13 2757 fi
michael@13 2758 fi
michael@13 2759 done
michael@13 2760
michael@13 2761 # invalidate passwd and group tables from Name Service Cache Daemon to
michael@13 2762 # ensure chown/chgrp works immediately after pwconv on Linux and Solaris
michael@13 2763 if [ -x /usr/sbin/nscd ]; then
michael@13 2764 /usr/sbin/nscd -i passwd >/dev/null 2>&1 || true
michael@13 2765 /usr/sbin/nscd -i group >/dev/null 2>&1 || true
michael@13 2766 fi
michael@13 2767
michael@13 2768 # remove the startup/shutdown transfer scripts
michael@13 2769 name=`echo "$prefix" | sed -e 's;/;;g'`
michael@13 2770 if [ ".$cusr" != ".root" ]; then
michael@13 2771 echo "openpkg:WARNING: skipping deletion of system run-command hooks" 1>&2
michael@13 2772 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
michael@13 2773 else
michael@13 2774 case "$plid" in
michael@13 2775 FreeBSD/* )
michael@13 2776 rm -f /etc/rc.d/openpkg-${name} >/dev/null 2>&1
michael@13 2777 ;;
michael@13 2778 NetBSD/* )
michael@13 2779 rm -f /etc/rc.d/${name} >/dev/null 2>&1
michael@13 2780 ;;
michael@13 2781 Linux/* )
michael@13 2782 if [ -f /etc/gentoo-release ]; then
michael@13 2783 /sbin/rc-update del openpkg-${name} >/dev/null 2>&1
michael@13 2784 rm -f /etc/init.d/openpkg-${name} >/dev/null 2>&1
michael@13 2785 else
michael@13 2786 # sroot: script root directory
michael@13 2787 # lroot: link root directory
michael@13 2788 if [ -f /etc/debian_version ]; then
michael@13 2789 sroot=/etc/init.d
michael@13 2790 lroot=/etc/rc%d.d
michael@13 2791 elif [ -f /etc/redhat-release -o -f /etc/mandrake-release ]; then
michael@13 2792 sroot=/etc/rc.d/init.d
michael@13 2793 lroot=/etc/rc.d/rc%d.d
michael@13 2794 elif [ -f /etc/SuSE-release ]; then
michael@13 2795 sroot=/etc/init.d
michael@13 2796 lroot=/etc/init.d/rc%d.d
michael@13 2797 elif [ -f /etc/slackware-version ]; then
michael@13 2798 sroot=/etc/rc.d
michael@13 2799 lroot=/etc/rc.d/rc%d.d
michael@13 2800 name="rc.${name}"
michael@13 2801 else
michael@13 2802 echo "WARNING: you are not running one of the supported standard" 1>&2
michael@13 2803 echo "WARNING: Linux platforms (Debian, RedHat, Mandrake, SuSE, Gentoo)." 1>&2
michael@13 2804 echo "WARNING: Guessing the location of the system init scripts!" 1>&2
michael@13 2805 sroot=""
michael@13 2806 lroot=""
michael@13 2807 for sr in /etc/rc.d/init.d /etc/init.d /sbin/init.d; do
michael@13 2808 if [ -d $sr ]; then
michael@13 2809 sroot="$sr"
michael@13 2810 break
michael@13 2811 fi
michael@13 2812 done
michael@13 2813 for lr in /etc/rc.d/rc2.d /etc/rc2.d /sbin/init.d/rc2.d; do
michael@13 2814 if [ -d $lr ]; then
michael@13 2815 lroot="`echo $lr | sed -e 's;2;%d;'`"
michael@13 2816 break
michael@13 2817 fi
michael@13 2818 done
michael@13 2819 if [ ".$sroot" = . -o ".$lroot" = . ]; then
michael@13 2820 echo "ERROR: Failed to guess the location of the system init scripts!" 1>&2
michael@13 2821 exit 1
michael@13 2822 fi
michael@13 2823 fi
michael@13 2824 rm -f ${sroot}/${name} >/dev/null 2>&1
michael@13 2825 for i in 2 3 4 5; do
michael@13 2826 rm -f `echo $lroot | sed -e "s;%d;$i;"`/S99${name} >/dev/null 2>&1
michael@13 2827 done
michael@13 2828 for i in 0 1 6; do
michael@13 2829 rm -f `echo $lroot | sed -e "s;%d;$i;"`/K00${name} >/dev/null 2>&1
michael@13 2830 done
michael@13 2831 if [ -f /etc/slackware-version ]; then
michael@13 2832 for i in 0 1 2 3 4 5 6; do
michael@13 2833 l=`echo $lroot | sed -e "s;%d;$i;"`
michael@13 2834 if [ -d $l ]; then
michael@13 2835 rmdir $l >/dev/null 2>&1 || true
michael@13 2836 fi
michael@13 2837 done
michael@13 2838 fi
michael@13 2839 fi
michael@13 2840 ;;
michael@329 2841 SunOS/5.1* )
michael@329 2842 /usr/sbin/svcadm disable "svc:/openpkg/${name}:default"; sleep 2
michael@329 2843 /usr/sbin/svccfg delete -f "svc:/openpkg/${name}:default" >/dev/null 2>&1 || true
michael@329 2844 rm -f /var/svc/manifest/openpkg/${name}.xml >/dev/null 2>&1
michael@329 2845 rmdir /var/svc/manifest/openpkg >/dev/null 2>&1 || true
michael@329 2846 ;;
michael@13 2847 SunOS/5.* )
michael@13 2848 rm -f /etc/init.d/${name} >/dev/null 2>&1
michael@13 2849 rm -f /etc/rc3.d/S99${name} >/dev/null 2>&1
michael@13 2850 rm -f /etc/rc0.d/K00${name} >/dev/null 2>&1
michael@13 2851 rm -f /etc/rc1.d/K00${name} >/dev/null 2>&1
michael@13 2852 ;;
michael@13 2853 UnixWare/* )
michael@13 2854 rm -f /etc/init.d/${name} >/dev/null 2>&1
michael@13 2855 rm -f /etc/rc2.d/S99${name} >/dev/null 2>&1
michael@13 2856 rm -f /etc/rc0.d/K00${name} >/dev/null 2>&1
michael@13 2857 rm -f /etc/rc1.d/K00${name} >/dev/null 2>&1
michael@13 2858 ;;
michael@13 2859 AIX/* )
michael@13 2860 rm -f /etc/rc.d/init.d/${name} >/dev/null 2>&1
michael@13 2861 rm -f /etc/rc.d/rc2.d/S99${name} >/dev/null 2>&1
michael@13 2862 ;;
michael@13 2863 OSF1/V5.* )
michael@13 2864 rm -f /sbin/init.d/${name} >/dev/null 2>&1
michael@13 2865 rm -f /sbin/rc3.d/S99${name} >/dev/null 2>&1
michael@13 2866 rm -f /sbin/rc0.d/K00${name} >/dev/null 2>&1
michael@13 2867 ;;
michael@13 2868 HP-UX/* )
michael@13 2869 rm -f /sbin/init.d/${name} >/dev/null 2>&1
michael@13 2870 rm -f /etc/rc2.d/S900${name} >/dev/null 2>&1
michael@13 2871 rm -f /etc/rc1.d/K100${name} >/dev/null 2>&1
michael@13 2872 ;;
michael@13 2873 Darwin/* )
michael@13 2874 cp /etc/hostconfig /etc/hostconfig.bak && \
michael@13 2875 grep -v "^OPENPKG_${name}=" /etc/hostconfig.bak >/etc/hostconfig
michael@13 2876 rm -f /etc/hostconfig.bak >/dev/null 2>&1
michael@13 2877 rm -rf /System/Library/StartupItems/${name} >/dev/null 2>&1
michael@13 2878 ;;
michael@13 2879 IRIX*/6.* )
michael@13 2880 rm -f /etc/init.d/${name} >/dev/null 2>&1
michael@13 2881 rm -f /etc/rc2.d/S99${name} >/dev/null 2>&1
michael@13 2882 rm -f /etc/rc0.d/K00${name} >/dev/null 2>&1
michael@13 2883 ;;
michael@13 2884 esac
michael@13 2885 fi
michael@13 2886
michael@13 2887 # remove the cron transfer entries
michael@13 2888 if [ ".$cusr" != ".root" ]; then
michael@13 2889 echo "openpkg:WARNING: skipping deletion of system cron hooks" 1>&2
michael@13 2890 echo "openpkg:WARNING: (would require root-privileges)" 1>&2
michael@13 2891 else
michael@13 2892 case "$plid" in
michael@13 2893 FreeBSD/* | Linux/* | Darwin/* )
michael@13 2894 if [ -f /etc/slackware-version ]; then
michael@13 2895 EDITOR=/tmp/vipw.$$
michael@13 2896 VISUAL="$EDITOR"
michael@13 2897 export EDITOR
michael@13 2898 export VISUAL
michael@13 2899 p=`echo $prefix | sed -e 's;/;\\\\\\\\/;g'`
michael@13 2900 ( echo "cp \$1 \$1.bak"
michael@13 2901 echo "cat \$1.bak | sed -e \"/<OpenPKG prefix=$p pkg=openpkg>/,/<\\\\/OpenPKG>/d\" >\$1"
michael@13 2902 echo "rm -f \$1.bak"
michael@13 2903 ) >$EDITOR
michael@13 2904 chmod a+x $EDITOR
michael@13 2905 ( PATH="$PATH:/usr/bin"; crontab -e ) || exit $?
michael@13 2906 rm -f $EDITOR
michael@13 2907 else
michael@13 2908 exists=`grep "<OpenPKG prefix=$prefix pkg=openpkg>" /etc/crontab`
michael@13 2909 if [ ".$exists" != . ]; then
michael@13 2910 p=`echo $prefix | sed -e 's;/;\\\\/;g'`
michael@13 2911 cp /etc/crontab /etc/crontab.bak
michael@13 2912 cat /etc/crontab.bak |\
michael@13 2913 sed -e "/<OpenPKG prefix=$p pkg=openpkg>/,/<\\/OpenPKG>/d" \
michael@13 2914 >/etc/crontab
michael@13 2915 rm -f /etc/crontab.bak >/dev/null 2>&1
michael@13 2916 fi
michael@13 2917 fi
michael@13 2918 ;;
michael@13 2919 SunOS/5.* | OSF1/V5.* | NetBSD/* | HP-UX/* | UnixWare/* | AIX/* )
michael@13 2920 EDITOR=/tmp/vipw.$$
michael@13 2921 VISUAL="$EDITOR"
michael@13 2922 export EDITOR
michael@13 2923 export VISUAL
michael@13 2924 p=`echo $prefix | sed -e 's;/;\\\\\\\\/;g'`
michael@13 2925 ( echo "cp \$1 \$1.bak"
michael@13 2926 echo "cat \$1.bak | sed -e \"/<OpenPKG prefix=$p pkg=openpkg>/,/<\\\\/OpenPKG>/d\" >\$1"
michael@13 2927 echo "rm -f \$1.bak"
michael@13 2928 ) >$EDITOR
michael@13 2929 chmod a+x $EDITOR
michael@13 2930 ( PATH="$PATH:/usr/bin"; crontab -e ) || exit $?
michael@13 2931 rm -f $EDITOR
michael@13 2932 ;;
michael@13 2933 IRIX*/6.* )
michael@13 2934 p=`echo $prefix | sed -e 's;/;\\\\\\/;g'`
michael@13 2935 ( crontab -l |
michael@13 2936 sed -e "/<OpenPKG prefix=$p pkg=openpkg>/,/<\/OpenPKG>/d"
michael@13 2937 ) | /usr/bin/crontab || exit $?
michael@13 2938 ;;
michael@13 2939 esac
michael@13 2940 fi
michael@13 2941
michael@13 2942 # delayed removal of top-level directory.
michael@13 2943 ( sleep 2
michael@13 2944 rm -rf %{l_prefix}/RPM/DB/* %{l_prefix}/RPM/DB/.[a-z]* >/dev/null 2>&1 || true
michael@13 2945 rmdir %{l_prefix}/RPM/DB >/dev/null 2>&1 || true
michael@13 2946 rmdir %{l_prefix}/RPM >/dev/null 2>&1 || true
michael@13 2947 rmdir %{l_prefix} >/dev/null 2>&1 || true
michael@13 2948 ) </dev/null >/dev/null 2>/dev/null &
michael@13 2949

mercurial