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