From fd8d0a5d8253ed542ee8e5d4bf74c0153c34b16c Mon Sep 17 00:00:00 2001 From: Carlos A Becker Date: Tue, 4 Oct 2022 21:54:35 -0300 Subject: [PATCH 1/2] feat: nfpm for ios Jailbroken iOS can install deb packages, and it seems the only change needed is to set the OS to `ios` instead of `linux`. Closes #3410 --- internal/pipe/nfpm/nfpm.go | 7 +++++-- internal/pipe/nfpm/nfpm_test.go | 13 ++++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/internal/pipe/nfpm/nfpm.go b/internal/pipe/nfpm/nfpm.go index fa99067bca8..58396b11be5 100644 --- a/internal/pipe/nfpm/nfpm.go +++ b/internal/pipe/nfpm/nfpm.go @@ -82,7 +82,10 @@ func (Pipe) Run(ctx *context.Context) error { func doRun(ctx *context.Context, fpm config.NFPM) error { filters := []artifact.Filter{ artifact.ByType(artifact.Binary), - artifact.ByGoos("linux"), + artifact.Or( + artifact.ByGoos("linux"), + artifact.ByGoos("ios"), + ), } if len(fpm.Builds) > 0 { filters = append(filters, artifact.ByIDs(fpm.Builds...)) @@ -266,7 +269,7 @@ func create(ctx *context.Context, fpm config.NFPM, format string, binaries []*ar info := &nfpm.Info{ Arch: infoArch, - Platform: "linux", + Platform: binaries[0].Goos, Name: fpm.PackageName, Version: ctx.Version, Section: fpm.Section, diff --git a/internal/pipe/nfpm/nfpm_test.go b/internal/pipe/nfpm/nfpm_test.go index cdae7aab5d7..742d2b16b93 100644 --- a/internal/pipe/nfpm/nfpm_test.go +++ b/internal/pipe/nfpm/nfpm_test.go @@ -159,8 +159,11 @@ func TestRunPipe(t *testing.T) { }) ctx.Version = "1.0.0" ctx.Git = context.GitInfo{CurrentTag: "v1.0.0"} - for _, goos := range []string{"linux", "darwin"} { + for _, goos := range []string{"linux", "darwin", "ios"} { for _, goarch := range []string{"amd64", "386", "arm64", "arm", "mips"} { + if goos == "ios" && goarch != "arm64" { + continue + } switch goarch { case "arm": for _, goarm := range []string{"6", "7"} { @@ -220,7 +223,7 @@ func TestRunPipe(t *testing.T) { } require.NoError(t, Pipe{}.Run(ctx)) packages := ctx.Artifacts.Filter(artifact.ByType(artifact.LinuxPackage)).List() - require.Len(t, packages, 36) + require.Len(t, packages, 40) for _, pkg := range packages { format := pkg.Format() require.NotEmpty(t, format) @@ -234,7 +237,11 @@ func TestRunPipe(t *testing.T) { if pkg.Gomips != "" { arch += "_" + pkg.Gomips } - require.Equal(t, "foo_1.0.0_Tux_"+arch+"-10-20."+format, pkg.Name) + if pkg.Goos == "linux" { + require.Equal(t, "foo_1.0.0_Tux_"+arch+"-10-20."+format, pkg.Name) + } else { + require.Equal(t, "foo_1.0.0_ios_arm64-10-20."+format, pkg.Name) + } require.Equal(t, "someid", pkg.ID()) require.ElementsMatch(t, []string{ "./testdata/testfile.txt", From a0e45d44008b7a796cbaf1459871b6b9fe7d2ed3 Mon Sep 17 00:00:00 2001 From: Carlos A Becker Date: Tue, 11 Oct 2022 12:40:43 -0300 Subject: [PATCH 2/2] fix: iphoneos-arm64 Signed-off-by: Carlos A Becker --- internal/pipe/nfpm/nfpm.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/internal/pipe/nfpm/nfpm.go b/internal/pipe/nfpm/nfpm.go index 58396b11be5..f8719b1be1a 100644 --- a/internal/pipe/nfpm/nfpm.go +++ b/internal/pipe/nfpm/nfpm.go @@ -139,6 +139,10 @@ func create(ctx *context.Context, fpm config.NFPM, format string, binaries []*ar // TODO: improve mips handling on nfpm infoArch := binaries[0].Goarch + binaries[0].Goarm + binaries[0].Gomips // key used for the ConventionalFileName et al arch := infoArch + binaries[0].Goamd64 // unique arch key + infoPlatform := binaries[0].Goos + if infoPlatform == "ios" { + infoPlatform = "iphoneos-arm64" + } bindDir := fpm.Bindir if format == termuxFormat { @@ -269,7 +273,7 @@ func create(ctx *context.Context, fpm config.NFPM, format string, binaries []*ar info := &nfpm.Info{ Arch: infoArch, - Platform: binaries[0].Goos, + Platform: infoPlatform, Name: fpm.PackageName, Version: ctx.Version, Section: fpm.Section,