Skip to content

Commit beb75cb

Browse files
committed
Propagate install_if and provider_priority to APKINDEX
Turn InstallIf into an array as strings (as it has the format as depend/provides), and add ProviderPriority. Format them into the geenrated APKINDEX file. Resolves #28704
1 parent 4abd63d commit beb75cb

File tree

3 files changed

+27
-14
lines changed

3 files changed

+27
-14
lines changed

modules/packages/alpine/metadata.go

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,17 @@ type VersionMetadata struct {
5555
}
5656

5757
type FileMetadata struct {
58-
Checksum string `json:"checksum"`
59-
Packager string `json:"packager,omitempty"`
60-
BuildDate int64 `json:"build_date,omitempty"`
61-
Size int64 `json:"size,omitempty"`
62-
Architecture string `json:"architecture,omitempty"`
63-
Origin string `json:"origin,omitempty"`
64-
CommitHash string `json:"commit_hash,omitempty"`
65-
InstallIf string `json:"install_if,omitempty"`
66-
Provides []string `json:"provides,omitempty"`
67-
Dependencies []string `json:"dependencies,omitempty"`
58+
Checksum string `json:"checksum"`
59+
Packager string `json:"packager,omitempty"`
60+
BuildDate int64 `json:"build_date,omitempty"`
61+
Size int64 `json:"size,omitempty"`
62+
Architecture string `json:"architecture,omitempty"`
63+
Origin string `json:"origin,omitempty"`
64+
CommitHash string `json:"commit_hash,omitempty"`
65+
InstallIf []string `json:"install_if,omitempty"`
66+
Provides []string `json:"provides,omitempty"`
67+
Dependencies []string `json:"dependencies,omitempty"`
68+
ProviderPriority int64 `json:"provider_priority,omitempty"`
6869
}
6970

7071
// ParsePackage parses the Alpine package file
@@ -179,7 +180,7 @@ func ParsePackageInfo(r io.Reader) (*Package, error) {
179180
case "license":
180181
p.VersionMetadata.License = value
181182
case "install_if":
182-
p.FileMetadata.InstallIf = value
183+
p.FileMetadata.InstallIf = append(p.FileMetadata.InstallIf, value)
183184
case "provides":
184185
if value != "" {
185186
p.FileMetadata.Provides = append(p.FileMetadata.Provides, value)
@@ -188,6 +189,11 @@ func ParsePackageInfo(r io.Reader) (*Package, error) {
188189
if value != "" {
189190
p.FileMetadata.Dependencies = append(p.FileMetadata.Dependencies, value)
190191
}
192+
case "provider_priority":
193+
n, err := strconv.ParseInt(value, 10, 64)
194+
if err == nil {
195+
p.FileMetadata.ProviderPriority = n
196+
}
191197
}
192198
}
193199
if err := scanner.Err(); err != nil {

modules/packages/alpine/metadata_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ commit = 1111e709613fbc979651b09ac2bc27c6591a9999
3636
maintainer = ` + packageMaintainer + `
3737
license = MIT
3838
depend = common
39-
install_if = value
39+
install_if = package1=1.40r3
40+
install_if = !bar
4041
depend = gitea
4142
provides = common
4243
provides = gitea`)
@@ -95,7 +96,7 @@ func TestParsePackage(t *testing.T) {
9596
assert.NoError(t, err)
9697
assert.NotNil(t, p)
9798

98-
assert.Equal(t, "Q1SRYURM5+uQDqfHSwTnNIOIuuDVQ=", p.FileMetadata.Checksum)
99+
assert.Equal(t, "Q1nExxVXVcTXgbZFLzqlwgJlQELxM=", p.FileMetadata.Checksum)
99100
})
100101
}
101102

@@ -136,7 +137,7 @@ func TestParsePackageInfo(t *testing.T) {
136137
assert.Equal(t, "aarch64", p.FileMetadata.Architecture)
137138
assert.Equal(t, "origin", p.FileMetadata.Origin)
138139
assert.Equal(t, "1111e709613fbc979651b09ac2bc27c6591a9999", p.FileMetadata.CommitHash)
139-
assert.Equal(t, "value", p.FileMetadata.InstallIf)
140+
assert.Equal(t, []string{"package1=1.40r3", "!bar"}, p.FileMetadata.InstallIf)
140141
assert.ElementsMatch(t, []string{"common", "gitea"}, p.FileMetadata.Provides)
141142
assert.ElementsMatch(t, []string{"common", "gitea"}, p.FileMetadata.Dependencies)
142143
})

services/packages/alpine/repository.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,12 @@ func buildPackagesIndex(ctx context.Context, ownerID int64, repoVersion *package
230230
if len(pd.FileMetadata.Provides) > 0 {
231231
fmt.Fprintf(&buf, "p:%s\n", strings.Join(pd.FileMetadata.Provides, " "))
232232
}
233+
if len(pd.FileMetadata.InstallIf) > 0 {
234+
fmt.Fprintf(&buf, "i:%s\n", strings.Join(pd.FileMetadata.InstallIf, " "))
235+
}
236+
if pd.FileMetadata.ProviderPriority > 0 {
237+
fmt.Fprintf(&buf, "k:%d\n", pd.FileMetadata.ProviderPriority)
238+
}
233239
fmt.Fprint(&buf, "\n")
234240
}
235241

0 commit comments

Comments
 (0)