Index: pc-metapkgmanager =================================================================== --- pc-metapkgmanager (revision 18587) +++ pc-metapkgmanager (working copy) @@ -118,7 +118,7 @@ else # Check if the package is already installed - if [ -d "${_chroot}/var/db/pkg/$pkg" ] ; then + if pkg info -e ${pkg}; then echo "Skipping installed package: $pkg" echo "Skipping installed package: $pkg" >>${LOGFILE} continue @@ -128,12 +128,12 @@ echo "Installing package: $pkg" >>${LOGFILE} if [ -z "$_chroot" ] ; then cd "${MIRRORURL}" - pkg_add -f -F "${pkg}.txz" >>${LOGFILE} 2>>${LOGFILE} + pkg add "${pkg}.txz" >>${LOGFILE} 2>>${LOGFILE} else # Do some nullfs mounting to get our dist dir into the chroot mkdir ${_chroot}/.mnt.$$ mount_nullfs "$MIRRORURL" "${_chroot}/.mnt.$$" - ${_chrootcmd} pkg_add -f -F "/.mnt.$$/${pkg}.txz" >>${LOGFILE} 2>>${LOGFILE} + ${_chrootcmd} pkg add "/.mnt.$$/${pkg}.txz" >>${LOGFILE} 2>>${LOGFILE} fi fi done @@ -143,14 +143,14 @@ for pkg in $PKGLIST do # Check if the package is already installed - if [ -d "${_chroot}/var/db/pkg/$pkg" ] ; then + if pkg info -e ${pkg}; then echo "Skipping installed package: $pkg" echo "Skipping installed package: $pkg" >>${LOGFILE} continue fi echo "Installing package: $pkg" echo "Installing package: $pkg" >>${LOGFILE} - ${_chrootcmd} pkg_add -f -F "${TMPDIR}/${pkg}.txz" >>${LOGFILE} 2>>${LOGFILE} + ${_chrootcmd} pkg add "${TMPDIR}/${pkg}.txz" >>${LOGFILE} 2>>${LOGFILE} rm "${_chroot}/${TMPDIR}/${pkg}.txz" done fi @@ -216,7 +216,7 @@ _iList="" while read pkg do - ${_chrootcmd} pkg_info $pkg >/dev/null 2>/dev/null + ${_chrootcmd} pkg info -e $pkg >/dev/null 2>/dev/null if [ "$?" != "0" ] ; then continue; fi _iList="${_iList}${pkg}:" done < ${i}/pkg-list @@ -244,7 +244,7 @@ for rmPkg in $PKGLIST do # Make sure this pkg is installed - ${_chrootcmd} pkg_info $rmPkg >/dev/null 2>/dev/null + ${_chrootcmd} pkg info -e $rmPkg >/dev/null 2>/dev/null if [ "$?" != "0" ] ; then echo "Already uninstalled: ${rmPkg}" echo "Already uninstalled: ${rmPkg}" >>${LOGFILE} @@ -260,8 +260,8 @@ fi # confirm this package isn't required by any others - ${_chrootcmd} pkg_info -R ${rmPkg} 2>/dev/null | grep -q "Required by:" - if [ "$?" = "0" ] ; then + nbrequired=`${_chrootcmd} pkg query "%?r" ${rmPkg}` + if [ "$nbrequired" != "0" ] ; then # Still in use, we will re-scan it at the end skippedPkgs="${rmPkg} ${skippedPkgs}" continue @@ -269,7 +269,7 @@ echo "Removing: ${rmPkg}" echo "Removing: ${rmPkg}" >>${LOGFILE} - ${_chrootcmd} pkg_delete -f ${rmPkg} >>${LOGFILE} 2>>${LOGFILE} + ${_chrootcmd} pkg delete -yf ${rmPkg} >>${LOGFILE} 2>>${LOGFILE} done @@ -300,7 +300,7 @@ local newSkipped="" for skPkg in $1 do - ${_chrootcmd} pkg_info -R ${skPkg} 2>/dev/null | grep -q "Required by:" + nbrequired=`${_chrootcmd} pkg query "%?r" ${skPkg}` if [ "$?" = "0" ] ; then newSkipped="$skPkg $newSkipped" continue @@ -308,7 +308,7 @@ found=1 echo "Removing: ${skPkg}" echo "Removing: ${skPkg}" >>${LOGFILE} - ${_chrootcmd} pkg_delete -f ${skPkg} >>${LOGFILE} 2>>${LOGFILE} + ${_chrootcmd} pkg delete -yf ${skPkg} >>${LOGFILE} 2>>${LOGFILE} done if [ $found -eq 1 ] ; then @@ -325,10 +325,10 @@ # Check if the specified pkg doesn't have anything which requires it, and remove it if so check_remove_pkg() { - ${_chrootcmd} pkg_info -R "${1}" | grep "Required" >/dev/null 2>/dev/null - if [ "$?" != "0" ] ; then + nbrequired=`${_chrootcmd} pkg query "%?r" ${1}` + if [ "$nbrequired" == "0" ] ; then echo "Removing non-used pkg: $1" >>${LOGFILE} 2>>${LOGFILE} - ${_chrootcmd} pkg_delete -f ${1} >>${LOGFILE} 2>>${LOGFILE} + ${_chrootcmd} pkg delete -yf ${1} >>${LOGFILE} 2>>${LOGFILE} return 0 fi return 1 @@ -390,6 +390,7 @@ found=1 nfound=0 + # Here is a drop-in version # Now query pkg_info to confirm each pkg is installed while read pkg do @@ -397,8 +398,7 @@ # version numbers. This means a meta-pkg shows as # installed even if the user manually updated pName=`echo $pkg | rev | cut -d "-" -f 2-25 | rev` - ls -d ${_chroot}/var/db/pkg/${pName}-* >/dev/null 2>/dev/null - if [ $? -eq 0 ] ; then + if pkg info -e ${pName}; then found=0 else nfound=1 @@ -406,6 +406,17 @@ done < ${MPDIR}/${_mpkg}/pkg-list + # Now here is what I would do + #list=$(pkg query "%n") + #while read pkg + #do + # pName=${pkg%-*} + # case $'\n'$list$'\n' in + # *$'\n'"$pName"$'\n'*) found=0 ;; + # *) nfound=1 ;; + # esac + #done < ${MPDIR}/${_mpkg}/pkg-list + if [ "$found" = "0" -a "$nfound" = "0" ] ; then echo "The meta-pkg $_mpkg is installed" return 0 @@ -473,6 +484,8 @@ checkup_pkgs() { + #Bapt: I would need to have a deeper look at this part with a real test box + #the logic could be change with pkgng and greatly speedup _nodsp="$1" if [ ! -e "${MPDIR}/master-pkg-index" ] ; then @@ -481,7 +494,9 @@ # Checkout the installed pkgs and compare to master list local fPkgUp=0 - ls ${_chroot}/var/db/pkg > /tmp/.pkgList.$$ + # Here you can also run: + # pkg -C ${_chroot} info -qa > /tmp/.pkgList + pkg -C ${_chroot} query "%n-%v" > /tmp/.pkgList.$$ cat ${MPDIR}/master-pkg-index | cut -d ":" -f 1-2 | sed 's|:|-|g' > /tmp/.pkgList2.$$ diff /tmp/.pkgList.$$ /tmp/.pkgList2.$$ | grep '^<' | sed 's|< ||g' > /tmp/.dList.$$ rm /tmp/.pkgList.$$ @@ -663,16 +678,16 @@ # Remove the old pkg #echo "${_chrootcmd} pkg_delete -f $oPkg" - ${_chrootcmd} pkg_delete -f "$oPkg" >>${LOGFILE} 2>>${LOGFILE} + pkg -C ${_chroot} pkg delete -yf "$oPkg" >>${LOGFILE} 2>>${LOGFILE} # Start installing the packages now if [ "$loc" = "NET" ] ; then - ${_chrootcmd} pkg_add -f "${TMPDIR}/${nPkg}.txz" >>${LOGFILE} 2>>${LOGFILE} + pkg -C ${_chroot} add "${TMPDIR}/${nPkg}.txz" >>${LOGFILE} 2>>${LOGFILE} else if [ -z "$_chroot" ] ; then - pkg_add -f "${nPkg}.txz" >>${LOGFILE} 2>>${LOGFILE} + pkg add "${nPkg}.txz" >>${LOGFILE} 2>>${LOGFILE} else - ${_chrootcmd} pkg_add -f "/.mnt.$$/${nPkg}.txz" >>${LOGFILE} 2>>${LOGFILE} + pkg -C add -f "/.mnt.$$/${nPkg}.txz" >>${LOGFILE} 2>>${LOGFILE} fi fi @@ -680,7 +695,7 @@ get_pkg_from_name() { if [ "$2" = "sys" ] ; then - ${_chrootcmd} pkg_info | cut -d ' ' -f 1 >/tmp/.plist.$$ 2>/dev/null + pkg -C ${_chroot} info -qa >/tmp/.plist.$$ 2>/dev/null else cat $2 | cut -d ':' -f 1-2 | sed 's|:|-|g' > /tmp/.plist.$$ 2>/dev/null fi