Manjaro Difference between revisions of "Manjaro-tools"

Difference between revisions of "Manjaro-tools"

From Manjaro
imported>Aaditya
m
 
(60 intermediate revisions by 8 users not shown)
Line 1: Line 1:
= Introduction =
<languages/>
__TOC__


manjaro-tools is a replacement for [[devtools]] and [[manjaroiso]]. A user manual is available at [https://github.com/manjaro/manjaro-tools github].
<translate>
= Introduction = <!--T:1-->


= Configuration =
<!--T:2-->
''manjaro-tools'' consists of a lot of different tools aimed at Manjaro developers. It is split 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''


manjaro-tools can be configured via editing {{ic|''/etc/manjaro-tools/manjaro-tools.conf''}}


= Files =
<!--T:3-->
All of these ''manjaro-tools'' packages are replacements for '''devtools''' and '''manjaroiso'''.


<!--T:4-->
A detailed user manual is available at [https://gitlab.manjaro.org/tools/development-tools/manjaro-tools gitlab].
= Configuration = <!--T:5-->
<!--T:6-->
manjaro-tools can be configured by copying the folder ''/etc/manjaro-tools'' to your home in ''~/.config'' folder and then edit the file {{ic|''~/.config/manjaro-tools/manjaro-tools.conf''}}
= Files = <!--T:7-->
<!--T:8-->
These are the new names for renamed scripts.
These are the new names for renamed scripts.


<!--T:9-->
*    mkmanjaroroot --> mkchroot
*    mkmanjaroroot --> mkchroot
*    manjarobuild --> buildpkg
*    manjarobuild --> buildpkg
*    mkset --> buildset
*    pacstrap --> basestrap
*    pacstrap --> basestrap
*    genfstab --> fstabgen
*    genfstab --> fstabgen
*    arch-chroot --> manjaro-chroot
*    arch-chroot --> manjaro-chroot


= Tools =


== mkset ==
= buildset = <!--T:10-->
 
<!--T:11-->
buildset is used to create build lists. Build lists can be defined in {{ic|/etc/manjaro-tools/sets/<buildlistname>.set}}
 
<!--T:12-->
The help looks like the following:
 
<!--T:13-->
{{UserCmdOutput|command=buildset -h|result=
<pre>
Usage: buildset [options]
    -c <name>  Create set
    -r <name>  Remove set
    -s <name>  Show set
    -i          Iso mode
    -q          Query sets
    -h          This help
</pre>
}}
 
<!--T:14-->
{{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 = <!--T:15-->
 
<!--T:16-->
buildpkg is used to build a particular package or a set. In the following chapter all functions of buildpkg get explained.
 
<!--T:17-->
If you want a detailed example how to use buildpkg to build packages for a local repository, please look [https://wiki.manjaro.org/index.php?title=Buildiso_with_AUR_packages:_Using_buildpkg here].
 
 
<!--T:18-->
The help looks like the following:
 
<!--T:19-->
{{UserCmdOutput|command=buildpkg -h|result=
<pre>
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
</pre>
}}
 
<!--T:20-->
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:
 
<!--T:21-->
{{UserCmd|command=buildpkg -p package-name}}
 
<!--T:22-->
To build a set the name of the set can be used. The current sets can be queried with the {{ic|-q}} option.
 
= buildtree = <!--T:23-->
 
<!--T:24-->
buildtree is a little tools to sync arch abs and manjaro packages git repos.
 
<!--T:25-->
The arguments are:
 
<!--T:26-->
{{UserCmdOutput|command=buildtree -h|result=
<pre>
Usage: buildtree [options]
    -s            Sync manjaro tree
    -a            Sync arch abs
    -c            Clean package tree
    -q            Query settings
    -h            This help[/code]
</pre>
}}
 
<!--T:27-->
To sync Arch and Manjaro trees:
 
<!--T:28-->
{{UserCmd|command=buildtree -as}}
 
= buildiso = <!--T:29-->
 
<!--T:30-->
buildiso is used to build a particular ISO or a set of ISOs. All functions of buildiso will be explained in the following chapters.
 
<!--T:31-->
If you want a detailed guide how to use buildiso to build your own Manjaro ISOs from scratch, please look [https://wiki.manjaro.org/index.php?title=Build_Manjaro_ISOs_with_buildiso here].
 
 
== Overview == <!--T:32-->
 
<!--T:33-->
The help looks like the following for x86_64:
 
<!--T:34-->
{{UserCmdOutput|command=buildiso -h|result=
<pre>
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
</pre>
}}
 
== Query Building == <!--T:35-->
 
<!--T:36-->
To query build an ISO ('''-q''' option), for example the xfce-openbox-openrc profile, the following command can be used:


buildpkg features building from build lists as well as single packages.
<!--T:37-->
Build lists can be defined in {{ic|/etc/manjaro-tools/sets/<buildlistname>.set}}
{{UserCmdOutput|command=buildiso -p xfce -qv|result=
<pre>
==> 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
</pre>
}}


To create a build list, one can run in the pkgbuilds/abs dir:
== Building == <!--T:38-->


mkset -c <name>
<!--T:39-->
To actually build the ISO:


This will create a build list containing all directories with PKGBUILDs in them. This generated list can be then edited, like packages can be removed.
<!--T:40-->
{{UserCmd|command=buildiso -p xfce -b stable}}


For example, in a git clone of https://github.com/manjaro/packages-openrc
== Building with predownloaded Xorg packages == <!--T:41-->


$ ls
<!--T:42-->
consolekit/                  manjaro-tools-git/          openrc-net/
To build an ISO while retaining the previously downloaded cache of Xorg packages, the '''-x''' option can be used:
eudev/                      manjaro-tools-git-devel/    openrc-systemdcompat/
eudev-systemdcompat/        manjaro-tools-iso-profiles/  openrc-video/
kde-servicemenus-pkg-tools/  manjaro-tools-livecd/        packages/
keyboardctl-openrc/          networkmanager-openrc/      pkgbuilds-review/
kf5-servicemenus-pkg-tools/  openrc-aur/                  polkit-consolekit/
lib32-eudev/                openrc-base/                sddm-consolekit/
lib32-eudev-systemdcompat/  openrc-core/                sysvinit/
lxqt-lightdm-greeter/        openrc-desktop/              upower-pm-utils/
manjaro-openrc/              openrc-devel/                README.md
manjaro-tools/              openrc-misc/


Running '''mkset -c openrc''' does
<!--T:43-->
{{UserCmd|command=buildiso -p xfce-openbox-openrc/ -b stable -x}}


$ mkset -c openrc
== Building with a small config change == <!--T:44-->
[sudo] password for aaditya:
==> Creating [/openrc.set] ...
  -> Adding consolekit
  -> Adding eudev
  -> Adding eudev-systemdcompat
  -> Adding kde-servicemenus-pkg-tools
  -> Adding kf5-servicemenus-pkg-tools
  -> Adding lib32-eudev
  -> Adding lib32-eudev-systemdcompat
  -> Adding lxqt-lightdm-greeter
  -> Adding manjaro-openrc
  -> Adding manjaro-tools
  -> Adding manjaro-tools-git
  -> Adding manjaro-tools-git-devel
  -> Adding manjaro-tools-iso-profiles
  -> Adding manjaro-tools-livecd
  -> Adding networkmanager-openrc
  -> Adding openrc-aur
  -> Adding openrc-base
  -> Adding openrc-core
  -> Adding openrc-desktop
  -> Adding openrc-devel
  -> Adding openrc-misc
  -> Adding openrc-net
  -> Adding openrc-systemdcompat
  -> Adding openrc-video
  -> Adding polkit-consolekit
  -> Adding sddm-consolekit
  -> Adding sysvinit
  -> Adding upower-pm-utils


{{Note|The set name should be different from a directory name in abs dir. Anything else should work, eg adding a date to the name.}}
<!--T:45-->
{{Note| It is to be verified if the procedure given below works or not.}}


== build-set ==
<!--T:46-->
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.


build-set is used to build a particular package or a set. The help looks like the following for x86_64
<!--T:47-->
The work directory can be found using the '''-h''' option:


  $ build-set -h
  <!--T:48-->
  Usage: build-set [options] -- [makepkg_args]
{{UserCmdOutput|command=buildiso -h|result=                 
     -p <profile>      Set profile or pkg [default: default]
<pre>
     -a <arch>          Set arch  [default: x86_64]
  Usage: buildiso [options]
     -b <branch>        Set branch [default: stable]
     -p <profile>      Buildset or profile [default: default]
     -r <dir>          Chroots directory [default: /srv/manjarobuild]
     -a <arch>          Arch [default: x86_64]
     -c                Clean chroot
     -b <branch>        Branch [default: unstable]
     -w                 Wipe clean pkgbuild and pkg directory
     -r <dir>          Chroots directory
     -n                 Run namcap check
                        [default: '''/var/lib/manjaro-tools/buildiso''']
     -s                 Sign packages
    -t <dir>          Target directory
                        [default: /home/fh/Data/build/iso]
    -k <name>          Kernel to use
                        [default: linux419]
    -g <key>          The gpg key for sfs signing
                        [default: ]
    -m                Set SquashFS image mode to persistence
     -c                Disable clean work dir
     -f                 Build full ISO (extra=true)
    -d <comp>          Compression used for build ISO: xz, gzip, lzma, lzo, lz4
                        [default: xz]
    -x                Build images only
     -z                 Generate iso only
                        Requires pre built images (-x)
     -v                 Verbose output to log file, show profile detail (-q)
     -q                Query settings and pretend build
     -q                Query settings and pretend build
     -h                This help
     -h                This help
</pre>
}}
<!--T:49-->
    -r <dir>          Chroots directory
                        [default: '''/var/lib/manjaro-tools/buildiso''']
(work directory highlighted in bold)
<!--T:50-->
The required file can be edited as root, for example:
{{UserCmd|command=sudo nano /var/lib/manjaro-tools/buildiso/xfce/x86_64/desktopfs/etc/skel/.conkyrc}}
<!--T:51-->
There is a catch involved here though; the file one wants to edit may be present in multiple images, like rootfs, livefs, desktopfs), and would need to be edited in the respective image directories.
<!--T:52-->
Then the ISO then can be rebuilt as:
{{UserCmd|command=buildiso -p xfce -cs}}
=== Alternative === <!--T:53-->
<!--T:54-->
First only the chroot for the ISO could be created, using the {{ic|-i}} option, then the changes can be made, and finally an ISO can be built with the {{ic|-sc}} option.
<!--T:55-->
For example:
<!--T:56-->
{{UserCmdOutput|command=buildiso -p xfce -b stable -x|result=
<pre>
==> Start building [xfce]
==> Cleaning up ...
  -> Deleting chroot [rootfs] (x86_64) ...
  -> Deleting isoroot [iso] ...
[..]
</pre>
}}


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:
<!--T:57-->
After this the changes in the work directory can be made, and the ISO can be generated with:


  sudo build-set -p <package-name>
  <!--T:58-->
{{UserCmd|command=buildiso -p xfce/ -cz}}


For example,
= See Also = <!--T:59-->


$ ls
<!--T:60-->
consolekit                  manjaro-tools          openrc-video
* [https://gitlab.manjaro.org/tools/development-tools/manjaro-tools Manjaro Gitlab]
eudev                      networkmanager-openrc  packages
* [[Build Manjaro ISOs with buildiso]]
eudev-systemdcompat        openrc-aur            polkit-consolekit
</translate>
kde-servicemenus-pkg-tools openrc-base            README.md
keyboardctl-openrc          openrc-core            sddm-consolekit
kf5-servicemenus-pkg-tools openrc-desktop        sysvinit
lib32-eudev                openrc-devel          upower-pm-utils
lib32-eudev-systemdcompat  openrc-misc
manjaro-openrc              openrc-net


$ sudo build-set -p upower-pm-utils
[[Category:Contents Page{{#translation:}}]]
==> manjaro-tools version: 0.9.1
==> OPTARGS:
  -> arch: x86_64
  -> branch: testing
  -> chroots: /srv/manjarobuild
==> PATHS:
  -> chrootdir: /srv/manjarobuild/testing/x86_64
  -> profiledir: /etc/manjaro-tools/sets
  -> pkgdir: /var/cache/manjaro-tools/pkg/testing/x86_64
  -> pacman_conf: /usr/share/manjaro-tools/pacman-default.conf
  -> makepkg_conf: /usr/share/manjaro-tools/makepkg-x86_64.conf
==> SETS:
  -> profiles: default|nosystemd|openrc-artoo|openrc-nodeps|openrc|udev
  -> profile: consolekit
  -> is_profile: false
==> This package will be built:
  -> consolekit
==> Updating chroot for [testing] (x86_64)...
:: Synchronizing package databases...
core is up to date
extra is up to date
community is up to date
:: Starting full system upgrade...
there is nothing to do
==> Making package: upower-pm-utils 0.9.23-3 (Fri Nov 14 15:54:02 UTC 2014)
...
...
...
==> Finished making: upower-pm-utils 0.9.23-3 (Fri Nov 14 15:54:18 UTC 2014)
  -> Moving [upower-pm-utils] to [/var/cache/manjaro-tools/pkg/testing/x86_64]
==> chown -R [aaditya:users] [/var/cache/manjaro-tools/pkg/testing]

Latest revision as of 08:29, 9 December 2022

Other languages:
English • ‎русский

Introduction

manjaro-tools consists of a lot of different tools aimed at Manjaro developers. It is split 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 gitlab.


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.


The help looks like the following:


$ buildpkg -h

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:

user $ buildpkg -p package-name COPY TO CLIPBOARD


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:

user $ buildtree -as COPY TO CLIPBOARD


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 scratch, 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

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

user $ buildiso -p xfce -b stable COPY TO CLIPBOARD


Building with predownloaded Xorg packages

To build an ISO while retaining the previously downloaded cache of Xorg packages, the -x option can be used:

user $ buildiso -p xfce-openbox-openrc/ -b stable -x COPY TO CLIPBOARD


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 -h option:


$ buildiso -h

 Usage: buildiso [options]
     -p <profile>       Buildset or profile [default: default]
     -a <arch>          Arch [default: x86_64]
     -b <branch>        Branch [default: unstable]
     -r <dir>           Chroots directory
                        [default: '''/var/lib/manjaro-tools/buildiso''']
     -t <dir>           Target directory
                        [default: /home/fh/Data/build/iso]
     -k <name>          Kernel to use
                        [default: linux419]
     -g <key>           The gpg key for sfs signing
                        [default: ]
     -m                 Set SquashFS image mode to persistence
     -c                 Disable clean work dir
     -f                 Build full ISO (extra=true)
     -d <comp>          Compression used for build ISO: xz, gzip, lzma, lzo, lz4
                        [default: xz]
     -x                 Build images only
     -z                 Generate iso only
                        Requires pre built images (-x)
     -v                 Verbose output to log file, show profile detail (-q)
     -q                 Query settings and pretend build
     -h                 This help


    -r <dir>           Chroots directory
                       [default: /var/lib/manjaro-tools/buildiso]

(work directory highlighted in bold)

The required file can be edited as root, for example:

user $ sudo nano /var/lib/manjaro-tools/buildiso/xfce/x86_64/desktopfs/etc/skel/.conkyrc COPY TO CLIPBOARD


There is a catch involved here though; the file one wants to edit may be present in multiple images, like rootfs, livefs, desktopfs), and would need to be edited in the respective image directories.


Then the ISO then can be rebuilt as:

user $ buildiso -p xfce -cs COPY TO CLIPBOARD


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 -b stable -x

==> Start building [xfce]
==> Cleaning up ...
  -> Deleting chroot [rootfs] (x86_64) ...
  -> Deleting isoroot [iso] ...
[..]


After this the changes in the work directory can be made, and the ISO can be generated with:

user $ buildiso -p xfce/ -cz COPY TO CLIPBOARD


See Also

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