summaryrefslogtreecommitdiff
path: root/packages/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'packages/README.md')
-rw-r--r--packages/README.md121
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`.
+
+