Upstream PPA is here
- Prerequisites
- You must have a launchpad account and have GPG keys set up. For help with that, see this.
- In addition, your system should be setup with this key in GnuPG.
- You must be a member of the UMass RC Launchpad Group and have write access
- You must have an ubuntu system (version doesn't matter), which can authenticate with GitHub using SSH.
- You must have a launchpad account and have GPG keys set up. For help with that, see this.
- Setup the environment on your ubuntu machine
-
Install required deb pacakges
sudo apt install pbuilder dh-make
-
In your
~/.bashrc
or~/.zshrc
file, add these lines (replace vars):export DEBEMAIL="<LAUNCHPAD EMAIL>" export DEBFULLNAME="<FULL LAUNCHPAD NAME>"
-
Download Slurm release
wget https://github.com/SchedMD/slurm/archive/refs/tags/slurm-20-02-7-1.tar.gz
- Change the URL according to the release that is desired. Releases are here
-
Extract using
tar -xf slurm-20-02-7-1.tar.gz
-
Rename the downloaded archive
mv <DOWNLOADED>.tar.gz slurm-wlm_<VERSION>.orig.tar.gz
-
Rename the extracted folder
mv <EXTRACTED FOLDER> slurm-wlm_<VERSION>
-
Inside
<EXTRACTED_FOLDER>
, clone this repository asdebian
git clone [email protected]:UMass-RC/unity-ppa-slurm.git debian
-
Create a pbuilder environment (in our case focal):
sudo pbuilder create --distribution focal
-
- Making Changes
- All changes made must remain inside of the debian folder. Visit here for documentation on debian package files.
- After making changes, run
debchange
inside<EXTRACTED FOLDER>
. This will launch a text editor with a change template in the changelog. Be sure to changeUNRELEASED
tofocal
and up the version number, and add any changes in the bullet points.- The versioning follows Debian policies: the number before
ubuntu
is the debian version. If a debian version doesn't exist, use0
. The number after is the incremental change for ubuntu. You should increment that number on any change.
- The versioning follows Debian policies: the number before
- Run
pdebuild
inside<EXTRACTED FOLDER>
. This will rundebuild
, but inside the chroot environment. This will also build this source into the deb packages specified. - The result of
pbuilder
is in/var/cache/pbuilder/result
. Take the deb packages there and install them on a focal system to make sure everything is working. - In the same directory as the original source archive, use
debsign *.changes
for this. - Finally, upload to ppa using
dput ppa:umass-rc/unity-cluster <source.changes>
, replace changes with the correct file in the parent dir.
There may come a time where we need to switch major slurm versions. For this, you will need to create a new branch in this repository, and start from the upstream debian source here.
On the debian upstream repository, find the branch that corresponds to the version desired and download it. This is the baseline for our new branch. Then, you have to make changes to these files to suit our needs. In our case, this usually entails:
-
Removing
ConditionPathExists
from .service files for slurmdbd and slurmd since we use configless setup -
Removing files that match
*.init.d
and*.default
-
Adding
--with-systemd
option torules
like so%: dh $@ --builddirectory --with-systemd
-
Adding a systemd section to the end of
rules
. This prevents services from auto enabling and starting on installationoverride_dh_installsystemd: dh_installsystemd --no-start --no-enable
If we are upgrading the cluster to a different ubuntu release, the package needs to be changed to reflect this. In almost all cases, this is as simple as adding a new changelog entry using debchange
, except instead of focal
, use the new release version (for example jammy
for 22.04).
IMPORTANT: We have a testing PPA here. I would highly recommend that any major version change or ubuntu release change be deployed on the testing PPA and tested on only a few nodes before widespread deployment.