diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/distrib/Makefile.am util-vserver-0.30.209-poldek2/distrib/Makefile.am --- util-vserver-0.30.209-clean/distrib/Makefile.am 2005-10-28 19:53:49.000000000 +0200 +++ util-vserver-0.30.209-poldek2/distrib/Makefile.am 2006-01-20 14:00:20.000000000 +0100 @@ -48,14 +48,20 @@ centos42/pkgs/01 centos42/pkgs/02 centos42/pkgs/03 \ centos42/yum/yum.conf $(wildcard centos42/yum.repos.d/CentOS*.repo) \ suse91/apt/rpmpriorities suse91/pkgs/01 suse91/pkgs/02 \ - suse91/rpm/macros + suse91/rpm/macros \ + pld-ac/pkgs/01 pld-ac/rpm/macros pld-ac/rpmlist.d/00.lst nobase_confdistrib_DATA = rh9/apt/sources.list \ fc1/apt/sources.list \ fc2/apt/sources.list \ fc3/apt/sources.list \ fc4/apt/sources.list \ - suse91/apt/sources.list + suse91/apt/sources.list \ + pld-ac/poldek/aliases.conf \ + pld-ac/poldek/fetch.conf \ + pld-ac/poldek/pld-source.conf \ + pld-ac/poldek/poldek.conf \ + pld-ac/poldek/source.conf AM_INSTALLCHECK_STD_OPTIONS_EXEMPT \ = $(nobase_distrib_SCRIPTS) @@ -75,6 +81,10 @@ ln -sf ../redhat/initpost $(DESTDIR)$(distribdir)/$$i/ && \ ln -sf ../redhat/initpre $(DESTDIR)$(distribdir)/$$i/; \ done + POLDEKARCH=$(shell rpm -E '%{_target_cpu}' 2>/dev/null); \ + if [ -z "$$POLDEKARCH" ] ; then POLDEKARCH=$(shell uname -m) ; fi ; \ + sed "s|%ARCH%|$$POLDEKARCH|g" $(DESTDIR)$(confdistribdir)/pld-ac/poldek/pld-source.conf > $(DESTDIR)$(confdistribdir)/pld-ac/poldek/pld-source.conf.tmp ; \ + mv $(DESTDIR)$(confdistribdir)/pld-ac/poldek/pld-source.conf.tmp $(DESTDIR)$(confdistribdir)/pld-ac/poldek/pld-source.conf $(mkinstalldirs) $(DESTDIR)$(confdir) \ $(DESTDIR)$(confdistribdir)/.common/pubkeys \ $(DESTDIR)$(confdefaultsdir) \ diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/distrib/pld-ac/pkgs/01 util-vserver-0.30.209-poldek2/distrib/pld-ac/pkgs/01 --- util-vserver-0.30.209-clean/distrib/pld-ac/pkgs/01 1970-01-01 01:00:00.000000000 +0100 +++ util-vserver-0.30.209-poldek2/distrib/pld-ac/pkgs/01 2006-01-20 13:45:53.000000000 +0100 @@ -0,0 +1,3 @@ +basesystem +glibc +issue diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/distrib/pld-ac/poldek/aliases.conf util-vserver-0.30.209-poldek2/distrib/pld-ac/poldek/aliases.conf --- util-vserver-0.30.209-clean/distrib/pld-ac/poldek/aliases.conf 1970-01-01 01:00:00.000000000 +0100 +++ util-vserver-0.30.209-poldek2/distrib/pld-ac/poldek/aliases.conf 2006-01-20 13:42:33.000000000 +0100 @@ -0,0 +1,30 @@ +# System wide aliases +# ls +ll = ls -l +llu = ls -lu +llU = ls -lU +lli = ls -lI + +# install +freshen = install -FN +upgrade = install -F + +# for backward compatybility, greedy is on by default now +greedy-upgrade = install -FG + +just-install = install -IN + +# search +what-requires = search -r +what-provides = search -p +rsearch = search --perlre + +exit = quit + +# for fun +#ls = uninstall kernel + +less = !less +grep = !grep +awk = !awk + diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/distrib/pld-ac/poldek/fetch.conf util-vserver-0.30.209-poldek2/distrib/pld-ac/poldek/fetch.conf --- util-vserver-0.30.209-clean/distrib/pld-ac/poldek/fetch.conf 1970-01-01 01:00:00.000000000 +0100 +++ util-vserver-0.30.209-poldek2/distrib/pld-ac/poldek/fetch.conf 2006-01-20 13:42:29.000000000 +0100 @@ -0,0 +1,62 @@ +# Configuration of poldek external file getters. Each [fetcher] section +# declares one external downloader. The syntax is: +# [fetcher] +# name = NAME +# proto = PROTOCOL[ ,PROTOCOL... ] +# cmd = CMD [OPTION...] DESTINATION-MACRO URL-MACRO +# Possible parameters are: +# +#[fetcher] +# Unique name of the fetcher. This is an optional parameter, if not set then +# name is taken from the "cmd" parameter value as "$(basename $cmd)". +#name = foo + +# Protocol or protocols supported by fetcher. Name of the protocol can be +# completely arbitrary, i.e. if you can handle protocol "foo" by writing +# a script which takes URLs in form 'foo://'. +#proto = foo,bar + +# Parameter specifies an external command and its invoking syntax. +# The syntax of "cmd" is: +# cmd = COMMAND [ OPTION... ] {%d,%D} {%p,%P}[n] +# Where COMMAND is the name or full path of command, OPTION is command specific +# options. Macro '%d' is replaced with cache directory, '%D' is replaced with +# 'cache directory/file basename', and '%p' with file basename, %P with file full +# path (URL). Optional suffix 'n' with %p and %P means that command can be +# invoked with multiple files at once. +#cmd = foogetter.sh -N %D %Pn + +##Configured fetchers +[fetcher] +proto = cdrom +cmd = vfjuggle %d %Pn + +[fetcher] +proto = http,ftp,https +cmd = wget -N --dot-style=binary -P %d %Pn + +[fetcher] +proto = http,ftp +cmd = snarf %P %D + +[fetcher] +proto = https +cmd = curl %P -o %D + +[fetcher] +proto = rsync +cmd = rsync -v %P %d + +[fetcher] +proto = smb +cmd = vfsmb -v %P %d + +#[fetcher] +#proto = ssh +#cmd = vfssh.sh %d %Pn + +#[fetcher] +#proto = foo +#cmd = foo.sh %d %Pn + + diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/distrib/pld-ac/poldek/pld-source.conf util-vserver-0.30.209-poldek2/distrib/pld-ac/poldek/pld-source.conf --- util-vserver-0.30.209-clean/distrib/pld-ac/poldek/pld-source.conf 1970-01-01 01:00:00.000000000 +0100 +++ util-vserver-0.30.209-poldek2/distrib/pld-ac/poldek/pld-source.conf 2006-01-20 13:44:14.000000000 +0100 @@ -0,0 +1,47 @@ +# $Id$ +# PLD + +_pld_arch = %ARCH% +_pld_prefix = ftp://ftp.ac.pld-linux.org/dists/ac +## Some mirrors +## You can use them if you have better connection there +# CI TASK: +#_pld_prefix = ftp://ftp.task.pld-linux.org/dists/ac + + +_ac_idxtype = pndir + +# PLD 2.0 (Ac) +[source] +type = %{_ac_idxtype} +name = ac +path = %{_pld_prefix}/PLD/%{_pld_arch}/PLD/RPMS/ + +[source] +type = %{_ac_idxtype} +name = ac-updates-security +path = %{_pld_prefix}/updates/security/%{_pld_arch}/ + +[source] +type = %{_ac_idxtype} +name = ac-updates-general +path = %{_pld_prefix}/updates/general/%{_pld_arch}/ +noauto = yes + +[source] +type = %{_ac_idxtype} +name = ac-supported +path = %{_pld_prefix}/supported/%{_pld_arch}/ +noauto = yes + +[source] +type = %{_ac_idxtype} +name = ac-ready +path = %{_pld_prefix}/ready/%{_pld_arch}/ +noauto = yes + +[source] +type = %{_ac_idxtype} +name = ac-test +path = %{_pld_prefix}/test/%{_pld_arch}/ +noauto = yes diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/distrib/pld-ac/poldek/poldek.conf util-vserver-0.30.209-poldek2/distrib/pld-ac/poldek/poldek.conf --- util-vserver-0.30.209-clean/distrib/pld-ac/poldek/poldek.conf 1970-01-01 01:00:00.000000000 +0100 +++ util-vserver-0.30.209-poldek2/distrib/pld-ac/poldek/poldek.conf 2006-01-20 13:44:46.000000000 +0100 @@ -0,0 +1,182 @@ +# poldek main configuration file. + +# Some macros. Macros are local, they are not visible in included files +# and macros declared in them are not visible to includer. +# Macros names starts with underscore '_'. +# +_distro = pld + +# Both local and remote files may be included. Included files may not contain +# [global] section, it will be ignored anyway. +%include %{_distro}-source.conf + +# local sources +%include source.conf + +# External downloaders configuration, not necessary in most cases, cause +# to internal HTTP and FTP client. +#%include fetch.conf + +[global] + + +# This parameter allows to configure the default repository index type. +#default index type = pndir + +# Cache directory for downloaded files. NOTE: that parent directory of cachedir +# must exists. +#cachedir = $HOME/.poldek-cache + +# Switch to ordinary user at startup when executed by root +#runas = poldek + +# Permits using root privileges for installation only. Automatically turned +# on when poldek executed as ordinary user. +#use sudo = no + +# Load /etc/apt/sources.list. +#load apt sources list = no + +# Handle gzipped indexes externally (needed on RedHat 9 and Fedora Core 1 and 2). +# This option is a workaround for broken zlib linked into librpm; with enabled +# 'auto zlib in rpm' poldek tries to detect such case and then enables external +# *.gz handling automatically. +#vfile external compress = no + +# Auto detection of zlib linked into librpm. See 'vfile external compress' +# description. +#auto zlib in rpm = yes + +# Automatically download whole index if incremental update fails. +#autoupa = yes + +# Do not save given paths into created indexes. This option may significantly +# reduce index size. Example (notice missing starting '/'): +# exclude path = usr/share/doc:usr/share/man:usr/src +#exclude path = + +# Full path name to a PM (rpm for now) binary. +#pm command = /bin/rpm + +# Full path name to sudo binary. +#sudo command = /usr/bin/sudo + + +### File downloaders configuration + +# Send ${USER}@${HOSTNAME} as anonymous FTP password (by default +# 'poldek@znienacka.net' is sent) +#vfile ftp sysuser as anon passwd = no + +# File getters configuration parameter. By this option URL handlers may be configured. +# To get file from HTTP and FTP servers poldek uses its internal client (what is +# recommended), although it can be changedby this option. Others protocols handled +# by external utilities can be configured also. The syntax is: +# default fetcher = PROTOCOL[,PROTOCOL...]:FETCHER_NAME + +# where FETCHER_NAME is a name of one of the fetcher preconfigured in [fetch] +# sections (placed in fetch.conf in default configuration). +# Examples: +# default fetcher = ftp,http:internal +# default fetcher = https:wget +# default fetcher = cdrom:vfjuggle +# vfjuggle is a cdrom getter supplied with poldek. +#default fetcher = http,ftp: internal + +# Proxies for internal FTP and HTTP client may be configured in usual +# way, by environment variables ftp_proxy and http_proxy, or by this option. +# Its syntax is similar to "default fetcher" one: +# proxy = PROTOCOL[,PROTOCOL...]:PROXY_URL +# Example: +# proxy = http: http://w3cache.foo.org:8080 +#proxy = + +# Comma separated list of hosts or domains which will not be accessed via proxy. +# Option overrides no_proxy environment variable. +# Example: +# noproxy = localhost, .pl, ftp.foo.bar.org +#noproxy = + +# Internal HTTP and FTP client is stubborn, it retries to retrive +# file if connection breaks. This option tells it how many times +# it should try. +#vfile retries = 128 + + +### Installation options + +# Install packages in small groups instead of doing all-or-nothing +# installations. +particle install = no + +# Do not remove downloaded packages after its successful installation. +#keep downloads = no + +# Controls visibility of multiple package instances with different EVR. +# If on, only one, highest version will be visible. +#unique package names = no + +# Epoch autopromotion during dependency comparision. RPM specific. +# Set it up if you are using system with rpm prior to 4.2.1 version. +#promoteepoch = no + +# Confirm packages installation. +#confirm installation = no + +# Confirm packages removal. +#confirm removal = yes + +# Let the user select package among equivalents. +#choose equivalents manually = no + +# Prevent package listed from being upgraded if they are already installed. +# hold = kernel* dev +#hold = + +# Ignore package list - packages fits given mask will be invisible. +# ignore = *-smp-* foo* +ignore = kernel* udev devfs + +# Conflicts with already installed packages are treated as resolved +# if at least one of multiple-installed package satisfies conflict. +# rpm doesn't support such cases, so --pm-nodeps is needed (use with +# care). +#allow duplicates = yes + + +### RPM specific options + +# rpm macros can be set by this option. Examples: +# rpmdef = _install_langs pl:pl_PL:lt:lt_LT +# Do not install any documentation: +# rpmdef = _netsharedpath /usr/share/info:/usr/share/man +# rpmdef = _excludedocs 1 +#rpmdef = + + +### Dependency processing settings +# Subtle dependency processing options, they should not be changed +# unless you know what you are doing + +# Automatically install packages required by installed ones. +#follow = yes + +# Greedy upgrades, i.e. upgrade packages which dependencies are broken +# by being uninstalled ones. +#greedy = yes + +# Be yet more greedy; if successor of orphaned package found, and this +# successor drags no packages then upgrade the package instead of process +# its dependencies. Option value is implied by 'greedy' one by defalut. +#aggressive greedy = yes + +# Be tolerant for unmatched versioned dependencies which rpm tolerates, e.g. +# package A requires capability foo >= 1.0 while package B provides "foo" +# without any version. Use with care, it may cause weird dependency errors. +#mercy = no + +# Taking into account package Obsoletes. +#obsoletes = yes + +# Taking into account package Conflicts. +#conflicts = yes diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/distrib/pld-ac/poldek/source.conf util-vserver-0.30.209-poldek2/distrib/pld-ac/poldek/source.conf --- util-vserver-0.30.209-clean/distrib/pld-ac/poldek/source.conf 1970-01-01 01:00:00.000000000 +0100 +++ util-vserver-0.30.209-poldek2/distrib/pld-ac/poldek/source.conf 2006-01-20 13:42:29.000000000 +0100 @@ -0,0 +1,85 @@ +# Sample poldek sources configuration +# Every source is configured in his own [source] section. +# Possible parameters are: +# +#[source] +# Unique name of the repository. +#name = foo + +# Type of repository index. Permitted values are 'pndir', 'pdir', 'apt', 'yum' +# and 'dir' as listed by --stl switch. +#type = pndir + +# This parameter sets index original type i.e type of repository +# from what this repository is created. Default is 'dir' - means +# that directory of packages is scanned. +#original type = dir + +# Unique name of the repository. May be either path or URL. +#path = /some/url/or/dir + +# If package index and packages are stored in different locations then +# prefix stands for packages path. +#prefix = /some/url/or/dir + +# Controls visibility of multiple package instances with different EVR. +# If on, only one, highest version will be visible. +#douniq = no + +# Repository priority. If the same packages (equal names and EVR) +# are available in more than one source then package from highest +# prioritized source are taken. Priority is numeric value. Lower number +# means higher priority, and negative priorities are allowed. +# Priority is numeric value. +#pri = 0 + +# Controling if repository index will be implicit loaded. Set it off if +# the index should be loaded on demand only, i.e. if specified directly +# by --sn option. +#auto = yes + +# Controls if repository index will be implicit updated. Set it off if +# the index should be updated on demand only, i.e. if specified directly +# by --sn option. +#autoup = yes + +# Packages PGP/GPG signatures (if any) will be verified before their +# installation. +#signed = no + +# Have the same meaning as [global] parameter. Example: +# hold = kernel* dev +#hold = + +# Have the same meaning as [global] parameter. Example: +# ignore = kernel*smp* dev +#ignore = + +# Parameter have the same meaning as [global] parameter. +# exclude path = usr/share/doc:usr/share/man:usr/src +#exclude path = + +# Preferred language of package descriptions. If not set, taken from locale +# settings. Example: +# lang = pl_PL:lt_LT +#lang = + +[source] +name = home +type = dir +path = $HOME/rpm/RPMS +auto = no +autoup = no + +#[source] +#type = pndir +#name = foo +#path = ftp://ftp.foo.bar.org/RPMS/ +#pri = -10 +#auto = no +#autoup = no +#signed = yes +#hold = kernel* +#ignore = kernel*-smp-* +#dscr = pl_PL + diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/distrib/pld-ac/rpm/macros util-vserver-0.30.209-poldek2/distrib/pld-ac/rpm/macros --- util-vserver-0.30.209-clean/distrib/pld-ac/rpm/macros 1970-01-01 01:00:00.000000000 +0100 +++ util-vserver-0.30.209-poldek2/distrib/pld-ac/rpm/macros 2006-01-20 13:45:53.000000000 +0100 @@ -0,0 +1,4 @@ +# Because of https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=52725 +# you have to use at least one language beside 'C' +%_install_langs C:en:pl +%_netsharedpath /dev diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/distrib/pld-ac/rpmlist.d/00.lst util-vserver-0.30.209-poldek2/distrib/pld-ac/rpmlist.d/00.lst --- util-vserver-0.30.209-clean/distrib/pld-ac/rpmlist.d/00.lst 1970-01-01 01:00:00.000000000 +0100 +++ util-vserver-0.30.209-poldek2/distrib/pld-ac/rpmlist.d/00.lst 2006-01-20 13:45:53.000000000 +0100 @@ -0,0 +1,8 @@ +basesystem-*.rpm +dev-*.rpm +FHS-*.rpm +glibc-misc-*.rpm +glibc-[0-9]*.rpm +libgcc-[0-9]*.rpm +setup-*.rpm +issue-[0-9]*.rpm diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/scripts/Makefile-files util-vserver-0.30.209-poldek2/scripts/Makefile-files --- util-vserver-0.30.209-clean/scripts/Makefile-files 2005-04-28 19:45:34.000000000 +0200 +++ util-vserver-0.30.209-poldek2/scripts/Makefile-files 2006-01-20 13:45:53.000000000 +0100 @@ -21,6 +21,7 @@ scripts/vapt-get-worker \ scripts/vrpm-worker \ scripts/vyum-worker \ + scripts/vpoldek-worker \ scripts/vrpm-preload \ scripts/save_s_context \ scripts/vservers.grabinfo.sh \ @@ -43,11 +44,13 @@ scripts/vserver-build.debootstrap \ scripts/vserver-build.rpm \ scripts/vserver-build.yum \ + scripts/vserver-build.poldek \ scripts/vserver-build.functions \ scripts/vserver-build.functions.apt \ scripts/vserver-build.functions.rpm \ scripts/vserver-build.functions.pkgmgmt \ scripts/vserver-build.functions.yum \ + scripts/vserver-build.functions.poldek \ scripts/vserver-setup.functions \ scripts/vserver.functions \ scripts/vserver.start \ @@ -59,6 +62,7 @@ scripts_pkglib_src_SCRPTS = scripts/pkgmgmt \ scripts/vapt-get-worker \ scripts/vpkg \ + scripts/vpoldek-worker \ scripts/vrpm-worker \ scripts/vrpm-preload \ scripts/start-vservers \ @@ -80,6 +84,7 @@ scripts_sbin_src_PRGS = scripts/chcontext \ scripts/vapt-get \ + scripts/vpoldek \ scripts/vpstree \ scripts/vrpm \ scripts/vserver \ diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/scripts/functions util-vserver-0.30.209-poldek2/scripts/functions --- util-vserver-0.30.209-clean/scripts/functions 2005-10-28 19:59:37.000000000 +0200 +++ util-vserver-0.30.209-poldek2/scripts/functions 2006-01-20 16:46:03.000000000 +0100 @@ -370,6 +370,20 @@ fi } +function _pkgSetVarsPoldek +{ + if test -n "$PKGDIR"; then + findDir POLDEKETCDIR $PKGDIR/poldeketc $PKGDIR/base/poldek/etc /etc/poldek + findDir POLDEKCACHEDIR $PKGDIR/poldek-cache $PKGDIR/base/poldek/cache + else + findDir POLDEKETCDIR "$VDIR"/etc/poldek /etc/poldek + findDir POLDEKCACHEDIR "$VDIR"/var/tmp/poldek-cache + fi + + findFile POLDEK_CONFIG "$POLDEKETCDIR"/poldek.conf "" + test -z "$POLDEK_CONFIG" || export POLDEK_CONFIG +} + function _pkgMountBase { @@ -443,6 +457,7 @@ rpm) _pkgSetVarsRPM;; apt) _pkgSetVarsApt;; yum) _pkgSetVarsYum;; + poldek) _pkgSetVarsPoldek;; *) echo "Unknown packaging flavor" >&2; exit 1;; esac done @@ -705,6 +720,8 @@ style=redhat elif test -e "$_pgs_vdir"/etc/mandrake-release; then style=mandrake + elif test -e "$_pgs_vdir"/etc/pld-release; then + style=pld elif test -e "$_pgs_vdir"/etc/debian_version; then style=debian elif test -e "$_pgs_vdir"/etc/SuSE-release; then @@ -772,6 +789,27 @@ test -n "$have_yum" && return 0 || return 1 } +## Usage: pkgmgmt.isPoldekAvailable [] +function pkgmgmt.isPoldekAvailable +{ + local cfgdir="$1" + local vdir="$2" + local is_internal="$3" + + local have_poldek i + if test -n "$is_internal"; then + have_poldek=1 + test -d "$cfgdir"/base/poldek -o -d "$cfgdir"/poldeketc || have_poldek= + else + have_poldek= + for i in /bin /usr/bin /usr/local/bin; do + test ! -x "$vdir$i"/poldek || { have_poldek=1; break; } + done + fi + + test -n "$have_poldek" && return 0 || return 1 +} + function vshelper.doSanityCheck { diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/scripts/pkgmgmt util-vserver-0.30.209-poldek2/scripts/pkgmgmt --- util-vserver-0.30.209-clean/scripts/pkgmgmt 2005-07-03 19:43:34.000000000 +0200 +++ util-vserver-0.30.209-poldek2/scripts/pkgmgmt 2006-01-20 14:40:48.000000000 +0100 @@ -193,7 +193,7 @@ " case $2 in - (RH) pkgs=$(vrpm "$1" -- -q --qf '---%{NAME}---\n' rpm apt yum "${YUM_RELEASEPKGS[@]}") + (RH) pkgs=$(vrpm "$1" -- -q --qf '---%{NAME}---\n' rpm apt yum poldek "${YUM_RELEASEPKGS[@]}") hasSubstring "$pkgs" ---rpm--- || { warning "$ERR * The vserver does not seem to have the 'rpm' package which is required @@ -203,9 +203,9 @@ ERR= } - hasSubstring "$pkgs" ---apt--- ---yum--- || { + hasSubstring "$pkgs" ---apt--- ---yum--- ---poldek--- || { warning "$ERR -* The vserver does not seem to have a depsolver like 'apt' or 'yum' +* The vserver does not seem to have a depsolver like 'apt', 'yum' or 'poldek' installed. It is suggested to install such a program before setting up internal package management." res=1 @@ -366,6 +366,131 @@ fi } +function processVserver_PLD() +{ + local vserver=$1 + local is_internalize=$2 + local cfgdir + local i + + cfgdir=$($_VSERVER_INFO "$vserver" APPDIR pkgmgmt) || \ + cfgdir=$($_VSERVER_INFO "$vserver" APPDIR)/pkgmgmt + + ## Figure out the environment.... + pkgmgmt.isPoldekAvailable "$cfgdir" "$vdir" "$is_internalize" || have_poldek= + + local POLDEKETCDIR= + local POLDEKCACHEDIR= + local RPMETCDIR= + local RPMSTATEDIR= + + ## Create directories and assign variables where configuration + ## can/will be found on the host + if test -n "$is_internalize"; then + verifyInternalPackages "$vserver" RH || test -n "$IS_FORCE" || + panic " +Can not continue; use '--force' to override this check" + + pushd "$vdir" >/dev/null + + test ! -L var/lib/rpm || { + $_EXEC_CD /var/lib $_RM rpm && + $_EXEC_CD /var/lib $_MKDIR -m755 rpm && + $_EXEC_CD /var/lib $_CHOWN rpm:rpm rpm || + : + } /dev/null + + for i in var/tmp/poldek-cache etc/rpm etc/poldek; do + test -d "$i" || + $_EXEC_CD /$(dirname "$i") $_MKDIR -m755 $(basename "$i") || : + done #2>/dev/null + + popd >/dev/null + + if test -n "$have_poldek"; then + findDir POLDEKETCDIR "$cfgdir"/poldeketc "$cfgdir"/base/poldek/etc /etc/poldek + fi + + findDir RPMETCDIR "$cfgdir"/rpmetc "$cfgdir"/base/rpm/etc /etc/rpm / + findDir RPMSTATEDIR "$cfgdir"/rpmstate "$cfgdir"/base/rpm/state + else + mkdir -m755 -p "$cfgdir" + local need_base= + + if test -n "$have_poldek"; then + findDir POLDEKETCDIR "$cfgdir"/poldeketc "$cfgdir"/base/poldek/etc / + findDir POLDEKCACHEDIR "$cfgdir"/poldek-cache "$cfgdir"/base/poldek/cache / + + test "$POLDEKETCDIR" != / || POLDEKETCDIR=$cfgdir/base/poldek/etc + test "$POLDEKCACHEDIR" != / || POLDEKCACHEDIR=$cfgdir/base/poldek/cache + + test -d "$cfgdir"/poldeketc -a -d "$cfgdir"/poldek-cache || need_base=1 + fi + + findDir RPMETCDIR "$cfgdir"/rpmetc "$cfgdir"/base/rpm/etc / + findDir RPMSTATEDIR "$cfgdir"/rpmstate "$cfgdir"/base/rpm/state / + + test "$RPMETCDIR" != / || RPMETCDIR=$cfgdir/base/rpm/etc + test "$RPMSTATEDIR" != / || RPMSTATEDIR=$cfgdir/base/rpm/state + + test -d "$cfgdir"/rpmetc -a -d "$cfgdir"/rpmstate || need_base=1 + test ! -e "$cfgdir"/base || need_base= + + test -z "$need_base" || ln -s "$PKGCFGDIR" "$cfgdir"/base + + mkdir -m755 -p "$PKGCFGDIR" + _createDirs "$POLDEKETCDIR" "$POLDEKCACHEDIR" \ + "$RPMETCDIR" "$RPMSTATEDIR" + fi + + ## Copy the files... + if test -n "$is_internalize"; then + if test -n "$have_poldek"; then + _copySecure "$vdir" "$POLDEKETCDIR" /etc/poldek + pushd "$vdir" >/dev/null + _hashAuto /etc/poldek.conf '/' + popd >/dev/null + fi + + _copySecure "$vdir" "$RPMETCDIR" /etc/rpm + _copySecure "$vdir" "$RPMSTATEDIR" /var/lib/rpm + + pushd "$vdir" >/dev/null + ## remove %_dbpath settings + _substFile /etc/rpm/macros '/^%_dbpath[ \t].*/D' + popd >/dev/null + else + if test -n "$have_poldek"; then + _copySecureRev "$vdir" /etc/poldek "$POLDEKETCDIR" + _unhashAuto "$POLDEKETCDIR"/poldek.conf '/' + fi + + _copySecureRev "$vdir" /etc/rpm "$RPMETCDIR" + _copySecureRev "$vdir" /var/lib/rpm "$RPMSTATEDIR" + + echo -e "%_dbpath\t\t$rpmdb_mntpoint" >>$RPMETCDIR/macros + fi + + ## Cleanups... + if test -n "$is_internalize"; then + : + else + tmpdir=$($_MKTEMPDIR /var/tmp/pgmgmt.XXXXXX) + trap "$_RM -rf $tmpdir" EXIT + pushd "$vdir" >/dev/null + $_EXEC_CD /var/lib $_MV rpm $tmpdir/ + $_EXEC_CD /var/lib $_LN_S "$rpmdb_mntpoint" rpm + $_RM -rf $tmpdir + fi + + ## Finish it... + if test -n "$is_internalize"; then + $_TOUCH "$cfgdir"/internal + else + $_RM -f "$cfgdir"/internal + fi +} + function processVserver_Debian() { local vserver=$1 @@ -415,6 +540,7 @@ case "$style" in (redhat|mandrake) processVserver_RH "$vserver" "$IS_INTERNALIZE";; + (pld) processVserver_PLD "$vserver" "$IS_INTERNALIZE";; (debian) processVserver_Debian "$vserver" "$IS_INTERNALIZE";; (*) echo $"Vserver style '$style' is not supported for packagemanagment" >&2 diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/scripts/util-vserver-vars.pathsubst util-vserver-0.30.209-poldek2/scripts/util-vserver-vars.pathsubst --- util-vserver-0.30.209-clean/scripts/util-vserver-vars.pathsubst 2005-07-03 19:43:55.000000000 +0200 +++ util-vserver-0.30.209-poldek2/scripts/util-vserver-vars.pathsubst 2006-01-20 13:45:53.000000000 +0100 @@ -48,6 +48,7 @@ _LIB_VSERVER_BUILD_FUNCTIONS_RPM="$__PKGLIBDIR/vserver-build.functions.rpm" _LIB_VSERVER_BUILD_FUNCTIONS_YUM="$__PKGLIBDIR/vserver-build.functions.yum" _LIB_VSERVER_BUILD_FUNCTIONS_PKGMGMT="$__PKGLIBDIR/vserver-build.functions.pkgmgmt" +_LIB_VSERVER_BUILD_FUNCTIONS_POLDEK="$__PKGLIBDIR/vserver-build.functions.poldek" _LISTDEVIP="$__LEGACYDIR/listdevip" _LOCKFILE="$__PKGLIBDIR/lockfile" _MASK2PREFIX="$__PKGLIBDIR/mask2prefix" @@ -91,6 +92,8 @@ _VUNIFY="$__PKGLIBDIR/vunify" _VYUM="$__SBINDIR/vyum" _VYUM_WORKER="$__PKGLIBDIR/vyum-worker" +_VPOLDEK="$__SBINDIR/vpoldek" +_VPOLDEK_WORKER="$__PKGLIBDIR/vpoldek-worker" _AWK="@AWK@" _CAT="@CAT@" diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/scripts/vpkg util-vserver-0.30.209-poldek2/scripts/vpkg --- util-vserver-0.30.209-clean/scripts/vpkg 2005-03-21 21:03:30.000000000 +0100 +++ util-vserver-0.30.209-poldek2/scripts/vpkg 2006-01-20 13:45:53.000000000 +0100 @@ -115,6 +115,44 @@ fi fi ;; + (pld) + rpm_param= + poldek_param= + case "$tag" in + ## rpm outputs sometimes '(contains no files)', so return + ## only the valid output + (get-conffiles) + rpm_param=( -qac --pipe "$_SED '\!^/!p;d'" );; + (install) + rpm_param=( -Uvh "$@" ) + poldek_param=( --install -v "$@" ) + ;; + esac + + if test -n "$is_external"; then + have_poldek=1 + test -d "$cfgdir"/base/poldek -o -d "$cfgdir"/poldeketc || have_poldek= + else + have_poldek= + for i in /bin /usr/bin /usr/local/bin; do + test ! -x "$vdir$i"/poldek || { have_poldek=1; break; } + done + fi + + if test -n "$is_external"; then + if test "$have_poldek" -a "$poldek_param"; then + cmd=( "$_VPOLDEK" "$vserver" -- "${poldek_param[@]}" ) + else + cmd=( "$_VRPM" "$vserver" -- "${rpm_param[@]}" ) + fi + else + if test "$have_poldek" -a "$poldek_param"; then + cmd=( "$_VSERVER" --silent "$vserver" exec poldek "${poldek_param[@]}" ) + else + cmd=( "$_VSERVER" --silent "$vserver" exec rpm "${rpm_param[@]}" ) + fi + fi + ;; (debian) case "$tag" in (get-conffiles) diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/scripts/vpoldek util-vserver-0.30.209-poldek2/scripts/vpoldek --- util-vserver-0.30.209-clean/scripts/vpoldek 1970-01-01 01:00:00.000000000 +0100 +++ util-vserver-0.30.209-poldek2/scripts/vpoldek 2006-01-20 13:45:53.000000000 +0100 @@ -0,0 +1,96 @@ +#! /bin/bash +# $Id$ + +# Copyright (C) 2003 Enrico Scholz +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars} +test -e "$UTIL_VSERVER_VARS" || { + echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2 + exit 1 +} +. "$UTIL_VSERVER_VARS" +. "$_LIB_FUNCTIONS" + + +function showHelp() +{ + echo \ +$"Usage: $0 * [--all] -- + + +Report bugs to <$PACKAGE_BUGREPORT>." + exit 0 +} + +function showVersion() +{ + echo \ +$"vpoldek $PACKAGE_VERSION -- poldek for vservers +This program is part of $PACKAGE_STRING + +Copyright (C) 2003 Enrico Scholz +This program is free software; you may redistribute it under the terms of +the GNU General Public License. This program has absolutely no warranty." + exit 0 +} + +is_quiet= +declare -a vservers=() + +while test "$#" -ge 1; do + case "$1" in + --) shift; break;; + --help) showHelp $0;; + --quiet|-q) is_quiet=1 ;; + --all) + getAllVservers tmp + vservers=( "${vservers[@]}" "${tmp[@]}" ) + ;; + --version) + showVersion ;; + *) vservers=( "${vservers[@]}" "$1" ) + esac + shift +done + +cnt=0 +res=255 +for i in "${vservers[@]}"; do + cnt=$[ cnt + 1 ] + + test -n "$is_quiet" || { + colorize bold echo -n "vpoldek: operating on vserver " + colorize bold colorize emph echo "$i" + xtermTitle "vpoldek: operating on vserver '$i' [$cnt/${#vservers[@]}]" + } + + if pkgmgmt.isInternal "$i"; then + $_VSERVER "$i" exec poldek "$@" + else + callInNamespace "$i" \ + "$_VNAMESPACE" --new -- "$_VPOLDEK_WORKER" "$i" "$@" + fi + res=$? + + test $res -eq 0 -o -n "$is_quiet" || { + colorize error echo -n $"vpoldek failed on vserver '$i' with errorcode $res" + echo + } + + test -n "$is_quiet" || echo +done + +test "$cnt" -ge 0 || echo "No vservers specified" >&2 +exit $res diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/scripts/vpoldek-worker util-vserver-0.30.209-poldek2/scripts/vpoldek-worker --- util-vserver-0.30.209-clean/scripts/vpoldek-worker 1970-01-01 01:00:00.000000000 +0100 +++ util-vserver-0.30.209-poldek2/scripts/vpoldek-worker 2006-01-20 13:45:53.000000000 +0100 @@ -0,0 +1,45 @@ +#! /bin/bash +# $Id$ + +# Copyright (C) 2003 Enrico Scholz +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +set -e + +: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars} +test -e "$UTIL_VSERVER_VARS" || { + echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2 + exit 1 +} +. "$UTIL_VSERVER_VARS" +. "$_LIB_FUNCTIONS" + + +vserver="$1" +shift + +pkgInit "$vserver" rpm poldek + +test -z "$_POLDEK" || { + warning $"The environment variable \$_POLDEK is not supported anymore; please use \$POLDEK instead of" + ${POLDEK:=$_POLDEK} +} + +exec ${_POLDEK:-poldek} \ + -v --root=$VDIR \ + --cachedir=$POLDEKCACHEDIR \ + --conf=$POLDEK_CONFIG \ + --pmcmd=$RPM_BINARY \ + "$@" diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/scripts/vserver-build util-vserver-0.30.209-poldek2/scripts/vserver-build --- util-vserver-0.30.209-clean/scripts/vserver-build 2006-01-20 13:45:34.000000000 +0100 +++ util-vserver-0.30.209-poldek2/scripts/vserver-build 2006-01-20 13:45:53.000000000 +0100 @@ -59,6 +59,9 @@ yum ... -- -d ... installs the base-packages of the given distribution with help of 'vyum' + poldek ... -- -d + ... installs the base-packages of the given distribution with + help of 'vpoldek' rpm ... -- [-d ] --empty|([--force] [--nodeps] )+ ... installs lists of rpm-packages skeleton ... -- [ *] @@ -132,7 +135,7 @@ case x"$method" in (xlegacy) exec $_VSERVER_LEGACY "$VSERVER_NAME" build "$@" ;; - (xapt-rpm|xcopy|xskeleton|xdebootstrap|xyum|xrpm) + (xapt-rpm|xcopy|xskeleton|xdebootstrap|xyum|xrpm|xpoldek) . $__PKGLIBDIR/vserver-build.$method ;; (x) panic $"No build-method specified";; diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/scripts/vserver-build.functions util-vserver-0.30.209-poldek2/scripts/vserver-build.functions --- util-vserver-0.30.209-clean/scripts/vserver-build.functions 2005-10-28 20:40:39.000000000 +0200 +++ util-vserver-0.30.209-poldek2/scripts/vserver-build.functions 2006-01-20 13:55:09.000000000 +0100 @@ -137,6 +137,12 @@ elif test -e /etc/slackware-release; then set -- $(cat /etc/slackware-release) DISTRIBUTION=slackware$2 + elif test -e /etc/pld-release; then + old_IFS=$IFS + IFS='()' + set -- $(cat /etc/pld-release) + DISTRIBUTION=pld-$(echo $2 | tr A-Z a-z) + IFS=$old_IFS elif test -n "$1"; then DISTRIBUTION=$1 else diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/scripts/vserver-build.functions.poldek util-vserver-0.30.209-poldek2/scripts/vserver-build.functions.poldek --- util-vserver-0.30.209-clean/scripts/vserver-build.functions.poldek 1970-01-01 01:00:00.000000000 +0100 +++ util-vserver-0.30.209-poldek2/scripts/vserver-build.functions.poldek 2006-01-20 14:47:58.000000000 +0100 @@ -0,0 +1,67 @@ +# $Id$ --*- sh -*-- + +# Copyright (C) 2003 Enrico Scholz +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +function poldek.installBasePackages +{ + local name="$1" + local dir="$2" + + test "$dir" != / || return 0 + for filelist in "$dir"/*; do + isRegularFile "$filelist" || continue + local idx=0 + local can_fail=false + local flags='--install' + + set -- $(<$filelist) + while test "$#" -gt 0; do + case "$1" in + --reinstall) flags='--reinstall';; + --can-fail) can_fail=true;; + *) break;; + esac + shift + done + "$_VPOLDEK" "$name" -- $flags $* || $can_fail + done +} + +function poldek.initVariables +{ + findFile POLDEKCONFDEFAULT \ + "$__CONFDIR/.distributions/$DISTRIBUTION/poldek/poldek.conf" \ + "$__CONFDIR/.defaults/apps/pkgmgmt/poldek/poldek.conf" \ + "$__DISTRIBDIR/$DISTRIBUTION/poldek/poldek.conf" \ + "$__DISTRIBDIR/defaults/poldek/poldek.conf" \ + '' +} + +function poldek.initFilesystem +{ + mkdir -p "$PKGCFGDIR"/poldek/etc + mkdir -p "$PKGCFGBASE"/poldek-cache + + $_LN_S "$PKGCFGBASE"/poldek-cache "$PKGCFGDIR"/poldek/cache + + populateDirectory "$PKGCFGDIR/poldek/etc" \ + "$__DISTRIBDIR/defaults/poldek" \ + "$__DISTRIBDIR/$DISTRIBUTION/poldek" \ + "$__CONFDIR/.distributions/$DISTRIBUTION/poldek" + +# test -z "$POLDEKCONFDEFAULT" || \ +# $_LN_S "$POLDEKCONFDEFAULT" "$PKGCFGDIR"/poldek/etc/ +} diff -urN -x '*~' -x '*.orig' util-vserver-0.30.209-clean/scripts/vserver-build.poldek util-vserver-0.30.209-poldek2/scripts/vserver-build.poldek --- util-vserver-0.30.209-clean/scripts/vserver-build.poldek 1970-01-01 01:00:00.000000000 +0100 +++ util-vserver-0.30.209-poldek2/scripts/vserver-build.poldek 2006-01-20 13:45:53.000000000 +0100 @@ -0,0 +1,64 @@ +# $Id$ --*- sh -*-- + +# Copyright (C) 2003 Enrico Scholz +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +tmp=$(getopt -o +d: --long debug -n "$0" -- "$@") || exit 1 +eval set -- "$tmp" + +. "$_LIB_VSERVER_BUILD_FUNCTIONS_RPM" +. "$_LIB_VSERVER_BUILD_FUNCTIONS_POLDEK" +. "$_LIB_VSERVER_BUILD_FUNCTIONS_PKGMGMT" + +while true; do + case "$1" in + (-d) DISTRIBUTION=$2; shift;; + (--debug) set -x;; + (--) shift; break ;; + (*) echo "vserver-build.poldek: internal error: unrecognized option '$1'" >&2 + exit 1 + ;; + esac + shift +done + +getDistribution + +base.init + +pkgmgmt.initVariables +rpm.initVariables +poldek.initVariables + +base.initFilesystem "$OPTION_FORCE" +pkgmgmt.initFilesystem "$OPTION_FORCE" +rpm.initFilesystem +poldek.initFilesystem + +setup_writeOption "$VSERVER_NAME" +setup_writeInitialFstab + +test -z "$BUILD_INITPRE" || "$BUILD_INITPRE" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS" +rpm.initDB "$SETUP_CONFDIR" +rpm.importGPGPubKeys "$SETUP_CONFDIR" \ + "$__CONFDIR/.distributions/$DISTRIBUTION/pubkeys" \ + "$__CONFDIR/.distributions/.common/pubkeys" \ + "$__DISTRIBDIR/$DISTRIBUTION/pubkeys" + +$_VPOLDEK "$SETUP_CONFDIR" -- --update-whole +poldek.installBasePackages "$SETUP_CONFDIR" "$PKGINSTALLDIR" +test -z "$BUILD_INITPOST" || "$BUILD_INITPOST" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS" + +base.setSuccess