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 [email protected]