openpkg/openpkg.spec

Fri, 15 Oct 2010 18:46:25 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 15 Oct 2010 18:46:25 +0200
changeset 261
4f973c756446
parent 250
bda4f5eec616
child 303
2bd9bf3f6f03
permissions
-rw-r--r--

Update copyright, file server URL, modify doc and link logic.
Now documentation is installed by default to the correct path,
and QtCreator links against Qt shared libraries instead of Qt
static libraries. This unfortunate change supports Nokia's
unfortunate decision to poorly support static linking in Qt.

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

mercurial