Fetch pkgsrc index with pkg_search
Matthias Schmidt
schmidtm at mathematik.uni-marburg.de
Tue Dec 11 08:23:32 PST 2007
Hi,
* reed at reedmedia.net wrote:
> On Tue, 11 Dec 2007, Matthias Schmidt wrote:
>
> > Would it be possible to add the pkgsrc INDEX to an official server?
> > This enables users to use pkg_search on DragonFly without the need to
> > download the whole tree and only install binary packages.
>
> We have a documented data file -- see pkg_summary(5) manual page.
Thanks, I wasn't aware of this file. The file is not very parser
friendly, compared with the INDEX file :)
I could use it as a workaround: If no pkgsrc tree is found, check for
the pkg_summary file and download it if necessary. Then pkg_search
could perform a only basic search. Maybe it should output the path to
the server to install the binary package?
Check the attached path against HEAD. I also updated my email address
:)
Regards,
Matthias
--
Dipl.-Inf. Matthias Schmidt <schmidtm at mathematik.uni-marburg.de>
Dept. of Mathematics and Computer Science, Distributed Systems Group
University of Marburg, Hans-Meerwein-Strasse, 35032 Marburg, Germany
Tel: +49.6421.28 21 591, Fax: +49.6421.28 21 573, Office C4347
Binary files pkg_search.orig/.pkg_search.sh.swp and pkg_search/.pkg_search.sh.swp differ
diff -urN pkg_search.orig/pkg_search.sh pkg_search/pkg_search.sh
--- pkg_search.orig/pkg_search.sh 2007-12-11 17:57:44.000000000 +0100
+++ pkg_search/pkg_search.sh 2007-12-11 18:15:36.000000000 +0100
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (c) 2006 Matthias Schmidt <schmidtm @ mathematik . uni-marburg.de>
+# Copyright (c) 2006-07 Matthias Schmidt <schmidtm at mathematik.uni-marburg.de>
#
# All rights reserved.
#
@@ -27,13 +27,25 @@
#
# $DragonFly: src/usr.bin/pkg_search/pkg_search.sh,v 1.1 2007/12/04 18:24:18 dillon Exp $
-if [ `uname -s` = "FreeBSD" ]; then
- PORTSDIR=/usr/ports
- id=`uname -r | cut -d '.' -f 1`
- INDEXFILE=INDEX-$id
-elif [ `uname -s` = "DragonFly" ] || [ `uname -s` = "NetBSD" ]; then
+PKGSRCBOX=http://chlamydia.fs.ei.tum.de/pub/DragonFly/packages/stable/
+UNAME=`uname -s`
+VERSION=`uname -r | cut -d '.' -f 1,2`
+SIMPLE=0
+PKGSUM=${PORTSDIR}/pkg_summary
+
+if [ $UNAME = "DragonFly" ]; then
PORTSDIR=/usr/pkgsrc
INDEXFILE=INDEX
+ if [ ! -d ${PORTSDIR} ]; then
+ echo "No pkgsrc(7) tree found. Fetch pkg_summary(5) file."
+ mkdir -p ${PORTSDIR}
+ fetch -o ${PKGSUM}.bz2 ${PKGSRCBOX}${UNAME}-${VERSION}/All/pkg_summary.bz2
+ bunzip2 < ${PKGSUM}.bz2 > ${PKGSUM}
+ SIMPLE=1
+ fi
+ if [ -e ${PKGSUM} -a ! -e ${PORTSDIR}/${INDEXFILE} ]; then
+ SIMPLE=1
+ fi
fi
if [ -z $1 ]; then
@@ -41,13 +53,13 @@
exit 1
fi
-if [ ! -d $PORTSDIR ]; then
- echo "No Ports Tree Found! Please install."
- exit 1
-fi
case "$1" in
-i)
+ if [ ${SIMPLE} -eq 1 ]; then
+ grep "PKGNAME=$2" ${PKGSUM} | cut -d '=' -f 2
+ exit 1
+ fi
awk -F\| -v name="$2" \
'{\
if ($1 ~ name) { \
@@ -57,6 +69,10 @@
}' ${PORTSDIR}/${INDEXFILE}
;;
-k)
+ if [ ${SIMPLE} -eq 1 ]; then
+ grep "PKGNAME=$2" ${PKGSUM} | cut -d '=' -f 2
+ exit 1
+ fi
awk -F\| -v name="$2" \
'{\
if ($1 ~ name || $4 ~ name || $10 ~ name) { \
@@ -67,6 +83,11 @@
;;
*)
+ if [ ${SIMPLE} -eq 1 ]; then
+ grep "PKGNAME=$1" ${PKGSUM} | cut -d '=' -f 2
+ exit 1
+ fi
+
awk -F\| -v name="$1" \
'{\
if ($1 ~ name) { \
More information about the Users
mailing list