Skip site navigation (1)Skip section navigation (2)
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>