openpkg/openpkg.spec

Mon, 20 Apr 2009 19:22:00 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Mon, 20 Apr 2009 19:22:00 +0200
changeset 178
0ba300bdf30a
parent 13
cb59d6afeb61
child 250
bda4f5eec616
permissions
-rw-r--r--

Change unfortunate but partly useful overreaching security tradeoff.
The principle of allocating each running process an individual system
user and group can have security benefits, however maintining a plethora
of users, groups, processes, file modes, file permissions, and even
nonportable file ACLs on a host serving from a hundred processes has
some security disadvantages. This tradeoff is even worse for systems
like OpenPKG which benefit from administration transparency through the
use of minimal system intrusion and only three usage privilege levels.

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

mercurial