85cc462e1d
* Moved helpers, common and triggers dirs into xbps-src, where they belong. * Renamed the templates dir to srcpkgs, it was so redundant before. * Make it possible to add subpkgs with no restriction in names, for example udev now has a subpkgs called "libgudev". Previously subpkgs were named "${sourcepkg}-${pkgname}". * xbps-src: changed to look for template files in current directory. That means that most arguments from the targets have been removed. * xbps-src: added a reinstall target, to remove + install. * xbps-src: do not overwrite binpkgs by default, skip them. And more that I forgot because it's a mega-commit that I've been working for some days already... --HG-- extra : convert_revision : 0f466878584d1e6895d2a234f07ea1b2d1e61b3e |
||
---|---|---|
srcpkgs | ||
xbps-src | ||
.gitignore | ||
README |
xbps-src - building packages from source ======================================== What is it? ----------- `xbps-src` is the utility used by the _X binary package system_ to build binary packages from source distribution files. A root directory `srcpkgs` contains multiple subdirs, each one to build a package as its name indicates. The following example illustrates it: + + ................................. xbps-templates/ | |----- srcpkgs/ | |----- binutils/ |----- gcc/ |----- glibc/ |----- .... .................................. Requirements ------------ The following software is required in the host system to build XBPS binary packages from source: - GNU awk - GNU bash - GNU bison - GNU gcc c++ (development package) - GNU gettext (development package) - GNU make - GNU patch - GNU texinfo - fakeroot - perl - sudo `xbps-src` and its shell utilities need to be installed in a directory for correct operation, that is accomplished by issuing: ----------------------------------- $ cd xbps-src && make install clean ----------------------------------- This will install all files into `/usr/local` by default, can be changed by specifying `PREFIX` and `DESTDIR` to make(1). Building packages from source ----------------------------- `xbps-src` always look for a `template` file in current directory, that's what it specifies the package build definitions and such. The build templates 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, its directory is `srcpkgs/binutils`. + If configuration file is not specified from the command line with the -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 to the make(1) command), and as last resort in the etc directory of the current directory. + 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 chroot. So the first thing would be to create the required set of packages that will be used in the chroot: ------------------------------------------------- $ cd srcpkgs/xbps-base-chroot && xbps-src install ------------------------------------------------- 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 and all package handling will be done within the chroot. I believe it's the most easier and faster way to handle clean dependencies; another reason would be that xbps packages are meant to be used in a system and not just for ordinary users. So once all packages are built, you can create and enter to the chroot with: ---------------------- $ sudo xbps-src chroot ---------------------- 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_): *build, configure, install, install-destdir, remove, stow and unstow* + 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 are located in the `srcpkgs` directory, so to install glib: ------------------------------------------ $ cd srcpkgs/glib && sudo xbps-src install ------------------------------------------ If the package is properly installed, it will be "stowned" automatically. ``stowned'' means that this package is available in the master directory, on which xpbs has copied all files from DESTDIR/<pkgname>. + To remove a currently installed (and stowned) package, you can use: ----------------------------------------- $ cd srcpkgs/glib && sudo xbps-src remove ----------------------------------------- Please note that when you remove it, the package will also be removed from XBPS_DESTDIR and previously `unstowned`. + To stow an already installed package (from XBPS_DESTDIR/<pkgname>): --------------------------------------- $ cd srcpkgs/glib && sudo xbps-src stow --------------------------------------- To unstow an already installed (stowned) package: ----------------------------------------- $ cd srcpkgs/glib && sudo xbps-src unstow ----------------------------------------- You can also print some stuff about any template build file, e.g: ---------------------------------- $ cd srcpkgs/glib && xbps-src info ---------------------------------- To list installed (stowned) packages, use this: --------------- $ xbps-src list --------------- To only extract the distfiles, without configuring/building/installing: ------------------------------------ $ cd srcpkgs/foo && xbps-src extract ------------------------------------ To not remove the build directory after successful installation: --------------------------------------------- $ cd srcpkgs/blah && sudo xbps-src -C install --------------------------------------------- To only fetch the distfile: ----------------------------------- $ cd srcpkgs/blah && xbps-src fetch ----------------------------------- To only install the package, _without_ stowning it into the master directory: -------------------------------------------------- $ cd srcpkgs/blob && sudo xbps-src install-destdir -------------------------------------------------- To list files installed by a package, note that package must be installed into destination directory first: ---------------------------- $ xbps-src listfiles pkgname ----------------------------