[csw-devel] SF.net SVN: gar:[12471] csw/mgar/pkg/cswutils/trunk/files/checkpkg
theferret at users.sourceforge.net
theferret at users.sourceforge.net
Sun Jan 9 17:08:50 CET 2011
Revision: 12471
http://gar.svn.sourceforge.net/gar/?rev=12471&view=rev
Author: theferret
Date: 2011-01-09 16:08:50 +0000 (Sun, 09 Jan 2011)
Log Message:
-----------
cswutils:checkpkg - misc updates
Modified Paths:
--------------
csw/mgar/pkg/cswutils/trunk/files/checkpkg
Modified: csw/mgar/pkg/cswutils/trunk/files/checkpkg
===================================================================
--- csw/mgar/pkg/cswutils/trunk/files/checkpkg 2011-01-09 13:31:26 UTC (rev 12470)
+++ csw/mgar/pkg/cswutils/trunk/files/checkpkg 2011-01-09 16:08:50 UTC (rev 12471)
@@ -14,10 +14,15 @@
# you know you are tracking the most current version.
#
+# Make this prog flexible to be usable by other organizations with non"CSW"
+# prefixes
+PKGPREF=CSW
-PATH=/opt/csw/bin:$PATH:/usr/sbin
-# this is actually a base for tmpfiles, not the full name
+PATH=$PATH:/usr/sbin
+
+# This is actually a base for tmpfiles, not the full name
+# Most things go into EXTRACTDIR, lower down
TMPDIR=${TMPDIR:-/tmp}
LOCAL_ARCH=`uname -p`
@@ -36,21 +41,119 @@
fi
}
-warnmsg(){
- print WARNING: $* >/dev/fd/2
- if [[ "$quit_on_warn" != "" ]] ; then
- cleanup
- exit 1
- fi
-}
# Print error message, and quit program.
-errmsg(){
+quitmsg(){
print ERROR: $* >/dev/fd/2
cleanup
exit 1
}
+
+errmsg(){
+ print "ERROR: $@" >>$ERRORFILE
+
+}
+warnmsg(){
+ if [[ $quit_on_warn == 1 ]] ; then
+ print "PROBLEM: $@" >/dev/fd/2
+ exit 1
+ fi
+ #else
+ print "WARNING: $@" >>$WARNINGFILE
+
+}
+
+isLower(){
+ typeset -l LOWER=$1
+ [ "$LOWER" = "$1" ]
+}
+
+
+# This function exists, because pkgtrans is BROKEN!!
+# It leaves a directory in /var/tmp/aaXXXXXXX, even after clean quit
+# SO, emulate pkgtrans behaviour, for "pkgtrans src destdir pkgname"
+# Except that we ignore pkgname arg, and just do first one we find.
+# and we are a bit hacky about how we do things.
+pkgtrans(){
+ if [[ ! -d $2 ]] ; then
+ print INTERNAL ERROR: $2 is not a directory >/dev/fd/2
+ return 1
+ fi
+ hdrblks=`(dd if=$1 skip=1 2>/dev/null| cpio -i -t >/dev/null) 2>&1 |
+ nawk '{print $1; exit;}'`
+
+ ## print initial hdrblks=$hdrblks
+
+ hdrblks=$(($hdrblks + 1))
+ mkdir $2/$3 || return 1
+
+ dd if=$1 skip=$hdrblks 2>/dev/null | (cd $2/$3 ; cpio -ivdm)
+ # on fail, SOMETIMES cpio returns 1, but sometimes it returns 0!!
+ if [[ ! -d $2/$3/install ]] ; then
+ print retrying extract with different archive offset...
+ # no, I cant tell in advance why/when the prev fails
+ hdrblks=$(($hdrblks + 1))
+ dd if=$1 skip=$hdrblks 2>/dev/null| (cd $2/$3 ; cpio -ivdm)
+ fi
+}
+
+#########################################
+# find all executables and dynamic libs,and list their filenames.
+listbinaries() {
+ if [ ! -d $1 ] ; then
+ print INTERNAL ERROR: $1 not a directory
+ rm -rf $EXTRACTDIR
+ exit 1
+ fi
+
+ find $1 -print | xargs file |grep ELF |nawk -F: '{print $1}'
+}
+
+# This is kind of specific to CSW, even though it uses $PKGPREF
+checkforclasses () {
+ typeset local=no
+ classlist=`sed -n 's/CLASSES=//p' $EXTRACTDIR/$pkgname/pkginfo`
+ for c in $classlist ; do
+ case $c in
+ csw*)
+ local=yes
+ ;;
+ esac
+ done
+ if [[ "$local" != "yes" ]] ; then
+ return 0;
+ fi
+ if grep ${PKGPREF}cas- $EXTRACTDIR/$pkgname/install/depend >/dev/null
+ then
+ return 0;
+ fi
+ errmsg $pkgname uses a csw CLASS ACTION SCRIPT but missing dependancy on any ${PKGPREF}cas- pkg
+ return 1
+}
+
+
+# pass in name of dynamic object, and specific catalog file.
+# Will attempt "best match" heuristics appropriate for ${PKGPREF} dependancy file
+# and print out result.
+# We will always print out either ONE package, or NOTHING
+findlibincat() {
+ # important to use same grep as we did looking through pkgmap
+ grep "[/=]$1[ =]" $2 |
+ nawk '
+ $2 == "f" || $2 == "l" {pkg=$NF;next}
+ # Give 'real' files priority over symlinks
+ {if(pkg==""){pkg=$NF};
+ next }
+ END {print pkg}
+ '
+
+ #old simple (inadequate) way:
+ # grep /$1 $2 |
+ # nawk '{print $NF}' |sort -u
+}
+
+
if [[ "$1" == "-e" ]] ; then
quit_on_warn=1;
shift
@@ -61,7 +164,10 @@
shift
fi
-for f in "$@"
+
+
+
+for f in "$@" # --------------MAIN-LOOP-START------------------------
do
@@ -89,14 +195,13 @@
# check for badly set RUNPATHs. sigh.
# Note that need to escape one /, so that it does not
#trigger check if checking its own package
- badpaths="[/]export/medusa [/]opt/build [/]export/home [/]usr/share [/]usr/local"
+ badpaths="[/]export/medusa [/]opt/build [/]export/home [/]usr/share [/]usr/local"
+ unset badstrings
for badpath in $badpaths ; do
GREP=/bin/grep gzgrep "$badpath" $f
if [[ $? -eq 0 ]] ; then
- print ""
- print ERROR: build-machine paths found in file $f
- print "($badpath found)"
- exit 1
+ errmsg "bad path strings found in file $f ($badpath)"
+ badstrings=yes
fi
done
esac
@@ -117,14 +222,17 @@
pkgname=`nawk 'NR == 2 {print $1; exit;}' $f`
EXTRACTDIR=$TMPDIR/checkpkg.$$
+ERRORFILE=$EXTRACTDIR.checkpkg.errs
+WARNINGFILE=$EXTRACTDIR.checkpkg.warn
if [ -d $EXTRACTDIR ] ; then
print ERROR: $EXTRACTDIR already exists
exit 1
fi
-mkdir $EXTRACTDIR
+mkdir $EXTRACTDIR || exit 1
+
TMPFILE=$EXTRACTDIR/pkginfo
@@ -142,19 +250,14 @@
version=`sed -n 's/^VERSION=//p' $TMPFILE`
desc=`sed -n 's/^DESC=//p' $TMPFILE`
email=`sed -n 's/^EMAIL=//p' $TMPFILE`
-maintname=`sed -n 's/^VENDOR=.*for CSW by //p' $TMPFILE`
+maintname=`sed -n 's/^VENDOR=.*for '${PKGPREF}' by //p' $TMPFILE`
hotline=`sed -n 's/^HOTLINE=//p' $TMPFILE`
basedir=`sed -n 's/^BASEDIR=//p' $TMPFILE`
pkgarch=`sed -n 's/^ARCH=//p' $TMPFILE|head -1`
-isLower(){
- typeset -l LOWER=$1
- [ "$LOWER" = "$1" ]
-}
if ! isLower $software ; then
- echo ERROR: $software must be all lowercase
- exit 1
+ errmsg $software must be all lowercase
fi
case `basename $f` in
@@ -162,21 +265,17 @@
# file name looks okay
;;
${software}-*)
- print ERROR: filename missing full version field $version
- rm -rf $EXTRACTDIR $TMPARCHIVE
- exit 1
+ errmsg filename missing full version field $version
;;
*)
- print ERROR: filename should start with $software-$version-
- rm -rf $EXTRACTDIR $TMPARCHIVE
- exit 1
+ errmsg filename should start with $software-$version-
esac
if [ "$maintname" = "" ] ; then
# the old format, in the DESC field
- maintname=`sed -n 's/^DESC=.*for CSW by //p' $TMPFILE`
+ maintname=`sed -n 's/^DESC=.*for '${PKGPREF}' by //p' $TMPFILE`
# Since the DESC field has been coopted, take
# description from second half of NAME field now.
@@ -222,15 +321,14 @@
case $version in
*-*)
- print ERROR: VERSION field not allowed to have '"-"' in it
- exit 1
+ errmsg VERSION field not allowed to have '"-"' in it
+ exitsatus=1
;;
*,REV=20[01][0-9].[0-9][0-9].[0-9][0-9]*)
:
;;
*)
- print ERROR: no REV=YYYY.MM.DD field in VERSION
- exit 1
+ errmsg no REV=YYYY.MM.DD field in VERSION
;;
esac
@@ -241,9 +339,7 @@
;;
*)
- print ERROR: non-standard ARCH def in package: $pkgarch
- rm -rf $EXTRACTDIR $TMPARCHIVE
- exit 1
+ errmsg non-standard ARCH def in package: $pkgarch
esac
goodarch=yes
@@ -265,35 +361,6 @@
# exit 0
#fi
-
-# This function exists, because pkgtrans is BROKEN!!
-# It leaves a directory in /var/tmp/aaXXXXXXX, even after clean quit
-# SO, emulate pkgtrans behaviour, for "pkgtrans src destdir pkgname"
-# Except that we ignore pkgname arg, and just do first one we find.
-# and we are a bit hacky about how we do things.
-pkgtrans(){
- if [[ ! -d $2 ]] ; then
- print ERROR: $2 is not a directory >/dev/fd/2
- return 1
- fi
- hdrblks=`(dd if=$1 skip=1 2>/dev/null| cpio -i -t >/dev/null) 2>&1 |
- nawk '{print $1; exit;}'`
-
- ## print initial hdrblks=$hdrblks
-
- hdrblks=$(($hdrblks + 1))
- mkdir $2/$3 || return 1
-
- dd if=$1 skip=$hdrblks 2>/dev/null | (cd $2/$3 ; cpio -ivdm)
- # on fail, SOMETIMES cpio returns 1, but sometimes it returns 0!!
- if [[ ! -d $2/$3/install ]] ; then
- print retrying extract with different archive offset...
- # no, I cant tell in advance why/when the prev fails
- hdrblks=$(($hdrblks + 1))
- dd if=$1 skip=$hdrblks 2>/dev/null| (cd $2/$3 ; cpio -ivdm)
- fi
-}
-
print ""
print Extracing pkg for examination of files...
pkgtrans $f $EXTRACTDIR $pkgname
@@ -312,14 +379,12 @@
########################################
# Check for some common errors
-if [[ $pkgname != "CSWcommon" ]] ; then
+if [[ $pkgname != "${PKGPREF}common" ]] ; then
if [[ $LOGNAME != "root" ]] ; then
nawk '$6 == "'$LOGNAME'" {print; exit 1}' $EXTRACTDIR/$pkgname/pkgmap
if [[ $? -eq 1 ]] ; then
- print ERROR: files owned by $LOGNAME in prototype file
- rm -rf $EXTRACTDIR $TMPARCHIVE
- exit 1
+ errmsg files owned by $LOGNAME in prototype file
fi
fi
@@ -345,11 +410,11 @@
fi
egrep 'lib/charset.alias' $EXTRACTDIR/$pkgname/pkgmap
if [[ $? -eq 0 ]] ; then
- warnmsg Only CSWiconv should have lib/charset.alias in it
+ warnmsg Only ${PKGPREF}iconv should have lib/charset.alias in it
fi
egrep 'share/locale/locale.alias' $EXTRACTDIR/$pkgname/pkgmap
if [[ $? -eq 0 ]] ; then
- warnmsg Only CSWcommon should have share/locale/locale.alias in it
+ warnmsg Only ${PKGPREF}common should have share/locale/locale.alias in it
fi
fgrep '? ? ?' $EXTRACTDIR/$pkgname/pkgmap |
egrep '[/]opt[/]csw'
@@ -363,80 +428,39 @@
if [[ $? -eq 0 ]] ; then
errmsg perllocal.pod should be removed from prototype file
fi
+ egrep ' f .* /var/' $EXTRACTDIR/$pkgname/pkgmap
+ if [[ $? -eq 0 ]] ; then
+ errmsg Files detected in /var
+ fi
fi
+
# special case. sigh.
-if [[ $pkgname != "CSWtexinfo" ]] ; then
+if [[ $pkgname != "${PKGPREF}texinfo" ]] ; then
egrep '/opt/csw/share/info/dir[ ]|none share/info/dir[ ]' $EXTRACTDIR/$pkgname/pkgmap
if [[ $? -eq 0 ]] ; then
- errmsg /opt/csw/share/info/dir should only be in CSWtexinfo
- rm -rf $EXTRACTDIR $TMPARCHIVE
- exit 1
+ errmsg /opt/csw/share/info/dir should only be in ${PKGPREF}texinfo
fi
fi
-#########################################
-# find all executables and dynamic libs,and list their filenames.
-listbinaries() {
- if [ ! -d $1 ] ; then
- print errmsg $1 not a directory
- rm -rf $EXTRACTDIR
- exit 1
- fi
- find $1 -print | xargs file |grep ELF |nawk -F: '{print $1}'
-}
-
-# Kinda a hardcode for one special package that cant be
-# detected by normal lib dependancies.
-checkforclasses () {
- typeset local=no
- classlist=`sed -n 's/CLASSES=//p' $EXTRACTDIR/$pkgname/pkginfo`
- for c in $classlist ; do
- case $c in
- csw*)
- local=yes
- ;;
- esac
+if [[ "$badstrings" != "" ]] ; then
+ print hunting for which speficic file have bad strings in them
+ p=$PWD
+ cd $EXTRACTDIR/$pkgname
+ for badpath in $badpaths ; do
+ find . -type f | xargs grep $badpath
done
- if [[ "$local" != "yes" ]] ; then
- return 0;
- fi
- if grep CSWcswclassutils $EXTRACTDIR/$pkgname/install/depend >/dev/null
- then
- return 0;
- fi
- echo ERROR: package uses a csw CLASS but missing dependancy on CSWcswclassutils
- return 1
-}
+ cd $p
+fi
-
-# pass in name of dynamic object, and specific catalog file.
-# Will attempt "best match" heuristics appropriate for CSW dependancy file
-# and print out result.
-# We will always print out either ONE package, or NOTHING
-findlibincat() {
- # important to use same grep as we did looking through pkgmap
- grep "[/=]$1[ =]" $2 |
- nawk '
- $2 == "f" || $2 == "l" {pkg=$NF;next}
- # Give 'real' files priority over symlinks
- {if(pkg==""){pkg=$NF};
- next }
- END {print pkg}
- '
-
- #old simple (inadequate) way:
- # grep /$1 $2 |
- # nawk '{print $NF}' |sort -u
-}
-
####################################################################
# Auto-dependancy checking section....
-# strategy currently: identify all ELF object files to elflist.
-# Then identify all dependancies to "liblist"
-# THEEEN go searching through SVR4 pkg "contents" file for PKG matches
-# to those libraries.
+# strategy currently: first identify all ELF object files, to "elflist".
+# Then identify all 'NEEDED' dependancies for them, to "libsneeded"
+# Create list of libraries provided by things already in our depend file.
+# THEEEN go searching through SVR4 pkg "contents" databasefile for PKG matches
+# to libraries not provided by stuff in the depend file.
# (but give priority to lib dependancies satisfied by current PKG itself)
-# Final output is saved to file "libpkgs"
+# Final output is saved to file "autopkgdeps"
######################################################################
sparccheck=""; sparcwarning=""
if [[ "$pkgarch" = "sparc" ]] ; then
@@ -448,7 +472,7 @@
if [[ "$sparccheck" != "" ]] ; then
(cd $sparccheck && file *) | grep 'ELF.*V8+'
if [[ $? = 0 ]] ; then
- sparcwarning="WARNING: found binaries in normal bin dir that are V8+"
+ warnmsg="WARNING: found binaries in normal bin dir that are V8+"
fi
fi
fi
@@ -462,20 +486,20 @@
chmod 0755 `cat $EXTRACTDIR/elflist`
#cat $EXTRACTDIR/elflist| xargs ldd 2>/dev/null |fgrep '.so' |
- # sed 's:^.*=>[^/]*::' | nawk '{print $1}' |sort -u >$EXTRACTDIR/liblist
+ #sed 's:^.*=>[^/]*::'|nawk '{print $1}'|sort -u >$EXTRACTDIR/libsneeded
cat $EXTRACTDIR/elflist| xargs dump -Lv |nawk '$2=="NEEDED"{print $3}' |
- sort -u | egrep -v $EXTRACTDIR >$EXTRACTDIR/liblist
+ sort -u | egrep -v $EXTRACTDIR >$EXTRACTDIR/libsneeded
print libraries used are:
- cat $EXTRACTDIR/liblist
+ cat $EXTRACTDIR/libsneeded
else
print No dynamic libraries in the package
fi
fi
#If these dont exist, it is Bad.
-touch $EXTRACTDIR/liblist $EXTRACTDIR/libpkgs
+touch $EXTRACTDIR/libsneeded $EXTRACTDIR/autopkgdeps
if [[ -f $EXTRACTDIR/$pkgname/install/depend ]] ; then
print
@@ -492,83 +516,126 @@
# sanity check against "depends on self"
nawk '$2=="'$pkgname'" {exit 1}' $EXTRACTDIR/$pkgname/install/depend
if [[ $? -ne 0 ]] ; then
- print ERROR: $pkgname references self in depend file
- exit 1
+ errmsg $pkgname references self in depend file
fi
nawk '$1=="P" {print $2}' $EXTRACTDIR/$pkgname/install/depend |
sort >$EXTRACTDIR/deppkgs
for dep in `cat $EXTRACTDIR/deppkgs`
do
- pkginfo $dep || errmsg Invalid package $dep specified. Check of $f fails
+ pkginfo $dep 2>/dev/null || errmsg Invalid depend $dep specified.
done
- #strategy update: poorly grep for all possible matches against our liblist,
- # and save in "shortcswcatalog". and now "shortsuncatalog" too.
- # in theory, slower for small pkgs, but should be faster for pkgs
- # with lots of shared libs.
- #
+ #strategy update: poorly grep for all possible matches against our
+ # libsneeded,
+ # and save in "shortcswcatalog". and now "shortsuncatalog" too.
+ # in theory, slower for small pkgs, but should be faster for pkgs
+ # with lots of shared libs.
+ #
-if test -s $EXTRACTDIR/liblist ; then
+if test -s $EXTRACTDIR/libsneeded ; then
print Building index from SVR4 installed packages database...
print '(May take a while)'
#It's noticably faster (30%) this way, than the second way, at least on a
# multiproc box.
- grep CSW /var/sadm/install/contents |nawk '$2 ~ /^[fsl]$/ {print}' |
- fgrep -f $EXTRACTDIR/liblist >$EXTRACTDIR/shortcswcatalog
+ grep ${PKGPREF} /var/sadm/install/contents |nawk '$2 ~ /^[fsl]$/ {print}' |
+ fgrep -f $EXTRACTDIR/libsneeded >$EXTRACTDIR/shortcswcatalog
grep SUNW /var/sadm/install/contents |nawk '$2 ~ /^[fsl]$/ {print}' |
egrep -v 'SUNWbcp|SUNWowbcp|SUNWucb' |
- fgrep -f $EXTRACTDIR/liblist >$EXTRACTDIR/shortsuncatalog
+ fgrep -f $EXTRACTDIR/libsneeded >$EXTRACTDIR/shortsuncatalog
- #nawk '$2 ~ /^[fsl]$/ && $NF ~ /^CSW/ {print}' /var/sadm/install/contents |
- # fgrep -f $EXTRACTDIR/liblist >$EXTRACTDIR/shortcswcatalog
+ #nawk '$2 ~ /^[fsl]$/ && $NF ~ /^'${PKGPREF}'/ {print}' /var/sadm/install/contents |
+ # fgrep -f $EXTRACTDIR/libsneeded >$EXTRACTDIR/shortcswcatalog
#nawk '$2 ~ /^[fsl]$/ && $NF ~ /^SUNW/ {print}' /var/sadm/install/contents |
# egrep -v 'SUNWbcp|SUNWowbcp|SUNWucb' |
- # fgrep -f $EXTRACTDIR/liblist >$EXTRACTDIR/shortsuncatalog
+ # fgrep -f $EXTRACTDIR/libsneeded >$EXTRACTDIR/shortsuncatalog
print Cross-referencing indexes...
+
+ # At this point:
+ # shortsuncatalog == SUNW packages with intersections with libsneeded
+ # shortcswcatalog == CSW packages with intersections with libsneeded
+ # libsneeded == list of things found with dump -Lv in "NEEDED" field
+ # deppkgs == Clean list of dependant packages (may have non-SUNW)
+ #
+ # Note that "intersection" may be sloppy, with substring matches perhaps
+
+ # Going to try to weed out things that are already covered by declared
+ # dependancies.
+ #
+ mkdir $EXTRACTDIR/depliblists 2>/dev/null
+ rm -rf $EXTRACTDIR/depliblists/* # clear out prior loops
+ for pkg in `cat $EXTRACTDIR/deppkgs` ; do
+ grep " $pkg( |$)" $EXTRACTDIR/shortcswcatalog >$EXTRACTDIR/depliblists/$pkg
+ done
fi
-
-
-# DEBUG: should we weed out libs already covered by pkg dependancy list?
-# that would be to handle things like libgcc_s.so.1 that are in both
-# CSWgcc3rt and CSWgcc4rt but in different dirs
-
-for lib in `cat $EXTRACTDIR/liblist` ; do
+for lib in `cat $EXTRACTDIR/libsneeded` ; do
grep "[/=]$lib[ =]" $EXTRACTDIR/$pkgname/pkgmap
if [[ $? -eq 0 ]] ; then
echo $lib provided by package itself
continue
fi
- # We want to give priority to CSW packages.
+ # First check in declared dependancies
+ libpkg=`cd $EXTRACTDIR/depliblists && grep -l "[/=]$lib[ =]" *`
+
+ if [[ -z "$libpkg" ]] ; then
+ # Next, check against CSW packages installed but not declared as deps
# This is one way; force ONLY parsing CSW pkgs first.
- # Then search SUNW pkgs only if nothing else
- libpkg=`findlibincat $lib $EXTRACTDIR/shortcswcatalog`
+ libpkg=`findlibincat $lib $EXTRACTDIR/shortcswcatalog`
+ fi
if [[ -z "$libpkg" ]] ; then
- libpkg=`findlibincat $lib $EXTRACTDIR/shortsuncatalog`
+ # Then search SUNW pkgs only if nothing else
+ libpkg=`findlibincat $lib $EXTRACTDIR/shortsuncatalog`
fi
+
if [[ -z "$libpkg" ]] ; then
- errmsg cannot find package for $lib
+ errmsg cannot find package for $lib, in $pkgname
else
- print $libpkg >>$EXTRACTDIR/libpkgs
+ print $libpkg >>$EXTRACTDIR/autopkgdeps
print " found $libpkg for $lib"
fi
done
-sort -u $EXTRACTDIR/libpkgs >$EXTRACTDIR/libpkgs.x
-mv $EXTRACTDIR/libpkgs.x $EXTRACTDIR/libpkgs
+if [[ -s $EXTRACTDIR/autopkgdeps ]] ; then
+ sort -u $EXTRACTDIR/autopkgdeps >$EXTRACTDIR/autopkgdeps.x
+ mv $EXTRACTDIR/autopkgdeps.x $EXTRACTDIR/autopkgdeps
-diff $EXTRACTDIR/deppkgs $EXTRACTDIR/libpkgs >/dev/null
-if [[ $? -ne 0 ]] ; then
+
+ for pkg in `cat $EXTRACTDIR/autopkgdeps` ; do
+ grep "^${pkg}$" $EXTRACTDIR/deppkgs>/dev/null ||
+ echo $pkg >>$EXTRACTDIR/missingpkgdeps
+ done
+fi
+if [[ -s $EXTRACTDIR/missingpkgdeps ]] ; then
print SUGGESTION: you may want to add some or all of the following as depends:
- print ' (Feel free to ignore SUNW or SPRO packages)'
- diff $EXTRACTDIR/deppkgs $EXTRACTDIR/libpkgs | fgrep '>'
-fi
+ print '(But feel free to ignore SUNWxxx packages)'
+ cat $EXTRACTDIR/missingpkgdeps
+fi >> $WARNINGFILE
+for pkg in `cat $EXTRACTDIR/deppkgs` ; do
+ case $pkg in
+ # known "non-sharedlib requirements"
+ CSWcommon|CSWcas-*|CSWpython|CSWperl)
+ :
+ ;;
+ *)
+ grep "^${pkg}$" $EXTRACTDIR/autopkgdeps>/dev/null ||
+ echo $pkg >>$EXTRACTDIR/notfoundpkgs
+ ;;
+ esac
+done
+if [[ -s $EXTRACTDIR/notfoundpkgs ]] ; then
+ print SUGGESTION: the following packages were NOT found as needed.
+ print You might want to consider removing them from depend
+ cat $EXTRACTDIR/notfoundpkgs
+fi >> $WARNINGFILE
+
+
+
checkforclasses
if [[ "$basedir" != "" ]] ; then
@@ -589,6 +656,18 @@
cleanup
-print "$sparcwarning"
+print " --- "
+if [[ -f $ERRORFILE ]] ; then
+ print === ERRORS detected for $f === >/dev/fd/2
+ cat $ERRORFILE >/dev/fd/2
+ rm $ERRORFILE
+fi
+if [[ -f $WARNINGFILE ]] ; then
+ print ... Warnings detected for $f ... >/dev/fd/2
+ cat $WARNINGFILE >/dev/fd/2
+ rm $WARNINGFILE
+fi
+print " --- "
+sleep 2
done
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the devel
mailing list