X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plc.d%2Fpackages;h=d53afddfde3fcfa0622a458a08fa53f49b158093;hb=2ac0b96da9091ab4aaca5752c049f7fa0e407a8a;hp=06083fdb4a362b9f3b5e1128066f7bae4f2fd3cc;hpb=eabbe843db7baeb79b5050fa62520dd3176ea22a;p=bootstrapfs.git diff --git a/plc.d/packages b/plc.d/packages index 06083fd..d53afdd 100755 --- a/plc.d/packages +++ b/plc.d/packages @@ -1,6 +1,4 @@ #!/bin/bash -# $Id$ -# $URL$ # # priority: 1200 # @@ -37,40 +35,37 @@ case "$1" in repositories="$@" fi - ### availability of repo indexing tools - # old one - might be needed for old-style nodes - type -p yum-arch > /dev/null && have_yum_arch="true" - # new one - type -p createrepo > /dev/null && have_createrepo="true" - - - ### copy vserver-PLDISTRO* and vserver-systemslices-PLDISTRO* - ### pacakges to each repository to be able to create different + ### symlink vserver-PLDISTRO* and vserver-systemslices-PLDISTRO* + ### packages to each repository to be able to create different ### flavours of vservers on nodes for repository1 in $repositories; do + DISTRO=${PLC_FLAVOUR_SLICE_PLDISTRO} + VSERVER_PKG=vserver-$(basename $repository1) + VSERVER_SYS_SLICES_PKG=vserver-systemslices-$(basename $repository1) for repository2 in $repositories; do - if [[ $(basename $repository1) == ${PLC_FLAVOUR_NODE_PLDISTRO}* ]] \ - && [[ $(basename $repository2) == ${PLC_FLAVOUR_NODE_PLDISTRO}* ]] \ + if [[ $(basename $repository1) == ${DISTRO}* ]] \ + && [[ $(basename $repository2) == ${DISTRO}* ]] \ && [[ $repository1 != $repository2 ]] ; then - cp -a $repository1/vserver{,-systemslices}-${PLC_FLAVOUR_NODE_PLDISTRO}* $repository2 + rm -rf $repository2/${VSERVER_PKG}* + rm -rf $repository2/${VSERVER_SYS_SLICES_PKG}* + + ln -s $repository1/${VSERVER_PKG}* $repository2 + ln -s $repository1/${VSERVER_SYS_SLICES_PKG}* $repository2 fi done done - for repository in $repositories ; do # the rpms that need signing new_rpms= # and the corresponding stamps new_stamps= # is there a need to refresh yum metadata - need_yum_arch= - need_createrepo= + need_createrepo=true # always run createrepo as links may change for vserver packages # right after installation, no package is present # but we still need to create index - [ -n "$have_yum_arch" -a ! -f $repository/headers/header.info ] && need_yum_arch=true - [ -n "$have_createrepo" -a ! -f $repository/repodata/repomd.xml ] && need_createrepo=true + [ ! -f $repository/repodata/repomd.xml ] && need_createrepo=true for package in $(find $repository/ -name '*.rpm') ; do stamp=$repository/signed-stamps/$(basename $package).signed @@ -79,10 +74,8 @@ case "$1" in new_rpms="$new_rpms $package" new_stamps="$new_stamps $stamp" fi - # Or than yum-arch headers - [ -n "$have_yum_arch" ] && [ $package -nt $repository/headers/header.info ] && need_yum_arch=true # Or than createrepo database - [ -n "$have_createrepo" ] && [ $package -nt $repository/repodata/repomd.xml ] && need_createrepo=true + [ $package -nt $repository/repodata/repomd.xml ] && need_createrepo=true done if [ -n "$new_rpms" ] ; then @@ -102,14 +95,6 @@ case "$1" in # Update repository index / yum metadata. - if [ -n "$need_yum_arch" ] ; then - # yum-arch sometimes leaves behind - # .oldheaders and .olddata directories accidentally. - rm -rf $repository/{.oldheaders,.olddata} - yum-arch $repository - check - fi - if [ -n "$need_createrepo" ] ; then if [ -f $repository/yumgroups.xml ] ; then createrepo --quiet -g yumgroups.xml $repository