Manjaro Manjaro-tools

Manjaro-tools

From Manjaro
Revision as of 08:55, 31 October 2018 by imported>Fhdk (→‎buildpkg)


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


Note
The set name should be different from a directory name in pkgbuilds dir. Anything else should work, eg adding a date to the name.

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


Build profiles for official and community editions of Manjaro can be obtained from here, and this is what the current folder looks like:

$ ls
cinnamon       kde          kde-openrc  lxqt-openrc  netbook     openbox-legacy  shared   xfce-minimal
enlightenment  kde5         lxde        mate         net-openrc  pekwm-openrc    sysmenu  xfce-openbox-openrc
gnome          kde-minimal  lxqt        net          openbox     README.md       xfce

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-openbox-openrc/ -b stable -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: stable
 -> chroots_iso: /mnt/datalinux2/manjaro-tools/buildiso
==> ARGS:
 -> clean_first: true
 -> clean_cache_xorg: true
 -> clean_cache_lng: true
 -> clean_cache_iso: true
 -> images_only: false
 -> iso_only: false
==> PATHS:
 -> sets_dir_iso: /etc/manjaro-tools/sets/iso
 -> cache_dir_iso: /mnt/datalinux2/manjaro-tools/cache/iso
 -> cache_dir_xorg: /mnt/datalinux2/manjaro-tools/cache/xorg/x86_64
 -> cache_dir_lng: /mnt/datalinux2/manjaro-tools/cache/lng/x86_64
==> IMAGES SETTINGS:
 -> manjaro_kernel: linux318
 -> manjaro_version: 2015.03
 -> plymouth_theme: manjaro-elegant
==> ISO SETTINGS:
 -> iso_label: MJRO0812
 -> iso_version: openrc-2015-03-01
 -> code_name: Ascella
==> LIVECD:
 -> username: manjaro
 -> password: manjaro
 -> addgroups: video,audio,power,disk,storage,optical,network,lp,scanner,wheel
 -> hostname: manjaro
==> 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
 -> start_openrc: syslog-ng cronie acpid alsasound dbus consolekit wicd bluetooth
 -> start_openrc_live: livecd mhwd-live pacman-init pacman-boot

Building

To actually build the ISO:

$ buildiso -p xfce-openbox-openrc/ -b stable
==> Start building [xfce-openbox-openrc/]
--> Profile: [xfce-openbox-openrc/] ...
 -> Packages-Custom: Packages-Xfce
==> Cleaning up ...
 -> Deleting chroot 'root-image'...
 -> Deleting chroot 'xfce-image'...
 -> Cleaning [/mnt/datalinux2/manjaro-tools/cache/xorg/x86_64] ...
 -> Cleaning [/mnt/datalinux2/manjaro-tools/cache/lng/x86_64] ...
--> Loading Packages: [Packages] ...
==> Prepare [Base installation] (root-image)
==> mkiso : Configuration Settings
 -> working directory: /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc//x86_64
 -> image name: none
 -> pacman_mirrors: /usr/share/manjaro-tools/pacman-mirrors-stable.conf
==> Creating install root at /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/root-image
==> Installing packages to /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/root-image
:: Synchronizing package databases...
core                                                    132.7 KiB   202K/s 00:01 [##############################################] 100%
extra                                                  1916.0 KiB   939K/s 00:02 [##############################################] 100%
community                                                 2.8 MiB   524K/s 00:05 [##############################################] 100%
multilib                                                140.9 KiB   217K/s 00:01 [##############################################] 100%
...
...
...
 -> Cleaning up what we can
warning: database file for 'core' does not exist
warning: database file for 'extra' does not exist
warning: database file for 'community' does not exist
warning: database file for 'multilib' does not exist
warning: database file for 'openrc-eudev' does not exist
 -> Copying overlay ...
==> Done [Base installation] (root-image)
--> Loading Packages: [Packages-Xfce] ...
==> Prepare [xfce installation] (xfce-image)
 -> mount [root-image] on [xfce-image]
==> mkiso : Configuration Settings
 -> working directory: /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc//x86_64
 -> image name: none
 -> pacman_mirrors: /usr/share/manjaro-tools/pacman-mirrors-stable.conf
==> Creating install root at /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/xfce-image
==> Installing packages to /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/xfce-image
:: Synchronizing package databases...
...
...
...
Generation complete.
 -> Cleaning up what we can
warning: database file for 'core' does not exist
warning: database file for 'extra' does not exist
warning: database file for 'community' does not exist
warning: database file for 'multilib' does not exist
warning: database file for 'openrc-eudev' does not exist
 -> Copying xfce-overlay ...
==> Configuring [xfce-image]
 -> Configuring Displaymanager ...
 -> Configured: lxdm
--> Congiguring OpenRC ....
 -> Setting syslog-ng ...
 -> Setting cronie ...
 -> Setting acpid ...
 -> Setting alsasound ...
 -> Setting dbus ...
 -> Setting consolekit ...
 -> Setting wicd ...
 -> Setting bluetooth ...
--> Done configuring OpenRC
==> Done configuring [xfce-image]
 -> unmount xfce-image
==> Done [xfce installation] (xfce-image)
--> Loading Packages: [Packages-Livecd] ...
==> Prepare [livecd-image]
 -> mount [livecd-image] on [xfce-image]
 -> append [root-image] on [livecd-image]
==> mkiso : Configuration Settings
 -> working directory: /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc//x86_64
 -> image name: none
 -> pacman_mirrors: /usr/share/manjaro-tools/pacman-mirrors-testing.conf
==> Creating install root at /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/livecd-image
==> Installing packages to /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/livecd-image
:: Synchronizing package databases...
...
...
...
==> Making bootable image
 -> Removing existing bootable image...
==> Creating ISO image...
xorriso 1.3.8 : RockRidge filesystem manipulator, libburnia project.

Drive current: -outdev 'stdio:/mnt/datalinux2/manjaro-tools/cache/iso/manjaro-xfce-openrc-2015-03-01-x86_64.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 62.7g free
Added to ISO image: directory '/'='/mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/iso'
xorriso : UPDATE : 115 files added in 1 seconds
xorriso : UPDATE : 115 files added in 1 seconds
xorriso : NOTE : Copying to System Area: 432 bytes from file '/mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/iso/isolinux/isohdpfx.bin'
libisofs: NOTE : Aligned image size to cylinder size by 42 blocks
xorriso : UPDATE :  2.75% done
xorriso : UPDATE :  16.40% done
xorriso : UPDATE :  27.90% done, estimate finish Sun Mar 01 23:10:20 2015
xorriso : UPDATE :  93.66% done
xorriso : UPDATE :  99.20% done
xorriso : UPDATE :  99.46% done
xorriso : UPDATE :  99.47% done
xorriso : UPDATE :  99.67% done
xorriso : UPDATE :  99.68% done
ISO image produced: 343552 sectors
Written to medium : 343552 sectors at LBA 0
Writing to 'stdio:/mnt/datalinux2/manjaro-tools/cache/iso/manjaro-xfce-openrc-2015-03-01-x86_64.iso' completed successfully.

==> Done [Build ISO]
==> Creating [md5sum] ...
 -> md5sum: 78f4b335fc593b7df7edff46a4d91b5d  manjaro-xfce-openrc-2015-03-01-x86_64.iso
==> Done [md5sum]
--> Time compress_images: 9.43 minutes
==> Finished building [xfce-openbox-openrc/]
--> Time make_profile: 13.77 minutes

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

Note
It is to be verified if the procedure given below works or not.

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

Further reading

Cookies help us deliver our services. By using our services, you agree to our use of cookies.