New version of the fakeroot patch

Baptiste Daroussin baptiste.daroussin at gmail.com
Mon Dec 14 15:15:05 UTC 2009


Hi all,

I have updated the fakeroot patch, it now can apply on an uptodate version of
the ports.

http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/133815

For information the fakeroot patch is a port of the midnightbsd's mports fakeroot
to freebsd's ports.

What it does:
- it is optional: you can activate it globally with USE_FAKE=yes in
  /etc/make.conf or per ports by adding USE_FAKE=yes in the ports Makefile

- it create a fakeroot directory in the WRKDIR where all the binary are
  installed first

- then it creates a package using the plist and finding its files only in the
  fakeroot directory

- in the end it installs the created packages

- it respects the DESTDIR implementation (it is not the same kind of feature nor
  the same goal)

- it does not require any modification on actual ports (except for those which
  are already not clean) but will allow to cleanup some ports if wanted.

Why this patch:
- it prevents installing crufts thing on users systems (only what is found in
  the plist is really installed, so the package is always clean)

I now that porters should take care of not breaking the plist, but it often
happens, helping them by a system that completly use the plist file is IMHO a
better thing, and it prevents users from being inpacted by a lazy porter.

- it allow to create tinderbox that does not need to install a ports to get the
  package build, only build-depends ports will be installed

- it allow easier handling of NOPORTDOCS, NOPORTEXAMPLES and so on, because it
  creates the packages first using plist to know which files should be packaged,
  the porter should only take care of one case, the case everything is
  installed, then he adapts the plists to have or not some files depending on
  the options the user have.

This should cleanup a lot some ports, and should easier the respectness of
some porting guidelines

What could be done:
because it generates packages first we could imagine some lint programs that
analyse the package content to test that it respects some of the freebsd
recommandation for packages (usefull for porters), it could help the validation
of new/update ports submission and help preventting commiting buggy stuff.

Limitation:
this path (currently activable on depend) add from disk usage than the way ports
actually works:

without the patch:
build -> copy on the filesystem
with the path:
build -> copy-on-fakeroot->package_building->package-installing

In the future it could be improved by provinding a version of pkg_create that
fake the package creation by directly install on FS so that could become
build->copy-on-fakeroot->package-installing

This patch is not yet complete, it should work with classical ports that use
gmake or make and with python, I have only done that currenly as a proof of
concept.

Tell me if you think that this patch could be interesting or not

Regards,
Bapt


More information about the freebsd-ports mailing list