Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package warewulf4 for openSUSE:Factory 
checked in at 2023-01-24 19:44:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/warewulf4 (Old)
 and      /work/SRC/openSUSE:Factory/.warewulf4.new.32243 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "warewulf4"

Tue Jan 24 19:44:03 2023 rev:8 rq:1060673 version:4.4.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/warewulf4/warewulf4.changes      2023-01-19 
16:44:39.413910412 +0100
+++ /work/SRC/openSUSE:Factory/.warewulf4.new.32243/warewulf4.changes   
2023-01-24 20:36:45.293756101 +0100
@@ -1,0 +2,5 @@
+Tue Jan 24 11:17:32 UTC 2023 - Christian Goll <[email protected]>
+
+- added make-ipxe-binary-source-configureable.patch
+
+-------------------------------------------------------------------

New:
----
  make-ipxe-binary-source-configureable.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ warewulf4.spec ++++++
--- /var/tmp/diff_new_pack.mO95lE/_old  2023-01-24 20:36:45.749758463 +0100
+++ /var/tmp/diff_new_pack.mO95lE/_new  2023-01-24 20:36:45.753758484 +0100
@@ -30,7 +30,7 @@
 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:         upstream.patch
+Patch1:         make-ipxe-binary-source-configureable.patch
 
 # no firewalld in sle12
 %if 0%{?sle_version} >= 150000 || 0%{?suse_version} > 1500
@@ -44,12 +44,16 @@
 BuildRequires:  munge
 BuildRequires:  sysuser-tools
 BuildRequires:  tftp
+BuildRequires:  yq
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-Requires:       %{name}-ipxe = %{version}
+#Requires:       %{name}-ipxe = %{version}
 Requires:       %{name}-overlay = %{version}
-Requires:       dhcp-server
-Requires:       ipmitool
-Requires:       nfs-kernel-server
+Recommends:     dhcp-server
+Recommends:     ipmitool
+Recommends:     ipxe-bootimgs
+Recommends:     ipxe-bootimgs
+Recommends:     nfs-kernel-server
+Recommends:     tftp
 
 %{go_nostrip}
 
@@ -77,13 +81,13 @@
 Containts the binaries for the access of warewulf through a rest API and from 
the commandline from an external host.
 
 %package ipxe
-Requires:       tftp
 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
@@ -106,7 +110,7 @@
     PREFIX=%{_prefix} \
     BINDIR=%{_bindir} \
     SYSCONFDIR=%{_sysconfdir} \
-    DATADIR=%{_datadir} \
+    DATADIR=%{_datadir}/ipxe \
     LOCALSTATEDIR=%{_datadir} \
     SHAREDSTATEDIR=%{_sharedstatedir} \
     MANDIR=%{_mandir} \
@@ -136,6 +140,15 @@
 #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
@@ -144,15 +157,15 @@
 install -D -m 644 system-user-%{name}.conf 
%{buildroot}%{_sysusersdir}/system-user-%{name}.conf
 
 # get the slurm package readay
-mkdir -p %{buildroot}%{_localstatedir}/lib/warewulf/overlays/host/etc/slurm
-mv %{buildroot}%{_sysconfdir}/warewulf/examples/slurm.conf.ww 
%{buildroot}%{_localstatedir}/lib/warewulf/overlays/host/etc/slurm
-mkdir -p %{buildroot}%{_localstatedir}/lib/warewulf/overlays/generic/etc/munge
-cat >  
%{buildroot}%{_localstatedir}/lib/warewulf/overlays/generic/etc/munge/munge.key.ww
 <<EOF
+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}%{_localstatedir}/lib/warewulf/overlays/generic/etc/munge/munge.key.ww
-mkdir -p %{buildroot}%{_localstatedir}/lib/warewulf/overlays/generic/etc/slurm
-cat >  
%{buildroot}%{_localstatedir}/lib/warewulf/overlays/generic/etc/slurm/slurm.conf.ww
 <<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
 
@@ -174,19 +187,16 @@
 %license LICENSE.md
 %attr(0755, root, warewulf) %dir %{_sysconfdir}/warewulf
 %attr(0755, root, warewulf) %dir %{_sysconfdir}/warewulf/examples
