Manjaro-tools
Introduction
manjaro-tools consists of a lot of different tools aimed at Manjaro developers. It is splitted into 3 different packages:
- manjaro-tools-base contains basic tools, different chroot tools, and buildset
- manjaro-tools-pkg contains small helper tools, buildpkg, and buildtree
- manjaro-tools-iso contains small helper tools and buildiso
All of these manjaro-tools packages are replacements for devtools and manjaroiso.
A detailed user manual is available at github.
Configuration
manjaro-tools can be configured by copying the folder /etc/manjaro-tools to your home in ~/.config folder and then edit the file ./config/manjaro-tools/manjaro-tools.conf
Files
These are the new names for renamed scripts.
- mkmanjaroroot --> mkchroot
- manjarobuild --> buildpkg
- mkset --> buildset
- pacstrap --> basestrap
- genfstab --> fstabgen
- arch-chroot --> manjaro-chroot
buildset
buildset is used to create build lists. Build lists can be defined in /etc/manjaro-tools/sets/<buildlistname>.set
The help looks like the following:
$ buildset -h Usage: buildset [options] -c <name> Create set -r <name> Remove set -s <name> Show set -i Iso mode -q Query sets -h This help
buildpkg
buildpkg is used to build a particular package or a set. In the following chapter all functions of buildpkg get explained.
If you want a detailed example how to use buildpkg to build packages for a local repository, please look here.
In some cases, the documentation of buildpkg's predecessor might be helpful: Devtools.
The help looks like the following:
Usage: buildpkg [options] -a <arch> Arch [default: x86_64] -b <branch> Branch [default: stable] -c Recreate chroot -h This help -i <pkg> Install a package into the working copy of the chroot -n Install and run namcap check -p <pkg> Build list or pkg [default: default] -q Query settings and pretend build -r <dir> Chroots directory [default: /var/lib/manjaro-tools/buildpkg] -s Sign packages -w Clean up cache and sources
To build a single package, go into the directory which is one above the package build directory (which contains the PKGBUILD), and run it as:
buildpkg -p <package-name>
To build a set the name of the set can be used. The current sets can be queried with the -q
option.
buildtree
buildtree is a little tools to sync arch abs and manjaro packages git repos.
The arguments are:
$ buildtree -h Usage: buildtree [options] -s Sync manjaro tree -a Sync arch abs -c Clean package tree -q Query settings -h This help[/code]
To sync Arch and Manjaro trees:
buildtree -as
buildiso
buildiso is used to build a particular ISO or a set of ISOs. All functions of buildiso will be explained in the following chapters.
If you want a detailed guide how to use buildiso to build your own Manjaro ISOs from scatch, please look here.
Overview
The help looks like the following for x86_64:
$ buildiso -h Usage: buildiso [options] -p <profile> Buildset or profile [default: default] -a <arch> Arch [default: x86_64] -b <branch> Branch [default: stable] -r <dir> Chroots directory [default: /var/lib/manjaro-tools/buildiso] -c Disable clean work dir -x Clean xorg cache -l Clean lng cache -i Build images only -s Generate iso only Requires pre built images (-i) -v Verbose output, show profies detail (-q) -q Query settings and pretend build -h This help
Query Building
To query build an ISO (-q option), for example the xfce-openbox-openrc profile, the following command can be used:
~ >>> buildiso -p xfce -qv [sudo] password for fh: ==> manjaro-tools -> version: 0.15.9 -> config: ~/.config/manjaro-tools/manjaro-tools.conf ==> PROFILE: -> build_lists: community|default|manjaro|sonar|v17-release -> build_list_iso: xfce -> is_build_list: false ==> OPTIONS: -> arch: x86_64 -> branch: unstable -> kernel: linux419 ==> ARGS: -> clean_first: true -> images_only: false -> iso_only: false -> persist: false ==> DIST SETTINGS: -> dist_name: Manjaro -> dist_release: 18.0 -> dist_codename: Illyria ==> ISO INFO: -> iso_label: MJRO180 -> iso_compression: xz ==> BUILD QUEUE: --> Profile: [xfce] -> iso_file: manjaro-xfce-18.0-unstable-minimal-x86_64.iso -> autologin: true -> nonfree_mhwd: true -> multilib: true -> extra: false -> netinstall: false -> chrootcfg: false -> geoip: true -> efi_boot_loader: grub -> hostname: manjaro -> username: manjaro -> password: manjaro -> login_shell: /bin/bash -> addgroups: lp,network,power,sys,wheel -> enable_systemd: avahi-daemon bluetooth cronie ModemManager NetworkManager org.cups.cupsd tlp tlp-sleep ufw lightdm -> enable_systemd_live: manjaro-live mhwd-live pacman-init mirrors-live -> disable_systemd: pacman-init
Building
To actually build the ISO:
$ buildiso -p xfce -b stable
Building with predownloaded Xorg packages
To build an ISO while retaining the previously downloaded cache of Xorg packages, the -x option can be used:
$ buildiso -p xfce-openbox-openrc/ -b stable -x
Building with a small config change
Supposing something only changed in config, like a setting, instead of building the whole ISO from scratch, the ISO build directory can be modified and the ISO can be rebuilt. For example, supposing one changed xfce-overlay/etc/skel/.conkyrc in the config, one can go into the work directory, modify the said file, and rebuild the ISO using the -cs option.
The work directory can be found using the -q option:
$ buildiso -p xfce-openbox-openrc/ -q ==> manjaro-tools -> version: 0.9.6.4 -> user_config: /home/aaditya/.config/manjaro-tools.conf ==> PROFILE: -> buildsets: community|default|official|openrc -> buildset_iso: xfce-openbox-openrc/ -> is_buildset: false ==> OPTIONS: -> arch: x86_64 -> branch: unstable -> chroots_iso: /mnt/datalinux2/manjaro-tools/buildiso ... ... ==> BUILD QUEUE: --> Profile: [xfce-openbox-openrc/] ... -> Packages-Custom: Packages-Xfce -> initsys: openrc -> displaymanager: lxdm -> is_plymouth: false -> pacman_conf: pacman-multilib.conf -> work_dir: /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc//x86_64 -> iso_file: manjaro-xfce-openrc-2015-03-01-x86_64.iso
(work directory highlighted in bold)
The required file can be edited as root, for example:
$ sudo nano /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc//x86_64/xfce-image/etc/skel/.conkyrc
There is a catch involved here though; the file one wants to edit may be present in multiple images, like root-image, livecd-image, and DE-image (eg, xfce-image), and would need to be edited in the respective image directories.
Then the ISO then can be rebuilt as:
$ buildiso -p xfce-openbox-openrc/ -cs
Alternative
First only the chroot for the ISO could be created, using the -i
option, then the changes can be made, and finally an ISO can be built with the -sc
option.
For example:
$ buildiso -p xfce-openrc/ -b stable -i ==> Start building [xfce-openrc/] --> Profile: [xfce-openrc/] -> Packages-Custom: Packages-Xfce ==> Cleaning up ... ... ... ==> Done [manjaro/iso/isolinux] ==> Creating [isomounts] -> Writing livecd entry ... -> Writing pkgs entry ... -> Writing xfce entry ... -> Writing root entry ... ==> Done creating [isomounts] --> Time build_images: 4.28 minutes ==> WARNING: Continue compress: buildiso -p xfce-openrc/ -sc ...
After this the changes in the work directory can be made, and the ISO can be generated with:
$ buildiso -p xfce-openrc/ -sc