OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Thomas Lotterer Root: /v/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-tools Date: 04-Jul-2006 15:02:26 Branch: HEAD Handle: 2006070414022300 Modified files: openpkg-tools/cmd dev.sh Log: replace "openpkg dev search" file listing logic by repository index crawling logic Summary: Revision Changes Path 1.79 +70 -26 openpkg-tools/cmd/dev.sh ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-tools/cmd/dev.sh ============================================================================ $ cvs diff -u -r1.78 -r1.79 dev.sh --- openpkg-tools/cmd/dev.sh 20 Jun 2006 13:20:45 -0000 1.78 +++ openpkg-tools/cmd/dev.sh 4 Jul 2006 13:02:23 -0000 1.79 @@ -2487,21 +2487,53 @@ done } -search_for () { - URL=`echo $2 | sed -e 's| *$||'` - openpkg register --printstatus >/dev/null 2>&1 \ - && URL=`openpkg register --rewriteurls $URL` - PKG=`$E/lib/openpkg/curl -l -s $URL |\ - sed -e 's|[^-a-zA-Z0-9_\.]||g' |\ - grep "^$1" | sort -r` - if [ ".$PKG" != . ]; then - for pkg in $PKG; do +search_index () +{ + local findpkg="$1" + local urls="$2" + + local url="" + local baseurl="" + local index="" + for url in $urls; do + openpkgE register --printstatus >/dev/null 2>&1 && url=`openpkgE register --rewriteurls $url` + case $url in + */00INDEX.rdf ) + baseurl=`echo $url | sed -e 's;/00INDEX.rdf$;;'` + index=`$curlT -s "$url"` + ;; + */00INDEX.rdf.bz2 ) + baseurl=`echo $url | sed -e 's;/00INDEX.rdf.bz2$;;'` + index=`$curlT -s "$url" | $bzipT -q -d` + ;; + * ) + baseurl=`echo $url | sed -e 's;/$;;'` + index=`$curlT -s "$baseurl/00INDEX.rdf"` + if [ ".$index" = . ]; then + index=`$curlT -s "$baseurl/00INDEX.rdf.bz2" | $bzipT -q -d` + fi + ;; + esac + + local pkg pkgs + pkgs=`printf "===%s===" "$index" \ + | awk 'BEGIN { D="" } /<rdf:Description about=/ { D=$3 } /<Name>'$findpkg'<\/Name>/ { print D }' \ + | sed -e 's;^[^"]*";;' -e 's;"[^"]*$;;'` + for pkg in $pkgs; do NAME=`echo "$pkg" | sed -e 's;\.src\.rpm$;;' -e 's;\.src\.sh$;;'` NAME=`echo "$NAME ........................................" | cut -c-35` - DLOC=`echo "$pkg" | sed -e "s;^;$URL;"` - echo "$NAME $DLOC" + echo "$NAME $baseurl/$pkg" done - fi + + local resource resources + resources=`printf "===%s===" "$index" \ + | grep -v /Binary/ \ + | awk '/<Repository rdf:resource=/ { print $3 }' \ + | sed -e 's;^[^"]*";;' -e 's;"[^"]*$;;'` + for resource in $resources; do + search_index "$findpkg" "$baseurl/$resource" + done + done } search () { @@ -2511,25 +2543,37 @@ E="${RV}" fi - if [ ".$1" = . ]; then + # we must have a T/bin/rpm somewhere + if [ ".$T" = . ]; then + matchinstance "${OPENPKG_CTAG}" any + T="${RV}" + fi + curlT=`rpmT --eval '%{l_curl}'` + bzipT=`rpmT --eval '%{l_bzip2}'` + + packages="" + urls="" + while [ ".$1" != . ]; do + case ".$1" in + .-r ) shift + urls="$urls $1" ;; + * ) packages="${packages} $1" + esac + shift + done + if [ ".$urls" = . ]; then + urls="ftp://ftp.openpkg.org" + fi + if [ ".${packages}" = . ]; then if [ ".$P" = . ]; then die "package cannot be identified. Neither parameter given nor \$P set." fi all="$P" else - all="$*" + all="${packages}" fi - for i in $all; do - search_for $i ftp://ftp.openpkg.org/current/SRC/ - search_for $i ftp://ftp.openpkg.org/stable/SRC/ - REL=`$E/lib/openpkg/curl -l -s ftp://ftp.openpkg.org/release/ |\ - sed -e 's; ;;' |\ - egrep '^[1-9][0-9]*\.[0-9]+$' | sort -rn` - for r in $REL; do - search_for $i ftp://ftp.openpkg.org/release/$r/UPD/ - search_for $i ftp://ftp.openpkg.org/release/$r/SRC/ - search_for $i ftp://ftp.openpkg.org/release/$r/SRC/PLUS/ - done + for name in $all; do + search_index $name $urls done } @@ -2898,7 +2942,7 @@ \$ openpkg dev query # matchinstance|canonifybranch query script internals \$ openpkg dev release # [[spec]...] [-dry] [-m "msg"] release package changes to master server \$ openpkg dev run # [[spec]...] [-dry] -c "cmd" [-f] append cmd to %prep for spec and run rpm -bp - \$ openpkg dev search # [[spec]...] search a package on master server + \$ openpkg dev search # [-r repourl...] [[spec]...] search a package in repository index \$ openpkg dev setup # [[[spec]ctag]exec] initial setup of openpkg dev working environment \$ openpkg dev srcdir # [dir] use a different source directory \$ openpkg dev test # [[spec]...] run functional test (reserved for future use) @@ . ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List openpkg-cvs@openpkg.org