MarkLinimon's note: work on this project seems to have stalled back in 2010.
The goal of improving the package installation experience is multi-fold:
bool (#include <stdbool.h>).Development for Phase 1 is taking place at //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified
Determine what useful functionality can be implemented in the time being as Phase 2, (before Phase 3) which would benefit the project and the community as a whole, and/or make the transition to Phase 3 a smoother one.
Other pieces, TBD (contingent upon Phase 1.5).
After that point, we need to take a step back and evaluate other available solutions out in the BSD community as a whole, or consider whether a wholesale rewrite is worth the time:
Packing lists are clobbered with lines like :
@exec [ ! -f %B/foo ] && cp %B/%f %B/foo
@unexec cmp -s %D/etc/foo %D/etc/foo-dist && rm %D/etc/foo
@unexec rmdir %D/share/foo 2> /dev/null || true
Suggestion by flz: http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/77082
@cpin name : copy if non-existent, copy name from name-dist if name doesn't exist yet.
@rmiu name : remove if unchanged, remove name if name and name-dist are no different.
Maybe consider it with only on instruction:
@config etc/foo etc/foo-dist
Pkg_add will copy if non-existent “${PREFIX}/etc/foo-dist” to “${PREFIX}/etc/foo”
Pkg_delete will remove “${PREFIX}/etc/foo” if unchanged from “${PREFIX}/etc/foo-dist”
Support may be extened to have macros in bsd.port.mk:
http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/75464
Many packaging systems today either do single, monolithic packages (FreeBSD is one example), or split the packages logically depending on whether or not there are headers, static libraries, etc, which are used at compile time (non-devel vs -devel packages, see Linux distributions like Debian, Redhat for examples of this methodology). In a world where network bandwidth is cheap', and disk space is more of a premium (this is especially true for embedded systems), or on systems where less files are required on servers, desktops, etc, this would be a potentially major win in terms of software footprint, without having to resort to hacks' using scripts or other methods that would potentially break binary upgrades. We could provide the same level of functionality today for those upgrading binary packages, without having to install the build and patch dependencies, s.t. the amount of disk space being actively used by packages is reduced.
Reference thread: http://lists.freebsd.org/pipermail/freebsd-ports/2010-March/060367.html . Please see the rest of the thread for more details.
Author's Page: Ngie Cooper.