mirror of void-packages + my own branches
Find a file
Juan RP 9078783ed1 Added three new helpers to be used by packages requiring GTK+ and
by pango itself.

To be able to run those helpers once the package has been stowned
properly, another variable available for templates has been added:
"postinstall_helpers".

This accepts a list of template helper names, e.g:

postinstall_helpers="gtk-update-gdkpixbufloaders.sh gtk-update-immodules.sh".

Also rather than setting extract_cmd itself in pkgfs.sh when
extract_sufx=".zip", set it in the helper itself.

--HG--
extra : convert_revision : 0f55c35f201daf6ff2e6d18cc808d0a34d8f4ddf
2008-10-03 17:19:37 +02:00
dependencies Add missing xf86dgaproto dependency to xorg-server. 2008-10-03 14:44:50 +02:00
helper-templates Added three new helpers to be used by packages requiring GTK+ and 2008-10-03 17:19:37 +02:00
templates Added three new helpers to be used by packages requiring GTK+ and 2008-10-03 17:19:37 +02:00
mktmpl.sh Change permissions to 755 for new templates. 2008-10-02 04:53:22 +02:00
pkgfs.conf Add PKGFS_SYSCONFDIR option to the configuration file. 2008-10-03 15:41:26 +02:00
pkgfs.sh Added three new helpers to be used by packages requiring GTK+ and 2008-10-03 17:19:37 +02:00
README Added the flags "-i". Use it when you only want to build and install 2008-10-02 03:52:21 +02:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

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
-c flag, it will use the location "/usr/local/etc/pkgfs.conf".

Once that you read the "pkgfs.conf" file and configured it, you can start
installing packages by using the command:

	$ pkgfs.sh -c pkgfs.conf install glib-2.18.1

Please note that it's assumed that PKGFS_TEMPLATESDIR is properly defined
and actually contains valid template files.

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´´ means that this package is available in the master directory,
on which ``Xstow´´ has created links from DESTDIR/<pkgname>.

To remove a currently installed (and stowned) package, you can use:

	$ pkgfs.sh -c pkgfs.conf remove glib-2.18.1

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>):

	$ pkgfs.sh -c pkgs.conf stow glib-2.18.1

and to unstow an already installed (stowned) package:

	$ pkgfs.sh -c pkgfs.conf unstow glib-2.18.1

You can also print some stuff about any template, e.g:

	$ pkgfs.sh info glib-2.18.1

To list installed (stowned) packages, use this:

	$ pkgfs.sh -c pkgfs.conf list

To only extract the distfile, without configuring/building/installing:

	$ pkgfs.sh -c pkgfs.conf -i install foo-1.0

To not remove the build directory after successful installation:

	$ pkgfs.sh -c pkgfs.conf -C install blah-1.0

To only fetch the distfile:

	$ pkgfs.sh -c pkgfs.conf -e install blah-1.0

To only install the package, _without_ stowning it into the master directory:

	$ pkgfs.sh -c pkgfs.conf -i install blob-4.0

That's all for now folks. I hope you find it useful, as I do.

------------------------------------------------------------------------------
 PERFORMANCE
------------------------------------------------------------------------------

pkgfs is really fast, trust me. That was one of my reasons to make my own
pkgsrc/ports alike system.

If you want benchmarks, here is one; building libX11 (all deps installed)
with pkgfs:

	217.00s real   103.23s user    29.96s system

versus pkgsrc (make install clean):

	229.22s real   112.75s user    54.79s system

The difference in this package might not be too big as I might think... but
anyway, 12 seconds faster is not that bad.

------------------------------------------------------------------------------
 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.

------------------------------------------------------------------------------
	Juan Romero Pardines <xtraeme@gmail.com>