openpkg/openpkg.spec

Mon, 28 Mar 2011 19:41:02 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Mon, 28 Mar 2011 19:41:02 +0200
changeset 332
2289d64c2123
parent 303
2bd9bf3f6f03
child 333
4ecfc2416fd8
permissions
-rw-r--r--

Completely rework package including...
Simpify 64-bit -fPIC logic, instruct make to build in parallel,
force error condition on failed profile dependency, build the
standard 'bootstrap' target as suggested, correct grammar, wording,
and punctuation in general, upgrade to latest upstream vendor version,
rearrange package dependencies mpc, mpfr, and gmp, correct buildconf
thanks to new lto-plugin forced, avoid failed platform specific stage
comparison, adjust patch code to reflect new version update, and most
importantly adjust optimization flags to platform. Please note that
block 'correct hardcoded paths' is likely no yet complete.

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

mercurial