diff -r 71503088f51b -r f880f219c566 openpkg/openpkg.spec --- a/openpkg/openpkg.spec Tue Jul 31 12:12:54 2012 +0200 +++ b/openpkg/openpkg.spec Tue Jul 31 12:23:42 2012 +0200 @@ -1,14 +1,13 @@ ## ## openpkg.spec -- OpenPKG RPM Package Specification -## Copyright (c) 2000-2007 OpenPKG Foundation e.V. -## Copyright (c) 2000-2007 Ralf S. Engelschall +## Copyright (c) 2000-2012 OpenPKG GmbH ## -## Permission to use, copy, modify, and distribute this software for -## any purpose with or without fee is hereby granted, provided that -## the above copyright notice and this permission notice appear in all -## copies. +## This software is property of the OpenPKG GmbH, DE MUC HRB 160208. +## All rights reserved. Licenses which grant limited permission to use, +## copy, modify and distribute this software are available from the +## OpenPKG GmbH. ## -## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR @@ -38,144 +37,228 @@ # o any make(1) # o any cc(1) -# the package version/release -%define V_openpkg 20120714 - # the used software versions -%define V_rpm 4.2.1 -%define V_zlib 1.2.5 -%define V_bzip2 1.0.5 -%define V_beecrypt 4.1.2 -%define V_curl 7.21.1 -%define V_make 3.82 -%define V_gzip 1.4 -%define V_gzip_r 1.13 -%define V_patch 2.6.1 -%define V_tar 1.23 -%define V_bash 3.2 -%define V_uuid 1.6.2 -%define V_config 20060923 -%define V_registry 1.1.3 -%define V_perl 5.10.0 -%define V_openssl 0.9.8g -%define V_tools 1.4.5 -%define V_exec 2.0.1-C +%define V_rpm_major 5.1 +%define V_rpm_minor 9 +%define V_popt 1.16 +%define V_db 4.7.25 +%define V_lua 5.1.4 +%define V_sqlite 3.6.17 +%define V_zlib 1.2.7 +%define V_bzip2 1.0.6 +%define V_beecrypt 4.2.1 +%define V_curl 7.26.0 +%define V_pcre 8.31 +%define V_make 3.82 +%define V_gzip 1.5 +%define V_patch 2.6.1 +%define V_tar 1.26 +%define V_bash 4.2 +%define V_bash_pl 29 +%define V_uuid 1.6.2 +%define V_config 20120627 +%define V_perl 5.16.0 +%define V_openssl 1.0.1c +%define V_xz 5.0.4 +%define V_shtool 2.0.8 +%define V_libarchive 3.0.3 +%define V_diffutils 3.2 +%define V_svs 1.1.0 # package information Name: openpkg -Summary: OpenPKG Bootstrap -URL: http://www.openpkg.org/ -Vendor: OpenPKG -Packager: OpenPKG Foundation e.V. -Distribution: OpenPKG Community -Class: CORE +Summary: OpenPKG Framework +URL: http://openpkg.org/ +Vendor: OpenPKG GmbH +Packager: OpenPKG GmbH +Distribution: OpenPKG +Class: BOOT Group: Bootstrapping -License: MIT/BSD/LGPL/GPL -Version: %{V_openpkg} -Release: %{V_openpkg} +License: Proprietary, Open Source +Version: 4.6.7 +Release: 20120708 -# list of sources +# list of pristine upstream sources Source0: ftp://ftp.gnu.org/gnu/patch/patch-%{V_patch}.tar.gz Source1: ftp://ftp.cwru.edu/pub/bash/bash-%{V_bash}.tar.gz Source2: ftp://ftp.gnu.org/gnu/make/make-%{V_make}.tar.gz Source3: ftp://ftp.gnu.org/gnu/tar/tar-%{V_tar}.tar.gz -Source4: ftp://ftp.openpkg.org/sources/CPY/config/config-%{V_config}.tar.gz -Source5: ftp://ftp.openpkg.org/sources/CPY/openpkg-registry/openpkg-registry-%{V_registry}.tar.gz -Source6: ftp://ftp.openpkg.org/sources/CPY/openpkg-tools/openpkg-tools-%{V_tools}.tar.gz -Source7: ftp://ftp.openpkg.org/sources/CPY/openpkg/gzip-%{V_gzip}-openpkg-r%{V_gzip_r}.tar -Source8: ftp://ftp.gnu.org/gnu/gzip/gzip-%{V_gzip}.tar -Source9: ftp://ftp.openpkg.org/sources/CPY/openpkg/openpkg-executable-%{V_exec}.tar.gz -Source10: ftp://ftp.openpkg.org/sources/CPY/openpkg/rpm-%{V_rpm}.tar.gz -Source11: ftp://ftp.openpkg.org/sources/CPY/perl/perl-%{V_perl}-mini.tar.gz -Source12: ftp://ftp.openssl.org/source/openssl-%{V_openssl}.tar.gz -Source13: ftp://ftp.ossp.org/pkg/lib/uuid/uuid-%{V_uuid}.tar.gz -Source14: http://curl.haxx.se/download/curl-%{V_curl}.tar.gz -Source15: http://switch.dl.sourceforge.net/beecrypt/beecrypt-%{V_beecrypt}.tar.gz -Source16: http://www.bzip.org/%{V_bzip2}/bzip2-%{V_bzip2}.tar.gz -Source17: http://www.zlib.net/zlib-%{V_zlib}.tar.gz +Source4: http://download.openpkg.org/components/versioned/config/config-%{V_config}.tar.gz +Source5: http://download.openpkg.org/components/derived/gzip/gzip-%{V_gzip}.tar +Source6: http://download.openpkg.org/components/derived/perl/perl-%{V_perl}-mini.tar.gz +Source7: http://rpm5.org/files/rpm/rpm-%{V_rpm_major}/rpm-%{V_rpm_major}.%{V_rpm_minor}.tar.gz +Source8: ftp://ftp.openssl.org/source/openssl-%{V_openssl}.tar.gz +Source9: ftp://ftp.ossp.org/pkg/lib/uuid/uuid-%{V_uuid}.tar.gz +Source10: http://curl.haxx.se/download/curl-%{V_curl}.tar.gz +Source11: http://switch.dl.sourceforge.net/beecrypt/beecrypt-%{V_beecrypt}.tar.gz +Source12: http://www.bzip.org/%{V_bzip2}/bzip2-%{V_bzip2}.tar.gz +Source13: http://www.zlib.net/zlib-%{V_zlib}.tar.gz +Source14: http://rpm5.org/files/popt/popt-%{V_popt}.tar.gz +Source15: http://www.sqlite.org/sqlite-%{V_sqlite}.tar.gz +Source16: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-%{V_pcre}.tar.gz +Source17: http://libarchive.googlecode.com/files/libarchive-%{V_libarchive}.tar.gz +Source18: ftp://ftp.gnu.org/gnu/diffutils/diffutils-%{V_diffutils}.tar.gz +Source19: ftp://ftp.ossp.org/pkg/tool/svs/svs-%{V_svs}.tar.gz +Source20: http://tukaani.org/xz/xz-%{V_xz}.tar.gz + +# list of local patches against pristine upstream sources Source100: bash.patch -Source101: beecrypt.patch -Source102: make.patch -Source103: openssl.patch -Source104: perl.patch -Source105: tar.patch -Source106: rpm.patch.bugfix -Source107: rpm.patch.feature -Source108: rpm.patch.porting -Source109: rpm.patch.regen -Source200: HISTORY -Source201: README -Source202: aux.prereq.sh -Source203: aux.usrgrp.sh -Source204: aux.wrapbin.sh -Source205: aux.wrapsrc.sh -Source206: dot.bash_login -Source207: dot.bashrc -Source208: dot.lsyncrc -Source209: install.sh -Source210: local.README -Source211: lsync -Source212: lsync.8 -Source213: lsync.pod -Source214: man.sh -Source215: openpkg.1 -Source216: openpkg.boot -Source217: openpkg.com.pgp -Source218: openpkg.net.pgp -Source219: openpkg.org.pgp -Source220: openpkg.pod -Source221: openpkg.sh -Source222: pod2man.sh -Source223: rc -Source224: rc.8 -Source225: rc.conf -Source226: rc.func -Source227: rc.openpkg -Source228: rc.pod -Source229: release.8 -Source230: release.pod -Source231: release.sh -Source232: root.README -Source233: rpm-config.8 -Source234: rpm-config.pod -Source235: rpm-config.sh -Source236: rpmdb -Source237: rpmtool -Source238: rpmtool.8 -Source239: rpmtool.pod -Source240: shtool -Source241: uuid.8 -Source242: uuid.pod -Source243: uuid.sh -Source244: rpmmacros -Source245: rpmpopt -Source246: rpmrc +Source101: bash.patch.vendor +Source102: beecrypt.patch +Source103: make.patch +Source104: openssl.patch +Source105: perl.patch +Source106: tar.patch +Source107: rpm.patch +Source108: popt.patch +Source109: sqlite.patch +Source110: curl.patch +Source111: pcre.patch +Source112: diffutils.patch +Source113: libarchive.patch +Source114: patch.strnlen.c +Source115: patch.Makefile.in +Source116: xz.patch +Source117: zlib.patch + +# list of local sources +Source200: README +Source201: etc.prereq.sh +Source202: etc.usrgrp.sh +Source203: etc.wrapbin.sh +Source204: etc.wrapsrc.sh +Source205: dot.bash_login +Source206: dot.bashrc +Source207: dot.lsyncrc +Source208: local.README +Source209: lsync +Source210: lsync.8 +Source211: lsync.pod +Source212: man.sh +Source213: openpkg.1 +Source214: openpkg.boot +Source215: openpkg.com.pgp +Source216: openpkg.net.pgp +Source217: openpkg.org.pgp +Source218: openpkg.pod +Source219: openpkg.sh +Source220: rc +Source221: rc.8 +Source222: rc.conf +Source223: rc.func +Source224: rc.openpkg +Source225: rc.pod +Source226: release.8 +Source227: release.pod +Source228: release.sh +Source229: root.README +Source230: rpm-config.8 +Source231: rpm-config.pod +Source232: rpm-config.sh +Source233: rpmdb +Source234: rpmtool +Source235: rpmtool.8 +Source236: rpmtool.pod +Source237: shtool +Source238: shtool.sh +Source239: uuid.8 +Source240: uuid.pod +Source241: uuid.sh +Source242: rpmmacros +Source243: rpmpopt +Source244: curl.sh +Source245: index.pl +Source246: index.8 +Source247: index.pod +Source248: build.pl +Source249: build.8 +Source250: build.pod +Source251: makeproxy.pl +Source252: makeproxy.8 +Source253: lint-fsl.pl +Source254: lint-rc.pl +Source255: lint-rpm.pl +Source256: lint-spec.pl +Source257: dev.pl +Source258: dev.8 +Source259: dev.pod +Source260: openpkg.mk +Source261: openpkg.c +Source262: Makefile +Source263: mutex.c +Source264: mutex.mk +Source265: register.sh +Source266: register.pod +Source267: register.8 +Source268: rpm.sh +Source269: license.lua +Source270: license-BOOT.txt +Source271: license-COMMUNITY.txt +Source272: license-EVAL.txt +Source273: license-EXAMPLE.txt +Source274: license-PROMO.txt +Source275: license-RECOVERY.txt +Source276: license.sh +Source277: license.pod +Source278: license.8 +Source279: rpmlua +Source280: sea.sh +Source281: sea.pod +Source282: sea.8 +Source283: stack.sh +Source284: stack.pod +Source285: stack.8 +Source286: search.pl +Source287: search.pod +Source288: search.8 +Source289: mirror.pl +Source290: mirror.pod +Source291: mirror.8 # build information -Prefix: %{l_prefix} BuildRoot: %{l_buildroot} AutoReq: no AutoReqProv: no +Provides: %{l_prefix} Provides: OpenPKG +Provides: openpkg = %{release}-%{release} %description - This is the bootstrap package for the RPM-based Unix Software - Package Hierarchy OpenPKG. The RPM Package Manager (RPM) is a - sophisticated and portable package manager for Unix platforms, - which supports automated building, installation, management and - deinstallation of Unix software. RPM was originally designed and - implemented for the RedHat Linux operating system where it manages - every file on the whole system. OpenPKG uses RPM only for managing - the files in a particular filesystem hierarchy dedicated to the - installation of third-party software packages provided by the - OpenPKG project. + This is the OpenPKG Framework, the so-called "bootstrap" package + of OpenPKG. OpenPKG is a cross-platform, self-contained, RPM-based + software packaging solution, targeting the flexible building of + software stacks on Unix platforms. The RPM Package Manager (RPM) + is the underlying, sophisticated and portable package management + tool which drives the automated building, installation, management + and deinstallation of all Unix software components in an OpenPKG + software stack. - The OpenPKG bootstrap package includes the following software: - RPM %{V_rpm}, ZLib %{V_zlib}, GNU Bzip2 %{V_bzip2}, - GNU Gzip %{V_gzip}, GNU Tar %{V_tar}, GNU Patch %{V_patch}, - GNU Make %{V_make}, GNU Bash %{V_bash}, cURL %{V_curl}, - OSSP uuid %{V_uuid}, BeeCrypt %{V_beecrypt}, - OpenSSL %{V_openssl}, Perl %{V_perl} + This OpenPKG package contains the following individual + software components (individual licenses listed in brackets): + OpenPKG Framework %(echo "%{version}" | awk '{ printf("%%-7s", $1); }') [Proprietary] + rpm5.org RPM %(echo "%{V_rpm_major}.%{V_rpm_minor}" | awk '{ printf("%%-7s", $1); }') [LGPL] + rpm5.org POPT %(echo "%{V_popt}" | awk '{ printf("%%-7s", $1); }') [LGPL] + BeeCrypt %(echo "%{V_beecrypt}" | awk '{ printf("%%-7s", $1); }') [LGPL] + Lua %(echo "%{V_lua}" | awk '{ printf("%%-7s", $1); }') [MIT] + Berkeley-DB %(echo "%{V_db}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT] + SQLite %(echo "%{V_sqlite}" | awk '{ printf("%%-7s", $1); }') [Public-Domain] + PCRE %(echo "%{V_pcre}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT] + ZLib %(echo "%{V_zlib}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT] + XZ %(echo "%{V_xz}" | awk '{ printf("%%-7s", $1); }') [PD/LGPL/GPL] + GNU Bzip2 %(echo "%{V_bzip2}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT] + GNU Gzip %(echo "%{V_gzip}" | awk '{ printf("%%-7s", $1); }') [GPL] + GNU Tar %(echo "%{V_tar}" | awk '{ printf("%%-7s", $1); }') [GPL] + GNU Patch %(echo "%{V_patch}" | awk '{ printf("%%-7s", $1); }') [GPL] + GNU Shtool %(echo "%{V_shtool}" | awk '{ printf("%%-7s", $1); }') [GPL] + GNU Make %(echo "%{V_make}" | awk '{ printf("%%-7s", $1); }') [GPL] + GNU Bash %(echo "%{V_bash}.%{V_bash_pl}" | awk '{ printf("%%-7s", $1); }') [GPL] + GNU DiffUtils %(echo "%{V_diffutils}" | awk '{ printf("%%-7s", $1); }') [GPL] + BSD libarchive %(echo "%{V_libarchive}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT] + OSSP uuid %(echo "%{V_uuid}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT] + OSSP svs %(echo "%{V_svs}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT] + cURL %(echo "%{V_curl}" | awk '{ printf("%%-7s", $1); }') [BSD/MIT] + OpenSSL %(echo "%{V_openssl}" | awk '{ printf("%%-7s", $1); }') [BSD] + Perl %(echo "%{V_perl}" | awk '{ printf("%%-7s", $1); }') [Artistic] %track prog openpkg:bash = { @@ -193,35 +276,35 @@ url = http://curl.haxx.se/download/ regex = curl-(__VER__)\.tar\.gz } + prog openpkg:pcre = { + version = %{V_pcre} + url = ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ + regex = pcre-(__VER__)\.tar\.gz + } prog openpkg:gzip = { - comment = "rse: intentionally tracked at gnu.org, although fetched from openpkg.org because of uncompression" version = %{V_gzip} url = ftp://ftp.gnu.org/gnu/gzip/ regex = gzip-(__VER__)\.tar(\.gz)? } - prog openpkg:gzip_r = { - version = %{V_gzip_r} - url = ftp://ftp.openpkg.org/sources/CPY/openpkg/ - regex = gzip-%{V_gzip}-openpkg-r(__VER__)\.tar - } prog openpkg:make = { version = %{V_make} url = ftp://ftp.gnu.org/gnu/make/ regex = make-(__VER__)\.tar\.gz } prog openpkg:patch = { - disabled - comment = "rse: directory missing after GNU.org security issues" version = %{V_patch} - url = ftp://alpha.gnu.org/gnu/patch/ + url = ftp://ftp.gnu.org/gnu/patch/ regex = patch-(__VER__)\.tar\.gz } + prog openpkg:popt = { + version = %{V_popt} + url = http://rpm5.org/files/popt/ + regex = popt-(\d+\.\d+)\.tar\.gz + } prog openpkg:rpm = { - disabled - comment = "rse: we have a .src.rpm extracted .tar.gz, because there is still no tarball for 4.2.1" - version = %{V_rpm} - url = ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.2.x/ - regex = rpm-(4\.2\.\d+)\.tar\.gz + version = %{V_rpm_major}.%{V_rpm_minor} + url = http://rpm5.org/files/rpm/rpm-%{V_rpm_major}/ + regex = rpm-(\d+\.\d+[.ab]\d+)\.tar\.gz } prog openpkg:tar = { version = %{V_tar} @@ -233,29 +316,39 @@ url = http://www.zlib.net/ regex = zlib-(__VER__)\.tar\.gz } + prog openpkg:diffutils = { + version = %{V_diffutils} + url = ftp://alpha.gnu.org/gnu/diffutils/ + regex = diffutils-(__VER__)\.tar\.gz + } + prog openpkg:libarchive = { + version = %{V_libarchive} + url = http://code.google.com/p/libarchive/downloads/list + regex = libarchive-(__VER__)\.tar\.gz + } prog openpkg:uuid = { version = %{V_uuid} url = ftp://ftp.ossp.org/pkg/lib/uuid/ regex = uuid-(__VER__)\.tar\.gz } + prog openpkg:svs = { + version = %{V_svs} + url = ftp://ftp.ossp.org/pkg/tool/svs/ + regex = svs-(__VER__)\.tar\.gz + } prog openpkg:config = { version = %{V_config} - url = ftp://ftp.openpkg.org/sources/CPY/config/ + url = http://download.openpkg.org/components/versioned/config/ regex = config-(__VER__)\.tar\.gz } prog openpkg:beecrypt = { version = %{V_beecrypt} - url = http://prdownloads.sourceforge.net/beecrypt/ + url = http://sourceforge.net/project/showfiles.php?group_id=8924&package_id=9007 regex = beecrypt-(__VER__)\.tar\.gz } - prog openpkg:registry = { - version = %{V_registry} - url = ftp://ftp.openpkg.org/sources/CPY/openpkg-registry/ - regex = openpkg-registry-(__VER__)\.tar\.gz - } prog openpkg:perl = { version = %{V_perl} - url = ftp://ftp.openpkg.org/sources/CPY/perl/ + url = http://download.openpkg.org/components/derived/perl/ regex = perl-(__VER__)-mini\.tar\.gz } prog openpkg:openssl = { @@ -263,15 +356,20 @@ url = ftp://ftp.openssl.org/source/ regex = openssl-(\d+\.\d+\.\d+[a-z]?)\.tar\.gz } - prog openpkg:openpkg-tools = { - version = %{V_tools} - url = ftp://ftp.openpkg.org/sources/CPY/openpkg-tools/ - regex = openpkg-tools-(__VER__)\.tar\.gz + prog openpkg:lua = { + version = %{V_lua} + url = http://www.lua.org/download.html + regex = lua-(\d+\.\d+\.\d+)\.tar\.gz } - prog openpkg:openpkg-executable = { - version = %{V_exec} - url = ftp://ftp.openpkg.org/sources/CPY/openpkg/ - regex = openpkg-executable-(__VER__-C)\.tar\.gz + prog openpkg:sqlite = { + version = %{V_sqlite} + url = http://www.sqlite.org/download.html + regex = sqlite-(\d+\.\d+\.\d+(?:\.\d+)?)\.tar\.gz + } + prog openpkg:xz = { + version = %{V_xz} + url = http://tukaani.org/xz/ + regex = xz-(\d+\.\d+\.\d+)\.tar\.gz } %prep @@ -407,8 +505,8 @@ fi echo "l_strip=\"$l_strip\"; export l_strip" >>.buildenv - # determine path to aux.usrgrp.sh script - usrgrp=`SOURCE aux.usrgrp.sh` + # determine path to etc.usrgrp.sh script + usrgrp=`SOURCE etc.usrgrp.sh` echo "usrgrp=$usrgrp; export usrgrp" >>./.buildenv # display verbosity header @@ -494,6 +592,7 @@ OSF1/V5.* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;; HP-UX/* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;; IRIX*/6.* ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;; + CYGWIN*/* ) l_build_path="/bin:/usr/bin:/usr/sbin" ;; * ) l_build_path="/bin:/sbin:/usr/bin:/usr/sbin" ;; esac case $plid in @@ -507,6 +606,7 @@ OSF1/V5.* ) l_build_ldlp="/usr/lib" ;; HP-UX/* ) l_build_ldlp="/usr/lib" ;; IRIX*/6.* ) l_build_ldlp="/usr/lib" ;; + CYGWIN*/* ) l_build_ldlp="/lib:/usr/lib" ;; * ) l_build_ldlp="/usr/lib" ;; esac case $plid in @@ -516,20 +616,29 @@ echo "l_build_ldlp=\"$l_build_ldlp\"; export l_build_ldlp" >>.buildenv echo "l_build_ulim=\"$l_build_ulim\"; export l_build_ulim" >>.buildenv + # ACTIVATE AGAIN AFTER ALL 4.2.5 VERSIONS WERE UPGRADED TO AT LEAST 4.2.7 + # determine status of unprivileged operation + if [ ".%{?l_unprivileged:set}" = .set ]; then + l_unprivileged="%{l_unprivileged}" + else + l_unprivileged="no" + fi + echo "l_unprivileged=\"$l_unprivileged\"; export l_unprivileged" >>.buildenv + # display verbosity header set +x; VERBOSE "PREPARATION: Build GNU gzip (Compression Tool)"; set -x # bootstrap GNU zip tool ${l_tar} xf `SOURCE gzip-%{V_gzip}.tar` 2>/dev/null || true - ${l_tar} xf `SOURCE gzip-%{V_gzip}-openpkg-r%{V_gzip_r}.tar` 2>/dev/null || true ( cd gzip-%{V_gzip} - echo "ac_cv_prog_cc_g=no" >config.cache + ( echo "ac_cv_prog_cc_g=no" + echo "ac_cv_header_getopt_h=no" + ) >config.cache case $plid in Darwin/* ) echo "gzip_cv_assembler=no" >>config.cache ;; esac CC="${l_cc}" \ GREP="grep" \ - MAKE="${l_make}" \ ./configure \ --cache-file=./config.cache ${l_make} || exit $? @@ -550,24 +659,36 @@ # bootstrap GNU patch tool ${l_gzip} -dc `SOURCE patch-%{V_patch}.tar.gz` | ${l_tar} xf - 2>/dev/null || true ( cd patch-%{V_patch} - cp `SOURCE rplstrnlen.c` gl/lib/strnlen.c - chmod u+w config.guess config.sub >/dev/null 2>&1 || true - cp ../config/config.guess . - cp ../config/config.sub . + chmod a+x install-sh + echo '#!' >update-version.sh + cp `SOURCE patch.Makefile.in` Makefile.in + cp `SOURCE patch.strnlen.c` gl/lib/strnlen.c ( echo 'ac_cv_func_setmode=${ac_cv_func_setmode=no}' echo 'ac_cv_prog_cc_g=no' false=`sh $shtool path false` echo "ac_cv_path_ed_PROGRAM=\${ac_cv_path_ed_PROGRAM=$false}" ) >config.cache CC="${l_cc}" \ - GREP="grep" \ ./configure \ --cache-file=./config.cache \ + --enable-merge \ --disable-largefile ${l_make} || exit $? ( mv src/patch ..; ${l_make} clean || true; mv ../patch . ) || exit $? ) || exit $? l_patch="`pwd`/patch-%{V_patch}/patch"; export l_patch + case `sh $shtool platform -n -L -S "" -C "+" -F "%-%"` in + *-cygwin* ) + # Cygwin under Windows Vista dislikes executables with + # "patch" in the same and would require a "*.manifest" + # file applied with the "mt.exe" from the "Windows + # Software Development Kit (SDK)" in order to escape from + # UAC. An easy alternative is to just rename the file to a + # different name. + mv patch-%{V_patch}/patch patch-%{V_patch}/pitch + l_patch="`pwd`/patch-%{V_patch}/pitch" + ;; + esac echo "l_patch=\"$l_patch\"; export l_patch" >>.buildenv # display verbosity header @@ -584,12 +705,14 @@ echo 'ac_cv_type_iconv_t=no' ) >config.cache CC="${l_cc}" \ - MAKE="${l_make}" \ MAKEINFO="true" \ GREP="grep" \ + FORCE_UNSAFE_CONFIGURE=1 \ ./configure \ --cache-file=./config.cache \ --prefix=%{l_prefix} \ + --with-gzip=%{l_prefix}/lib/openpkg/gzip \ + --with-bzip2=%{l_prefix}/lib/openpkg/bzip2 \ --disable-nls ${l_make} || exit $? ( mv src/tar ..; ${l_make} clean || true; mv ../tar . ) || exit $? @@ -601,23 +724,26 @@ set +x; VERBOSE "PREPARATION: Unpack Distribution Tarballs"; set -x # unpack distribution tarballs - ${l_gzip} -dc `SOURCE rpm-%{V_rpm}.tar.gz` | ${l_tar} xf - 2>/dev/null || true + ${l_gzip} -dc `SOURCE rpm-%{V_rpm_major}.%{V_rpm_minor}.tar.gz` | ${l_tar} xf - 2>/dev/null || true + ${l_gzip} -dc `SOURCE popt-%{V_popt}.tar.gz` | ${l_tar} xf - 2>/dev/null || true + ${l_gzip} -dc `SOURCE sqlite-%{V_sqlite}.tar.gz` | ${l_tar} xf - 2>/dev/null || true ${l_gzip} -dc `SOURCE zlib-%{V_zlib}.tar.gz` | ${l_tar} xf - 2>/dev/null || true ${l_gzip} -dc `SOURCE bzip2-%{V_bzip2}.tar.gz` | ${l_tar} xf - 2>/dev/null || true + ${l_gzip} -dc `SOURCE xz-%{V_xz}.tar.gz` | ${l_tar} xf - 2>/dev/null || true ${l_gzip} -dc `SOURCE curl-%{V_curl}.tar.gz` | ${l_tar} xf - 2>/dev/null || true + ${l_gzip} -dc `SOURCE pcre-%{V_pcre}.tar.gz` | ${l_tar} xf - 2>/dev/null || true ${l_gzip} -dc `SOURCE make-%{V_make}.tar.gz` | ${l_tar} xf - 2>/dev/null || true ${l_gzip} -dc `SOURCE bash-%{V_bash}.tar.gz` | ${l_tar} xf - 2>/dev/null || true ${l_gzip} -dc `SOURCE uuid-%{V_uuid}.tar.gz` | ${l_tar} xf - 2>/dev/null || true ${l_gzip} -dc `SOURCE beecrypt-%{V_beecrypt}.tar.gz` | ${l_tar} xf - 2>/dev/null || true - ${l_gzip} -dc `SOURCE openpkg-registry-%{V_registry}.tar.gz` | ${l_tar} xf - 2>/dev/null || true ${l_gzip} -dc `SOURCE perl-%{V_perl}-mini.tar.gz` | ${l_tar} xf - 2>/dev/null || true ${l_gzip} -dc `SOURCE openssl-%{V_openssl}.tar.gz` | ${l_tar} xf - 2>/dev/null || true - ${l_gzip} -dc `SOURCE openpkg-tools-%{V_tools}.tar.gz` | ${l_tar} xf - 2>/dev/null || true - ${l_gzip} -dc `SOURCE openpkg-executable-%{V_exec}.tar.gz` | ${l_tar} xf - 2>/dev/null || true + ${l_gzip} -dc `SOURCE libarchive-%{V_libarchive}.tar.gz` | ${l_tar} xf - 2>/dev/null || true + ${l_gzip} -dc `SOURCE diffutils-%{V_diffutils}.tar.gz` | ${l_tar} xf - 2>/dev/null || true + ${l_gzip} -dc `SOURCE svs-%{V_svs}.tar.gz` | ${l_tar} xf - 2>/dev/null || true # update config.guess/config.sub - for dir in rpm-%{V_rpm} rpm-%{V_rpm}/popt beecrypt-%{V_beecrypt} \ - curl-%{V_curl} make-%{V_make} bash-%{V_bash}/support; do + for dir in curl-%{V_curl} make-%{V_make} bash-%{V_bash}/support; do chmod u+w $dir/config.guess $dir/config.sub >/dev/null 2>&1 || true cp config/config.guess $dir/ cp config/config.sub $dir/ @@ -627,18 +753,15 @@ set +x; VERBOSE "PREPARATION: Apply OpenPKG Patches to Distributions"; set -x # apply OpenPKG patches to distribution trees - ( cd rpm-%{V_rpm} - sed -e "s;@l_prefix@;%{l_prefix};g" <`SOURCE rpm.patch.bugfix` | ${l_patch} -p0 - sed -e "s;@l_prefix@;%{l_prefix};g" <`SOURCE rpm.patch.feature` | ${l_patch} -p0 - sed -e "s;@l_prefix@;%{l_prefix};g" <`SOURCE rpm.patch.porting` | ${l_patch} -p0 - sed -e "s;@l_prefix@;%{l_prefix};g" <`SOURCE rpm.patch.regen` | ${l_patch} -p0 - rm -rf db/docs # just reduce disk size of source tree + ( cd rpm-%{V_rpm_major}.%{V_rpm_minor} + sed -e "s;@l_prefix@;%{l_prefix};g" <`SOURCE rpm.patch` | ${l_patch} -p0 ) || exit $? ( cd make-%{V_make} ${l_patch} -p0 <`SOURCE make.patch` ) || exit $? ( cd bash-%{V_bash} ${l_patch} -p0 <`SOURCE bash.patch` + ${l_patch} -p0 <`SOURCE bash.patch.vendor` sleep 1 touch y.tab.[ch] touch configure config.h.in @@ -652,6 +775,30 @@ ( cd openssl-%{V_openssl} ${l_patch} -p0 <`SOURCE openssl.patch` ) || exit $? + ( cd popt-%{V_popt} + ${l_patch} -p0 <`SOURCE popt.patch` + ) || exit $? + ( cd sqlite-%{V_sqlite} + ${l_patch} -p0 <`SOURCE sqlite.patch` + ) || exit $? + ( cd curl-%{V_curl} + ${l_patch} -p0 <`SOURCE curl.patch` + ) || exit $? + ( cd pcre-%{V_pcre} + ${l_patch} -p0 <`SOURCE pcre.patch` + ) || exit $? + ( cd diffutils-%{V_diffutils} + ${l_patch} -p0 <`SOURCE diffutils.patch` + ) || exit $? + ( cd libarchive-%{V_libarchive} + ${l_patch} -p0 <`SOURCE libarchive.patch` + ) || exit $? + ( cd zlib-%{V_zlib} + ${l_patch} -p0 <`SOURCE zlib.patch` + ) || exit $? + ( cd xz-%{V_xz} + ${l_patch} -p0 <`SOURCE xz.patch` + ) || exit $? # display verbosity header set +x; VERBOSE "PREPARATION: Build GNU make (Build Tool)"; set -x @@ -659,7 +806,6 @@ # bootstrap GNU make tool ( cd make-%{V_make} CC="${l_cc}" \ - GREP="grep" \ ./configure \ --without-libiconv-prefix \ --without-libintl-prefix \ @@ -700,9 +846,15 @@ # disable building with debug symbols echo "ac_cv_prog_cc_g=no" ) >config.cache - AUTOCONF="true" \ - CC="${l_cc}" \ - MAKE="${l_make}" \ + AUTOCONF="true" + export AUTOCONF + CC="${l_cc}" + export CC + LDFLAGS="" + export LDFLAGS + case "$plid" in + Darwin/* ) LDFLAGS="-Wl,-search_paths_first" ;; + esac ./configure \ --cache-file=./config.cache \ --prefix=%{l_prefix} \ @@ -746,6 +898,28 @@ ) || exit $? # display verbosity header + set +x; VERBOSE "BUILD: Build XZ (Compression Library)"; set -x + + # build XZ library + ( cd xz-%{V_xz} + opts="" + case "$plid" in + Darwin/* ) opts="--disable-assembler" ;; + esac + CC="${l_cc}" \ + CFLAGS="-O" \ + ./configure \ + --prefix=%{l_prefix} \ + --mandir=%{l_prefix}/man \ + --without-libiconv-prefix \ + --without-libintl-prefix \ + --disable-nls \ + --disable-shared \ + $opts + ${l_make} || exit $? + ) || exit $? + + # display verbosity header set +x; VERBOSE "BUILD: Build OSSP uuid (UUID Generation Tool)"; set -x # build OSSP uuid tool @@ -757,7 +931,6 @@ --prefix=%{l_prefix} \ --disable-shared ${l_make} || exit $? - ( mv uuid ..; ${l_make} clean || true; mv ../uuid . ) || exit $? ) || exit $? # display verbosity header @@ -777,11 +950,6 @@ for dir in %{l_prefix}/lib /lib64 /usr/lib64 /lib /usr/lib /usr/ccs/lib; do [ -d $dir ] && libdirs="$libdirs $dir" done - loclibs="" - case `(uname -s) 2>/dev/null` in - Linux ) loclibs="-lm -lrt" ;; - esac - PATH=$PATH:`echo "${l_make}" | sed -e 's;\(.*\)/[^/][^/]*$;\1;'` \ ./Configure \ -d -e -s \ -Dprefix=%{l_prefix} \ @@ -796,12 +964,15 @@ -Dldflags="-L""%{l_prefix}/lib" \ -Dlibpth="$libdirs" \ -Dglibpth="$libdirs" \ - -Dlibs="$loclibs" \ -Dscriptdir="%{l_prefix}/bin" \ -Uinstallusrbinperl \ -Adefine:useshrplib='false' \ -Ui_malloc -Ui_iconv -Ui_db - ${l_make} miniperl || exit $? + case `sh $shtool platform -n -L -S "" -C "+" -F "%-%"` in + *-cygwin* ) miniperl="miniperl.exe" ;; + * ) miniperl="miniperl" ;; + esac + ${l_make} $miniperl || exit $? rm -f *.o >/dev/null 2>&1 || true ) || exit $? l_perl="`pwd`/perl-%{V_perl}/miniperl"; export l_perl @@ -842,6 +1013,44 @@ ( mkdir lib; cd lib; ln -s ../lib*.a . ) || exit $? ) || exit $? + # build BSD libarchive + ( cd libarchive-%{V_libarchive} + CC="${l_cc}" \ + CFLAGS="-O -D_POSIX_PTHREAD_SEMANTICS" \ + CPPFLAGS="-I`pwd`/../zlib-%{V_zlib} -I`pwd`/../bzip2-%{V_bzip2} -I`pwd`/../xz-%{V_xz}/src/liblzma/api -I`pwd`/../openssl-%{V_openssl}/include" \ + LDFLAGS="-L`pwd`/../zlib-%{V_zlib} -L`pwd`/../bzip2-%{V_bzip2} -L`pwd`/../xz-%{V_xz}/src/liblzma/.libs -L`pwd`/../openssl-%{V_openssl}" \ + GREP="grep" \ + ./configure \ + --prefix=%{l_prefix} \ + --enable-bsdtar \ + --enable-bsdcpio \ + --with-zlib \ + --with-bz2lib \ + --with-lzma \ + --without-lzmadec \ + --with-openssl \ + --without-xml2 \ + --without-expat \ + --without-iconv \ + --disable-shared + ${l_make} || exit $? + ( mv bsdcpio bsdtar ..; ${l_make} clean || true; mv ../bsdcpio ../bsdtar . ) || exit $? + ) || exit $? + + # build GNU diffutils + ( cd diffutils-%{V_diffutils} + CC="${l_cc}" \ + CFLAGS="-O" \ + ./configure \ + --prefix=%{l_prefix} \ + --disable-nls + ${l_make} || exit $? + ( mv src/diff src/diff3 src/sdiff src/cmp .. + ${l_make} clean || true + mv ../diff ../diff3 ../sdiff ../cmp . + ) || exit $? + ) || exit $? + # display verbosity header set +x; VERBOSE "BUILD: Build cURL (URL Fetching Tool)"; set -x @@ -852,7 +1061,6 @@ echo 'lt_cv_sys_max_cmd_len=100' ) >config.cache CC="${l_cc}" \ - MAKE="${l_make}" \ CFLAGS="-I`pwd`/../zlib-%{V_zlib}" \ CPPFLAGS="-I`pwd`/../zlib-%{V_zlib}" \ LDFLAGS="-L`pwd`/../zlib-%{V_zlib}" \ @@ -868,7 +1076,18 @@ --with-ssl=`pwd`/../openssl-%{V_openssl} \ --with-ca-bundle=%{l_prefix}/etc/openpkg/openpkg.x509 ${l_make} || exit $? - ( mv src/curl ..; ${l_make} clean || true; mv ../curl ./src ) || exit $? + mv src/curl ..; ${l_make} clean || true; mv ../curl . + ) || exit $? + + # build PCRE library + ( cd pcre-%{V_pcre} + CC="${l_cc}" \ + GREP="grep" \ + ./configure \ + --disable-cpp \ + --disable-utf8 \ + --disable-shared + ${l_make} || exit $? ) || exit $? # display verbosity header @@ -878,32 +1097,32 @@ ( cd beecrypt-%{V_beecrypt} sh $shtool subst \ -e 's;^[ ][ ]*#;#;' \ - aes.c base64.c blowfish.c entropy.c fips186.c fips186.h md5.c \ - md5.h mp.c mtprng.c mtprng.h sha1.c sha1.h sha256.c sha256.h timestamp.c + aes.c base64.c blockmode.c blowfish.c entropy.c fips186.c md4.c md5.c \ + mp.c mtprng.c ripemd128.c ripemd160.c ripemd256.c ripemd320.c rsa.c \ + sha1.c sha224.c sha256.c sha2k64.c sha384.c sha512.c timestamp.c sh $shtool subst \ -e 's;cppglue\.lo;;g' \ -e 's;cppglue\.cxx;;g' \ -e '/^CXX = /s;@CXX@;@CC@;g' \ Makefile.in - sh $shtool subst \ - -e '/LINENO: error: C[+]* preprocessor/{N;N;N;N;s/.*/:/;}' \ - configure ( echo 'ac_cv_have_dev_dsp=no' echo 'ac_cv_have_dev_audio=no' echo 'ac_cv_func_gettimeofday=yes' echo 'bc_cv_as_noexecstack=no' ) >config.cache CC="${l_cc}" \ - MAKE="${l_make}" \ CFLAGS="-O" \ ./configure \ --cache-file=./config.cache \ --prefix=%{l_prefix} \ + --with-cpu=none \ + --with-arch=none \ --without-cplusplus \ --without-java \ --without-python \ - --with-cpu=none \ - --with-arch=none \ + --disable-expert-mode \ + --disable-aio \ + --disable-openmp \ --disable-threads \ --disable-shared ${l_make} || exit $? @@ -911,101 +1130,161 @@ ) || exit $? # display verbosity header + set +x; VERBOSE "BUILD: Build POPT (Option Parsing Library)"; set -x + + # build POPT library + ( cd popt-%{V_popt} + CC="${l_cc}" \ + CPPFLAGS="-DOPENPKG -DPOPT_fprintf=fprintf" \ + GREP="grep" \ + ./configure \ + --prefix=%{l_prefix} \ + --disable-shared \ + --with-included-gettext \ + --without-libintl-prefix \ + --without-libiconv-prefix \ + --disable-nls + ${l_make} + ) || exit $? + + # display verbosity header + set +x; VERBOSE "BUILD: Build SQLite (RDBMS Library)"; set -x + + # build SQLite library + ( cd sqlite-%{V_sqlite} + CC="${l_cc}" \ + LIBS="-lm" \ + GREP="grep" \ + ./configure \ + --prefix=%{l_prefix} \ + --disable-threadsafe \ + --disable-readline \ + --disable-debug \ + --disable-amalgamation \ + --disable-tcl \ + --disable-shared + ${l_make} + ) || exit $? + + # display verbosity header set +x; VERBOSE "BUILD: Build RPM (RPM Package Manager)"; set -x # build RPM ( br=`pwd` - cd rpm-%{V_rpm} - - # remove object files accidentally distributed with the RPM tarball - rm -f db/build_unix/*.o - rm -f db/build_unix/*.lo - - # remove embedded zlib (we are linking with an external one) - rm -rf zlib - - # kill Linux-based preconfigured DB header, to allow the Makefiles to - # symlink to it the header that is configured for the current system. - rm -f rpmdb/db.h - - # make sure we do not trigger Autoconf/Automake tools - touch configure - touch config.h.in - - # disable running of any Autoconf/Automake tools - ACLOCAL=true - AUTOCONF=true - AUTOMAKE=true - AUTOHEADER=true - MAKEINFO=true - AMTAR=true - export ACLOCAL AUTOMAKE AUTOHEADER MAKEINFO AMTAR + cd rpm-%{V_rpm_major}.%{V_rpm_minor} # cheat GNU Autoconf ( echo 'ac_cv_path_MSGFMT=:' echo 'ac_cv_path_GMSGFMT=:' echo 'ac_cv_path_XGETTEXT=:' echo 'ac_cv_path_MSGMERGE=:' - echo "ac_cv_path_MKDIR='%{l_prefix}/lib/openpkg/shtool mkdir -f -p -m 755'" - echo "ac_cv_path___MKDIR='%{l_prefix}/lib/openpkg/shtool mkdir -f -p -m 755'" - echo "ac_cv_path___PYTHON=true" - echo "ac_cv_path___DOXYGEN=true" - echo "acl_cv_rpath=no" echo "ac_cv_header_getopt_h=no" + echo "ac_cv_lib_gz_gzread=no" ) >config.cache - # provide platform identification - os_name=`(uname -s) 2>/dev/null` || os_name='Unknown' - os_name=`echo "${os_name}" |\ - sed -e 's;[^a-zA-Z0-9];;g' |\ - tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + # use miniperl + PERL="${l_perl}" + export PERL # set build tool flags CC="${l_cc}" - CPPFLAGS="-DOPENPKG -DOPENPKG_${os_name} -I$br/zlib-%{V_zlib} -I$br/bzip2-%{V_bzip2} -I$br/beecrypt-%{V_beecrypt}" - CFLAGS="$CPPFLAGS" - LDFLAGS="-L$br/zlib-%{V_zlib} -L$br/bzip2-%{V_bzip2} -L$br/beecrypt-%{V_beecrypt}" - LIBS="$LDFLAGS -lz -lbz2 -lbeecrypt" - case $os_name in - SUNOS* ) LIBS="$LIBS -lresolv" ;; - IRIX* ) LIBS="$LIBS -lgen" ;; - esac - export CC CPPFLAGS CFLAGS LDFLAGS LIBS + CFLAGS="" + CPPFLAGS="-DRPM_VENDOR_OPENPKG" + LDFLAGS="" + LIBS="" + LIBS="$LIBS -lm" + export CC + export CFLAGS + export CPPFLAGS + export LDFLAGS + export LIBS - # adjust for BeeCrypt 4.0 + # special platform workarounds + GREP="grep" + export GREP + + # determine POPT option, RPM macros and Lua script file paths + RPMPOPT="%{l_prefix}/lib/openpkg/rpmpopt" + RPMPOPT="$RPMPOPT:%{l_prefix}/etc/openpkg/rpmpopt" + RPMPOPT="$RPMPOPT:%{l_prefix}/etc/openpkg/rpmpopt.d/*" + RPMPOPT="$RPMPOPT:~/.openpkg/rpmpopt" + RPMPOPT="$RPMPOPT:@../../.openpkg/rpmpopt" + RPMPOPT="$RPMPOPT:@../.openpkg/rpmpopt" + RPMPOPT="$RPMPOPT:@./.openpkg/rpmpopt" + RPMMACROS="%{l_prefix}/lib/openpkg/rpmmacros" + RPMMACROS="$RPMMACROS:%{l_prefix}/etc/openpkg/rpmmacros" + RPMMACROS="$RPMMACROS:%{l_prefix}/etc/openpkg/rpmmacros.d/*" + RPMMACROS="$RPMMACROS:~/.openpkg/rpmmacros" + RPMMACROS="$RPMMACROS:@../../.openpkg/rpmmacros" + RPMMACROS="$RPMMACROS:@../.openpkg/rpmmacros" + RPMMACROS="$RPMMACROS:@./.openpkg/rpmmacros" + RPMLUA="%{l_prefix}/lib/openpkg/rpmlua" + RPMLUA="$RPMLUA:%{l_prefix}/etc/openpkg/rpmlua" + RPMLUA="$RPMLUA:%{l_prefix}/etc/openpkg/rpmlua.d/*" + RPMLUA="$RPMLUA:~/.openpkg/rpmlua" + RPMLUA="$RPMLUA:@../../.openpkg/rpmlua" + RPMLUA="$RPMLUA:@../.openpkg/rpmlua" + RPMLUA="$RPMLUA:@./.openpkg/rpmlua" + + # parametrize integrity checking framework sh $shtool subst \ - -e 's;beecrypt\.api\.h;beecrypt.h;g' \ - rpmio/rpmio_internal.h + -e "s;0000000000000000000000000000000000000000;7D121A8FC05DC18A4329E9EF67042EC961B7AE34;" \ + -e "s;0\\.0\\.0;0.9.0;" \ + rpmqv.c + + # disable building of any tests + # (mainly because those would fail because of integrity checking anyway) sh $shtool subst \ - -e 's;\(rsavrfy(\)\(&dig->rsa_pk\);\1\2.n, \2.e;g' \ - lib/signature.c - sh $shtool subst \ - -e 's;\(^LIBS =\)[ \t]*;\1 -ldb;' \ - -e 's;\(^rpmdb_[^_][^_]*_LDFLAGS =\)[ \t]*;\1 -L$(top_srcdir)/db3;g' \ - rpmdb/Makefile.in - sh $shtool subst \ - -e 's;\(^myLDFLAGS =\);\1 -L$(top_srcdir)/db3;' \ + -e 's;tools scripts tests doc;tools scripts doc;' \ Makefile.in - # configure the package - MAKE="${l_make}" \ - sh ./configure \ + # configure program + ./configure \ --cache-file=./config.cache \ --prefix=%{l_prefix} \ - --with-db \ - --with-glob \ + --mandir="%{l_prefix}/man" \ + --includedir="%{l_prefix}/include/openpkg" \ + --with-name="OpenPKG RPM" \ + --with-path-cfg="%{l_prefix}/etc/openpkg" \ + --with-path-rpmpopt="$RPMPOPT" \ + --with-path-macros="$RPMMACROS" \ + --with-path-rpmlua="$RPMLUA" \ + --with-path-lib="%{l_prefix}/lib/openpkg" \ + --with-path-locale="%{l_prefix}/share/openpkg/locale" \ + --with-path-database="%{l_prefix}/RPM/DB" \ + --with-path-sources="%{l_prefix}/RPM" \ + --with-bugreport="openpkg-users@openpkg.org" \ + --with-beecrypt="$br/beecrypt-%{V_beecrypt}" \ + --with-openssl="$br/openssl-%{V_openssl}" \ + --with-zlib="$br/zlib-%{V_zlib}" \ + --with-bzip2="$br/bzip2-%{V_bzip2}" \ + --with-popt="$br/popt-%{V_popt}" \ + --with-sqlite="$br/sqlite-%{V_sqlite}" \ + --with-pcre="$br/pcre-%{V_pcre}" \ + --with-uuid="$br/uuid-%{V_uuid}" \ + --with-lua="internal" \ + --with-db="internal" \ + --without-db-rpc \ + --without-db-largefile \ + --with-db-tools-integrated \ + --with-db-mutex="UNIX/fcntl" \ + --without-file \ + --without-neon \ + --without-pthreads \ + --without-libelf \ + --without-selinux \ + --without-perl \ --without-python \ --without-apidocs \ + --disable-build-warnings \ + --disable-build-extlibdep \ + --disable-build-intlibdep \ + --disable-build-lafiles \ --disable-shared \ --disable-rpath \ --disable-nls - # deny automatic dependency calculations - rm -f find-provides find-requires - ln -s autodeps/none find-provides - ln -s autodeps/none find-requires - - # build the package + # build program ${l_make} ) || exit $? @@ -1013,13 +1292,22 @@ set +x; VERBOSE "BUILD: Build OpenPKG Frontend (Set-UID Wrapper)"; set -x # build "openpkg" executable - ( cd openpkg-executable-%{V_exec} - ${l_make} \ + ${l_make} -f `SOURCE openpkg.mk` \ CC="${l_cc}" \ OPENPKG_PREFIX="%{l_prefix}" \ OPENPKG_SUSR="%{l_susr}" \ - OPENPKG_MUSR="%{l_musr}" - ) || exit $? + OPENPKG_MUSR="%{l_musr}" \ + OPENPKG_DOT_C="`SOURCE openpkg.c`" + + # display verbosity header + set +x; VERBOSE "BUILD: Build OpenPKG Mutual Exclusion (MutEx) Utility"; set -x + + # build "mutex" executable + ${l_make} -f `SOURCE mutex.mk` \ + CC="${l_cc}" \ + CPPFLAGS="-Ipopt-%{V_popt}" \ + LDFLAGS="-Lpopt-%{V_popt} -Lpopt-%{V_popt}/.libs" \ + MUTEX_DOT_C="`SOURCE mutex.c`" %install # skip in bootstrap phase 2 (see openpkg.boot) @@ -1057,73 +1345,93 @@ done test -d $RPM_BUILD_ROOT%{l_prefix}/RPM || \ mkdir $RPM_BUILD_ROOT%{l_prefix}/RPM - for dir in SRC PKG DB TMP; do + for dir in SRC PKG DB TR TMP; do test -d $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir || \ mkdir $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir done mkdir $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg - mkdir $RPM_BUILD_ROOT%{l_prefix}/include/openpkg # display verbosity header set +x; VERBOSE "INSTALL: Installation of RPM"; set -x # install RPM into installation hierarchy - ( cd rpm-%{V_rpm} - DESTDIR="$RPM_BUILD_ROOT" - export DESTDIR - ${l_make} install + ( cd rpm-%{V_rpm_major}.%{V_rpm_minor} + ${l_make} install DESTDIR="$RPM_BUILD_ROOT" + cp lua/rpmlua $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/lua + chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/lua ) || exit $? + # post-adjust RPM installation + mv $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/macros \ + $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmmacros + # display verbosity header set +x; VERBOSE "INSTALL: Install Additional Files"; set -x # add additional development files - cp rpm-%{V_rpm}/misc/glob.h $RPM_BUILD_ROOT%{l_prefix}/include/rpm/ - cp zlib-%{V_zlib}/zlib.h $RPM_BUILD_ROOT%{l_prefix}/include/rpm/ - cp zlib-%{V_zlib}/zconf.h $RPM_BUILD_ROOT%{l_prefix}/include/rpm/ + cp rpm-%{V_rpm_major}.%{V_rpm_minor}/rpmio/glob.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/ + cp zlib-%{V_zlib}/zlib.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/ + cp zlib-%{V_zlib}/zconf.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/ cp zlib-%{V_zlib}/libz.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmz.a - cp bzip2-%{V_bzip2}/bzlib.h $RPM_BUILD_ROOT%{l_prefix}/include/rpm/ + cp bzip2-%{V_bzip2}/bzlib.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/ cp bzip2-%{V_bzip2}/libbz2.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmbz2.a - cp beecrypt-%{V_beecrypt}/beecrypt.h $RPM_BUILD_ROOT%{l_prefix}/include/rpm/ + cp beecrypt-%{V_beecrypt}/include/beecrypt/beecrypt.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/ cp beecrypt-%{V_beecrypt}/libbeecrypt.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmbeecrypt.a + cp popt-%{V_popt}/popt.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/ + cp popt-%{V_popt}/.libs/libpopt.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmpopt.a + cp sqlite-%{V_sqlite}/sqlite3.h $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm/ + cp sqlite-%{V_sqlite}/.libs/libsqlite3.a $RPM_BUILD_ROOT%{l_prefix}/lib/librpmsqlite3.a # display verbosity header set +x; VERBOSE "INSTALL: Post-Adjust Installation"; set -x - # post-adjust RPM installation (namespace-clean POPT inclusion) - mv $RPM_BUILD_ROOT%{l_prefix}/lib/libpopt.a \ - $RPM_BUILD_ROOT%{l_prefix}/lib/librpmpopt.a - mv $RPM_BUILD_ROOT%{l_prefix}/include/popt.h \ - $RPM_BUILD_ROOT%{l_prefix}/include/rpm/popt.h - # move C API into custom locations - mv $RPM_BUILD_ROOT%{l_prefix}/include/rpm \ - $RPM_BUILD_ROOT%{l_prefix}/include/openpkg/rpm mv $RPM_BUILD_ROOT%{l_prefix}/lib/librpm* \ $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/ + mv $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig/rpm.pc \ + $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/ + # FIXME: does the rpm.pc really work this way? # move rpm tool to custom location mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpm \ $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpm.8 \ $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm.8 + ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm >/dev/null 2>&1 || true # move rpm2cpio tool to custom location mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpm2cpio \ $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpm2cpio.8 \ $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio.8 + ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm2cpio >/dev/null 2>&1 || true - # replace symlinks with hardlinks - for entry in rpme:rpmi rpmt:rpmb rpmu:rpmi rpmv:rpmq; do - eval `echo $entry | sed -e 's/^\(.*\):\(.*\)$/dst=\1; src=\2/'` - rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$dst - ln $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$src \ - $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$dst - done - rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/rpmbuild - ln $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmb \ - $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmbuild + # move rpmconstant tool to custom location + mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpmconstant \ + $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmconstant + mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmconstant.8 \ + $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmconstant.8 + ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmconstant >/dev/null 2>&1 || true + + # move rpmcache tool to custom location + mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpmcache \ + $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmcache + mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmcache.8 \ + $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmcache.8 + ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmcache >/dev/null 2>&1 || true + + # move rpmgrep tool to custom location + mv $RPM_BUILD_ROOT%{l_prefix}/bin/rpmgrep \ + $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmgrep + mv $RPM_BUILD_ROOT%{l_prefix}/man/man1/rpmgrep.1 \ + $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmgrep.1 + ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmgrep >/dev/null 2>&1 || true + + # move manual pages to custom location + mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmdeps.8 \ + $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmdeps.8 + mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmgraph.8 \ + $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmgraph.8 mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/rpmbuild.8 \ $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpmbuild.8 @@ -1133,29 +1441,29 @@ # strip RPM installation ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/bin/* \ $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/* >/dev/null 2>&1 || true - for dir in man/ja man/pl man/ru man/sk src; do - rm -rf $RPM_BUILD_ROOT%{l_prefix}/$dir >/dev/null 2>&1 || true - done - rm -rf $RPM_BUILD_ROOT/var >/dev/null 2>&1 || true - for file in rpme rpmi rpmsign rpmu rpmverify rpmquery gendiff; do + for file in rpmbuild gendiff; do rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/$file >/dev/null 2>&1 || true done - rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/* >/dev/null 2>&1 || true + for dir in RPMS SRPMS SPEC SOURCES BUILD; do + rm -rf $RPM_BUILD_ROOT%{l_prefix}/RPM/$dir >/dev/null 2>&1 || true + done rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/* >/dev/null 2>&1 || true rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man3/* >/dev/null 2>&1 || true - rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/rpmpopt >/dev/null 2>&1 || true - rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/rpmrc >/dev/null 2>&1 || true rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/lib*.la >/dev/null 2>&1 || true - rm -rf $RPM_BUILD_ROOT%{l_prefix}/var/lib >/dev/null 2>&1 || true + rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig >/dev/null 2>&1 || true for file in \ - u_pkg.sh vpkg-provides.sh vpkg-provides2.sh rpmdiff.cgi rpmdiff \ - mkinstalldirs magic.prov magic.req http.req getpo.sh \ - get_magic.pl find-provides find-requires find-requires.perl \ - find-req.pl find-provides.perl find-prov.pl find-lang.sh \ - cpanflute convertrpmrc.sh check-prereqs rpmputtext rpmgettext \ - brp-compress brp-redhat brp-sparc64-linux brp-strip \ - brp-strip-shared brp-strip-comment-note rpmrc \ - config.guess config.sub check-files; do + brp-compress brp-python-bytecompile brp-java-gcjcompile brp-strip brp-strip-comment-note \ + brp-nobuildrootpath brp-strip-shared brp-strip-static-archive brp-sparc64-linux check-files \ + cross-build executabledeps.sh find-debuginfo.sh find-lang.sh find-prov.pl find-req.pl \ + find-provides.perl find-requires.perl getpo.sh http.req javadeps.sh libtooldeps.sh mono-find-provides \ + mono-find-requires osgideps.pl pkgconfigdeps.sh perldeps.pl perl.prov perl.req pythondeps.sh \ + php.prov php.req rpmdb_loadcvt rpm.daily rpm.log rpm.xinetd symclash.py symclash.sh tgpg u_pkg.sh \ + vpkg-provides.sh vpkg-provides2.sh install-sh mkinstalldirs; do + rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$file >/dev/null 2>&1 || true + done + for file in \ + db_archive db_checkpoint db_deadlock db_dump db_hotbackup db_load \ + db_printlog db_recover db_stat db_upgrade db_verify; do rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/$file >/dev/null 2>&1 || true done @@ -1180,48 +1488,75 @@ l_cflags="" l_cppflags="-DOPENPKG -I${l_prefix}/include/openpkg/rpm -I${l_prefix}/include/openpkg" l_ldflags="-L${l_prefix}/lib/openpkg" - l_libs="-lrpmbuild -lrpm -lrpmio -lrpmdb -lrpmpopt -lrpmbeecrypt -lrpmbz2 -lrpmz" + l_libs="-lrpmbuild -lrpm -lrpmio -lrpmdb -lrpmmisc -lrpmsqlite3 -lrpmpopt -lrpmbeecrypt -lrpmbz2 -lrpmz" sed -e "s:@l_prefix@:%{l_prefix}:g" \ -e "s:@l_cc@:$l_cc:g" \ -e "s:@l_cflags@:$l_cflags:g" \ -e "s:@l_cppflags@:$l_cppflags:g" \ -e "s:@l_ldflags@:$l_ldflags:g" \ -e "s:@l_libs@:$l_libs:g" \ - -e "s:@l_version@:%{V_rpm}:g" \ + -e "s:@l_version@:%{V_rpm_major}.%{V_rpm_minor}:g" \ <`SOURCE rpm-config.sh` \ >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config ) || exit $? chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config - sed -e "s:RPM_VERSION:%{V_rpm}:g" \ + sed -e "s:RPM_VERSION:%{V_rpm_major}.%{V_rpm_minor}:g" \ <`SOURCE rpm-config.8` \ >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm-config.8 # install OpenPKG registry commands - ( cd openpkg-registry-%{V_registry} - mv $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm \ - $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpm - sed -e "s;@l_prefix@;%{l_prefix};g" \ - rpm.sh >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm - chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm - sed -e "s;@l_prefix@;%{l_prefix};g" \ - register.sh >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register - chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register - cp register.8 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register.8 - ) || exit $? + mv $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm \ + $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpm + sed -e "s;@l_prefix@;%{l_prefix};g" \ + `SOURCE rpm.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm + chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/rpm + sed -e "s;@l_prefix@;%{l_prefix};g" \ + `SOURCE register.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register + chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register + cp `SOURCE register.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/register.8 - # install OpenPKG Tool Chain command subset - ( cd openpkg-tools-%{V_tools} - cp cmd/curl.sh $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/curl.sh - cp cmd/build.pl $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.pl - chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.pl - cp cmd/build.8 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.8 - ) || exit $? + # allow GNU shtool to be called as "openpkg shtool" from external, too. + sed -e "s;@l_prefix@;%{l_prefix};g" \ + `SOURCE shtool.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/shtool.sh + chmod 755 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/shtool.sh + + # install OpenPKG tool chain command subset + cp `SOURCE curl.sh` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/curl.sh + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/curl.sh + cp `SOURCE build.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.pl + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.pl + cp `SOURCE build.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/build.8 + cp `SOURCE index.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/index.pl + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/index.pl + cp `SOURCE index.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/index.8 + cp `SOURCE search.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/search.pl + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/search.pl + cp `SOURCE search.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/search.8 + cp `SOURCE mirror.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/mirror.pl + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/mirror.pl + cp `SOURCE mirror.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/mirror.8 + cp `SOURCE makeproxy.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/makeproxy.pl + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/makeproxy.pl + cp `SOURCE makeproxy.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/makeproxy.8 + cp `SOURCE lint-fsl.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-fsl.pl + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-fsl.pl + cp `SOURCE lint-rc.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-rc.pl + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-rc.pl + cp `SOURCE lint-rpm.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-rpm.pl + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-rpm.pl + cp `SOURCE lint-spec.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-spec.pl + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/lint-spec.pl + cp `SOURCE dev.pl` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/dev.pl + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/dev.pl + cp `SOURCE dev.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/dev.8 + cp `SOURCE sea.sh` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/sea.sh + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/sea.sh + cp `SOURCE sea.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/sea.8 + cp `SOURCE stack.sh` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/stack.sh + chmod 644 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/stack.sh + cp `SOURCE stack.8` $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/stack.8 # install RPM extension - ( cd rpm-%{V_rpm} - cp file/file $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/file - ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/file - ) || exit $? ( cd perl-%{V_perl} cp miniperl $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/miniperl ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/miniperl @@ -1231,7 +1566,7 @@ ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/openssl ) || exit $? ( cd curl-%{V_curl} - cp src/curl $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/curl + cp curl $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/curl ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/curl ) || exit $? ( cd bzip2-%{V_bzip2} @@ -1242,6 +1577,10 @@ cp gzip $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/gzip ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/gzip ) || exit $? + ( cd xz-%{V_xz} + cp src/xz/xz $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/xz + ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/xz + ) || exit $? ( cd patch-%{V_patch} cp patch $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/patch ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/patch @@ -1258,6 +1597,27 @@ cp uuid $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/uuid ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/uuid ) || exit $? + ( cd sqlite-%{V_sqlite} + cp sqlite3 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/sqlite3 + ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/sqlite3 + ) || exit $? + ( cd libarchive-%{V_libarchive} + cp bsdcpio $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bsdcpio + cp bsdtar $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bsdtar + ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bsdcpio + ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/bsdtar + ) || exit $? + ( cd diffutils-%{V_diffutils} + ${l_strip} diff diff3 sdiff cmp + cp diff diff3 sdiff cmp $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/ + ) || exit $? + ( cd svs-%{V_svs} + sed -e "s;/bin/sh;%{l_prefix}/lib/openpkg/bash;" \ + -e "s;^\( *\)\(diff \);\1%{l_prefix}/lib/openpkg/\2;" \ + $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/svs + chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/svs + cp svs.1 $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/svs.1 + ) || exit $? sed -e "s;@l_prefix@;%{l_prefix};g" \ -e "s;@l_musr@;%{l_musr};g" \ -e "s;@l_mgrp@;%{l_mgrp};g" \ @@ -1278,9 +1638,16 @@ sed -e "s:@l_prefix@:%{l_prefix}:g" \ <`SOURCE rpmtool` >$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmtool chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmtool + sed -e "s;@l_prefix@;%{l_prefix};g" \ + -e "s;@l_musr@;%{l_musr};g" \ + -e "s;@l_mgrp@;%{l_mgrp};g" \ + <`SOURCE license.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/license + chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/license + sed -e "s;@l_prefix@;%{l_prefix};g" \ + <`SOURCE license.8` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/license.8 # install OpenPKG tool chain execution frontend and execution wrapper - cp openpkg-executable-%{V_exec}/openpkg $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg + cp openpkg $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg ${l_strip} $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg chmod 4775 $RPM_BUILD_ROOT%{l_prefix}/bin/openpkg sed -e "s;@l_prefix@;%{l_prefix};g" \ @@ -1292,12 +1659,12 @@ # install more OpenPKG tool chain commands sed -e "s;@l_prefix@;%{l_prefix};g" \ - <`SOURCE install.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/install - chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/install - sed -e "s;@l_prefix@;%{l_prefix};g" \ <`SOURCE man.sh` >$RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/man chmod a+x $RPM_BUILD_ROOT%{l_prefix}/libexec/openpkg/man + # install OpenPKG mutex utility + cp mutex $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/mutex + # install an own copy of shtool cp $shtool $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/shtool chmod a+x $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/shtool @@ -1387,18 +1754,37 @@ echo "" ) >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/managers + # install default release information file + release_tag="" + release_url="" + l_stack=""; [ ".%{?l_stack:set}" = .set ] && l_stack="%{l_stack}" + case "$l_stack" in + http: | https: | ftp: | file: ) + release_url="$l_stack" + ;; + [a-zA-Z]* ) + release_tag="$l_stack" + ;; + esac + ( echo "##" + echo "## release -- OpenPKG Release Information" + echo "##" + echo "" + echo "TAG=$release_tag" + echo "URL=$release_url" + echo "" + ) >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/release + # install overriding RPM configuration files sed -e "s:@l_prefix@:%{l_prefix}:g" \ <`SOURCE rpmpopt` \ - >>$RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/rpmpopt - sed -e "s:@l_prefix@:%{l_prefix}:g" \ - <`SOURCE rpmrc` \ - >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmrc + >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmpopt sed -e "s:@l_prefix@:%{l_prefix}:g" \ -e "s:@l_prefix_static@:%{l_prefix}:g" \ -e "s;@l_build_path@;$l_build_path;g" \ -e "s;@l_build_ldlp@;$l_build_ldlp;g" \ -e "s;@l_build_ulim@;$l_build_ulim;g" \ + -e "s;@l_unprivileged@;$l_unprivileged;g" \ -e "s:@TAG@:$tag:g" \ -e "s:@SUSR@:$susr:g" \ -e "s:@SGRP@:$sgrp:g" \ @@ -1410,6 +1796,9 @@ -e "s:@NGRP@:$ngrp:g" \ <`SOURCE rpmmacros` \ >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmmacros + sed -e "s:@l_prefix@:%{l_prefix}:g" \ + <`SOURCE rpmlua` \ + >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmlua cp `SOURCE openpkg.org.pgp` \ $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/openpkg.org.pgp cp `SOURCE openpkg.com.pgp` \ @@ -1417,6 +1806,33 @@ cp `SOURCE openpkg.net.pgp` \ $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/openpkg.net.pgp + # install license data + test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d || \ + mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d + cp `SOURCE license-BOOT.txt` \ + $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/BOOT + cp `SOURCE license-COMMUNITY.txt` \ + $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/COMMUNITY + cp `SOURCE license-EVAL.txt` \ + $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/EVAL + cp `SOURCE license-EXAMPLE.txt` \ + $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/EXAMPLE + cp `SOURCE license-PROMO.txt` \ + $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/PROMO + cp `SOURCE license-RECOVERY.txt` \ + $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license.d/RECOVERY + cp `SOURCE license.lua` \ + $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/license.lua + touch $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/license + + # provide directories for easy overriding of RPM configuration files + test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmmacros.d || \ + mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmmacros.d + test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmpopt.d || \ + mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmpopt.d + test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmlua.d || \ + mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/rpmlua.d + # display verbosity header set +x; VERBOSE "INSTALL: Done. Thank you for flying OpenPKG..."; set -x @@ -1428,6 +1844,7 @@ %dir %{l_prefix}/RPM %dir %{l_prefix}/RPM/SRC %dir %{l_prefix}/RPM/PKG + %dir %{l_prefix}/RPM/TR %dir %{l_prefix}/RPM/DB %dir %{l_prefix}/RPM/TMP %dir %{l_prefix}/cgi @@ -1440,10 +1857,23 @@ %dir %{l_prefix}/etc/rc.d %{l_prefix}/etc/rc.d/rc.openpkg %dir %{l_prefix}/etc/openpkg + %ghost %{l_prefix}/etc/openpkg/license + %dir %{l_prefix}/etc/openpkg/license.d + %{l_prefix}/etc/openpkg/license.d/BOOT + %{l_prefix}/etc/openpkg/license.d/COMMUNITY + %{l_prefix}/etc/openpkg/license.d/EVAL + %{l_prefix}/etc/openpkg/license.d/EXAMPLE + %{l_prefix}/etc/openpkg/license.d/PROMO + %{l_prefix}/etc/openpkg/license.d/RECOVERY %ghost %{l_prefix}/etc/openpkg/uuid + %config %{l_prefix}/etc/openpkg/release %config %{l_prefix}/etc/openpkg/platform %config %{l_prefix}/etc/openpkg/rpmmacros - %config %{l_prefix}/etc/openpkg/rpmrc + %config %{l_prefix}/etc/openpkg/rpmpopt + %config %{l_prefix}/etc/openpkg/rpmlua + %dir %{l_prefix}/etc/openpkg/rpmmacros.d + %dir %{l_prefix}/etc/openpkg/rpmpopt.d + %dir %{l_prefix}/etc/openpkg/rpmlua.d %ghost %{l_prefix}/etc/openpkg/register.conf %ghost %{l_prefix}/etc/openpkg/register.prep %ghost %{l_prefix}/etc/openpkg/register.tran @@ -1459,45 +1889,75 @@ %{l_prefix}/include/openpkg/rpm/beecrypt.h %{l_prefix}/include/openpkg/rpm/bzlib.h %{l_prefix}/include/openpkg/rpm/db.h + %{l_prefix}/include/openpkg/rpm/envvar.h + %{l_prefix}/include/openpkg/rpm/fs.h %{l_prefix}/include/openpkg/rpm/fts.h %{l_prefix}/include/openpkg/rpm/glob.h - %{l_prefix}/include/openpkg/rpm/hdrinline.h - %{l_prefix}/include/openpkg/rpm/header.h + %{l_prefix}/include/openpkg/rpm/mire.h %{l_prefix}/include/openpkg/rpm/misc.h + %{l_prefix}/include/openpkg/rpm/pkgio.h %{l_prefix}/include/openpkg/rpm/popt.h + %{l_prefix}/include/openpkg/rpm/rpm4compat.h %{l_prefix}/include/openpkg/rpm/rpmal.h + %{l_prefix}/include/openpkg/rpm/rpmbc.h %{l_prefix}/include/openpkg/rpm/rpmbuild.h + %{l_prefix}/include/openpkg/rpm/rpmcb.h %{l_prefix}/include/openpkg/rpm/rpmcli.h + %{l_prefix}/include/openpkg/rpm/rpmconstant.h + %{l_prefix}/include/openpkg/rpm/rpmdav.h %{l_prefix}/include/openpkg/rpm/rpmdb.h %{l_prefix}/include/openpkg/rpm/rpmds.h - %{l_prefix}/include/openpkg/rpm/rpmerr.h + %{l_prefix}/include/openpkg/rpm/rpmevr.h %{l_prefix}/include/openpkg/rpm/rpmfc.h %{l_prefix}/include/openpkg/rpm/rpmfi.h - %{l_prefix}/include/openpkg/rpm/rpmfile.h + %{l_prefix}/include/openpkg/rpm/rpmgc.h + %{l_prefix}/include/openpkg/rpm/rpmgi.h %{l_prefix}/include/openpkg/rpm/rpmhash.h + %{l_prefix}/include/openpkg/rpm/rpmio-stub.h %{l_prefix}/include/openpkg/rpm/rpmio.h + %{l_prefix}/include/openpkg/rpm/rpmiotypes.h + %{l_prefix}/include/openpkg/rpm/rpmku.h %{l_prefix}/include/openpkg/rpm/rpmlib.h %{l_prefix}/include/openpkg/rpm/rpmlog.h %{l_prefix}/include/openpkg/rpm/rpmmacro.h - %{l_prefix}/include/openpkg/rpm/rpmmessages.h + %{l_prefix}/include/openpkg/rpm/rpmmg.h + %{l_prefix}/include/openpkg/rpm/rpmns.h + %{l_prefix}/include/openpkg/rpm/rpmnss.h %{l_prefix}/include/openpkg/rpm/rpmpgp.h %{l_prefix}/include/openpkg/rpm/rpmps.h %{l_prefix}/include/openpkg/rpm/rpmspec.h + %{l_prefix}/include/openpkg/rpm/rpmsq.h + %{l_prefix}/include/openpkg/rpm/rpmssl.h %{l_prefix}/include/openpkg/rpm/rpmsw.h + %{l_prefix}/include/openpkg/rpm/rpmsx.h + %{l_prefix}/include/openpkg/rpm/rpmtag.h %{l_prefix}/include/openpkg/rpm/rpmte.h %{l_prefix}/include/openpkg/rpm/rpmts.h %{l_prefix}/include/openpkg/rpm/rpmurl.h - %{l_prefix}/include/openpkg/rpm/stringbuf.h + %{l_prefix}/include/openpkg/rpm/rpmuuid.h + %{l_prefix}/include/openpkg/rpm/rpmversion.h + %{l_prefix}/include/openpkg/rpm/rpmwf.h + %{l_prefix}/include/openpkg/rpm/rpmxar.h + %{l_prefix}/include/openpkg/rpm/rpmzlog.h + %{l_prefix}/include/openpkg/rpm/signature.h + %{l_prefix}/include/openpkg/rpm/sqlite3.h %{l_prefix}/include/openpkg/rpm/ugid.h + %{l_prefix}/include/openpkg/rpm/yarn.h %{l_prefix}/include/openpkg/rpm/zconf.h %{l_prefix}/include/openpkg/rpm/zlib.h %dir %{l_prefix}/info %dir %{l_prefix}/lib %dir %{l_prefix}/lib/openpkg %{l_prefix}/lib/openpkg/bash + %{l_prefix}/lib/openpkg/bsdcpio + %{l_prefix}/lib/openpkg/bsdtar %{l_prefix}/lib/openpkg/bzip2 %{l_prefix}/lib/openpkg/curl - %{l_prefix}/lib/openpkg/file + %{l_prefix}/lib/openpkg/db_tool + %{l_prefix}/lib/openpkg/cmp + %{l_prefix}/lib/openpkg/diff + %{l_prefix}/lib/openpkg/diff3 + %{l_prefix}/lib/openpkg/sdiff %{l_prefix}/lib/openpkg/gzip %{l_prefix}/lib/openpkg/librpm.a %{l_prefix}/lib/openpkg/librpmbeecrypt.a @@ -1505,46 +1965,52 @@ %{l_prefix}/lib/openpkg/librpmbz2.a %{l_prefix}/lib/openpkg/librpmdb.a %{l_prefix}/lib/openpkg/librpmio.a + %{l_prefix}/lib/openpkg/librpmmisc.a %{l_prefix}/lib/openpkg/librpmpopt.a + %{l_prefix}/lib/openpkg/librpmsqlite3.a %{l_prefix}/lib/openpkg/librpmz.a - %{l_prefix}/lib/openpkg/macros - %{l_prefix}/lib/openpkg/magic - %{l_prefix}/lib/openpkg/magic.mgc - %{l_prefix}/lib/openpkg/magic.mime - %{l_prefix}/lib/openpkg/magic.mime.mgc + %{l_prefix}/lib/openpkg/license.lua %{l_prefix}/lib/openpkg/miniperl + %{l_prefix}/lib/openpkg/mutex %{l_prefix}/lib/openpkg/openpkg %{l_prefix}/lib/openpkg/openssl %{l_prefix}/lib/openpkg/patch %{l_prefix}/lib/openpkg/rc %{l_prefix}/lib/openpkg/rpm - %{l_prefix}/lib/openpkg/rpmb - %{l_prefix}/lib/openpkg/rpmd + %{l_prefix}/lib/openpkg/rpm.pc %{l_prefix}/lib/openpkg/rpmdb - %{l_prefix}/lib/openpkg/rpmdb_dump - %{l_prefix}/lib/openpkg/rpmdb_load - %{l_prefix}/lib/openpkg/rpmdb_verify - %{l_prefix}/lib/openpkg/rpme - %{l_prefix}/lib/openpkg/rpmi - %{l_prefix}/lib/openpkg/rpmk + %{l_prefix}/lib/openpkg/rpmdeps + %{l_prefix}/lib/openpkg/lua + %{l_prefix}/lib/openpkg/rpmmacros %{l_prefix}/lib/openpkg/rpmpopt - %{l_prefix}/lib/openpkg/rpmq - %{l_prefix}/lib/openpkg/rpmt %{l_prefix}/lib/openpkg/rpmtool - %{l_prefix}/lib/openpkg/rpmu - %{l_prefix}/lib/openpkg/rpmv %{l_prefix}/lib/openpkg/shtool + %{l_prefix}/lib/openpkg/sqlite3 %{l_prefix}/lib/openpkg/tar %{l_prefix}/lib/openpkg/uuid + %{l_prefix}/lib/openpkg/xz %dir %{l_prefix}/libexec %dir %{l_prefix}/libexec/openpkg %{l_prefix}/libexec/openpkg/build.8 %{l_prefix}/libexec/openpkg/build.pl %{l_prefix}/libexec/openpkg/curl.sh - %{l_prefix}/libexec/openpkg/install + %{l_prefix}/libexec/openpkg/dev.8 + %{l_prefix}/libexec/openpkg/dev.pl + %{l_prefix}/libexec/openpkg/index.8 + %{l_prefix}/libexec/openpkg/index.pl + %{l_prefix}/libexec/openpkg/license + %{l_prefix}/libexec/openpkg/license.8 %{l_prefix}/libexec/openpkg/lsync %{l_prefix}/libexec/openpkg/lsync.8 + %{l_prefix}/libexec/openpkg/lint-fsl.pl + %{l_prefix}/libexec/openpkg/lint-rc.pl + %{l_prefix}/libexec/openpkg/lint-rpm.pl + %{l_prefix}/libexec/openpkg/lint-spec.pl + %{l_prefix}/libexec/openpkg/makeproxy.8 + %{l_prefix}/libexec/openpkg/makeproxy.pl %{l_prefix}/libexec/openpkg/man + %{l_prefix}/libexec/openpkg/mirror.8 + %{l_prefix}/libexec/openpkg/mirror.pl %{l_prefix}/libexec/openpkg/rc %{l_prefix}/libexec/openpkg/rc.8 %{l_prefix}/libexec/openpkg/register @@ -1555,10 +2021,26 @@ %{l_prefix}/libexec/openpkg/rpm-config %{l_prefix}/libexec/openpkg/rpm-config.8 %{l_prefix}/libexec/openpkg/rpm.8 + %{l_prefix}/libexec/openpkg/rpmconstant + %{l_prefix}/libexec/openpkg/rpmconstant.8 %{l_prefix}/libexec/openpkg/rpm2cpio %{l_prefix}/libexec/openpkg/rpm2cpio.8 - %{l_prefix}/libexec/openpkg/rpmbuild %{l_prefix}/libexec/openpkg/rpmbuild.8 + %{l_prefix}/libexec/openpkg/rpmcache + %{l_prefix}/libexec/openpkg/rpmcache.8 + %{l_prefix}/libexec/openpkg/rpmdeps.8 + %{l_prefix}/libexec/openpkg/rpmgraph.8 + %{l_prefix}/libexec/openpkg/rpmgrep + %{l_prefix}/libexec/openpkg/rpmgrep.1 + %{l_prefix}/libexec/openpkg/sea.8 + %{l_prefix}/libexec/openpkg/sea.sh + %{l_prefix}/libexec/openpkg/search.8 + %{l_prefix}/libexec/openpkg/search.pl + %{l_prefix}/libexec/openpkg/stack.8 + %{l_prefix}/libexec/openpkg/stack.sh + %{l_prefix}/libexec/openpkg/shtool.sh + %{l_prefix}/libexec/openpkg/svs + %{l_prefix}/libexec/openpkg/svs.1 %{l_prefix}/libexec/openpkg/uuid %{l_prefix}/libexec/openpkg/uuid.8 %dir %{l_prefix}/man @@ -1638,7 +2120,7 @@ echo $LOGNAME` # determine runtime details (for both inside and outside RPM!!) - # - bootstrapping: $xxx is set from aux.wrapbin.sh + # - bootstrapping: $xxx is set from etc.wrapbin.sh # - upgrading new: %{l_[smrn]{usr,grp}} is set via rpmmacros # - upgrading old: %{l_[smrn]{usr,grp}} is not set at all [ ".$susr" = . ] && susr="%{?l_susr}%{!?l_susr:root}" @@ -1673,6 +2155,33 @@ [ ".$prefix" = . ] && prefix="%{l_prefix}" prefix=`echo "$prefix" | sed -e 's;//*;/;g' -e 's;/$;;'` + # Pre-flight check before update to make sure that the currently + # activated license is still valid. This is done just be friendly + # to people and to not too easily shoot theirself into the foot + # by blindly upgrading and then having to recognize that the new + # OpenPKG Framework is no longer covered by the old license. + if [ ".$1" = .2 ]; then + ( OPENPKG_FRAMEWORK_RELEASE="%{release}" + export OPENPKG_FRAMEWORK_RELEASE + # LATER: + # $prefix/bin/openpkg rpm -q openpkg >/dev/null 2>&1 || exit $? + # if [ $? -ne 0 ]; then + # NOW: + output="`$prefix/bin/openpkg rpm -q openpkg 2>&1 | grep 'ENVIRONMENT ANOMALY'`" + if [ ".$output" != . ]; then + id="`($prefix/bin/openpkg license active) 2>/dev/null`" + [ ".$id" = . ] && id="UNKNOWN" + ( echo "Attention, your currently active license \"$id\" does" + echo "not allow you to use this newer version of the OpenPKG Framework!" + echo "We cancel this update to prevent you from a run-time failure." + echo "Please first upgrade to a newer license with the command:" + echo " \$ $prefix/bin/openpkg license update $id " + ) | $prefix/lib/openpkg/rpmtool msg -b -t error + exit 42 + fi + ) || exit $? + fi + # register instance in presence file presence="/etc/openpkg" exists=`cat $presence 2>/dev/null | egrep "^ *${prefix} *\$"` @@ -1689,12 +2198,19 @@ eval "xuid=\"\$${class}uid\"" eval "xgid=\"\$${class}gid\"" if [ ".$xuid" = . ]; then - xuid=`(getent passwd "${xusr}"; \ - grep "^${xusr}:" /etc/passwd; \ - ypmatch "${xusr}" passwd; \ - nismatch "${xusr}" passwd; \ - nidump passwd . | grep "^${xusr}:") 2>/dev/null | \ - sed -e 'q' | awk -F: '{ print $3; }'` + case "$plid" in + Darwin/10.[1-9]* | Darwin/1[1-9].* ) + xuid=`dscl . -read "/users/${xusr}" UniqueID 2>/dev/null | awk '{ print $2; }'` + ;; + * ) + xuid=`(getent passwd "${xusr}"; \ + grep "^${xusr}:" /etc/passwd; \ + ypmatch "${xusr}" passwd; \ + nismatch "${xusr}" passwd; \ + nidump passwd . | grep "^${xusr}:") 2>/dev/null | \ + sed -e 'q' | awk -F: '{ print $3; }'` + ;; + esac if [ ".$xuid" = . ]; then # seek for a reasonably uid/gid pair xuid=1000 @@ -1702,13 +2218,26 @@ while [ ".$ok" = .0 ]; do eval "u_exists=\$u_exists_$xuid" if [ ".$u_exists" = . ]; then - u_exists=`(getent passwd; cat /etc/passwd; ypcat passwd; niscat passwd; nidump passwd .) 2>/dev/null |\ - grep "^[^:]*:[^:]*:$xuid:"` + case "$plid" in + Darwin/10.[1-9]* | Darwin/1[1-9].* ) + u_exists=`dscl . -search /users UniqueID "$xuid" 2>/dev/null` + ;; + * ) + u_exists=`(getent passwd; cat /etc/passwd; ypcat passwd; niscat passwd; nidump passwd .) 2>/dev/null |\ + grep "^[^:]*:[^:]*:$xuid:"` + ;; + esac fi eval "g_exists=\$g_exists_$xuid" if [ ".$g_exists" = . ]; then - g_exists=`(getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null |\ - grep "^[^:]*:[^:]*:$xuid:"` + case "$plid" in + Darwin/10.[1-9]* | Darwin/1[1-9].* ) + g_exists=`dscl . -search /groups PrimaryGroupID "$xuid" 2>/dev/null` + ;; + * ) + g_exists=`(getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null |\ + grep "^[^:]*:[^:]*:$xuid:"` + esac fi if [ ".$u_exists" = . -a ".$g_exists" = . ]; then ok=1 @@ -1725,7 +2254,8 @@ grep "^${xgrp}:" /etc/group; \ ypmatch "${xgrp}" group; \ nismatch "${xgrp}" group; \ - nidump group . | grep "^${xgrp}:") 2>/dev/null | \ + nidump group . | grep "^${xgrp}:"; \ + dscl . -read "/groups/${xgrp}" | grep RecordName) 2>/dev/null | \ sed -e 'q' | awk -F: '{ print $3; }'` if [ ".$xgid" = . ]; then xgid="$xuid" @@ -1771,7 +2301,8 @@ grep "^$usr:" /etc/passwd; \ ypmatch "$usr" passwd; \ nismatch "$usr" passwd; \ - nidump passwd . | grep "^$usr:") 2>/dev/null | \ + nidump passwd . | grep "^$usr:"; \ + dscl . -read "/users/$usr" | grep RecordName) 2>/dev/null | \ sed -e 'q'` if [ ".$exists" = . ]; then if [ ".$cusr" != ".root" ]; then @@ -1822,8 +2353,22 @@ else update=":" fi ;; + CYGWIN*/* ) + file=/etc/passwd + entry="${usr}:*:${uid}:${gid}:${realname}:${prefix}:${shell}" + update=":" + ;; esac case "$plid" in + Darwin/10.[1-9]* | Darwin/1[1-9].* ) + dscl . -create "/users/${usr}" + dscl . -create "/users/${usr}" Password "*" + dscl . -create "/users/${usr}" UniqueID "${uid}" + dscl . -create "/users/${usr}" PrimaryGroupID "${gid}" + dscl . -create "/users/${usr}" RealName "${realname}" + dscl . -create "/users/${usr}" NFSHomeDirectory "${prefix}" + dscl . -create "/users/${usr}" UserShell "${shell}" + ;; Darwin/* ) niutil -create . "/users/${usr}" niutil -createprop . "/users/${usr}" passwd "*" @@ -1860,7 +2405,8 @@ grep "^$grp:" /etc/group; \ ypmatch "$grp" group; \ nismatch "$grp" group; \ - nidump group . | grep "^$grp:") 2>/dev/null | \ + nidump group . | grep "^$grp:"; \ + dscl . -read "/groups/$grp" | grep RecordName) 2>/dev/null | \ sed -e 'q'` if [ ".$exists" = . ]; then if [ ".$cusr" != ".root" ]; then @@ -1868,6 +2414,12 @@ echo "openpkg:WARNING: (would require root-privileges)" 1>&2 else case "$plid" in + Darwin/10.[1-9]* | Darwin/1[1-9].* ) + dscl . -create "/groups/${grp}" + dscl . -create "/groups/${grp}" Password "*" + dscl . -create "/groups/${grp}" PrimaryGroupID "${gid}" + dscl . -create "/groups/${grp}" GroupMembership "${usr}" + ;; Darwin/* ) niutil -create . "/groups/${grp}" niutil -createprop . "/groups/${grp}" gid "${gid}" @@ -1899,26 +2451,30 @@ # ensure chown/chgrp works immediately after pwconv on Linux and Solaris if [ -x /usr/sbin/nscd ]; then /usr/sbin/nscd -i passwd >/dev/null 2>&1 || true - /usr/sbin/nscd -i group >/dev/null 2>&1 || true + /usr/sbin/nscd -i group >/dev/null 2>&1 || true fi # create the startup/shutdown transfer script - name=`echo "$prefix" | sed -e 's;/;;g'` + name_old="`echo "$prefix" | sed -e 's;/;;g'`" + name="openpkg-`echo "$prefix" | sed -e 's;[^a-zA-Z0-9];;g'`" if [ ".$cusr" != ".root" ]; then echo "openpkg:WARNING: skipping creation of system run-command hooks" 1>&2 echo "openpkg:WARNING: (would require root-privileges)" 1>&2 else case "$plid" in FreeBSD/* ) - if [ ! -f /etc/rc.d/openpkg-${name} ]; then + if [ -f /etc/rc.d/${name_old} ]; then + rm -f /etc/rc.d/${name_old} + fi + if [ ! -f /etc/rc.d/${name} ]; then # install transfer script - rm -f /etc/rc.d/openpkg-${name} >/dev/null 2>&1 + rm -f /etc/rc.d/${name} >/dev/null 2>&1 ( echo "#!/bin/sh" echo "##" - echo "## openpkg-${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" + echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" echo "##" echo "" - echo "# PROVIDE: openpkg-${name}" + echo "# PROVIDE: ${name}" echo "# REQUIRE: LOGIN" echo "# KEYWORD: shutdown" echo "" @@ -1930,19 +2486,22 @@ echo "restart_cmd=\"openpkg_rc_all stop start\"" echo "" echo "openpkg_rc_all () {" - echo " if [ -f ${prefix}/etc/rc ]; then" - echo " ${prefix}/etc/rc all \"\$@\"" + echo " if [ -f ${prefix}/bin/openpkg ]; then" + echo " ${prefix}/bin/openpkg rc all \"\$@\"" echo " fi" echo "}" echo "" echo "load_rc_config \$name" echo "run_rc_command \"\$1\"" echo "" - ) >/etc/rc.d/openpkg-${name} - chmod 755 /etc/rc.d/openpkg-${name} + ) >/etc/rc.d/${name} + chmod 755 /etc/rc.d/${name} fi ;; NetBSD/* ) + if [ -f /etc/rc.d/${name_old} ]; then + rm -f /etc/rc.d/${name_old} + fi if [ ! -f /etc/rc.d/${name} ]; then ( echo "#!/bin/sh" echo "##" @@ -1952,11 +2511,11 @@ echo "## REQUIRE: DAEMON LOGIN NETWORK SERVERS" echo "##" echo "" - echo "[ ! -f ${prefix}/etc/rc ] && exit 0" + echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0" echo "case \$1 in" - echo " start ) exec ${prefix}/etc/rc all start ;;" - echo " stop ) exec ${prefix}/etc/rc all stop ;;" - echo " restart ) exec ${prefix}/etc/rc all stop start ;;" + echo " start ) exec ${prefix}/bin/openpkg rc all start ;;" + echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;" + echo " restart ) exec ${prefix}/bin/openpkg rc all stop start ;;" echo " status ) ;;" echo "esac" ) >/etc/rc.d/${name} @@ -1965,11 +2524,14 @@ ;; Linux/* ) if [ -f /etc/gentoo-release ]; then - if [ ! -f /etc/init.d/openpkg-${name} ]; then + if [ -f /etc/init.d/${name_old} ]; then + rm -f /etc/init.d/${name_old} + fi + if [ ! -f /etc/init.d/${name} ]; then # install transfer script ( echo "#!/sbin/runscript" echo "##" - echo "## openpkg-${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" + echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" echo "##" echo "" echo "depend() {" @@ -1977,48 +2539,71 @@ echo "}" echo "" echo "checkconfig() {" - echo " [ -f ${prefix}/etc/rc ] || return 1" + echo " [ -f ${prefix}/bin/openpkg ] || return 1" echo " case $1 in" - echo " start ) exec ${prefix}/etc/rc all start ;;" - echo " stop ) exec ${prefix}/etc/rc all stop ;;" + echo " start ) exec ${prefix}/bin/openpkg rc all start ;;" + echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;" echo " esac" echo "}" echo "" echo "start() {" echo " checkconfig || return 1" echo " ebegin "Starting OpenPKG ${prefix} hierarchy"" - echo " exec ${prefix}/etc/rc all start" + echo " exec ${prefix}/bin/openpkg rc all start" echo " eend 0" echo "}" echo "" echo "stop() {" echo " checkconfig || return 1" echo " ebegin "Stopping OpenPKG ${prefix} hierarchy"" - echo " exec ${prefix}/etc/rc all stop" + echo " exec ${prefix}/bin/openpkg rc all stop" echo " eend 0" echo "}" - ) >/etc/init.d/openpkg-${name} - chmod 755 /etc/init.d/openpkg-${name} - /sbin/rc-update add openpkg-${name} default + ) >/etc/init.d/${name} + chmod 755 /etc/init.d/${name} + /sbin/rc-update add ${name} default + fi + elif [ -f /etc/redhat-release ]; then + sroot=/etc/rc.d/init.d + if [ ! -f $sroot/${name} ]; then + # install transfer script + ( echo "#!/bin/sh" + echo "##" + echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" + echo "##" + echo "" + echo "# chkconfig: 2345 99 00" + echo "# description: OpenPKG ${prefix}" + echo "" + echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0" + echo "case \$1 in" + echo " start ) exec ${prefix}/bin/openpkg rc all start ;;" + echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;" + echo "esac" + ) >$sroot/${name} + chmod 755 $sroot/${name} + # activate script + /sbin/chkconfig --add ${name} + /sbin/chkconfig ${name} on fi else # sroot: script root directory # lroot: link root directory if [ -f /etc/debian_version ]; then sroot=/etc/init.d - lroot=/etc/rc%d.d - elif [ -f /etc/redhat-release -o -f /etc/mandrake-release ]; then + lroot=/etc/rc%%d.d + elif [ -f /etc/mandrake-release ]; then sroot=/etc/rc.d/init.d - lroot=/etc/rc.d/rc%d.d + lroot=/etc/rc.d/rc%%d.d elif [ -f /etc/SuSE-release ]; then sroot=/etc/init.d - lroot=/etc/init.d/rc%d.d + lroot=/etc/init.d/rc%%d.d elif [ -f /etc/slackware-version ]; then sroot=/etc/rc.d - lroot=/etc/rc.d/rc%d.d + lroot=/etc/rc.d/rc%%d.d name="rc.${name}" for i in 0 1 2 3 4 5 6; do - l=`echo $lroot | sed -e "s;%d;$i;"` + l=`echo $lroot | sed -e "s;%%d;$i;"` if [ ! -d $l ]; then mkdir $l 2>&1 || true fi @@ -2037,7 +2622,7 @@ done for lr in /etc/rc.d/rc2.d /etc/rc2.d /sbin/init.d/rc2.d; do if [ -d $lr ]; then - lroot="`echo $lr | sed -e 's;2;%d;'`" + lroot="`echo $lr | sed -e 's;2;%%d;'`" break fi done @@ -2046,6 +2631,9 @@ exit 1 fi fi + if [ -f $sroot/${name_old} ]; then + rm -f $sroot/${name_old} + fi if [ ! -f $sroot/${name} ]; then # install transfer script ( echo "#!/bin/sh" @@ -2053,115 +2641,27 @@ echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" echo "##" echo "" - echo "[ ! -f ${prefix}/etc/rc ] && exit 0" + echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0" echo "case \$1 in" - echo " start ) exec ${prefix}/etc/rc all start ;;" - echo " stop ) exec ${prefix}/etc/rc all stop ;;" + echo " start ) exec ${prefix}/bin/openpkg rc all start ;;" + echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;" echo "esac" ) >$sroot/${name} chmod 755 $sroot/${name} # create corresponding symbolic links for i in 2 3 4 5; do - ln -s $sroot/${name} `echo $lroot | sed -e "s;%d;$i;"`/S99${name} + ln -s $sroot/${name} `echo $lroot | sed -e "s;%%d;$i;"`/S99${name} done for i in 0 1 6; do - ln -s $sroot/${name} `echo $lroot | sed -e "s;%d;$i;"`/K00${name} + ln -s $sroot/${name} `echo $lroot | sed -e "s;%%d;$i;"`/K00${name} done fi fi ;; - SunOS/5.1* ) - if [ ! -d /var/svc/manifest/openpkg ]; then - mkdir /var/svc/manifest/openpkg + SunOS/5.* ) + if [ -f /etc/init.d/${name_old} ]; then + rm -f /etc/init.d/${name_old} fi - if [ ! -f /var/svc/manifest/openpkg/${name}.xml ]; then - # install SMF manifest - ( echo "" - echo "" - echo "" - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo " " - echo "" - ) >/var/svc/manifest/openpkg/${name}.xml - chmod 644 /var/svc/manifest/openpkg/${name}.xml - /usr/sbin/svccfg import /var/svc/manifest/openpkg/${name}.xml - ( echo "/usr/sbin/svcadm enable \"svc:/openpkg/${name}:default\"" - ) >%{l_prefix}.pre-post-process.sh - fi - ;; - SunOS/5.* ) if [ ! -f /etc/init.d/${name} ]; then # install transfer script ( echo "#!/bin/sh" @@ -2169,10 +2669,10 @@ echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" echo "##" echo "" - echo "[ ! -f ${prefix}/etc/rc ] && exit 0" + echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0" echo "case \$1 in" - echo " start ) exec ${prefix}/etc/rc all start ;;" - echo " stop ) exec ${prefix}/etc/rc all stop ;;" + echo " start ) exec ${prefix}/bin/openpkg rc all start ;;" + echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;" echo "esac" ) >/etc/init.d/${name} chmod 755 /etc/init.d/${name} @@ -2185,6 +2685,9 @@ fi ;; UnixWare/* ) + if [ -f /etc/init.d/${name_old} ]; then + rm -f /etc/init.d/${name_old} + fi if [ ! -f /etc/init.d/${name} ]; then # install transfer script ( echo "#!/bin/sh" @@ -2192,10 +2695,10 @@ echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" echo "##" echo "" - echo "[ ! -f ${prefix}/etc/rc ] && exit 0" + echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0" echo "case \$1 in" - echo " start ) exec ${prefix}/etc/rc all start ;;" - echo " stop ) exec ${prefix}/etc/rc all stop ;;" + echo " start ) exec ${prefix}/bin/openpkg rc all start ;;" + echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;" echo "esac" ) >/etc/init.d/${name} chmod 755 /etc/init.d/${name} @@ -2208,6 +2711,9 @@ fi ;; AIX/* ) + if [ -f /etc/rc.d/init.d/${name_old} ]; then + rm -f /etc/rc.d/init.d/${name_old} + fi if [ ! -f /etc/rc.d/init.d/${name} ]; then # install transfer script ( echo "#!/bin/sh" @@ -2215,10 +2721,10 @@ echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" echo "##" echo "" - echo "[ ! -f ${prefix}/etc/rc ] && exit 0" + echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0" echo "case \$1 in" - echo " start ) exec ${prefix}/etc/rc all start ;;" - echo " stop ) exec ${prefix}/etc/rc all stop ;;" + echo " start ) exec ${prefix}/bin/openpkg rc all start ;;" + echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;" echo "esac" ) >/etc/rc.d/init.d/${name} chmod 755 /etc/rc.d/init.d/${name} @@ -2229,6 +2735,9 @@ fi ;; OSF1/V5.* ) + if [ -f /sbin/init.d/${name_old} ]; then + rm -f /sbin/init.d/${name_old} + fi if [ ! -f /sbin/init.d/${name} ]; then # install transfer script ( echo "#!/bin/sh" @@ -2236,10 +2745,10 @@ echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" echo "##" echo "" - echo "[ ! -f ${prefix}/etc/rc ] && exit 0" + echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0" echo "case \$1 in" - echo " start ) exec ${prefix}/etc/rc all start ;;" - echo " stop ) exec ${prefix}/etc/rc all stop ;;" + echo " start ) exec ${prefix}/bin/openpkg rc all start ;;" + echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;" echo "esac" ) >/sbin/init.d/${name} chmod 755 /sbin/init.d/${name} @@ -2251,6 +2760,9 @@ fi ;; HP-UX/* ) + if [ -f /sbin/init.d/${name_old} ]; then + rm -f /sbin/init.d/${name_old} + fi if [ ! -f /sbin/init.d/${name} ]; then # install transfer script ( echo "#!/bin/sh" @@ -2258,10 +2770,10 @@ echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" echo "##" echo "" - echo "[ ! -f ${prefix}/etc/rc ] && exit 0" + echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0" echo "case \$1 in" - echo " start ) exec ${prefix}/etc/rc all start ;;" - echo " stop ) exec ${prefix}/etc/rc all stop ;;" + echo " start ) exec ${prefix}/bin/openpkg rc all start ;;" + echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;" echo "esac" ) >/sbin/init.d/${name} chmod 755 /sbin/init.d/${name} @@ -2273,14 +2785,18 @@ fi ;; Darwin/* ) - darwin_rc_dir="/System/Library/StartupItems/${name}" + if [ -d /Library/StartupItems/${name_old} ]; then + rm -rf /Library/StartupItems/${name_old} + fi + darwin_rc_dir="/Library/StartupItems/${name}" if [ ! -d ${darwin_rc_dir} ]; then - mkdir ${darwin_rc_dir} + mkdir -p ${darwin_rc_dir} fi # make sure hierarchy is activated in /etc/hostconfig # FIXME: cs: simple and bad code here without any detection of existing entries - echo "OPENPKG_${name}=-YES-" >>/etc/hostconfig + darwin_rc_var="`echo ${name} | sed -e 's;-;_;g' | tr '[a-z]' '[A-Z]'`" + echo "${darwin_rc_var}=-YES-" >>/etc/hostconfig # install transfer script if [ ! -f ${darwin_rc_dir}/${name} ]; then @@ -2288,20 +2804,21 @@ ( echo "#!/bin/sh" echo "##" echo "## ${darwin_rc_dir}/${name}" - echo "## -- startup transfer script for OpenPKG ${prefix} hierarchy" + echo "## -- startup transfer script for OpenPKG ${prefix} hierarchy" echo "##" echo "" - echo "[ ! -f ${prefix}/etc/rc ] && exit 0" + echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0" echo "" echo ". /etc/rc.common" echo "" - echo "if [ \"\${OPENPKG_${name}:=-NO-}\" = \"-YES-\" ]; then" + echo "if [ \"\${${darwin_rc_var}:=-NO-}\" = \"-YES-\" ]; then" echo " ConsoleMessage \"OpenPKG ${prefix} hierarchy\"" - echo " ${prefix}/etc/rc all start" + echo " ${prefix}/bin/openpkg rc all start" echo "fi" ) >${darwin_rc_dir}/${name} chmod 755 ${darwin_rc_dir}/${name} fi + # install startup parameter list if [ ! -f ${darwin_rc_dir}/StartupParameters.plist ]; then rm -f ${darwin_rc_dir}/StartupParameters.plist >/dev/null 2>&1 @@ -2322,6 +2839,9 @@ fi ;; IRIX*/6.* ) + if [ -f /etc/init.d/${name_old} ]; then + rm -f /etc/init.d/${name_old} + fi if [ ! -f /etc/init.d/${name} ]; then # install transfer script ( echo "#!/bin/sh" @@ -2329,10 +2849,10 @@ echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" echo "##" echo "" - echo "[ ! -f ${prefix}/etc/rc ] && exit 0" + echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0" echo "case \$1 in" - echo " start ) exec ${prefix}/etc/rc all start ;;" - echo " stop ) exec ${prefix}/etc/rc all stop ;;" + echo " start ) exec ${prefix}/bin/openpkg rc all start ;;" + echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;" echo "esac" ) >/etc/init.d/${name} chmod 755 /etc/init.d/${name} @@ -2343,6 +2863,33 @@ ) || exit $? fi ;; + CYGWIN*/* ) + if [ -f /etc/rc.d/init.d/${name_old} ]; then + rm -f /etc/rc.d/init.d/${name_old} + fi + if [ ! -f /etc/rc.d/init.d/${name} ]; then + # install transfer script + ( echo "#!/bin/sh" + echo "##" + echo "## ${name} -- startup/shutdown transfer script for OpenPKG ${prefix} hierarchy" + echo "##" + echo "" + echo "test -f /etc/rc.d/init.d/functions && . /etc/rc.d/init.d/functions" + echo "test -f /etc/sysconfig/network && . /etc/sysconfig/network" + echo "[ ! -f ${prefix}/bin/openpkg ] && exit 0" + echo "case \$1 in" + echo " start ) exec ${prefix}/bin/openpkg rc all start ;;" + echo " stop ) exec ${prefix}/bin/openpkg rc all stop ;;" + echo "esac" + ) >/etc/rc.d/init.d/${name} + chmod 755 /etc/rc.d/init.d/${name} + # create corresponding symbolic links + ( cd /etc/rc.d + ln -s ../init.d/${name} rc2.d/S90${name} + ln -s ../init.d/${name} rc1.d/K10${name} + ) || exit $? + fi + ;; esac fi @@ -2352,9 +2899,9 @@ echo "openpkg:WARNING: (would require root-privileges)" 1>&2 else case "$plid" in - FreeBSD/* | Linux/* | Darwin/* ) + FreeBSD/* | Linux/* ) if [ -f /etc/slackware-version ]; then - exists=`crontab -l | grep "$prefix/etc/rc"` + exists=`crontab -l | egrep "($prefix/bin/openpkg|$prefix/etc/rc)"` if [ ".$exists" = . ]; then EDITOR=/tmp/vipw.$$ VISUAL="$EDITOR" @@ -2363,11 +2910,11 @@ ( echo "#!/bin/sh" echo "( echo \"# \"" echo " echo \"# chronological tasks of ${prefix} OpenPKG hierarchy\"" - echo " echo \"0 0 1 * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all monthly\"" - echo " echo \"0 0 * * 0 [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all weekly\"" - echo " echo \"0 0 * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all daily\"" - echo " echo \"0 * * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all hourly\"" - echo " echo \"0,15,30,45 * * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all quarterly\"" + echo " echo \"0 0 1 * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron monthly\"" + echo " echo \"0 0 * * 0 [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron weekly\"" + echo " echo \"0 0 * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron daily\"" + echo " echo \"0 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron hourly\"" + echo " echo \"0,15,30,45 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron quarterly\"" echo " echo \"# \"" echo ") >>\$1" ) >$EDITOR @@ -2376,22 +2923,22 @@ rm -f $EDITOR fi else - exists=`grep "$prefix/etc/rc" /etc/crontab` + exists=`egrep "($prefix/bin/openpkg|$prefix/etc/rc)" /etc/crontab` if [ ".$exists" = . ]; then ( echo "# " echo "# chronological tasks of ${prefix} OpenPKG hierarchy" - echo "0 0 1 * * root [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all monthly" - echo "0 0 * * 0 root [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all weekly" - echo "0 0 * * * root [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all daily" - echo "0 * * * * root [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all hourly" - echo "*/15 * * * * root [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all quarterly" + echo "0 0 1 * * root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron monthly" + echo "0 0 * * 0 root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron weekly" + echo "0 0 * * * root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron daily" + echo "0 * * * * root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron hourly" + echo "*/15 * * * * root [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron quarterly" echo "# " ) >>/etc/crontab fi fi ;; - SunOS/5.* | OSF1/V5.* | NetBSD/* | HP-UX/* | UnixWare/* | AIX/* ) - exists=`crontab -l | grep "$prefix/etc/rc"` + SunOS/5.* | OSF1/V5.* | NetBSD/* | HP-UX/* | UnixWare/* | AIX/* | CYGWIN*/* | Darwin/* ) + exists=`crontab -l | egrep "($prefix/bin/openpkg|$prefix/etc/rc)"` if [ ".$exists" = . ]; then EDITOR=/tmp/vipw.$$ VISUAL="$EDITOR" @@ -2400,11 +2947,11 @@ ( echo "#!/bin/sh" echo "( echo \"# \"" echo " echo \"# chronological tasks of ${prefix} OpenPKG hierarchy\"" - echo " echo \"0 0 1 * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all monthly\"" - echo " echo \"0 0 * * 0 [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all weekly\"" - echo " echo \"0 0 * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all daily\"" - echo " echo \"0 * * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all hourly\"" - echo " echo \"0,15,30,45 * * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all quarterly\"" + echo " echo \"0 0 1 * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron monthly\"" + echo " echo \"0 0 * * 0 [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron weekly\"" + echo " echo \"0 0 * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron daily\"" + echo " echo \"0 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron hourly\"" + echo " echo \"0,15,30,45 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron quarterly\"" echo " echo \"# \"" echo ") >>\$1" ) >$EDITOR @@ -2414,16 +2961,16 @@ fi ;; IRIX*/6.* ) - exists=`crontab -l | grep "$prefix/etc/rc"` + exists=`crontab -l | egrep "($prefix/bin/openpkg|$prefix/etc/rc)"` if [ ".$exists" = . ]; then ( crontab -l echo "# " echo "# chronological tasks of ${prefix} OpenPKG hierarchy" - echo "0 0 1 * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all monthly" - echo "0 0 * * 0 [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all weekly" - echo "0 0 * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all daily" - echo "0 * * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all hourly" - echo "0,15,30,45 * * * * [ -f ${prefix}/etc/rc ] && ${prefix}/etc/rc all quarterly" + echo "0 0 1 * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron monthly" + echo "0 0 * * 0 [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron weekly" + echo "0 0 * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron daily" + echo "0 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron hourly" + echo "0,15,30,45 * * * * [ -f ${prefix}/bin/openpkg ] && ${prefix}/bin/openpkg rc cron quarterly" echo "# " ) | /usr/bin/crontab || exit $? fi @@ -2435,18 +2982,18 @@ # correctly upgrade the RPM database in the %post section (see below). if [ -d ${prefix}/RPM/DB ]; then if [ -x "${prefix}/bin/openpkg" -a -x "${prefix}/libexec/openpkg/rpm" ]; then - # OpenPKG 2.0 + # OpenPKG >= 2.0 rpm="${prefix}/bin/openpkg rpm" else # OpenPKG 1.x rpm="${prefix}/bin/rpm" fi rm -f ${prefix}/RPM/DB/.version >/dev/null 2>&1 || true - $rpm --version |\ + $rpm --version 2>/dev/null |\ sed -e 's;^;X;' \ -e 's;^X[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$;\1;' \ -e 's;^X[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$;\1;' \ - -e 's;^X.*$;4.0;' \ + -e 's;^X.*$;0.0;' \ >${prefix}/RPM/DB/.version fi @@ -2460,19 +3007,35 @@ # update or initially create OpenPKG UUID configuration %{l_prefix}/bin/openpkg uuid update >/dev/null 2>&1 || true + # when upgrading from RPM 4 to RPM 5 there will be no + # initial license at all, so create one + if [ ! -f %{l_prefix}/etc/openpkg/license ]; then + echo "BOOT" >%{l_prefix}/etc/openpkg/license + ( chown %{l_musr}:%{l_mgrp} %{l_prefix}/etc/openpkg/license + chmod 644 %{l_prefix}/etc/openpkg/license + ) >/dev/null 2>&1 || true + fi + + # finally switch from a possibly active BOOT license to EVAL license + # (notice: this is really the earliest time we can switch because the + # previous command had to create the /etc/openpkg/uuid first!) + if [ ".`cat %{l_prefix}/etc/openpkg/license`" = ".BOOT" ]; then + echo "EVAL" >%{l_prefix}/etc/openpkg/license + fi + # determine new and old OpenPKG RPM version - V_rpm_new="%{V_rpm}" + V_rpm_new="%{V_rpm_major}.%{V_rpm_minor}" if [ -f %{l_prefix}/RPM/DB/.version ]; then V_rpm_old="`cat %{l_prefix}/RPM/DB/.version`" rm -f %{l_prefix}/RPM/DB/.version >/dev/null 2>&1 || true else - V_rpm_old="4.0" + V_rpm_old="0.0" fi # make sure all RPM database files are present and that their # attributes are correct, etc. This is not a database rebuild # operation, so this is fully harmless and can be done always. - %{l_prefix}/lib/openpkg/rpmdb --quiet --fixate + %{l_prefix}/lib/openpkg/rpmdb --quiet --fixate >/dev/null 2>&1 || true # check RPM database for upgrade requirements if [ ".$1" = .2 -a ".$V_rpm_old" != ".$V_rpm_new" ]; then @@ -2481,14 +3044,13 @@ # we are still running within the execution context of the # old RPM which in turn has the database locked) and instead # have to just drop a note to the administrator about database - # upgrading. RPM 4.2 in general allows concurrent database + # upgrading. RPM >= 4.2 in general allows concurrent database # access, but the whole stuff is too risky here, too. ( echo "You are upgrading the OpenPKG bootstrap from a previous" echo "RPM $V_rpm_old based version to this RPM $V_rpm_new based" - echo "version. The RPM database in %{l_prefix}/RPM/DB/ can still" - echo "be used, but it is strongly recommended to upgrade it as" - echo "soon as possible to the latest Berkeley-DB format files by" - echo "executing the command:" + echo "version. The RPM database in %{l_prefix}/RPM/DB/ can be" + echo "reused, but you first have to upgrade it as soon as" + echo "possible to the latest format files by executing:" echo " \$ %{l_prefix}/bin/openpkg rpm --db-rebuild" echo "In case of problems with the RPM database you can always" echo "execute the command:" @@ -2552,6 +3114,22 @@ ;; esac + # special support for fully unprivileged environments + # where we cannot switch the user at all with su(1), + # so we provide a dummy su(1) override command. + if [ ".%{l_unprivileged}" = ".yes" ]; then + ( echo "#!/bin/sh" + echo "while [ \$# -gt 0 ]; do" + echo " case \"\$1\" in" + echo " - | -* ) shift ;;" + echo " * ) shift; break ;;" + echo " esac" + echo "done" + echo "exec /bin/sh \${1+\"\$@\"}" + ) >%{l_prefix}/lib/openpkg/override/su + chmod 775 %{l_prefix}/lib/openpkg/override/su + fi + # FIXME: hack to workaround problems in environments with too few # development tools. ATTENTION: see one paragraph above. if [ ! -d %{l_prefix}/lib/openpkg/fallback ]; then @@ -2559,21 +3137,47 @@ fi chown %{l_musr}:%{l_mgrp} %{l_prefix}/lib/openpkg/fallback >/dev/null 2>&1 || true - # check for "openpkg" executable from the OpenPKG Community series - # print license if not OSS, otherwise register with openpkg.org - community_version=`%{l_prefix}/bin/openpkg --license 2>/dev/null | \ - sed -e 'q' | egrep '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*-C'` - if [ ".$community_version" = . ]; then - ( echo "" - echo "NOTICE: This OpenPKG bootstrap package is based on an \"openpkg\"" - echo "executable which is covered by the following terms of use:" - echo "______________________________________________________________________________" - echo "" - %{l_prefix}/bin/openpkg --license | sed -e '1d' - ) | %{l_prefix}/lib/openpkg/rpmtool msg -b -t notice - else - %{l_prefix}/bin/openpkg register /dev/null 2>&1 || true - fi + # cruel platform hack + case "`cat %{l_prefix}/etc/openpkg/platform`" in + *-*-cygwin* ) + # Cygwin under Windows Vista dislikes executables with + # "patch" in the same and would require a "*.manifest" + # file applied with the "mt.exe" from the "Windows + # Software Development Kit (SDK)" in order to escape from + # UAC. An easy alternative is to just rename the file to a + # different name. + cp %{l_prefix}/lib/openpkg/patch \ + %{l_prefix}/lib/openpkg/pitch + %{l_prefix}/lib/openpkg/shtool subst \ + -e 's;openpkg/patch;openpkg/pitch;g' \ + %{l_prefix}/etc/openpkg/rpmmacros + ;; + esac + + # print license + ( echo "" + echo "NOTICE: Proprietary components of the OpenPKG Framework are covered" + echo "by the following terms and conditions and require a valid run-time" + echo "license, issued by the OpenPKG GmbH. An initial license, which allows" + echo "30 days of free use for evaluation purposes, is already pre-installed." + echo "Please go to http://openpkg.com/go/framework-license to obtain" + echo "your permanent license." + echo "" + %{l_prefix}/bin/openpkg --license + echo "______________________________________________________________________________" + echo "" + echo "NOTICE: Open Source components of the OpenPKG Framework are covered" + echo "by various standard Open Source distribution licenses, including" + echo "the MIT, BSD, LGPL, GPL, Public-Domain and Artistic licenses." + echo "They all allow you the use of those components free of charge." + echo "See http://www.opensource.org/licenses for more details." + echo "" + ) | %{l_prefix}/lib/openpkg/rpmtool msg -b -t notice + + # register package with central OpenPKG registry + ( nohup %{l_prefix}/bin/openpkg register \ + /dev/null 2>&1 & + ) /dev/null 2>&1 || true %preun [ ".$1" != .0 ] && exit 0 @@ -2592,6 +3196,7 @@ rm -rf %{l_prefix}/RPM/TMP/* %{l_prefix}/RPM/TMP/.[a-z]* >/dev/null 2>&1 || true rm -rf %{l_prefix}/RPM/SRC/* %{l_prefix}/RPM/SRC/.[a-z]* >/dev/null 2>&1 || true rm -rf %{l_prefix}/RPM/PKG/* %{l_prefix}/RPM/PKG/.[a-z]* >/dev/null 2>&1 || true + rm -rf %{l_prefix}/RPM/TR/* %{l_prefix}/RPM/TR/.[a-z]* >/dev/null 2>&1 || true rm -rf %{l_prefix}/RPM/DB/* %{l_prefix}/RPM/DB/.[a-z]* >/dev/null 2>&1 || true # The following code usually would be done in a %postun section. @@ -2668,7 +3273,8 @@ grep "^$usr:" /etc/passwd; \ ypmatch "$usr" passwd; \ nismatch "$usr" passwd; \ - nidump passwd . | grep "^$usr:") 2>/dev/null | \ + nidump passwd . | grep "^$usr:"; \ + dscl . -read "/users/$usr" | grep RecordName) 2>/dev/null | \ sed -e 'q'` if [ ".$exists" != . ]; then if [ ".$cusr" != ".root" ]; then @@ -2709,6 +3315,9 @@ grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd rm -f /etc/passwd.bak >/dev/null 2>&1 ;; + Darwin/10.[1-9]* | Darwin/1[1-9].* ) + dscl . -delete "/users/${usr}" + ;; Darwin/* ) niutil -destroy . "/users/${usr}" ;; @@ -2720,6 +3329,11 @@ fi rm -f /etc/passwd.bak >/dev/null 2>&1 ;; + CYGWIN*/* ) + cp /etc/passwd /etc/passwd.bak && \ + grep -v "^${usr}:" /etc/passwd.bak >/etc/passwd + rm -f /etc/passwd.bak >/dev/null 2>&1 + ;; esac fi fi @@ -2729,7 +3343,8 @@ grep "^$grp:" /etc/group; \ ypmatch "$grp" group; \ nismatch "$grp" group; \ - nidump group . | grep "^$grp:") 2>/dev/null | \ + nidump group . | grep "^$grp:"; \ + dscl . -read "/groups/$grp" | grep RecordName) 2>/dev/null | \ sed -e 'q'` if [ ".$exists" != . ]; then if [ ".$cusr" != ".root" ]; then @@ -2740,6 +3355,9 @@ echo "openpkg:WARNING: (would remove system standard group)" 1>&2 else case "$plid" in + Darwin/10.[1-9]* | Darwin/1[1-9].* ) + dscl . -delete "/groups/${grp}" + ;; Darwin/* ) niutil -destroy . "/groups/${grp}" ;; @@ -2771,30 +3389,34 @@ else case "$plid" in FreeBSD/* ) - rm -f /etc/rc.d/openpkg-${name} >/dev/null 2>&1 + rm -f /etc/rc.d/${name} >/dev/null 2>&1 ;; NetBSD/* ) rm -f /etc/rc.d/${name} >/dev/null 2>&1 ;; Linux/* ) if [ -f /etc/gentoo-release ]; then - /sbin/rc-update del openpkg-${name} >/dev/null 2>&1 - rm -f /etc/init.d/openpkg-${name} >/dev/null 2>&1 + /sbin/rc-update del ${name} >/dev/null 2>&1 + rm -f /etc/init.d/${name} >/dev/null 2>&1 + elif [ -f /etc/redhat-release ]; then + /sbin/chkconfig ${name} off >/dev/null 2>&1 + /sbin/chkconfig --del ${name} >/dev/null 2>&1 + rm -f /etc/rc.d/init.d/${name} >/dev/null 2>&1 else # sroot: script root directory # lroot: link root directory if [ -f /etc/debian_version ]; then sroot=/etc/init.d - lroot=/etc/rc%d.d - elif [ -f /etc/redhat-release -o -f /etc/mandrake-release ]; then + lroot=/etc/rc%%d.d + elif [ -f /etc/mandrake-release ]; then sroot=/etc/rc.d/init.d - lroot=/etc/rc.d/rc%d.d + lroot=/etc/rc.d/rc%%d.d elif [ -f /etc/SuSE-release ]; then sroot=/etc/init.d - lroot=/etc/init.d/rc%d.d + lroot=/etc/init.d/rc%%d.d elif [ -f /etc/slackware-version ]; then sroot=/etc/rc.d - lroot=/etc/rc.d/rc%d.d + lroot=/etc/rc.d/rc%%d.d name="rc.${name}" else echo "WARNING: you are not running one of the supported standard" 1>&2 @@ -2810,7 +3432,7 @@ done for lr in /etc/rc.d/rc2.d /etc/rc2.d /sbin/init.d/rc2.d; do if [ -d $lr ]; then - lroot="`echo $lr | sed -e 's;2;%d;'`" + lroot="`echo $lr | sed -e 's;2;%%d;'`" break fi done @@ -2821,14 +3443,14 @@ fi rm -f ${sroot}/${name} >/dev/null 2>&1 for i in 2 3 4 5; do - rm -f `echo $lroot | sed -e "s;%d;$i;"`/S99${name} >/dev/null 2>&1 + rm -f `echo $lroot | sed -e "s;%%d;$i;"`/S99${name} >/dev/null 2>&1 done for i in 0 1 6; do - rm -f `echo $lroot | sed -e "s;%d;$i;"`/K00${name} >/dev/null 2>&1 + rm -f `echo $lroot | sed -e "s;%%d;$i;"`/K00${name} >/dev/null 2>&1 done if [ -f /etc/slackware-version ]; then for i in 0 1 2 3 4 5 6; do - l=`echo $lroot | sed -e "s;%d;$i;"` + l=`echo $lroot | sed -e "s;%%d;$i;"` if [ -d $l ]; then rmdir $l >/dev/null 2>&1 || true fi @@ -2836,12 +3458,6 @@ fi fi ;; - SunOS/5.1* ) - /usr/sbin/svcadm disable "svc:/openpkg/${name}:default"; sleep 2 - /usr/sbin/svccfg delete -f "svc:/openpkg/${name}:default" >/dev/null 2>&1 || true - rm -f /var/svc/manifest/openpkg/${name}.xml >/dev/null 2>&1 - rmdir /var/svc/manifest/openpkg >/dev/null 2>&1 || true - ;; SunOS/5.* ) rm -f /etc/init.d/${name} >/dev/null 2>&1 rm -f /etc/rc3.d/S99${name} >/dev/null 2>&1 @@ -2869,16 +3485,22 @@ rm -f /etc/rc1.d/K100${name} >/dev/null 2>&1 ;; Darwin/* ) + darwin_rc_var="`echo ${name} | sed -e 's;-;_;g' | tr '[a-z]' '[A-Z]'`" cp /etc/hostconfig /etc/hostconfig.bak && \ - grep -v "^OPENPKG_${name}=" /etc/hostconfig.bak >/etc/hostconfig + grep -v "^${darwin_rc_var}=" /etc/hostconfig.bak >/etc/hostconfig rm -f /etc/hostconfig.bak >/dev/null 2>&1 - rm -rf /System/Library/StartupItems/${name} >/dev/null 2>&1 + rm -rf /Library/StartupItems/${name} >/dev/null 2>&1 ;; IRIX*/6.* ) rm -f /etc/init.d/${name} >/dev/null 2>&1 rm -f /etc/rc2.d/S99${name} >/dev/null 2>&1 rm -f /etc/rc0.d/K00${name} >/dev/null 2>&1 ;; + CYGWIN*/* ) + rm -f /etc/rc.d/init.d/${name} >/dev/null 2>&1 + rm -f /etc/rc.d/rc2.d/S90${name} >/dev/null 2>&1 + rm -f /etc/rc.d/rc1.d/K10${name} >/dev/null 2>&1 + ;; esac fi @@ -2888,7 +3510,7 @@ echo "openpkg:WARNING: (would require root-privileges)" 1>&2 else case "$plid" in - FreeBSD/* | Linux/* | Darwin/* ) + FreeBSD/* | Linux/* ) if [ -f /etc/slackware-version ]; then EDITOR=/tmp/vipw.$$ VISUAL="$EDITOR" @@ -2914,7 +3536,7 @@ fi fi ;; - SunOS/5.* | OSF1/V5.* | NetBSD/* | HP-UX/* | UnixWare/* | AIX/* ) + SunOS/5.* | OSF1/V5.* | NetBSD/* | HP-UX/* | UnixWare/* | AIX/* | CYGWIN*/* | Darwin/* ) EDITOR=/tmp/vipw.$$ VISUAL="$EDITOR" export EDITOR @@ -2939,6 +3561,10 @@ # delayed removal of top-level directory. ( sleep 2 + rm -rf %{l_prefix}/RPM/PKG/* >/dev/null 2>&1 || true + rm -rf %{l_prefix}/RPM/SRC/* >/dev/null 2>&1 || true + rm -rf %{l_prefix}/RPM/CACHE/* >/dev/null 2>&1 || true + rm -rf %{l_prefix}/RPM/TMP/* %{l_prefix}/RPM/TMP/.[a-z]* >/dev/null 2>&1 || true rm -rf %{l_prefix}/RPM/DB/* %{l_prefix}/RPM/DB/.[a-z]* >/dev/null 2>&1 || true rmdir %{l_prefix}/RPM/DB >/dev/null 2>&1 || true rmdir %{l_prefix}/RPM >/dev/null 2>&1 || true