-%attr(0755, root, warewulf) %dir %{_sysconfdir}/warewulf/ipxe
 %{_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/*.ipxe
+%config(noreplace) %{_sysconfdir}/warewulf/ipxe
 %{_sysconfdir}/warewulf/examples
 %{_prefix}/lib/firewalld/services/warewulf.xml
-%{_localstatedir}/lib/warewulf
-%exclude %{_localstatedir}/lib/warewulf/overlays
+%exclude %{_datadir}/warewulf/overlays
 %{_bindir}/wwctl
 %{_sbindir}/rcwarewulfd
 %{_unitdir}/warewulfd.service
@@ -196,14 +206,14 @@
 # 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
-%config(noreplace) %{_localstatedir}/lib/warewulf/overlays
-%exclude  %{_localstatedir}/lib/warewulf/overlays/host/etc/slurm
-%exclude  %{_localstatedir}/lib/warewulf/overlays/generic/etc/slurm
-%exclude  %{_localstatedir}/lib/warewulf/overlays/generic/etc/munge
+%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
-#/srv/tftpboot/warewulf
-%{_datadir}/warewulf
+%{_datadir}/ipxe
 
 %files api
 %{_bindir}/wwapic
@@ -214,13 +224,13 @@
 %config(noreplace) %{_sysconfdir}/warewulf/wwapird.conf
 
 %files slurm
-%dir %{_localstatedir}/lib/warewulf/overlays/host/etc/slurm
-%{_localstatedir}/lib/warewulf/overlays/host/etc/slurm/slurm.conf.ww
-%dir %{_localstatedir}/lib/warewulf/overlays/generic/etc/slurm
-%{_localstatedir}/lib/warewulf/overlays/generic/etc/slurm/slurm.conf.ww
-%dir %{_localstatedir}/lib/warewulf/overlays/generic/etc/munge
-%{_localstatedir}/lib/warewulf/overlays/generic/etc/munge/munge.key.ww
-%dir %attr(0700,munge,munge) 
%{_localstatedir}/lib/warewulf/overlays/generic/etc/munge
-%attr(0600,munge,munge) %config(noreplace) 
%{_localstatedir}/lib/warewulf/overlays/generic/etc/munge/munge.key.ww
+%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

++++++ make-ipxe-binary-source-configureable.patch ++++++
>From 32ab50f299502fce7bf588852a75c63cf3332cf8 Mon Sep 17 00:00:00 2001
From: Christian Goll <[email protected]>
Date: Fri, 20 Jan 2023 15:05:42 +0100
Subject: [PATCH] make ipxe binary source configureable

---
 internal/pkg/buildconfig/defaults.go       |  2 +-
 internal/pkg/configure/tftp.go             | 17 ++++++++++-------
 internal/pkg/overlay/datastructure.go      |  2 ++
 internal/pkg/warewulfconf/constructors.go  | 12 ++++++++++--
 internal/pkg/warewulfconf/datastructure.go |  2 ++
 overlays/host/etc/dhcp/dhcpd.conf.ww       | 14 +++++---------
 6 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/internal/pkg/buildconfig/defaults.go 
b/internal/pkg/buildconfig/defaults.go
index 24cb2d40..17baecba 100644
--- a/internal/pkg/buildconfig/defaults.go
+++ b/internal/pkg/buildconfig/defaults.go
@@ -27,7 +27,7 @@ func BINDIR() string {
 }
 
 func DATADIR() string {
-       wwlog.Debug("DATADIR = '%s'", bindir)
+       wwlog.Debug("DATADIR = '%s'", datadir)
        return datadir
 }
 
diff --git a/internal/pkg/configure/tftp.go b/internal/pkg/configure/tftp.go
index d321f023..842d7fb4 100644
--- a/internal/pkg/configure/tftp.go
+++ b/internal/pkg/configure/tftp.go
@@ -11,9 +11,8 @@ import (
        "github.com/hpcng/warewulf/internal/pkg/wwlog"
 )
 
-var tftpdir string = path.Join(buildconfig.TFTPDIR(), "warewulf")
-
 func TFTP() error {
+       var tftpdir string = path.Join(buildconfig.TFTPDIR(), "warewulf")
        controller, err := warewulfconf.New()
        if err != nil {
                wwlog.Error("%s", err)
@@ -27,11 +26,15 @@ func TFTP() error {
        }
 
        fmt.Printf("Writing PXE files to: %s\n", tftpdir)
-       for _, f := range [4]string{"x86_64.efi", "x86_64.kpxe", "arm64.efi"} {
-               err = util.SafeCopyFile(path.Join(buildconfig.DATADIR(), 
"warewulf", "ipxe", f), path.Join(tftpdir, f))
+       copyCheck := make(map[string]bool)
+       for _, f := range controller.Tftp.IpxeBinaries {
+               if copyCheck[f] {
+                       continue
+               }
+               copyCheck[f] = true
+               err = util.SafeCopyFile(path.Join(buildconfig.DATADIR(), f), 
path.Join(tftpdir, f))
                if err != nil {
-                       wwlog.Error("%s", err)
-                       return err
+                       wwlog.Warn("ipxe binary could not be copied, not 
booting may not work: %s", err)
                }
        }
 
@@ -39,7 +42,7 @@ func TFTP() error {
                wwlog.Info("Warewulf does not auto start TFTP services due to 
disable by warewulf.conf")
                os.Exit(0)
        }
-       
+
        fmt.Printf("Enabling and restarting the TFTP services\n")
        err = util.SystemdStart(controller.Tftp.SystemdName)
        if err != nil {
diff --git a/internal/pkg/overlay/datastructure.go 
b/internal/pkg/overlay/datastructure.go
index 2a427bee..eb8004cf 100644
--- a/internal/pkg/overlay/datastructure.go
+++ b/internal/pkg/overlay/datastructure.go
@@ -31,6 +31,7 @@ type TemplateStruct struct {
        Dhcp          warewulfconf.DhcpConf
        Nfs           warewulfconf.NfsConf
        Warewulf      warewulfconf.WarewulfConf
+       Tftp          warewulfconf.TftpConf
        AllNodes      []node.NodeInfo
        node.NodeConf
        // backward compatiblity
@@ -64,6 +65,7 @@ func InitStruct(nodeInfo node.NodeInfo) TemplateStruct {
        tstruct.AllNodes = allNodes
        tstruct.Nfs = *controller.Nfs
        tstruct.Dhcp = *controller.Dhcp
+       tstruct.Tftp = *controller.Tftp
        tstruct.Warewulf = *controller.Warewulf
        tstruct.Ipaddr = controller.Ipaddr
        tstruct.Ipaddr6 = controller.Ipaddr6
diff --git a/internal/pkg/warewulfconf/constructors.go 
b/internal/pkg/warewulfconf/constructors.go
index 1d68564a..904d0d31 100644
--- a/internal/pkg/warewulfconf/constructors.go
+++ b/internal/pkg/warewulfconf/constructors.go
@@ -36,8 +36,14 @@ func New() (ControllerConf, error) {
        ret.Tftp = &tftpconf
        ret.Nfs = &nfsConf
        err := defaults.Set(&ret)
+       // ipxe binaries are merged not overwritten, store defaults separate
+       defIpxe := make(map[string]string)
+       for k, v := range ret.Tftp.IpxeBinaries {
+               defIpxe[k] = v
+               delete(ret.Tftp.IpxeBinaries, k)
+       }
        if err != nil {
-               wwlog.Error("Coult initialize default variables")
+               wwlog.Error("Could initialize default variables")
                return ret, err
        }
        // Check if cached config is old before re-reading config file
@@ -53,7 +59,9 @@ func New() (ControllerConf, error) {
                if err != nil {
                        return ret, err
                }
-
+               if len(ret.Tftp.IpxeBinaries) == 0 {
+                       ret.Tftp.IpxeBinaries = defIpxe
+               }
                if ret.Ipaddr == "" || ret.Netmask == "" {
                        conn, error := net.Dial("udp", "8.8.8.8:80")
                        if error != nil {
diff --git a/internal/pkg/warewulfconf/datastructure.go 
b/internal/pkg/warewulfconf/datastructure.go
index c3eebf8c..eb195a2e 100644
--- a/internal/pkg/warewulfconf/datastructure.go
+++ b/internal/pkg/warewulfconf/datastructure.go
@@ -44,6 +44,8 @@ type TftpConf struct {
        Enabled     bool   `yaml:"enabled" default:"true"`
        TftpRoot    string `yaml:"tftproot" default:"/var/lib/tftpboot"`
        SystemdName string `yaml:"systemd name" default:"tftp"`
+       // Path is relative to buildconfig.DATADIR()
+       IpxeBinaries map[string]string `yaml:"ipxe" default:"{\"00:09\": 
\"x86_64.efi\",\"00:00\": \"x86_64.kpxe\",\"00:0B\": \"arm64.efi\",\"00:07\":  
\"x86_64.efi\"}"`
 }
 
 type NfsConf struct {
diff --git a/overlays/host/etc/dhcp/dhcpd.conf.ww 
b/overlays/host/etc/dhcp/dhcpd.conf.ww
index 82b96cec..66b9d22e 100644
--- a/overlays/host/etc/dhcp/dhcpd.conf.ww
+++ b/overlays/host/etc/dhcp/dhcpd.conf.ww
@@ -20,15 +20,11 @@ option architecture-type   code 93  = unsigned integer 16;
 if exists user-class and option user-class = "iPXE" {
     filename "http://{{$.Ipaddr}}:{{$.Warewulf.Port}}/ipxe/${mac:hexhyp}";;
 } else {
-    if option architecture-type = 00:0B {
-        filename "/warewulf/arm64.efi";
-    } elsif option architecture-type = 00:09 {
-        filename "/warewulf/x86_64.efi";
-    } elsif option architecture-type = 00:07 {
-        filename "/warewulf/x86_64.efi";
-    } elsif option architecture-type = 00:00 {
-        filename "/warewulf/x86_64.kpxe";
-    }
+{{range $type,$name := $.Tftp.IpxeBinaries }}
+    if option architecture-type = {{ $type }} {
+        filename "/warewulf/{{ $name }}";
+    } 
+{{ end }}
 }
 
 {{if eq .Dhcp.Template "static" -}}
-- 
2.39.0

Reply via email to