forked from pool/warewulf4
Christian Goll
01b11d7da4
- added make-ipxe-binary-source-configureable.patch OBS-URL: https://build.opensuse.org/request/show/1060671 OBS-URL: https://build.opensuse.org/package/show/network:cluster/warewulf4?expand=0&rev=23
237 lines
8.1 KiB
RPMSpec
237 lines
8.1 KiB
RPMSpec
#
|
|
# spec file for package warewulf4
|
|
#
|
|
# Copyright (c) 2023 SUSE LLC
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
#%%define rls_cndt rc3
|
|
|
|
ExclusiveArch: x86_64 aarch64
|
|
|
|
Name: warewulf4
|
|
Version: 4.4.0
|
|
Release: 0
|
|
Summary: A suite of tools for clustering
|
|
License: BSD-3-Clause
|
|
Group: Productivity/Clustering/Computing
|
|
URL: https://warewulf.org
|
|
Source0: https://github.com/hpcng/warewulf/archive/v%{version}%{?rls_cndt}.tar.gz#/warewulf4-v%{version}.tar.gz
|
|
Source1: vendor.tar.gz
|
|
Source3: warewulf4-rpmlintrc
|
|
Patch1: make-ipxe-binary-source-configureable.patch
|
|
|
|
# no firewalld in sle12
|
|
%if 0%{?sle_version} >= 150000 || 0%{?suse_version} > 1500
|
|
BuildRequires: firewalld
|
|
%endif
|
|
BuildRequires: dracut
|
|
BuildRequires: go >= 1.15
|
|
BuildRequires: golang-packaging
|
|
BuildRequires: libgpgme-devel
|
|
BuildRequires: make
|
|
BuildRequires: munge
|
|
BuildRequires: sysuser-tools
|
|
BuildRequires: tftp
|
|
BuildRequires: yq
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
#Requires: %{name}-ipxe = %{version}
|
|
Requires: %{name}-overlay = %{version}
|
|
Recommends: dhcp-server
|
|
Recommends: ipmitool
|
|
Recommends: ipxe-bootimgs
|
|
Recommends: ipxe-bootimgs
|
|
Recommends: nfs-kernel-server
|
|
Recommends: tftp
|
|
|
|
%{go_nostrip}
|
|
|
|
%description
|
|
Warewulf v4 combines ultra scalability, flexibility, and simplicity with being
|
|
light weight, non-intrusive, and a great tool for scientists and seasoned
|
|
system administrators alike. Warewulf empowers you to scalably and easily
|
|
manage thousands of compute resources.
|
|
|
|
%package overlay
|
|
# Smells like a circular dependcy, but needed in this case as the
|
|
# files belong to the warewulf user
|
|
Requires(pre): %{name}
|
|
Summary: Default overlay for warewulf
|
|
Group: Productivity/Clustering/Computing
|
|
|
|
%description overlay
|
|
Includes the default overlays so that they can be updated seprately.
|
|
|
|
%package api
|
|
Requires: %{name}
|
|
Summary: Contains the service for the warewulf rest API
|
|
|
|
%description api
|
|
Containts the binaries for the access of warewulf through a rest API and from the commandline from an external host.
|
|
|
|
%package ipxe
|
|
Summary: Binaries of iPXE for ww4 installation
|
|
BuildArch: noarch
|
|
|
|
%description ipxe
|
|
For the boot of the nodes iPXE binaries are needed. As these package includes these files for
|
|
x86, i386 and ARM.
|
|
These are the binaries from the upstream project.
|
|
|
|
%package slurm
|
|
Summary: Configuration template for slurm
|
|
Requires: %{name} = %{version}
|
|
Requires: slurm
|
|
|
|
%description slurm
|
|
This package install the necessary configuration files in order to run a slurm
|
|
cluster on the configured warewulf nodes.
|
|
|
|
%prep
|
|
%setup -q -n warewulf-%{version}%{?rls_cndt}
|
|
# extract the vendor stuff
|
|
tar xzf %{S:1}
|
|
%autopatch -p1
|
|
|
|
%build
|
|
%global tftpdir /srv/tftpboot
|
|
make %{?_smp_mflags} genconfig \
|
|
PREFIX=%{_prefix} \
|
|
BINDIR=%{_bindir} \
|
|
SYSCONFDIR=%{_sysconfdir} \
|
|
DATADIR=%{_datadir}/ipxe \
|
|
LOCALSTATEDIR=%{_datadir} \
|
|
SHAREDSTATEDIR=%{_sharedstatedir} \
|
|
MANDIR=%{_mandir} \
|
|
INFODIR=%{_infodir} \
|
|
DOCDIR=%{_docdir} \
|
|
SRVDIR=%{_sharedstatedir} \
|
|
TFTPDIR=%{tftpdir} \
|
|
SYSTEMDDIR=%{_unitdir} \
|
|
BASHCOMPDIR=%{_datadir}/bash-completion/completions/ \
|
|
FIREWALLDDIR=/usr/lib/firewalld/services \
|
|
WWCLIENTDIR=/warewulf
|
|
|
|
%install
|
|
# we have a broken symlink for wwclient
|
|
export NO_BRP_STALE_LINK_ERROR=yes
|
|
%{makeinstall}
|
|
|
|
# cleanup
|
|
mv %{buildroot}%{_datadir}/warewulf/overlays/host/etc/dhcp/dhcpd.conf.ww \
|
|
%{buildroot}%{_datadir}//warewulf/overlays/host/etc/dhcpd.conf.ww
|
|
rmdir %{buildroot}%{_datadir}/warewulf/overlays/host/etc/dhcp
|
|
rm %{buildroot}%{_datadir}/warewulf/overlays/host/etc/dhcpd.conf
|
|
mkdir -p %{buildroot}%{_sbindir}/
|
|
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcwarewulfd
|
|
mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
|
|
mv -v %{buildroot}%{_sysconfdir}/bash_completion.d/warewulf %{buildroot}%{_datadir}/bash-completion/completions/wwctl
|
|
#cp %{S:2} %{buildroot}%{_sysconfdir}/warewulf/warewulf.conf
|
|
#rm -rf %{buildroot}%{_datadir}/warewulf/ipxe
|
|
rm -f %{buildroot}/usr/share/doc/packages/warewulf/LICENSE.md
|
|
rm -rf %{buildroot}%{_localstatedir}/lib/warewulf
|
|
# use ipxe-bootimgs images
|
|
yq e '
|
|
.tftp.ipxe."00:00" = "undionly.kpxe" |
|
|
.tftp.ipxe."00:07" = "ipxe-x86_64.efi" |
|
|
.tftp.ipxe."00:09" = "ipxe-x86_64.efi" |
|
|
.tftp.ipxe."00:0B" = "snp-arm64.efi"'\
|
|
-i %{buildroot}%{_sysconfdir}/warewulf/warewulf.conf
|
|
sed -i 's@\(^\s*\)\(.*:.*\):@\1"\2":@' %{buildroot}%{_sysconfdir}/warewulf/warewulf.conf
|
|
|
|
# create systemuser
|
|
echo "u warewulf -" > system-user-%{name}.conf
|
|
echo "g warewulf -" >> system-user-%{name}.conf
|
|
%sysusers_generate_pre system-user-%{name}.conf %{name} system-user-%{name}.conf
|
|
install -D -m 644 system-user-%{name}.conf %{buildroot}%{_sysusersdir}/system-user-%{name}.conf
|
|
|
|
# get the slurm package readay
|
|
mkdir -p %{buildroot}%{_datadir}/warewulf/overlays/host/etc/slurm
|
|
mv %{buildroot}%{_sysconfdir}/warewulf/examples/slurm.conf.ww %{buildroot}%{_datadir}/warewulf/overlays/host/etc/slurm
|
|
mkdir -p %{buildroot}%{_datadir}/warewulf/overlays/generic/etc/munge
|
|
cat > %{buildroot}%{_datadir}/warewulf/overlays/generic/etc/munge/munge.key.ww <<EOF
|
|
{{ Include "/etc/munge/munge.key" -}}
|
|
EOF
|
|
chmod 600 %{buildroot}%{_datadir}/warewulf/overlays/generic/etc/munge/munge.key.ww
|
|
mkdir -p %{buildroot}%{_datadir}/warewulf/overlays/generic/etc/slurm
|
|
cat > %{buildroot}%{_datadir}/warewulf/overlays/generic/etc/slurm/slurm.conf.ww <<EOF
|
|
{{ Include "/etc/slurm/slurm.conf" }}
|
|
EOF
|
|
|
|
%pre -f %{name}.pre
|
|
%service_add_pre warewulfd.service
|
|
|
|
%post
|
|
%service_add_post warewulfd.service
|
|
|
|
%preun
|
|
%service_del_preun warewulfd.service
|
|
|
|
%postun
|
|
%service_del_postun warewulfd.service
|
|
|
|
%files
|
|
%defattr(-,root,root)
|
|
%doc README.md
|
|
%license LICENSE.md
|
|
%attr(0755, root, warewulf) %dir %{_sysconfdir}/warewulf
|
|
%attr(0755, root, warewulf) %dir %{_sysconfdir}/warewulf/examples
|
|
%{_datadir}/bash-completion/completions/wwctl
|
|
%{_mandir}/man1/wwctl*1.gz
|
|
%{_mandir}/man5/*conf*gz
|
|
%config(noreplace) %{_sysconfdir}/warewulf/nodes.conf
|
|
%config(noreplace) %{_sysconfdir}/warewulf/warewulf.conf
|
|
%config(noreplace) %{_sysconfdir}/warewulf/defaults.conf
|
|
%config(noreplace) %{_sysconfdir}/warewulf/ipxe
|
|
%{_sysconfdir}/warewulf/examples
|
|
%{_prefix}/lib/firewalld/services/warewulf.xml
|
|
%exclude %{_datadir}/warewulf/overlays
|
|
%{_bindir}/wwctl
|
|
%{_sbindir}/rcwarewulfd
|
|
%{_unitdir}/warewulfd.service
|
|
%{_sysusersdir}/system-user-%{name}.conf
|
|
|
|
%files overlay
|
|
# The configuration files in this location are for the compute
|
|
# nodes, so when modified we do not replace them as sensible
|
|
# admin will read the changelog
|
|
%dir %{_datadir}/warewulf/
|
|
%config(noreplace) %{_datadir}/warewulf/overlays
|
|
%exclude %{_datadir}/warewulf/overlays/host/etc/slurm
|
|
%exclude %{_datadir}/warewulf/overlays/generic/etc/slurm
|
|
%exclude %{_datadir}/warewulf/overlays/generic/etc/munge
|
|
|
|
%files ipxe
|
|
%{_datadir}/ipxe
|
|
|
|
%files api
|
|
%{_bindir}/wwapic
|
|
%{_bindir}/wwapid
|
|
%{_bindir}/wwapird
|
|
%config(noreplace) %{_sysconfdir}/warewulf/wwapic.conf
|
|
%config(noreplace) %{_sysconfdir}/warewulf/wwapid.conf
|
|
%config(noreplace) %{_sysconfdir}/warewulf/wwapird.conf
|
|
|
|
%files slurm
|
|
%dir %{_datadir}/warewulf/overlays/host/etc/slurm
|
|
%{_datadir}/warewulf/overlays/host/etc/slurm/slurm.conf.ww
|
|
%dir %{_datadir}/warewulf/overlays/generic/etc/slurm
|
|
%{_datadir}/warewulf/overlays/generic/etc/slurm/slurm.conf.ww
|
|
%dir %{_datadir}/warewulf/overlays/generic/etc/munge
|
|
%{_datadir}/warewulf/overlays/generic/etc/munge/munge.key.ww
|
|
%dir %attr(0700,munge,munge) %{_datadir}/warewulf/overlays/generic/etc/munge
|
|
%attr(0600,munge,munge) %config(noreplace) %{_datadir}/warewulf/overlays/generic/etc/munge/munge.key.ww
|
|
|
|
%changelog
|