2008-09-29 17:25:56 +00:00
|
|
|
|
pkgfs - Build packages from s(cratch|ource)
|
|
|
|
|
|
|
|
|
|
It is a simple package system manager that uses Xstow to allow packages
|
|
|
|
|
to be available at a master directory.
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
|
|
|
|
Multiple versions of a package can be installed, because they can be enabled
|
|
|
|
|
or disabled at the master directory anytime, to e.g allow testing different
|
|
|
|
|
versions of the same package by "stowning" or "unstowning" them.
|
|
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
HOW TO USE IT
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Once you download it, you should edit the configuration file located at the
|
|
|
|
|
pkgfs directory. By default it uses the pkgfs directory in your $HOME.
|
|
|
|
|
|
|
|
|
|
If PKGFS_CONFIG_FILE is not set or specified from the command line with the
|
2008-10-03 16:53:58 +00:00
|
|
|
|
-c flag, it will first try to use the default location at
|
|
|
|
|
/usr/local/etc/pkgfs.conf, and as last resort in current directory.
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
|
|
|
|
Once that you read the "pkgfs.conf" file and configured it, you can start
|
|
|
|
|
installing packages by using the command:
|
|
|
|
|
|
2008-10-04 04:35:43 +00:00
|
|
|
|
$ pkgfs.sh install glib
|
2008-09-29 23:59:51 +00:00
|
|
|
|
|
|
|
|
|
Please note that it's assumed that PKGFS_TEMPLATESDIR is properly defined
|
|
|
|
|
and actually contains valid template files.
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
|
|
|
|
While installing your first package, if pkgfs couldn't find the Xstow program
|
|
|
|
|
specified at the configuration file with PKGFS_XSTOW_CMD, the Xstow package
|
|
|
|
|
will be installed and "stowned".
|
|
|
|
|
|
|
|
|
|
If the package is properly installed, it will be "stowned" automatically.
|
|
|
|
|
``stowned<65><64> means that this package is available in the master directory,
|
|
|
|
|
on which ``Xstow<6F><77> has created links from DESTDIR/<pkgname>.
|
|
|
|
|
|
|
|
|
|
To remove a currently installed (and stowned) package, you can use:
|
|
|
|
|
|
2008-10-04 04:35:43 +00:00
|
|
|
|
$ pkgfs.sh remove glib
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
|
|
|
|
Please note that when you remove it, the package will also be removed
|
|
|
|
|
from PKGFS_DESTDIR and previously "unstowned".
|
|
|
|
|
|
|
|
|
|
pkgfs uses some db(1) btree files, to record what packages are currently
|
|
|
|
|
"stowned". Once you install successfully or stown a package, the package
|
|
|
|
|
will be registered in PKGFS_DESTDIR/.pkgfs-registered-pkg.db.
|
|
|
|
|
|
|
|
|
|
While "unstowning" a package, it won't be available anymore in the master
|
|
|
|
|
directory and therefore it probably won't work if used from
|
|
|
|
|
PKGFS_DESTDIR/<pkgname>.
|
|
|
|
|
|
|
|
|
|
Summary, to stow an already installed package (into PKGFS_DESTDIR/<pkgname>):
|
|
|
|
|
|
2008-10-04 04:35:43 +00:00
|
|
|
|
$ pkgfs.sh stow glib
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
|
|
|
|
and to unstow an already installed (stowned) package:
|
|
|
|
|
|
2008-10-04 04:35:43 +00:00
|
|
|
|
$ pkgfs.sh unstow glib
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
|
|
|
|
You can also print some stuff about any template, e.g:
|
|
|
|
|
|
2008-10-04 04:35:43 +00:00
|
|
|
|
$ pkgfs.sh info glib
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
2008-09-29 22:45:25 +00:00
|
|
|
|
To list installed (stowned) packages, use this:
|
|
|
|
|
|
2008-10-03 16:53:58 +00:00
|
|
|
|
$ pkgfs.sh list
|
2008-09-29 22:45:25 +00:00
|
|
|
|
|
2008-10-02 01:52:21 +00:00
|
|
|
|
To only extract the distfile, without configuring/building/installing:
|
|
|
|
|
|
2008-10-04 04:35:43 +00:00
|
|
|
|
$ pkgfs.sh -i install foo
|
2008-10-02 01:52:21 +00:00
|
|
|
|
|
|
|
|
|
To not remove the build directory after successful installation:
|
|
|
|
|
|
2008-10-04 04:35:43 +00:00
|
|
|
|
$ pkgfs.sh -C install blah
|
2008-10-02 01:52:21 +00:00
|
|
|
|
|
|
|
|
|
To only fetch the distfile:
|
|
|
|
|
|
2008-10-04 04:35:43 +00:00
|
|
|
|
$ pkgfs.sh -e install blah
|
2008-10-02 01:52:21 +00:00
|
|
|
|
|
|
|
|
|
To only install the package, _without_ stowning it into the master directory:
|
|
|
|
|
|
2008-10-04 04:35:43 +00:00
|
|
|
|
$ pkgfs.sh -i install blob
|
2008-10-02 01:52:21 +00:00
|
|
|
|
|
2008-09-29 22:45:25 +00:00
|
|
|
|
That's all for now folks. I hope you find it useful, as I do.
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------
|
2008-09-30 02:02:44 +00:00
|
|
|
|
PERFORMANCE
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
pkgfs is really fast, trust me. That was one of my reasons to make my own
|
|
|
|
|
pkgsrc/ports alike system.
|
|
|
|
|
|
2008-10-04 13:09:11 +00:00
|
|
|
|
If you want benchmarks, here is one: building libX11 and all its dependencies
|
|
|
|
|
required (not included building xstow) with pkgfs:
|
2008-09-30 02:02:44 +00:00
|
|
|
|
|
2008-10-04 13:09:11 +00:00
|
|
|
|
251.20s real 121.36s user 53.94s system
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
2008-10-04 13:09:11 +00:00
|
|
|
|
versus pkgsrc (make install clean clean-depends and digest previously
|
|
|
|
|
installed):
|
2008-09-30 02:02:44 +00:00
|
|
|
|
|
2008-10-04 13:09:11 +00:00
|
|
|
|
450.41s real 167.58s user 97.31s system
|
2008-09-30 02:02:44 +00:00
|
|
|
|
|
2008-10-04 13:09:11 +00:00
|
|
|
|
That's more or less 40% faster! that's the price you pay for having those
|
|
|
|
|
wrappers in pkgsrc that aren't very useful on NetBSD :-)
|
2008-09-30 02:02:44 +00:00
|
|
|
|
|
2008-10-01 03:27:15 +00:00
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
HOW TO MAKE TEMPLATES
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
A template in pkgfs is just a small text file with a few variables that are
|
|
|
|
|
required to build the package. pkgfs should be easy to work on, and
|
|
|
|
|
making templates shouldn't be too hard... if you have made any pkgsrc, it
|
|
|
|
|
should be trivial.
|
|
|
|
|
|
|
|
|
|
The required variables are: pkgname, build_type, extract_sufx, url
|
|
|
|
|
and checksum. Also there are some optional, like make_cmd, wrksrc,
|
|
|
|
|
configure_args, configure_env, make_build_args, make_install_args, etc.
|
|
|
|
|
|
|
|
|
|
Please take a look at the example.tmpl file located in the templates/
|
|
|
|
|
directory.
|
|
|
|
|
|
|
|
|
|
Also to help you creating templates and dependencies, there's a script
|
|
|
|
|
that will ask you some required information and will create the template
|
|
|
|
|
file once the distfile is downloaded: mktmpl.sh.
|
|
|
|
|
|
|
|
|
|
Try it and let me know if you have any problem or suggestion.
|
|
|
|
|
|
2008-09-30 02:02:44 +00:00
|
|
|
|
------------------------------------------------------------------------------
|
2008-09-29 18:05:13 +00:00
|
|
|
|
Juan Romero Pardines <xtraeme@gmail.com>
|