openpkg/openpkg.spec

Wed, 21 Sep 2011 13:51:49 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 21 Sep 2011 13:51:49 +0200
changeset 373
b8e8f9dbbfd3
parent 345
b7180006bcf1
child 427
71503088f51b
permissions
-rw-r--r--

Update version and integrate setuid logic from upstream package vendor.

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

mercurial