Skip to content

Commit ee458a9

Browse files
committed
Update: int bootmode
1 parent 61670f9 commit ee458a9

12 files changed

Lines changed: 105 additions & 55 deletions

File tree

alteriso5/cmd/build/cmd.go

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import (
44
"os"
55
"path"
66

7-
"github.com/FascodeNet/alterlinux/alteriso5/config"
8-
"github.com/FascodeNet/alterlinux/alteriso5/work"
97
"github.com/FascodeNet/alterlinux/alteriso5/cmd/check"
8+
"github.com/FascodeNet/alterlinux/alteriso5/config"
109
"github.com/FascodeNet/alterlinux/alteriso5/utils"
10+
"github.com/FascodeNet/alterlinux/alteriso5/work"
1111
"github.com/spf13/cobra"
1212
)
1313

@@ -37,21 +37,15 @@ func Cmd() *cobra.Command {
3737
workDir := path.Join(current, "work")
3838
outDir := path.Join(current, "out")
3939

40-
// Prepare work environment
41-
work, err := work.New(workDir)
42-
if err != nil {
43-
return err
44-
}
45-
46-
// Dummy profile
40+
// Read profile
4741
profile, err := config.ReadProfile(args[0])
4842
if err != nil {
4943
return err
5044
}
5145

5246
// TODO: Add more targets
5347
target := config.NewTarget("x86_64", outDir)
54-
return work.Build(*profile, target, cmd)
48+
return work.New(workDir).Build(*profile, target, cmd)
5549

5650
},
5751
}

alteriso5/config/profile.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@ import (
66
"path"
77

88
"github.com/FascodeNet/alterlinux/alteriso5/config/pkg"
9+
"github.com/FascodeNet/alterlinux/alteriso5/work/boot"
910
)
1011

1112
type Profile struct {
1213
Base string
1314
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"`
15+
BootModesStr []string `json:"bootmodes"`
16+
BootModes []boot.Mode
17+
ISOName string `json:"iso_name"`
18+
ISOLabel string `json:"iso_label"`
19+
UseAlterSysLinux bool `json:"use_alter_syslinux"`
1820
}
1921

2022
func ReadProfile(dir string) (*Profile, error) {
@@ -32,6 +34,12 @@ func ReadProfile(dir string) (*Profile, error) {
3234
return nil, err
3335
}
3436

37+
modes, err := boot.GetModes(new.BootModesStr...)
38+
if err != nil {
39+
return nil, err
40+
}
41+
new.BootModes = modes
42+
3543
return &new, nil
3644
}
3745

alteriso5/utils/dir.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
package utils
22

3-
import "os"
3+
import (
4+
"log/slog"
5+
"os"
6+
)
47

