Re: ITP: libsafe (again, and need a sponsor...)
- To: Ron Rademaker <ron@wep.tudelft.nl>
- Cc: Debian developers list <debian-devel@lists.debian.org>
- Subject: Re: ITP: libsafe (again, and need a sponsor...)
- From: Julian Gilbey <J.D.Gilbey@qmw.ac.uk>
- Date: Fri, 7 Jul 2000 18:07:41 +0100
- Message-id: <[🔎] 20000707180741.E18615@polya>
- In-reply-to: <Pine.LNX.4.21.0006141457470.32178-100000@neo.rademaker.dhs.org>; from ron@wep.tudelft.nl on Wed, Jun 14, 2000 at 03:02:45PM +0200
- References: <20000614132410.A28977@polya> <Pine.LNX.4.21.0006141457470.32178-100000@neo.rademaker.dhs.org>
On Wed, Jun 14, 2000 at 03:02:45PM +0200, Ron Rademaker wrote:
> I did write the script in a way it uses only the essential packages (perl,
> rm and touch, AFAIK available on every system), currently I've made it a
> debian package, if you would like to take a look at the script, you can
> find it on my ftp-site:
No, the build process uses these things, whereas the runtime package
uses only perl (plus whatever ends up in any maintainer scripts,
specifically rm and ln).
> ftp://rademaker.dhs.org
> it's in pub/linux/debian/packages
> the .deb is in binary-i386 (actually this perl script is usable on any
> arch) and the sources in sources (duh...)
A few quick points about the packaging:
(1) This is currently a native Debian package, right? So it doesn't
make sense to have an .orig.tar.gz and a .diff file. Just have a
version number something like "2.2" and be done with it. If
you're planning to have a main upstream version with the Debian
package just one way of doing it, you could use your scheme.
(2) In the orig.tar.gz, stick everything inside a directory, rather
that in a top level directory.
(3) Why are there two (slightly different) copies of the manpage
around?
(4) Get rid of all of the .ex files which aren't used from the debian/
directory. They're just plain confusing.
(5) You don't need to depend upon perl-base; it's essential.
(6) Architecture: all if it's got no compiled code in it.
(7) You don't need to list manpage directories in debian/dirs; they're
created automatically.
(8) This program is going in /usr/sbin, so it's manpage should go in
section 8, not section 1.
(9) The rules file is based on the example rules file, but should
probably be based on the rules.indep file, as you are making an
architecture independent package.
(10) The build process uses debhelper, and you claim to be fulfilling
policy 3.1.1 in the control file, so you must have a line:
Build-Depends-Indep: debhelper
in the first section on the control file. (-Indep for when you
make it an "Architecture: all" package.)
(11) It's a bad thing to leave blank lines within sections of a
Makefile (such as debian/rules): it's not at all clear that the
section continues, as tabs are invisible.
(12) Why are you doing chmod 755 ... after dh_fixperms? It doesn't
strip the execute bit of programs....
(13) The clean target could use rm -rf instead of rm -r. It must also
remove the configure-stamp and build-stamp files. And rather
than remove the tmp dir yourself, why not use the standard idiom
found in sample rules file, using dh_clean?
(14) You could consider using install instead of cp.
(15) debian/files shouldn't be in the diff file. I don't think you
cleaned the build tree (debian/rules clean) before you created
the diff file.
Next, it only runs interactively. That's not acceptable for such a
script.
You don't check that the library name is absolute.
And last but not least, you *must* work with a temporary file until
everything's correct, and only then replace the original
ld.so.preload file. Otherwise you could end up wiping out the
original information. You should probably also save a backup to
ld.so.preload.orig or similar.
Bare bones (untested) rewrite in shell:
#! /bin/sh
usage() {
echo "This is how you use me"
}
if [ $# -lt 1 ]; then usage >&2; exit 1; fi
# Maybe test for --help etc here
add=yes
if [ "x$1" eq "x-r" ]; then add=no; shift; fi
if [ $# -ne 1 ]; then usage >&2; exit 1; fi
case "$1" in
/*) # This is OK
;;
*) # This isn't
echo "Library names must be absolute!" >&2
exit 1 ;;
esac
if [ ! -f "$1" ]; then echo "Can't find requested library" >&2; exit 0; fi
if [ $add = yes ]; then
if [ -f /etc/ld.so.preload ]; then
cp /etc/ld.so.preload /etc/ld.so.preload.new
echo "$1" >> /etc/ld.so.preload.new
cp /etc/ld.so.preload /etc/ld.so.preload.orig
mv /etc/ld.so.preload.new /etc/ld.so.preload
else
echo "$1" > /etc/ld.so.preload
fi
else # to remove
if [ ! -f /etc/ld.so.preload ]; then
echo "/etc/ld.so.preload does not exist" >&2; exit 1;
fi
if ! grep -q "^$1\$" /etc/ld.so.preload; then
echo "Libary $1 is not currently in /etc/ld.so.preload" >&2
exit 1
fi
grep -v "^$1\$" /etc/ld.so.preload > /etc/ld.so.preload.new
cp /etc/ld.so.preload /etc/ld.so.preload.orig
mv /etc/ld.so.preload.new /etc/ld.so.preload
fi
exit 0
Hope all of this is of some use.
Julian
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Julian Gilbey, Dept of Maths, QMW, Univ. of London. J.D.Gilbey@qmw.ac.uk
Debian GNU/Linux Developer, see http://www.debian.org/~jdg
Donate free food to the world's hungry: see http://www.thehungersite.com/
Reply to: