Packaging djbware
Amitai Schlair
The NetBSD Project
Why should you care about this talk?
- You use DJB's software
- Nobody can resist rubbernecking at the scene of an accident
- You use pkgsrc
- Both sides of the DJB debate can feel superior, with good reason
What is djbware?
- Software written by Dan Bernstein
- Stylistic fingerprints: code, architecture, installation, documentation
- Redistribution restrictions: commonly misunderstood
- Third-party packages: often poor quality or nonexistent
What is djbware? Take 2
- Not a real word, so I can make up convenient definitions
- Software written by other authors while "under the influence" (of DJB)
- Usually licensed more traditionally (i.e., does have a license)
- New name as of today: "secondary djbware" (tell your friends)
- Drink the Kool-Aid, get a whole ecosystem of small tools
How much software are we talking about here?
- Primary djbware:
databases/cdb
devel/libtai
mail/dot-forward
mail/ezmlm
mail/fastforward
mail/mess822
mail/qmail
mail/qmailanalog
mail/serialmail
math/djbfft
net/djbdns
net/publicfile
net/ucspi-tcp
sysutils/checkpassword
sysutils/daemontools
- Secondary djbware:
databases/tinycdb
devel/bglibs
devel/syncdir
mail/ezmlm-idx
mail/autorespond
mail/getmail
mail/greetdelay
mail/mailfront
mail/mb2md
mail/nullmailer
mail/p5-Mail-Ezmlm
mail/pymsgauth
mail/qgreylist
mail/qmHandle
mail/qmail-conf
mail/qmail-lint
mail/qmail-qfilter
mail/qmail-run
mail/qmqtool
mail/qtools
mail/queue-fix
mail/queue-repair
mail/relay-ctrl
mail/safecat
mail/spamdyke
net/djbdns-run
net/ucspi-ssl
security/cvm
sysutils/checkpassword-pam
sysutils/memtester
sysutils/qlogtools
sysutils/service-config
Less ecosystem, more zoo
- There's more out there still unpackaged
- Worthwhile to make the process easier
- Is there some common code available to djbware packages?
djbware.mk (ca. pkgsrcCon 2005)
- Default
RESTRICTED
- Default
{BUILD,INSTALL}_TARGET
- Default
conf-*
- Define
errno
properly to fix compilation under new glibc
- A bunch of one-off do-configure/post-patch/etc targets go away
djbware.mk (ca. today)
djbware-errno-hack
option
LICENSE=djb-nonlicense
(gdt@)
- Common code for some secondary djbware
- More flexibility, correctness (joerg@, rillig@)
- Some awareness of DJB's new
/package
install scheme
State of djbware in pkgsrc
- Very few patches by default (target: 0)
- Very few nonstandard (to DJB) paths (target: 0)
- Many useful package options (jlam@, dillo@)
- qmail is being packaged in bulk builds (joerg@)
- Sweet
rc.d
scripts
- Clear understanding of redistribution requirements
State of djbware packages elsewhere
- FreeBSD: some good, some not
- OpenBSD: nope
- Gentoo: horrid
- Life with qmail: not really a package
- netqmail: a bit more package-like
- qmailrocks: doesn't rock (does suck rocks, though)
- Debian: very good ones by Gerrit Pape, but of course not included
Remaining technical goals
- Avoid bulk builds mistakenly uploading current binary packages to
nbftp
- As good new patches appear, add package options for them
- Make binary packages of qmail work with arbitrary UIDs/GIDs
- Fully support DJB's new install scheme
- By default, leave paths alone (create parallel symlinks instead)
- By default, don't patch
- Set
RESTRICTED
automatically if we change anything
- In general, meet technical requirements for distributing binary packages
Distribute binary packages?
You may distribute a precompiled package if
- installing your package produces exactly the same files, in exactly the same locations, that a user would obtain by installing one of my packages listed above;
- your package behaves correctly, i.e., the same way as normal installations of my package on all other systems; and
- your package's creator warrants that he has made a good-faith attempt to ensure that your package behaves correctly.
Warrant, schmarrant!
- Can I say that? Can The NetBSD Foundation say that?
- Discussion with gdt@ and board@ in 2006
- To me, our position is easily defended: just look at CVS logs (but IANAL)
- TNF not willing to take on this liability
- I understand completely
- But I am sad
Feeling superior
- If you don't use djbware, you can laugh at this quixotic battle
- If you do use djbware, you can laugh at those who don't use pkgsrc to get it
- If you use pkgsrc, you can be proud of our djbware efforts
- qmail list: let's collect the best patches to do the most important things
- pkgsrc: we've had them for years
Upshot
- Try some djbware packages sometime, you might be surprised and like them
- This is yet another area of strength for pkgsrc
- There's always more to be done
- Help always welcome
- Quit rubbernecking, you're holding up traffic