58
func MkdirsAll(dirs ...string) error {
69
for _, dir := range dirs {
10+
if dir == "" {
11+
continue
12+
}
13+
14+
slog.Debug("Creating directory", "dir", dir)
715
if err := os.MkdirAll(dir, 0755); err != nil {
16+
slog.Error("Failed to create directory", "dir", dir, "error", err)
817
return err
918
}
1019
}

alteriso5/work/boot/syslinuxconf.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package boot
22

33
import (
4+
"log/slog"
45
"os"
56
"path"
7+
"strings"
68

9+
"github.com/Hayao0819/nahi/fputils"
710
"github.com/Hayao0819/nahi/tputils"
811
)
912

@@ -25,11 +28,27 @@ func (s *SyslinuxConf) ParseAndBuild(data any, out string) error {
2528

2629
for _, file := range files {
2730
f := path.Join(s.Base, file.Name())
31+
32+
// Determine if the file is a plain text file
33+
if file.IsDir() {
34+
continue
35+
}
36+
t, err := fputils.DetectFileType(f)
37+
if err != nil {
38+
return err
39+
}
40+
if !strings.HasPrefix(t, "text") {
41+
slog.Warn("Skipping non-text file", "file", f)
42+
continue
43+
}
44+
45+
// Apply the template
2846
buf, err := tputils.ApplyTemplate(f, data)
2947
if err != nil {
3048
return err
3149
}
3250

51+
// Write the file
3352
if err := os.WriteFile(path.Join(out, file.Name()), buf.Bytes(), 0644); err != nil {
3453
return err
3554
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package boot_test
2+
3+
import (
4+
"os"
5+
"path"
6+
"testing"
7+
8+
"github.com/FascodeNet/alterlinux/alteriso5/work/boot"
9+
)
10+
11+
func TestReadSysLinuxConf(t *testing.T) {
12+
wd, _ := os.Getwd()
13+
profile := path.Join(wd, "profile")
14+
conf, err := boot.ReadSysLinuxConf(profile)
15+
if err != nil {
16+
t.Fatal(err)
17+
}
18+
19+
if conf.Base != profile {
20+
t.Errorf("expected %s, got %s", profile, conf.Base)
21+
}
22+
}

alteriso5/work/boot/xorriso-syslinux.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import (
55
)
66

77
// SysLinux MBR El Torito
8-
var xorrisoArgsForSysLinuxElTorito = &xorrisoArg{
9-
bootMode: "SysLinux",
8+
var xorrisoArgsForBiosSyslinuxElTorito = &xorrisoArg{
9+
bootMode: BiosSyslinuxElTorito,
1010
args: func(o *xorriso) []string {
1111
return []string{
1212
"-eltorito-boot", "boot/syslinux/isolinux.bin",
@@ -16,8 +16,8 @@ var xorrisoArgsForSysLinuxElTorito = &xorrisoArg{
1616
},
1717
}
1818

19-
var xorrisoArgsForSysLinuxMBRBios = &xorrisoArg{
20-
bootMode: "SysLinux",
19+
var xorrisoArgsForBiosSyslinuxMbr = &xorrisoArg{
20+
bootMode: BiosSyslinuxMbr,
2121
args: func(o *xorriso) []string {
2222
return []string{
2323
"-isohybrid-mbr", path.Join(o.fsDir, "boot", "syslinux", "isohdpfx.bin"),
@@ -29,7 +29,7 @@ var xorrisoArgsForSysLinuxMBRBios = &xorrisoArg{
2929

3030
func init() {
3131
Xorriso.addArgs(
32-
xorrisoArgsForSysLinuxElTorito,
33-
xorrisoArgsForSysLinuxMBRBios,
32+
xorrisoArgsForBiosSyslinuxElTorito,
33+
xorrisoArgsForBiosSyslinuxMbr,
3434
)
3535
}

alteriso5/work/boot/xorriso.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package boot
22

33
import (
44
"fmt"
5+
"log/slog"
56
"os"
67
"os/exec"
78
)
@@ -15,28 +16,29 @@ type xorriso struct {
1516
}
1617

1718
type xorrisoArg struct {
18-
bootMode string
19+
bootMode Mode
1920
args func(o *xorriso) []string
2021
}
2122

2223
func (x *xorriso) addArgs(arg ...*xorrisoArg) {
2324
x.args = append(x.args, arg...)
2425
}
2526

26-
func (x *xorriso) Args(bootmode ...string) *[]string {
27+
func (x *xorriso) Args(bootmode ...Mode) *[]string {
2728
var args []string
2829

2930
args = append(args, xorrisoCommonArgs.args(x)...)
3031

3132
for _, arg := range x.args {
3233
if bootmode[0] == arg.bootMode {
34+
slog.Debug("Adding xorriso args", "mode", arg.bootMode, "args", arg.args)
3335
args = append(args, arg.args(x)...)
3436
}
3537
}
3638
return &args
3739
}
3840

39-
func (x *xorriso) Build(dir string, out string, bootmode ...string) error {
41+
func (x *xorriso) Build(dir string, out string, bootmode ...Mode) error {
4042
x.fsDir = dir
4143
x.out = out
4244

alteriso5/work/build.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,15 @@ import (
77

88
func (work Work) Build(p config.Profile, t config.Target, c *cobra.Command) error {
99

10+
// Setup work
1011
work.profile = &p
1112
work.target = &t
1213
work.Cmd = c
14+
dirs, err := work.GetDirs()
15+
if err != nil {
16+
return err
17+
}
18+
work.Dirs = dirs
1319

1420
tasks := []*BuildTask{
1521
makeBaseDirs,

alteriso5/work/buildtask.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func (t *BuildTask) Run(w *Work) error {
2626

2727
err := t.task(*w)
2828
if err != nil {
29-
return fmt.Errorf("error running task %s: %v", t.name, err)
29+
return fmt.Errorf("error on %s: %v", t.name, err)
3030
}
3131
return nil
3232
}

alteriso5/work/task-bootmode-bios.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,20 @@ var makeBiosSysLinuxMbr = NewBuildTask("makeBiosSysLinuxMbr", func(w Work) error
1414
slog.Debug("Setting up SYSLINUX for BIOS booting from a disk...")
1515

1616
// Get directories
17+
println("getdirs")
1718
dirs := w.Dirs
1819
isoSyslinuxDir := path.Join(dirs.Iso, "boot", "syslinux")
1920
biosFilesDir := path.Join(dirs.Pacstrap, "usr", "lib", "syslinux", "bios")
2021

2122
// Create directories
22-
if err := utils.MkdirsAll(isoSyslinuxDir, dirs.SyslinuxConfig); err != nil {
23+
if err := os.MkdirAll(isoSyslinuxDir, 0755); err != nil {
24+
2325
return err
2426
}
2527

2628
// syslinux config
2729
orgSyslinuxConfigDir := ""
30+
println("usealtersyslinux")
2831
if w.profile.UseAlterSysLinux {
2932
orgSyslinuxConfigDir = path.Join(dirs.Data, "syslinux")
3033
} else {
@@ -38,7 +41,8 @@ var makeBiosSysLinuxMbr = NewBuildTask("makeBiosSysLinuxMbr", func(w Work) error
3841
if err := os.MkdirAll(sysLinuxConfigDir, 0755); err != nil {
3942
return err
4043
}
41-
if err := sc.ParseAndBuild(w.Values(), sysLinuxConfigDir); err != nil {
44+
workSyslinuxConfigDir := path.Join(dirs.Work, w.target.Arch, "syslinux")
45+
if err := sc.ParseAndBuild(w.Values(), workSyslinuxConfigDir); err != nil {
4246
return err
4347
}
4448

@@ -51,7 +55,7 @@ var makeBiosSysLinuxMbr = NewBuildTask("makeBiosSysLinuxMbr", func(w Work) error
5155
Perm: 0644,
5256
},
5357
{
54-
Source: dirs.SyslinuxConfig,
58+
Source: workSyslinuxConfigDir,
5559
Dest: isoSyslinuxDir,
5660
},
5761
{

0 commit comments

Comments
 (0)