ARM source tree compared to x86 source tree =========================================== In order to make the maintenance of the ARM port as efficient as possible, it was designed from the outset to use an "overlay" source tree. This means that whenever a package changes, the maintainer does not need to manage removing old patches, sources and so on -- instead the ARM tree references the x86 source tree for almost all source and patches. The ARM maintainer also does not have access to write to the x86 source tree (although any globally relevant changes are sent upstream) and as such, the ARM tree has by necessity to be separate. The format of the "SlackBuild" scripts is also different in ARM. Instead of repeating code in all scripts, much of the repetition is moved in to a shell library script (see below). This makes maintenance far easier, and the CFLAGS can be set in one location. The ARM tree was also built with automation in mind and as such there are some differences: for example, the "arm/build" scripts try to ensure that the build environment is set up properly prior to the build. The resulting packages are also placed in to the "slackware" tree directly rather than being placed in to /tmp (although this can be configured). Source location =============== Please find the sources for the packages at ftp://ftp.slackware.com/pub/slackware/slackware64-/source Slackware ARM only includes the sources in situations when: 1. We cannot use the same version as Slackware (either because it refuses to compile, or it lacks ARM support (this used to be the case for earlier releases, but in 2018 this is no longer a cause). 2. Slackware uses an upstream binary release, as used to be the case for Mozilla FireFox. However, this is an uncommon situation. 3. Patches are always included in the Slackware ARM source tree and if necessary are submitted upstream; but this is rare since most ARM specific patches are taken from Debian, Gentoo and Fedora, which in turn submit upstream. Building Slackware ARM packages =============================== In order to rebuild the packages using the Slackware ARM source tree, you need a copy of the 'slackkit' package which contains many shell library functions used by the package build scripts. You will need to modify the configuration script: /usr/share/slackdev/slackdev.config to point to your Slackware x86_64 tree, which contains the package source archives, configure where you'd like your newly build packages to be deposited, and the location of the Slackware ARM tree. You'll also need a copy of the Slackware source tree. You can use either the Slackware 32bit or 64 bit tree. Slackware ARM's default configuration uses the 64 bit tree because it contains sources for Mozilla firefox and others. To quickly get going here is an example: ----------------------------------------- As root on your ARM box: $ cd /root Sync the Slackware/x86_64 tree: $ rsync -Pavv ftp.slackware.uk::slackware/slackware64-current . Sync the Slackware ARM tree: 64-bit AArch64: $ rsync -Pavv ftp.arm.slackware.com::slackwarearm/slackwareaarch64-current . Install the Slackware ARM devkit packge: The Slackware ARM devkit package is named 'slackkit' and can be found within the 'd' package series. It will be installed on a full default installation of Slackware. If it's not installed, and slackpkg is set up you can use: $ slackpkg install slackkit Configure the devkit: $ vi /usr/share/slackdev/slackdev.config Find the line: export PKGSTORE=${PKGSTORE:-$HOME/tgzstash} Packages are also installed from this location (which by default -if you do not edit the line above - is /root/tgzstash) if they need to be installed prior to a build, or referenced/extracted during a build as a dependency of some sort. Packages are also *created* in this location inside their respective 'package series' and by default will overwrite any existing package file. If you're following this example to the letter, you can leave this config file as it is, and continue exactly as below; otherwise please review the config file and make any changes you deem necessary for your environment. $ cd /root $ ln -vfs slackwareaarch64-current/slackware tgzstash You can then, as root, run the build scripts as: $ cd slackwareaarch64-current/source/a/bash ## for example $ ./arm/build The "arm/build" script sets the version number and ensures that any pre-build requirements are met. ******** You cannot run "pkgname.SlackBuild" as you can with the * Note * usual SlackBuild scripts - they MUST be run from "arm/build" ******** Your package will be built and will replace the version in /root/slackwareaarch64-current/slackware/a If you have any questions about the Slackware ARM source tree, please ask here: https://www.linuxquestions.org/questions/slackware-arm-108/ -- https://arm.slackware.com 31-Mar-2009