diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-11-02 11:33:44 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-11-02 11:49:44 +0100 |
commit | 072890e9b0ec5af1b28b3c1b213554c5b16ab50e (patch) | |
tree | 2d5eeb6bd59601516c9e3d39c93aa932e95a2267 /packages/README.md | |
parent | 7c4b2a289cab34e4ec1b966663530a7babf08707 (diff) |
Backport changes to package scripts
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'packages/README.md')
-rw-r--r-- | packages/README.md | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/packages/README.md b/packages/README.md new file mode 100644 index 0000000..0e094e0 --- /dev/null +++ b/packages/README.md @@ -0,0 +1,121 @@ +# Package builder + +This directory contains files to build packages for several Linux +distributions. + +## Build using Docker images + +Packages for a specific release can be built using Docker. Use the +`build` script for that: + +``` +./build VENDOR RELEASE +``` + +If you want to build all supported vendors and releases, you can use +the `build_all` script. + +Packages will be output in `_out` directory. + +## Manual build + +### APK + +[APKBUILD]() containts all definition to build APK packages for Alpine +linux. + +From a fresh install setup the build environment for a reqular user +named `pkg-builder` (user name is up to you): + +``` +adduser pkg-builder +addgroup pkg-builder abuild +echo '%abuild ALL=(ALL) NOPASSWD:/sbin/apk, /bin/mkdir -p /etc/apk/keys, /bin/cp -i *.pub /etc/apk/keys/' > /etc/sudoers.d/abuild +chmod 0400 /etc/sudoers.d/abuild +apk add alpine-sdk +``` + +Build the package as `pkg-builder`: + +``` +abuild-keygen -nai +abuild -r +``` + +### DEB + +The [debian]() directory contains all definitions to build Debian and +Ubuntu packages. + +Package building for Debian like distibutions is a bit tricky. In this +case we want to add the codename to the version number in order to +differentiate builds. + +To build package for version 1.0.2, run following commands: + +``` +apt-get install devscripts build-essential wget +source /etc/os-release +wget https://github.com/AgentD/squashfs-tools-ng/archive/v1.0.2/squashfs-tools-ng-1.0.2.tar.gz -O squashfs-tools-ng_1.0.2+$VERSION_CODENAME.orig.tar.gz +tar xfz squashfs-tools-ng_1.0.2+$VERSION_CODENAME.orig.tar.gz +cd squashfs-tools-ng-1.0.2 +ln -s packages/debian +DEBFULLNAME="$USER" DEBEMAIL="$USER@localhost" dch -v 1.0.2+$VERSION_CODENAME-1 -D $VERSION_CODENAME "Build 1.0.2 for $VERSION_CODENAME." +mk-build-deps --install --tool='apt-get --no-install-recommends --yes' debian/control +rm *.deb +debuild +debuild -- clean +``` + + +### PKG + +[PKGBUILD]() contains all definition to build Archlinux packages. + +Run following commands: + +``` +sudo pacman -S --noconfirm fakeroot binutils namcap +makepkg --noconfirm -Cfsir PKGBUILD +``` + +You can check the packages using `namcap`: + +``` +namcap -i squashfs-tools-*.pkg.tar.zst PKGBUILD +``` + +### RPM + +[squashfs-tools-ng.spec]() contains all definitions to build RPM +packages. + +#### CentOS, Fedora + +Run following commands: + +``` +yum install -y rpm-build spectool +rpmdev-setuptree +spectool -g -R squashfs-tools-ng.spec +rpmspec --parse squashfs-tools-ng.spec | grep BuildRequires | cut -d' ' -f2 | xargs sudo yum install -y +rpmbuild --clean -ba squashfs-tools-ng.spec +``` + +### OpenSUSE + +Run following commands: + +``` +zypper install -y rpm-build +rpmspec --parse squashfs-tools-ng.spec | grep Source0 | awk '{print $2}' | xargs wget -N -P $(rpm --eval '%{_sourcedir}') +rpmspec --parse squashfs-tools-ng.spec | grep BuildRequires | cut -d' ' -f2 | xargs sudo zypper install -y +rpmbuild --clean -ba squashfs-tools-ng.spec +``` + +Note: +* `spectool` does not natively exists on OpenSUSE, hence source has to + be downloaded manually. +* `zypper` is used intead of `yum`. + + |