Skip to content

Commit 20ec5e9

Browse files
committed
Update: Prepare for config template
1 parent a99b278 commit 20ec5e9

15 files changed

Lines changed: 186 additions & 86 deletions

alteriso5/config/profile.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ import (
99
)
1010

1111
type Profile struct {
12-
Base string
13-
InstallDir string `json:"install_dir"`
14-
BootModes []string `json:"bootmodes"`
15-
ISOName string `json:"iso_name"`
16-
ISOLabel string `json:"iso_label"`
12+
Base string
13+
InstallDir string `json:"install_dir"`
14+
BootModes []string `json:"bootmodes"`
15+
ISOName string `json:"iso_name"`
16+
ISOLabel string `json:"iso_label"`
17+
UseAlterSysLinux bool `json:"use_alter_syslinux"`
1718
}
1819

1920
func ReadProfile(dir string) (*Profile, error) {
@@ -35,5 +36,5 @@ func ReadProfile(dir string) (*Profile, error) {
3536
}
3637

3738
func (p *Profile) GetPkgList(arch string) ([]string, error) {
38-
return pkg.GetPkgList(p.Base,arch)
39+
return pkg.GetPkgList(p.Base, arch)
3940
}
File renamed without changes.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package boot
2+
3+
import (
4+
"os"
5+
"path"
6+
7+
"github.com/Hayao0819/nahi/tputils"
8+
)
9+
10+
type SyslinuxConf struct {
11+
Base string
12+
}
13+
14+
func ReadSysLinuxConf(dir string) (*SyslinuxConf, error) {
15+
return &SyslinuxConf{
16+
Base: dir,
17+
}, nil
18+
}
19+
20+
func (s *SyslinuxConf) ParseAndBuild(data any, out string) error {
21+
files, err := os.ReadDir(s.Base)
22+
if err != nil {
23+
return err
24+
}
25+
26+
for _, file := range files {
27+
f := path.Join(s.Base, file.Name())
28+
buf, err := tputils.ApplyTemplate(f, data)
29+
if err != nil {
30+
return err
31+
}
32+
33+
if err := os.WriteFile(path.Join(out, file.Name()), buf.Bytes(), 0644); err != nil {
34+
return err
35+
}
36+
}
37+
38+
return nil
39+
}

alteriso5/work/task-airootfs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ var makeAirootfs *BuildTask = NewBuildTask("makeAirootfs", func(w Work) error {
1414

1515
sqfs := airootfs.SquashFS{
1616
Base: airootfsDir,
17-
Out: path.Join(w.GetDirs().Iso, w.profile.InstallDir, w.target.Arch, "airootfs.sfs"),
17+
Out: path.Join(w.Dirs.Iso, w.profile.InstallDir, w.target.Arch, "airootfs.sfs"),
1818
}
1919

2020
return sqfs.Build()
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package work
2+
3+
import (
4+
"log/slog"
5+
"os"
6+
"path"
7+
8+
"github.com/FascodeNet/alterlinux/alteriso5/utils"
9+
"github.com/FascodeNet/alterlinux/alteriso5/work/boot"
10+
)
11+
12+
// SysLinux
13+
var makeSysLinux = NewBuildTask("makeSysLinux", func(w Work) error {
14+
slog.Debug("Setting up SYSLINUX for BIOS booting from a disk...")
15+
16+
// Get directories
17+
dirs := w.Dirs
18+
isoSyslinuxDir := path.Join(dirs.Iso, "boot", "syslinux")
19+
biosFilesDir := path.Join(dirs.Pacstrap, "usr", "lib", "syslinux", "bios")
20+
21+
// Create directories
22+
if err := utils.MkdirsAll(isoSyslinuxDir, dirs.SyslinuxConfig); err != nil {
23+
return err
24+
}
25+
26+
// syslinux config
27+
orgSyslinuxConfigDir := ""
28+
if w.profile.UseAlterSysLinux {
29+
orgSyslinuxConfigDir = path.Join(dirs.Data, "syslinux")
30+
} else {
31+
orgSyslinuxConfigDir = path.Join(w.profile.Base, "syslinux", "bios")
32+
}
33+
sc, err := boot.ReadSysLinuxConf(orgSyslinuxConfigDir)
34+
if err != nil {
35+
return err
36+
}
37+
sysLinuxConfigDir := path.Join(dirs.Work, w.target.Arch, "syslinux")
38+
if err := os.MkdirAll(sysLinuxConfigDir, 0755); err != nil {
39+
return err
40+
}
41+
if err := sc.ParseAndBuild(w.Values(), sysLinuxConfigDir); err != nil {
42+
return err
43+
}
44+
45+
// Copy files
46+
cpFiles := []utils.CopyTask{
47+
{
48+
Source: biosFilesDir,
49+
Dest: isoSyslinuxDir,
50+
Skip: utils.OnlySpecificExtention(".c32"),
51+
Perm: 0644,
52+
},
53+
{
54+
Source: dirs.SyslinuxConfig,
55+
Dest: isoSyslinuxDir,
56+
},
57+
{
58+
Source: path.Join(biosFilesDir, "lpxelinux.0"),
59+
Dest: path.Join(isoSyslinuxDir, "lpxelinux.0"),
60+
},
61+
{
62+
Source: path.Join(biosFilesDir, "memdisk"),
63+
Dest: path.Join(isoSyslinuxDir, "memdisk"),
64+
},
65+
}
66+
67+
chroot, err := w.GetChroot()
68+
if err != nil {
69+
return err
70+
}
71+
kernels, err := chroot.FindKernels()
72+
if err != nil {
73+
return err
74+
}
75+
76+
for _, k := range kernels {
77+
cpFiles = append(cpFiles, utils.CopyTask{
78+
Source: path.Join(w.Dirs.Pacstrap, k.Linux),
79+
Dest: path.Join(dirs.Iso, "boot", w.target.Arch, path.Base(k.Linux)),
80+
Perm: 0644,
81+
}, utils.CopyTask{
82+
Source: path.Join(w.Dirs.Pacstrap, k.Initrd),
83+
Dest: path.Join(dirs.Iso, "boot", w.target.Arch, path.Base(k.Initrd)),
84+
Perm: 0644,
85+
})
86+
}
87+
88+
if err := utils.CopyAll(cpFiles...); err != nil {
89+
return err
90+
}
91+
92+
return nil
93+
})

0 commit comments

Comments
 (0)