Subject: Re: handling machine-dependent files in syspkg
To: None <current-users@netbsd.org, riz@boogers.sf.ca.us>
From: David Young <dyoung@pobox.com>
List: current-users
Date: 05/19/2003 01:14:26
--mxv5cy4qt+RJ9ypb
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Sun, May 18, 2003 at 09:47:01PM -0700, Jeff Rizzo wrote:
> So, I just started playing around with syspkg the other day, and
> it's got a lot of potential, but looks like it's suffered a little
> bitrot since its initial commit over a year ago.  I noticed that
> a few packages are referred to in the setlists that don't have
> corresponding packages in the distrib/syspkg/sets directory.

Jeff,

I was bit by the missing directories bug, too. I use the attached script
to detect, report, and create (with Makefile, and empty DESCR & COMMENT
files) missing directories.

If you are interested in whacking syspkg bugs, I have some pet ones:

    Add and delete a syspkg, and then verify that all the files were
    actually deleted. I recall being disappointed.  I think because the
    packing lists are written with the @dirrm and files out of order.

    There seems to be an excess of leading /// in the packing lists.
    It makes a difference, because the /// are compared textually some
    places, not path-component by -component.

    The granularity of the lists is great big. I especially remember
    some gigantic, non-essential files in /usr/share/ being grouped with
    termcap files. There is not any notion of syspkg dependencies that
    I can detect.

Dave

-- 
David Young             OJC Technologies
dyoung@ojctech.com      Urbana, IL * (217) 278-3933

--mxv5cy4qt+RJ9ypb
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=touchup

#!/bin/sh
#
# Give additional args for listpkgs (-a et cetera) on the command line.
#

# For each system set, find out the name of each of its packages
# and make sure that there exists a directory sets/$setname/$pkgname
# for each package.  For each missing package, write its name to the
# standard output, create empty sets/$setname/$pkgname/DESCR and
# sets/$setname/$pkgname/COMMENT files, and create a suitable
# sets/$setname/$pkgname/Makefile.
#
find ./sets -type d -mindepth 1 -maxdepth 1 | grep -v 'CVS' | \
    xargs -n 1 basename | \
while read setname ; do
	../sets/listpkgs $* -s ../sets $setname | \
	while read pkgname ; do
		[ -d sets/$setname/$pkgname ] && continue
		missing=sets/$setname/$pkgname
		echo $pkgname
		mkdir $missing
		touch $missing/DESCR $missing/COMMENT
		cat > $missing/Makefile <<EOF
PKGBASE=$pkgname
TINY_VERSION=0

.include "../../../mk/bsd.syspkg.mk"
EOF
	done
done


--mxv5cy4qt+RJ9ypb--