Skip to content

WIP: Add rpm support for multiple distributions #25866

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 90 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
b208df1
feat: add rpm support for multiple distributions (#25304)
ExplodingDragon Jul 13, 2023
d2f58eb
test: fix rpm test
ExplodingDragon Jul 13, 2023
486c5dc
feat(ui): show more information
ExplodingDragon Jul 13, 2023
7521181
Merge branch 'go-gitea:main' into main
ExplodingDragon Jul 14, 2023
98ee980
fix(ui): show description
ExplodingDragon Jul 14, 2023
f0d0cc9
Merge branch 'main' into main
ExplodingDragon Jul 14, 2023
41f0ea9
Merge branch 'main' into main
ExplodingDragon Jul 14, 2023
731eb43
doc: Changing the rpm documentation
ExplodingDragon Jul 14, 2023
4677fc2
doc: Changing the rpm documentation
ExplodingDragon Jul 14, 2023
907ba85
Merge branch 'main' into main
ExplodingDragon Jul 14, 2023
4c0324c
fix: rpm documentation
ExplodingDragon Jul 14, 2023
59fc6f7
fix: rpm documentation
ExplodingDragon Jul 14, 2023
a6ba270
fix: rpm documentation
ExplodingDragon Jul 14, 2023
6f32668
fix: rpm documentation
ExplodingDragon Jul 14, 2023
b2f2017
fix: rpm documentation
ExplodingDragon Jul 14, 2023
6859fe1
feat: support old rpm path
ExplodingDragon Jul 14, 2023
cd5fbc3
feat: support old rpm path
ExplodingDragon Jul 14, 2023
d32cf27
feat: add rpm migrations
ExplodingDragon Jul 14, 2023
30c1708
feat: add rpm migrations
ExplodingDragon Jul 14, 2023
53ca41f
Merge branch 'main' into main
ExplodingDragon Jul 14, 2023
d1c5b83
fix: use transaction for migrations
ExplodingDragon Jul 14, 2023
2d0bbd8
Merge remote-tracking branch 'origin/main'
ExplodingDragon Jul 14, 2023
cb6dc64
Merge branch 'main' into main
silverwind Jul 14, 2023
183ae70
style: code style clean
Jul 14, 2023
7dab981
style: Optimizing rpm Routing
ExplodingDragon Jul 14, 2023
c5c3d15
feat: remove old rpm api
Jul 14, 2023
b6b533d
feat: Change the old rpm path to redirection
Jul 14, 2023
11297ab
merge KN4CK3R‘s Patch
ExplodingDragon Jul 14, 2023
807c5b5
remove rpm distribution TrimSpace
Jul 14, 2023
9b0f448
merge remote
Jul 14, 2023
8139ff1
feat: remove 302
Jul 14, 2023
7c766c4
feat: remove redirect code .
Jul 14, 2023
10d675a
keep old api
Jul 15, 2023
19120cc
Merge branch 'main' into main
ExplodingDragon Jul 15, 2023
90577b3
Merge branch 'main' into main
ExplodingDragon Jul 15, 2023
67dba0a
Merge branch 'main' into main
ExplodingDragon Jul 16, 2023
f5beb6a
fix: add file filter
Jul 16, 2023
1dd83f6
fix: add delete filter
Jul 16, 2023
f803378
feat: remove old api
Jul 16, 2023
bebfdf5
Merge branch 'main' into main
ExplodingDragon Jul 16, 2023
e981f9b
Merge branch 'main' into main
ExplodingDragon Jul 17, 2023
0ca240d
feat: Revert old API and prepare to merge to 1.21
ExplodingDragon Jul 17, 2023
4848ce6
Merge branch 'main' into main
ExplodingDragon Jul 17, 2023
36588d8
Merge branch 'main' into main
ExplodingDragon Jul 17, 2023
fa52a17
Merge branch 'main' into main
ExplodingDragon Jul 18, 2023
8e74e71
Merge branch 'main' into main
ExplodingDragon Jul 19, 2023
7663c47
Merge branch 'main' into main
ExplodingDragon Jul 21, 2023
0722d4f
merge main
ExplodingDragon Jul 21, 2023
ea5b369
Merge branch 'go-gitea:main' into main
ExplodingDragon Jul 21, 2023
69ee266
Merge branch 'main' into main
ExplodingDragon Jul 21, 2023
df9c654
Merge branch 'main' into main
ExplodingDragon Jul 21, 2023
dc87ca6
Merge branch 'main' into main
ExplodingDragon Jul 21, 2023
0c67ca6
Update migrations.go
ExplodingDragon Jul 21, 2023
f797f3c
merge main
ExplodingDragon Jul 21, 2023
a32fedf
Merge branch 'main' into main
ExplodingDragon Jul 21, 2023
963e238
clear: Cleaning code
Jul 21, 2023
0a68296
Merge branch 'main' into main
ExplodingDragon Jul 21, 2023
9eebde0
Merge branch 'main' into main
ExplodingDragon Jul 21, 2023
e0c97bc
Merge branch 'main' into main
ExplodingDragon Jul 22, 2023
ec644fc
Merge branch 'main' into main
ExplodingDragon Jul 22, 2023
99e2191
merge
ExplodingDragon Jul 27, 2023
e2e0d23
merge
ExplodingDragon Jul 27, 2023
56902ab
Merge branch 'main' into main
ExplodingDragon Aug 2, 2023
f5f46c4
merge
ExplodingDragon Aug 2, 2023
e99cd07
test: Remove duplicate tests
ExplodingDragon Aug 2, 2023
362a312
test: Remove duplicate tests
ExplodingDragon Aug 2, 2023
792b3ba
style: format
ExplodingDragon Aug 2, 2023
72e166c
Merge branch 'main' into main
ExplodingDragon Aug 3, 2023
eb0d7ea
Merge branch 'main' into main
ExplodingDragon Aug 4, 2023
6ed9637
Merge branch 'main' into main
ExplodingDragon Aug 5, 2023
92fdb36
Merge branch 'main' into main
ExplodingDragon Aug 8, 2023
879b0c2
Merge branch 'main' into main
ExplodingDragon Aug 14, 2023
d1188c2
Merge branch 'main' into main
ExplodingDragon Aug 15, 2023
958f5c7
Create v272.go
ExplodingDragon Aug 15, 2023
84f9d44
Update v271.go
ExplodingDragon Aug 15, 2023
545f1d4
Merge branch 'main' into main
ExplodingDragon Aug 17, 2023
2ed1392
Merge branch 'main' into main
ExplodingDragon Aug 19, 2023
387bb1b
Merge branch 'main' into main
ExplodingDragon Aug 21, 2023
02e601a
Rename v272.go to v273.go
ExplodingDragon Aug 27, 2023
42c0d1c
Rename v273.go to v274.go
ExplodingDragon Aug 27, 2023
70b25d4
Merge branch 'main' into main
ExplodingDragon Aug 27, 2023
3abb114
Merge branch 'main' into main
ExplodingDragon Aug 30, 2023
b2d3333
style: clean migrations.go
ExplodingDragon Aug 30, 2023
21ebcc0
Merge branch 'main' into main
ExplodingDragon Aug 30, 2023
79594de
Merge branch 'main' into main
ExplodingDragon Aug 30, 2023
9cac063
Merge branch 'main' into main
ExplodingDragon Aug 31, 2023
852485d
Merge branch 'main' into main
ExplodingDragon Aug 31, 2023
d197f84
Merge branch 'main' into main
ExplodingDragon Aug 31, 2023
21fad31
Merge branch 'main' into main
ExplodingDragon Sep 1, 2023
53b262b
Merge branch 'main' into main
ExplodingDragon Sep 2, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions docs/content/usage/packages/rpm.en-us.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,18 @@ The following examples use `dnf`.
To register the RPM registry add the url to the list of known apt sources:

```shell
dnf config-manager --add-repo https://gitea.example.com/api/packages/{owner}/rpm.repo
dnf config-manager --add-repo https://gitea.example.com/api/packages/{owner}/rpm/{distribution}.repo
```

| Placeholder | Description |
| ----------- | ----------- |
| `owner` | The owner of the package. |
| `distribution` | Package group name, e.g. `el7`, `el9` , `test-el9`. |

If the registry is private, provide credentials in the url. You can use a password or a [personal access token](development/api-usage.md#authentication):

```shell
dnf config-manager --add-repo https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/rpm.repo
dnf config-manager --add-repo https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/rpm/{distribution}.repo
```

You have to add the credentials to the urls in the `rpm.repo` file in `/etc/yum.repos.d` too.
Expand All @@ -47,19 +48,20 @@ You have to add the credentials to the urls in the `rpm.repo` file in `/etc/yum.
To publish a RPM package (`*.rpm`), perform a HTTP PUT operation with the package content in the request body.

```
PUT https://gitea.example.com/api/packages/{owner}/rpm/upload
PUT https://gitea.example.com/api/packages/{owner}/rpm/{distribution}/upload
```

| Parameter | Description |
| --------- | ----------- |
| `owner` | The owner of the package. |
| `distribution` | Package group name, e.g. `el7`, `el9` , `test-el9`. |

Example request using HTTP Basic authentication:

```shell
curl --user your_username:your_password_or_token \
--upload-file path/to/file.rpm \
https://gitea.example.com/api/packages/testuser/rpm/upload
https://gitea.example.com/api/packages/testuser/rpm/default/upload
```

If you are using 2FA or OAuth use a [personal access token](development/api-usage.md#authentication) instead of the password.
Expand All @@ -78,12 +80,13 @@ The server responds with the following HTTP Status codes.
To delete an RPM package perform a HTTP DELETE operation. This will delete the package version too if there is no file left.

```
DELETE https://gitea.example.com/api/packages/{owner}/rpm/{package_name}/{package_version}/{architecture}
DELETE https://gitea.example.com/api/packages/{owner}/rpm/{distribution}/package/{package_name}/{package_version}/{architecture}
```

| Parameter | Description |
| ----------------- | ----------- |
| `owner` | The owner of the package. |
| `distribution` | The package distribution. |
| `package_name` | The package name. |
| `package_version` | The package version. |
| `architecture` | The package architecture. |
Expand All @@ -92,7 +95,7 @@ Example request using HTTP Basic authentication:

```shell
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/rpm/test-package/1.0.0/x86_64
https://gitea.example.com/api/packages/testuser/rpm/default/test-package/1.0.0/x86_64
```

The server responds with the following HTTP Status codes.
Expand Down
15 changes: 9 additions & 6 deletions docs/content/usage/packages/rpm.zh-cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,18 @@ menu:
要注册RPM注册表,请将 URL 添加到已知 `apt` 源列表中:

```shell
dnf config-manager --add-repo https://gitea.example.com/api/packages/{owner}/rpm.repo
dnf config-manager --add-repo https://gitea.example.com/api/packages/{owner}/rpm/{distribution}.repo
```

| 占位符 | 描述 |
| ------- | -------------- |
| `owner` | 软件包的所有者 |
| `distribution` | 一个任意的名称,例如:el7、el9 |

如果注册表是私有的,请在URL中提供凭据。您可以使用密码或[个人访问令牌](development/api-usage.md#通过-api-认证):

```shell
dnf config-manager --add-repo https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/rpm.repo
dnf config-manager --add-repo https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/rpm/{distribution}.repo
```

您还必须将凭据添加到 `/etc/yum.repos.d` 中的 `rpm.repo` 文件中的URL中。
Expand All @@ -47,19 +48,20 @@ dnf config-manager --add-repo https://{username}:{your_password_or_token}@gitea.
要发布RPM软件包(`*.rpm`),请执行带有软件包内容的 HTTP `PUT` 操作。

```
PUT https://gitea.example.com/api/packages/{owner}/rpm/upload
PUT https://gitea.example.com/api/packages/{owner}/rpm/{distribution}/upload
```

| 参数 | 描述 |
| ------- | -------------- |
| `owner` | 软件包的所有者 |
| `distribution` | 软件包组名称,例如:`el7`、`el9`、`test-el9` |

使用HTTP基本身份验证的示例请求:

```shell
curl --user your_username:your_password_or_token \
--upload-file path/to/file.rpm \
https://gitea.example.com/api/packages/testuser/rpm/upload
https://gitea.example.com/api/packages/testuser/rpm/default/upload
```

如果您使用 2FA 或 OAuth,请使用[个人访问令牌](development/api-usage.md#通过-api-认证)替代密码。您无法将具有相同名称的文件两次发布到软件包中。您必须先删除现有的软件包版本。
Expand All @@ -77,12 +79,13 @@ curl --user your_username:your_password_or_token \
要删除 RPM 软件包,请执行 HTTP `DELETE` 操作。如果没有文件剩余,这也将删除软件包版本。

```
DELETE https://gitea.example.com/api/packages/{owner}/rpm/{package_name}/{package_version}/{architecture}
DELETE https://gitea.example.com/api/packages/{owner}/rpm/{distribution}/package/{package_name}/{package_version}/{architecture}
```

| 参数 | 描述 |
| ----------------- | -------------- |
| `owner` | 软件包的所有者 |
| `distribution` | 软件包组名称 |
| `package_name` | 软件包名称 |
| `package_version` | 软件包版本 |
| `architecture` | 软件包架构 |
Expand All @@ -91,7 +94,7 @@ DELETE https://gitea.example.com/api/packages/{owner}/rpm/{package_name}/{packag

```shell
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/rpm/test-package/1.0.0/x86_64
https://gitea.example.com/api/packages/testuser/rpm/default/package/test-package/1.0.0/x86_64
```

服务器将以以下HTTP状态码响应:
Expand Down
2 changes: 2 additions & 0 deletions models/migrations/migrations.go
Original file line number Diff line number Diff line change
Expand Up @@ -528,6 +528,8 @@ var migrations = []Migration{
NewMigration("Add Version to ActionRun table", v1_21.AddVersionToActionRunTable),
// v273 -> v274
NewMigration("Add Action Schedule Table", v1_21.AddActionScheduleTable),
// v274 -> v275
NewMigration("Migrate old rpm package index", v1_21.RebuildRpmPackage),
}

// GetCurrentDBVersion returns the current db version
Expand Down
81 changes: 81 additions & 0 deletions models/migrations/v1_21/v274.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT

package v1_21 //nolint

import (
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/packages/rpm"

"xorm.io/xorm"
)

func RebuildRpmPackage(x *xorm.Engine) error {
sess := x.NewSession()
defer sess.Close()
defaultDistribution := rpm.RepositoryDefaultDistribution
// select all old rpm package
var oldRpmIds []int64
ss := sess.Cols("id").
Table("package_file").
Where("composite_key = ?", "").
And("lower_name like ?", "%.rpm")
err := ss.Find(&oldRpmIds)
if err != nil {
return err
}
// add metadata
// NOTE: package_property[name='rpm.metdata'] is very large,
// and to avoid querying all of them resulting in large memory,
// a single RPM package is now used for updating.
for _, id := range oldRpmIds {

metadata := make([]string, 0, 3)
_, err := sess.Cols("ref_type", "ref_id", "value").
Table("package_property").
Where("name = 'rpm.metdata'").
And("ref_id = ?", id).
Get(&metadata)
if err != nil {
return err
}
// get rpm info
var rpmMetadata rpm.FileMetadata
err = json.Unmarshal([]byte(metadata[2]), &rpmMetadata)
if err != nil {
return err
}
_, err = sess.Exec(
"INSERT INTO package_property(ref_type, ref_id, name, value) values (?,?,?,?),(?,?,?,?)",
metadata[0], metadata[1], "rpm.distribution", defaultDistribution,
metadata[0], metadata[1], "rpm.architecture", rpmMetadata.Architecture,
)
if err != nil {
return err
}
// set default distribution
_, err = sess.Table("package_file").
Where("id = ?", id).
Update(map[string]any{
"composite_key": defaultDistribution,
})
if err != nil {
return err
}
}
// set old rpm index file to default distribution
_, err = sess.Table("package_file").
Where(
"composite_key = '' AND " +
"lower_name IN" +
"(" +
"'primary.xml.gz','other.xml.gz','filelists.xml.gz','other.xml.gz','repomd.xml','repomd.xml.asc'" +
")").
Update(map[string]any{
"composite_key": defaultDistribution,
})
if err != nil {
return err
}
return nil
}
6 changes: 5 additions & 1 deletion modules/packages/rpm/metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,17 @@ import (
)

const (
PropertyMetadata = "rpm.metadata"
PropertyMetadata = "rpm.metadata"
PropertyDistribution = "rpm.distribution"
PropertyArchitecture = "rpm.architecture"

SettingKeyPrivate = "rpm.key.private"
SettingKeyPublic = "rpm.key.public"

RepositoryPackage = "_rpm"
RepositoryVersion = "_repository"

RepositoryDefaultDistribution = "default"
)

const (
Expand Down
5 changes: 5 additions & 0 deletions options/locale/locale_en-US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3381,6 +3381,11 @@ rpm.registry = Setup this registry from the command line:
rpm.distros.redhat = on RedHat based distributions
rpm.distros.suse = on SUSE based distributions
rpm.install = To install the package, run the following command:
rpm.package.info = Package Info
rpm.package.distributions = Distributions
rpm.package.architectures = Architectures
rpm.package.description = Description
rpm.package.summary = Summary
rubygems.install = To install the package using gem, run the following command:
rubygems.install2 = or add it to the Gemfile:
rubygems.dependencies.runtime = Runtime Dependencies
Expand Down
23 changes: 17 additions & 6 deletions routers/api/packages/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -513,14 +513,25 @@ func CommonRoutes() *web.Route {
r.Get("/simple/{id}", pypi.PackageMetadata)
}, reqPackageAccess(perm.AccessModeRead))
r.Group("/rpm", func() {
r.Get(".repo", rpm.GetRepositoryConfig)
r.Get(".repo", func(ctx *context.Context) {
ctx.Redirect(setting.AppSubURL + strings.Replace(ctx.Base.Req.URL.Path, "/rpm.repo", "/rpm/default.repo", 1))
})
r.Get("/repodata/{filename}", func(ctx *context.Context) {
ctx.Redirect(setting.AppSubURL + strings.Replace(ctx.Base.Req.URL.Path, "/rpm/repodata/", "/rpm/default/repodata/", 1))
})
r.Get("/package/{name}/{version}/{architecture}", func(ctx *context.Context) {
ctx.Redirect(setting.AppSubURL + strings.Replace(ctx.Base.Req.URL.Path, "/rpm/package/", "/rpm/default/package/", 1))
})
r.Get("/repository.key", rpm.GetRepositoryKey)
r.Put("/upload", reqPackageAccess(perm.AccessModeWrite), rpm.UploadPackageFile)
r.Group("/package/{name}/{version}/{architecture}", func() {
r.Get("", rpm.DownloadPackageFile)
r.Delete("", reqPackageAccess(perm.AccessModeWrite), rpm.DeletePackageFile)
r.Group("/{distribution}", func() {
r.Get(".repo", rpm.GetRepositoryConfig)
r.Put("/upload", reqPackageAccess(perm.AccessModeWrite), rpm.UploadPackageFile)
r.Group("/package/{name}/{version}/{architecture}", func() {
r.Get("", rpm.DownloadPackageFile)
r.Delete("", reqPackageAccess(perm.AccessModeWrite), rpm.DeletePackageFile)
})
r.Get("/repodata/{filename}", rpm.GetRepositoryFile)
})
r.Get("/repodata/{filename}", rpm.GetRepositoryFile)
}, reqPackageAccess(perm.AccessModeRead))
r.Group("/rubygems", func() {
r.Get("/specs.4.8.gz", rubygems.EnumeratePackages)
Expand Down
30 changes: 18 additions & 12 deletions routers/api/packages/rpm/rpm.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,12 @@ func apiError(ctx *context.Context, status int, obj any) {

// https://dnf.readthedocs.io/en/latest/conf_ref.html
func GetRepositoryConfig(ctx *context.Context) {
distribution := ctx.Params("distribution")
url := fmt.Sprintf("%sapi/packages/%s/rpm", setting.AppURL, ctx.Package.Owner.Name)

ctx.PlainText(http.StatusOK, `[gitea-`+ctx.Package.Owner.LowerName+`]
name=`+ctx.Package.Owner.Name+` - `+setting.AppName+`
baseurl=`+url+`
ctx.PlainText(http.StatusOK, `[gitea-`+ctx.Package.Owner.LowerName+`-`+distribution+`]
name=`+ctx.Package.Owner.Name+` - `+setting.AppName+` - `+distribution+`
baseurl=`+url+`/`+distribution+`
enabled=1
gpgcheck=1
gpgkey=`+url+`/repository.key`)
Expand Down Expand Up @@ -69,7 +70,8 @@ func GetRepositoryFile(ctx *context.Context) {
ctx,
pv,
&packages_service.PackageFileInfo{
Filename: ctx.Params("filename"),
Filename: ctx.Params("filename"),
CompositeKey: ctx.Params("distribution"),
},
)
if err != nil {
Expand Down Expand Up @@ -121,7 +123,7 @@ func UploadPackageFile(ctx *context.Context) {
apiError(ctx, http.StatusInternalServerError, err)
return
}

distribution := ctx.Params("distribution")
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
&packages_service.PackageCreationInfo{
PackageInfo: packages_service.PackageInfo{
Expand All @@ -135,13 +137,16 @@ func UploadPackageFile(ctx *context.Context) {
},
&packages_service.PackageFileCreationInfo{
PackageFileInfo: packages_service.PackageFileInfo{
Filename: fmt.Sprintf("%s-%s.%s.rpm", pck.Name, pck.Version, pck.FileMetadata.Architecture),
Filename: fmt.Sprintf("%s-%s.%s.rpm", pck.Name, pck.Version, pck.FileMetadata.Architecture),
CompositeKey: distribution,
},
Creator: ctx.Doer,
Data: buf,
IsLead: true,
Properties: map[string]string{
rpm_module.PropertyMetadata: string(fileMetadataRaw),
rpm_module.PropertyMetadata: string(fileMetadataRaw),
rpm_module.PropertyDistribution: distribution,
rpm_module.PropertyArchitecture: pck.FileMetadata.Architecture,
},
},
)
Expand All @@ -157,7 +162,7 @@ func UploadPackageFile(ctx *context.Context) {
return
}

if err := rpm_service.BuildRepositoryFiles(ctx, ctx.Package.Owner.ID); err != nil {
if err := rpm_service.BuildRepositoryFiles(ctx, ctx.Package.Owner.ID, distribution); err != nil {
apiError(ctx, http.StatusInternalServerError, err)
return
}
Expand All @@ -168,7 +173,6 @@ func UploadPackageFile(ctx *context.Context) {
func DownloadPackageFile(ctx *context.Context) {
name := ctx.Params("name")
version := ctx.Params("version")

s, u, pf, err := packages_service.GetFileStreamByPackageNameAndVersion(
ctx,
&packages_service.PackageInfo{
Expand All @@ -178,7 +182,8 @@ func DownloadPackageFile(ctx *context.Context) {
Version: version,
},
&packages_service.PackageFileInfo{
Filename: fmt.Sprintf("%s-%s.%s.rpm", name, version, ctx.Params("architecture")),
Filename: fmt.Sprintf("%s-%s.%s.rpm", name, version, ctx.Params("architecture")),
CompositeKey: ctx.Params("distribution"),
},
)
if err != nil {
Expand All @@ -197,6 +202,7 @@ func DeletePackageFile(webctx *context.Context) {
name := webctx.Params("name")
version := webctx.Params("version")
architecture := webctx.Params("architecture")
distribution := webctx.Params("distribution")

var pd *packages_model.PackageDescriptor

Expand All @@ -210,7 +216,7 @@ func DeletePackageFile(webctx *context.Context) {
ctx,
pv.ID,
fmt.Sprintf("%s-%s.%s.rpm", name, version, architecture),
packages_model.EmptyFileKey,
distribution,
)
if err != nil {
return err
Expand Down Expand Up @@ -250,7 +256,7 @@ func DeletePackageFile(webctx *context.Context) {
notification.NotifyPackageDelete(webctx, webctx.Doer, pd)
}

if err := rpm_service.BuildRepositoryFiles(webctx, webctx.Package.Owner.ID); err != nil {
if err := rpm_service.BuildRepositoryFiles(webctx, webctx.Package.Owner.ID, distribution); err != nil {
apiError(webctx, http.StatusInternalServerError, err)
return
}
Expand Down
Loading