mirror of
https://github.com/void-linux/void-packages.git
synced 2025-06-05 06:33:50 +02:00
Replace README with an asciidox txt file used in webpage.
--HG-- extra : convert_revision : 2be400f70013d96d132710978c02ab9ad0980e2a
This commit is contained in:
parent
5ecfdb4c2f
commit
1d6521bcb2
1 changed files with 92 additions and 28 deletions
|
@ -1,25 +1,66 @@
|
||||||
xbps-src - building packages from source
|
xbps-src - building packages from source
|
||||||
========================================
|
========================================
|
||||||
|
|
||||||
What is it?
|
Introduction
|
||||||
-----------
|
------------
|
||||||
`xbps-src` is the utility used by the _X binary package system_ to build
|
`xbps-src` is the utility used by the _X binary package system_ to build
|
||||||
binary packages from source distribution files. A root directory `srcpkgs`
|
binary packages from source distribution files. A root directory (`srcpkgs`)
|
||||||
contains multiple subdirs, each one to build a package as its name
|
contains multiple subdirs, each one to build a package as its name
|
||||||
indicates. The following example illustrates it:
|
indicates. The following directory structure illustrates it:
|
||||||
+
|
+
|
||||||
+
|
+
|
||||||
.................................
|
.................................
|
||||||
xbps-templates/
|
xbps-templates/
|
||||||
|
|
|
|
||||||
|----- srcpkgs/
|
|-----srcpkgs/
|
||||||
|
|
|
|
||||||
|----- binutils/
|
|-----binutils/
|
||||||
|----- gcc/
|
|-----gcc/
|
||||||
|----- glibc/
|
|-----glibc/
|
||||||
|----- ....
|
|
||||||
..................................
|
..................................
|
||||||
|
|
||||||
|
A package subdirectory always has a `template` file, that are the
|
||||||
|
specifications to download and build the binary package from its source files.
|
||||||
|
Additionally some packages may have additional subdirs on it: `files`
|
||||||
|
and `patches`. The `files` subdir may contain configuration files, or
|
||||||
|
any other file required to build the package. The `patches` subdir contains
|
||||||
|
patches that are applied to the source before building.
|
||||||
|
+
|
||||||
|
+
|
||||||
|
|
||||||
|
Some packages may provide `subpackages`; they are different binary packages
|
||||||
|
that are built from the same source package. Each `subpackage` in the directory
|
||||||
|
structure (as shown above) is a symlink to the `real` package subdir, like this:
|
||||||
|
+
|
||||||
|
+
|
||||||
|
....................................
|
||||||
|
srcpkgs/
|
||||||
|
|
|
||||||
|
|-----gcc/
|
||||||
|
|-----libgomp -> gcc
|
||||||
|
|-----libmudflap -> gcc
|
||||||
|
|-----libstdc++ -> gcc
|
||||||
|
....................................
|
||||||
|
|
||||||
|
Each subpackage uses its own `template` build file that is contained in
|
||||||
|
the `real` package subdir, and they have exactly the same name than the
|
||||||
|
symlink pointing to the `real` package subdir. The following example
|
||||||
|
illustrates the structure used by the _udev_ package in the filesystem:
|
||||||
|
+
|
||||||
|
+
|
||||||
|
.......................................
|
||||||
|
srcpkgs/
|
||||||
|
|
|
||||||
|
|-----libgudev-devel -> udev
|
||||||
|
|-----libgudev -> udev
|
||||||
|
|-----udev-devel -> udev
|
||||||
|
|-----udev/
|
||||||
|
|----template
|
||||||
|
|----libgudev-devel.template
|
||||||
|
|----libgudev.template
|
||||||
|
|----udev-devel.template
|
||||||
|
.......................................
|
||||||
|
|
||||||
Requirements
|
Requirements
|
||||||
------------
|
------------
|
||||||
The following software is required in the host system to build XBPS
|
The following software is required in the host system to build XBPS
|
||||||
|
@ -37,11 +78,21 @@ binary packages from source:
|
||||||
- perl
|
- perl
|
||||||
- sudo
|
- sudo
|
||||||
|
|
||||||
|
Starting up
|
||||||
|
-----------
|
||||||
|
Firstly you'll have to download the `git` repository that contains `xbps-src`
|
||||||
|
and the build template files. To clone it with `git` use:
|
||||||
|
|
||||||
|
----------------------------------------------------
|
||||||
|
$ git clone git://repo.or.cz/xbps.git xbps-templates
|
||||||
|
----------------------------------------------------
|
||||||
|
|
||||||
`xbps-src` and its shell utilities need to be installed in a directory
|
`xbps-src` and its shell utilities need to be installed in a directory
|
||||||
for correct operation, that is accomplished by issuing:
|
for correct operation, that is accomplished by issuing:
|
||||||
-----------------------------------
|
|
||||||
$ cd xbps-src && make install clean
|
--------------------------------------------------
|
||||||
-----------------------------------
|
$ cd xbps-templates/xbps-src && make install clean
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
This will install all files into `/usr/local` by default, can be changed
|
This will install all files into `/usr/local` by default, can be changed
|
||||||
by specifying `PREFIX` and `DESTDIR` to make(1).
|
by specifying `PREFIX` and `DESTDIR` to make(1).
|
||||||
|
@ -54,21 +105,24 @@ are located in the `srcpkgs` directory, you should change the cwd to the
|
||||||
directory matching the package that you want to work on, i.e for binutils,
|
directory matching the package that you want to work on, i.e for binutils,
|
||||||
its directory is `srcpkgs/binutils`.
|
its directory is `srcpkgs/binutils`.
|
||||||
+
|
+
|
||||||
|
+
|
||||||
|
|
||||||
If configuration file is not specified from the command line with the
|
If configuration file is not specified from the command line with the
|
||||||
-c flag, it will first try to use the default location at
|
`-c` flag, it will first try to use the default location at
|
||||||
`/usr/local/etc/xbps-src.conf` (or the installation prefix that was specified
|
`/usr/local/etc/xbps-src.conf` (or the installation prefix that was specified
|
||||||
to the make(1) command), and as last resort in the etc directory of the
|
to the make(1) command), and as last resort in the etc directory of the
|
||||||
current directory.
|
current directory.
|
||||||
+
|
+
|
||||||
|
+
|
||||||
|
|
||||||
To avoid problems with libtool and configure scripts finding stuff that is
|
To avoid problems with libtool and configure scripts finding stuff that is
|
||||||
available in the host system, almost all packages must be built inside of a
|
available in the host system, almost all packages must be built inside of a
|
||||||
chroot. So the first thing would be to create the required set of packages
|
chroot. So the first thing would be to create the required set of packages
|
||||||
that will be used in the chroot:
|
that will be used in the chroot:
|
||||||
-------------------------------------------------
|
|
||||||
$ cd srcpkgs/xbps-base-chroot && xbps-src install
|
----------------------------------------------------------------
|
||||||
-------------------------------------------------
|
$ cd xbps-templates/srcpkgs/xbps-base-chroot && xbps-src install
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
This will build all required packages via fakeroot in masterdir, therefore you
|
This will build all required packages via fakeroot in masterdir, therefore you
|
||||||
can run it as normal user. Next commands will require super-user privileges
|
can run it as normal user. Next commands will require super-user privileges
|
||||||
|
@ -86,41 +140,49 @@ Press Control + D to exit from the chroot. The following targets will require
|
||||||
to be done in the chroot (_once xbps-base-chroot is installed_):
|
to be done in the chroot (_once xbps-base-chroot is installed_):
|
||||||
*build, configure, install, install-destdir, remove, stow and unstow*
|
*build, configure, install, install-destdir, remove, stow and unstow*
|
||||||
+
|
+
|
||||||
|
+
|
||||||
|
|
||||||
Now let's explain some more about the targets that you can use. To start
|
Now let's explain some more about the targets that you can use. To start
|
||||||
installing packages you should use the install target, all source packages
|
installing packages you should use the install target, all source packages
|
||||||
are located in the `srcpkgs` directory, so to install glib:
|
are located in the `srcpkgs` directory, so to install glib:
|
||||||
|
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
$ cd srcpkgs/glib && sudo xbps-src install
|
~/srcpkgs/glib$ sudo xbps-src install
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
|
||||||
If the package is properly installed, it will be "stowned" automatically.
|
If the package is properly installed, it will be "stowned" automatically.
|
||||||
``stowned'' means that this package is available in the master directory,
|
``stowned'' means that this package is available in the master directory,
|
||||||
on which xpbs has copied all files from DESTDIR/<pkgname>.
|
on which xpbs has copied all files from DESTDIR/<pkgname>.
|
||||||
+
|
+
|
||||||
|
+
|
||||||
|
|
||||||
To remove a currently installed (and stowned) package, you can use:
|
To remove a currently installed (and stowned) package, you can use:
|
||||||
|
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
$ cd srcpkgs/glib && sudo xbps-src remove
|
~/srcpkgs/glib$ sudo xbps-src remove
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
|
|
||||||
Please note that when you remove it, the package will also be removed
|
Please note that when you remove it, the package will also be removed
|
||||||
from XBPS_DESTDIR and previously `unstowned`.
|
from XBPS_DESTDIR and previously `unstowned`.
|
||||||
+
|
+
|
||||||
|
+
|
||||||
|
|
||||||
To stow an already installed package (from XBPS_DESTDIR/<pkgname>):
|
To stow an already installed package (from XBPS_DESTDIR/<pkgname>):
|
||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
$ cd srcpkgs/glib && sudo xbps-src stow
|
~/srcpkgs/glib$ sudo xbps-src stow
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
To unstow an already installed (stowned) package:
|
To unstow an already installed (stowned) package:
|
||||||
|
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
$ cd srcpkgs/glib && sudo xbps-src unstow
|
~/srcpkgs/glib$ sudo xbps-src unstow
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
|
|
||||||
You can also print some stuff about any template build file, e.g:
|
You can also print some stuff about any template build file, e.g:
|
||||||
|
|
||||||
----------------------------------
|
----------------------------------
|
||||||
$ cd srcpkgs/glib && xbps-src info
|
~/srcpkgs/glib$ xbps-src info
|
||||||
----------------------------------
|
----------------------------------
|
||||||
|
|
||||||
To list installed (stowned) packages, use this:
|
To list installed (stowned) packages, use this:
|
||||||
|
@ -129,23 +191,25 @@ $ xbps-src list
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
To only extract the distfiles, without configuring/building/installing:
|
To only extract the distfiles, without configuring/building/installing:
|
||||||
|
|
||||||
------------------------------------
|
------------------------------------
|
||||||
$ cd srcpkgs/foo && xbps-src extract
|
~/srcpkgs/glib$ xbps-src extract
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
To not remove the build directory after successful installation:
|
To not remove the build directory after successful installation:
|
||||||
|
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
$ cd srcpkgs/blah && sudo xbps-src -C install
|
~/srcpkgs/glib$ sudo xbps-src -C install
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
|
||||||
To only fetch the distfile:
|
To only fetch the distfile:
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
$ cd srcpkgs/blah && xbps-src fetch
|
~/srcpkgs/glib$ xbps-src fetch
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
To only install the package, _without_ stowning it into the master directory:
|
To only install the package, _without_ stowning it into the master directory:
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
$ cd srcpkgs/blob && sudo xbps-src install-destdir
|
~/srcpkgs/glib$ sudo xbps-src install-destdir
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
|
|
||||||
To list files installed by a package, note that package must be installed
|
To list files installed by a package, note that package must be installed
|
Loading…
Add table
Reference in a new issue