xbps-src: added new 'checkvers' target to check for new versions from srcpkgs

against current installed packages.
This commit is contained in:
Juan RP 2010-05-19 03:00:52 +02:00
parent 24dc6f2caf
commit b9d0db9470
2 changed files with 89 additions and 11 deletions

View File

@ -0,0 +1,63 @@
#-
# Copyright (c) 2010 Juan Romero Pardines.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 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 AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#-
#
# Check installed package versions against the source packages repository.
#
check_installed_packages()
{
local f lpkgn lpkgver rv srcpkgver
msg_normal "Checking for newer packages from srcpkgs, please wait..."
for f in $(xbps-bin.static list|awk '{print $1}'); do
lpkgn=$(xbps-uhelper.static getpkgname ${f})
lpkgver=$(xbps-uhelper.static getpkgversion ${f})
if [ ! -r ${XBPS_SRCPKGDIR}/${lpkgn}/template ]; then
msg_warn "Installed package ${f} not available as source pkg, skipping."
continue
fi
. ${XBPS_SRCPKGDIR}/${lpkgn}/template
if [ -r ${XBPS_SRCPKGDIR}/${lpkgn}/${lpkgn}.template ]; then
unset revision
. ${XBPS_SRCPKGDIR}/${lpkgn}/${lpkgn}.template
fi
if [ -n "$revision" ]; then
srcpkgver="${version}_${revision}"
else
srcpkgver="${version}"
fi
xbps-uhelper.static cmpver ${lpkgver} ${srcpkgver}
rv=$?
if [ $rv -eq 255 ]; then
echo " ${f}: newer version -> ${srcpkgver}"
elif [ $rv -eq 1 ]; then
echo " ${f}: sourcepkg outdated -> ${srcpkgver}"
else
echo >&2 " ${f}: already up to date."
fi
reset_tmpl_vars
done
msg_normal "done."
}

View File

@ -68,27 +68,32 @@ usage()
$progname: [-Ch] [-c <config_file>] [-m <masterdir>] [-p <pkgdir>] <target>
Targets:
bootstrap Build and install the bootstrap packages into masterdir.
bootstrap Build and install the bootstrap packages into <masterdir>.
build Build a package (fetch + extract + configure + build).
build-pkg [all] Build a binary package from <pkg>.
Package must be installed into destdir. If the <all>
keyword is used all packages currently installed will
be used.
chroot Enter to the chroot in masterdir.
keyword is used all packages currently installed in
<masterdir>/<destdir> will be used.
checkvers Checks installed package versions against srcpkgs
for new available versions.
chroot Enter to the chroot in <masterdir>.
configure Configure a package (fetch + extract + configure).
extract Extract distribution file(s) into build directory.
Build directory is always available in
<masterdir>/pkg-builddir/<pkg>.
fetch Download distribution file(s).
info Show information for current pkg build template.
install-destdir build + install into destdir.
install install-destdir + stow.
list List installed packages in masterdir.
list List installed packages in <masterdir>.
listfiles List installed files from <pkg>.
make-repoidx Build a package index for the local repository associated
with the master directory, or updates it.
with the master directory <masterdir> or <pkgdir>,
or updates it.
remove Remove package completely (destdir + masterdir).
stow Stow <pkg> files from destdir into masterdir and
stow Stow <pkg> files from <destdir> into <masterdir> and
register package in database.
unstow Remove <pkg> files from masterdir and unregister
unstow Remove <pkg> files from <masterdir> and unregister
package from database.
Options:
@ -99,7 +104,7 @@ Options:
-m Master directory, overwritting the value set in the configuration
file at @@XBPS_INSTALL_ETCDIR@@/xbps-src.conf.
-p Package directory, overwritting default path at
<XBPS_MASTERDIR>/pkg-binpkgs.
<masterdir>/pkg-binpkgs.
_EOF
}
@ -240,7 +245,7 @@ bootstrap)
;;
build|configure)
. $XBPS_SHUTILSDIR/tmpl_funcs.sh
[ ! -r ./template ] && msg_error "missing build template file."
[ ! -r ./template ] && msg_error "missing build template in $(pwd)."
. ./template
if [ -z "$base_chroot" -a -z "$in_chroot" ]; then
@ -293,16 +298,23 @@ build-pkg)
fi
done
else
[ ! -r ./template ] && msg_error "missing build template in $(pwd)."
setup_tmpl $(basename_cwd)
xbps_make_binpkg
fi
;;
checkvers)
. $XBPS_SHUTILSDIR/tmpl_funcs.sh
. $XBPS_SHUTILSDIR/check_installed_packages.sh
check_installed_packages
;;
chroot)
. $XBPS_SHUTILSDIR/chroot.sh
xbps_chroot_handler chroot dummy
;;
extract|fetch|info)
. $XBPS_SHUTILSDIR/tmpl_funcs.sh
[ ! -r ./template ] && msg_error "missing build template in $(pwd)."
setup_tmpl $(basename_cwd)
if [ "$target" = "info" ]; then
. $XBPS_SHUTILSDIR/tmpl_funcs.sh
@ -319,7 +331,7 @@ extract|fetch|info)
;;
install|install-destdir)
. $XBPS_SHUTILSDIR/tmpl_funcs.sh
[ ! -r ./template ] && msg_error "missing build template file."
[ ! -r ./template ] && msg_error "missing build template in $(pwd)."
. ./template
install_destdir_target=no
@ -354,18 +366,21 @@ make-repoidx)
;;
remove)
. $XBPS_SHUTILSDIR/pkgtarget_funcs.sh
[ ! -r ./template ] && msg_error "missing build template in $(pwd)."
setup_tmpl $(basename_cwd)
remove_pkg
;;
stow)
stow_flag=yes
. $XBPS_SHUTILSDIR/tmpl_funcs.sh
[ ! -r ./template ] && msg_error "missing build template in $(pwd)."
setup_tmpl $(basename_cwd)
. $XBPS_SHUTILSDIR/stow_funcs.sh
stow_pkg_handler stow
;;
unstow)
. $XBPS_SHUTILSDIR/tmpl_funcs.sh
[ ! -r ./template ] && msg_error "missing build template in $(pwd)."
setup_tmpl $(basename_cwd)
. $XBPS_SHUTILSDIR/stow_funcs.sh
stow_pkg_handler unstow