Table of Contents

slurm

A Highly Scalable Workload Manager

runtime dependencies openmpi (Libraries/Networking)
make dependencies libgtk2.0-dev
libhdf5-dev
libhwloc-dev
python
librrd-dev

Pré requis

apt install libgtk2.0-dev libhdf5-dev libhwloc-dev librrd-dev

Recette

mkdir /data/buildroot/package/slurm
cat > /data/buildroot/package/slurm/slurm-llnl.sysusers<< 'EOF'
u slurm 64030 "slurm daemon" - -
EOF

cat > /data/buildroot/package/slurm/slurm-llnl.tmpfiles<< 'EOF'
d /var/spool/slurmctld 0755 slurm slurm -
d /var/spool/slurmd 0755 root root -
Z /var/log/slurm-llnl - slurm slurm - -
EOF

cat > /data/buildroot/package/slurm/Config.in<< 'EOF'
config BR2_PACKAGE_SLURM
        bool "slurm"
        depends on BR2_PACKAGE_OPENMPI
        help
          A Highly Scalable Workload Manager
EOF

cat > /data/buildroot/package/slurm/slurm.mk<< 'EOF'
#############################################################
#
# slurm
#https://github.com/SchedMD/slurm/archive/refs/tags/slurm-21-08-6-1.tar.gz
#############################################################
SLURM_VERSION = 21-08-6-1
SLURM_SOURCE  = slurm-$(SLURM_VERSION).tar.gz
SLURM_SITE    = https://github.com/SchedMD/slurm/archive/refs/tags

SLURM_LTS_DEPENDENCIES = openmpi

define SLURM_BUILD_CMDS
    cd $(@D)/ && \
    autoreconf -i && \
    ./configure --disable-developer \
		--disable-debug \
		--enable-optimizations \
		--prefix=/usr \
		--sbindir=/usr/bin \
		--sysconfdir=/etc/slurm-llnl \
		--localstatedir=/var \
		--enable-pam \
		--with-hdf5 \
		--with-hwloc \
		--with-rrdtool \
		--with-munge && \
    make
endef

define SLURM_INSTALL_TARGET_CMDS
    cd $(@D)/ && \
    make DESTDIR="$(TARGET_DIR)/" install
    	install -D -m644 $(@D)/etc/slurm.conf.example    "${TARGET_DIR}/etc/slurm/slurm.conf.example"
	install -D -m644 $(@D)/etc/slurmdbd.conf.example "${TARGET_DIR}/etc/slurm/slurmdbd.conf.example"
	install -D -m644 $(@D)/LICENSE.OpenSSL           "${TARGET_DIR}/usr/share/licenses/${pkgname}/LICENSE.OpenSSL"
	install -D -m644 $(@D)/COPYING                   "${TARGET_DIR}/usr/share/licenses/${pkgname}/COPYING"
	install -d -m755 "${TARGET_DIR}/etc/sysconfig"
	echo '#SLURMD_OPTIONS=""' > "${TARGET_DIR}/etc/sysconfig/slurmd"
	echo '#SLURMCTLD_OPTIONS=""' > "${TARGET_DIR}/etc/sysconfig/slurmctld"
	echo '#SLURMDBD_OPTIONS=""' > "${TARGET_DIR}/etc/sysconfig/slurmdbd"
	chmod 644 "${TARGET_DIR}/etc/sysconfig/"{slurmd,slurmctld,slurmdbd}
	install -D -m755 $(@D)/etc/init.d.slurm      "${TARGET_DIR}/etc/rc.d/slurm"
	install -D -m755 $(@D)/etc/init.d.slurmdbd   "${TARGET_DIR}/etc/rc.d/slurmdbd"
	install -D -m644 $(@D)/etc/slurmctld.service "${TARGET_DIR}/usr/lib/systemd/system/slurmctld.service"
	install -D -m644 $(@D)/etc/slurmd.service    "${TARGET_DIR}/usr/lib/systemd/system/slurmd.service"
	install -D -m644 $(@D)/etc/slurmdbd.service  "${TARGET_DIR}/usr/lib/systemd/system/slurmdbd.service"
	install -D -m644 /data/buildroot/package/slurm/slurm-llnl.sysusers "${TARGET_DIR}/usr/lib/sysusers.d/slurm.conf"
	install -D -m644 /data/buildroot/package/slurm/slurm-llnl.tmpfiles "${TARGET_DIR}/usr/lib/tmpfiles.d/slurm.conf"
	install -d -m755 "${TARGET_DIR}/var/log/slurm"
	install -d -m755 "${TARGET_DIR}/var/lib/slurm"
endef

$(eval $(generic-package))
EOF

sed -i '/menu "Custom packages"/a source "package/slurm/Config.in"' /data/buildroot/package/Config.in