Date: Tue, 1 Jun 1999 09:44:28 +1000 From: Peter Jeremy <jeremyp@gsmx07.alcatel.com.au> To: hackers@FreeBSD.ORG Subject: Re: a two-level port system? Message-ID: <99Jun1.092847est.40374@border.alcanet.com.au>
next in thread | raw e-mail | index | archive | help
I do agree that the current approach is fairly wasteful. Currently, an unpacked ports tree contains 61767 inodes and occupies 79967 1K-blocks (35184 inodes and 35215 blocks are CVS-related metadata). This covers 2374 ports in 41 categories. An average user probably builds 1-2% of these. How about storing each port as a single file in ar(5) format, which is unpacked into the directory structure when make'd? ar(5) is a text format, which means it can easily be managed by CVS, which includes a tool for manipulating its contents - ar(1). The ports would remain in the current categories. Each category directory would contain an `ARCHIVE' directory containing an ar file for each port. To package a port: - ar(1) all the current port files into a single file in a defined order. - CVS commit that file To unpack a port: - in the category directory, run `make portname'. If that port is not unpacked (the directory does not exist), it will create the directory and unpack the archive. Benefits: - The ports tree would become ~2500 inodes and ~~32MB. - The entire ports tree is still available on the machine. Disadvantages: - Unpacked ports will use about twice as much disk space (3 times if you include the original CVS archive). - ar(1) may need some tweaks to allow pathnames (not just filenames) as object names (and maybe to create directories). - Updating ports is not as easy (the port needs to be unpacked/repacked in the same order, with modification times and gid/uid maintained to stop the deltas bloating). Comments anyone? Peter To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?99Jun1.092847est.40374>