mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-07-26 13:47:40 +00:00
Fixing tests and fix cleanup.
Signed-off-by: Christoph Fiehe <c.fiehe@eurodata.de>
This commit is contained in:
committed by
André Roth
parent
ac5ecf946d
commit
f8f28e9554
@@ -64,3 +64,4 @@ List of contributors, in chronological order:
|
|||||||
* Golf Hu (https://github.com/hudeng-go)
|
* Golf Hu (https://github.com/hudeng-go)
|
||||||
* Cookie Fei (https://github.com/wuhuang26)
|
* Cookie Fei (https://github.com/wuhuang26)
|
||||||
* Andrey Loukhnov (https://github.com/aol-nnov)
|
* Andrey Loukhnov (https://github.com/aol-nnov)
|
||||||
|
* Christoph Fiehe (https://github.com/cfiehe)
|
||||||
|
|||||||
+164
-44
@@ -30,9 +30,9 @@ type signingParams struct {
|
|||||||
|
|
||||||
type sourceParams struct {
|
type sourceParams struct {
|
||||||
// Name of the component
|
// Name of the component
|
||||||
Component string `binding:"required" json:"Component" example:"contrib"`
|
Component string `binding:"required" json:"Component"`
|
||||||
// Name of the local repository/snapshot
|
// Name of the local repository/snapshot
|
||||||
Name string `binding:"required" json:"Name" example:"snap1"`
|
Name string `binding:"required" json:"Name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func getSigner(options *signingParams) (pgp.Signer, error) {
|
func getSigner(options *signingParams) (pgp.Signer, error) {
|
||||||
@@ -77,7 +77,7 @@ func apiPublishList(c *gin.Context) {
|
|||||||
collectionFactory := context.NewCollectionFactory()
|
collectionFactory := context.NewCollectionFactory()
|
||||||
collection := collectionFactory.PublishedRepoCollection()
|
collection := collectionFactory.PublishedRepoCollection()
|
||||||
|
|
||||||
result := make([]*deb.PublishedRepo, 0, collection.Len())
|
repos := make([]*deb.PublishedRepo, 0, collection.Len())
|
||||||
|
|
||||||
err := collection.ForEach(func(repo *deb.PublishedRepo) error {
|
err := collection.ForEach(func(repo *deb.PublishedRepo) error {
|
||||||
err := collection.LoadShallow(repo, collectionFactory)
|
err := collection.LoadShallow(repo, collectionFactory)
|
||||||
@@ -85,7 +85,7 @@ func apiPublishList(c *gin.Context) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
result = append(result, repo)
|
repos = append(repos, repo)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
@@ -95,17 +95,16 @@ func apiPublishList(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, result)
|
c.JSON(http.StatusOK, repos)
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Summary Show published repository
|
// @Summary Show published repository
|
||||||
// @Description **Get published repository by name**
|
// @Description **Get details of a published repository**
|
||||||
// @Tags Publish
|
// @Tags Publish
|
||||||
// @Consume json
|
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Param prefix path string true "publishing prefix, use `:.` instead of `.` because it is ambigious in URLs"
|
// @Param prefix path string true "publishing prefix, use `:.` instead of `.` because it is ambigious in URLs"
|
||||||
// @Param distribution path string true "distribution name"
|
// @Param distribution path string true "distribution name"
|
||||||
// @Success 200 {object} deb.RemoteRepo
|
// @Success 200 {object} deb.PublishedRepo
|
||||||
// @Failure 404 {object} Error "Published repository not found"
|
// @Failure 404 {object} Error "Published repository not found"
|
||||||
// @Failure 500 {object} Error "Internal Error"
|
// @Failure 500 {object} Error "Internal Error"
|
||||||
// @Router /api/publish/{prefix}/{distribution} [get]
|
// @Router /api/publish/{prefix}/{distribution} [get]
|
||||||
@@ -165,14 +164,15 @@ type publishedRepoCreateParams struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @Summary Create published repository
|
// @Summary Create published repository
|
||||||
// @Description Publish local repository or snapshot under specified prefix. Storage might be passed in prefix as well, e.g. `s3:packages/`.
|
// @Description **Publish local repository or snapshot under specified prefix**
|
||||||
// @Description To supply empty prefix, just remove last part (`POST /api/publish`).
|
// @Description
|
||||||
|
// @Description Storage might be passed in prefix as well, e.g. `s3:packages/`. To supply empty prefix, just remove last part (`POST /api/publish`).
|
||||||
// @Tags Publish
|
// @Tags Publish
|
||||||
// @Param prefix path string true "publishing prefix"
|
// @Param prefix path string true "publishing prefix"
|
||||||
// @Consume json
|
// @Consume json
|
||||||
// @Param request body publishedRepoCreateParams true "Parameters"
|
// @Param request body publishedRepoCreateParams true "Parameters"
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Success 200 {object} deb.RemoteRepo
|
// @Success 200 {object} deb.PublishedRepo
|
||||||
// @Failure 400 {object} Error "Bad Request"
|
// @Failure 400 {object} Error "Bad Request"
|
||||||
// @Failure 404 {object} Error "Source not found"
|
// @Failure 404 {object} Error "Source not found"
|
||||||
// @Failure 500 {object} Error "Internal Error"
|
// @Failure 500 {object} Error "Internal Error"
|
||||||
@@ -337,14 +337,40 @@ func apiPublishRepoOrSnapshot(c *gin.Context) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type publishedRepoUpdateSwitchParams struct {
|
||||||
|
// when publishing, overwrite files in pool/ directory without notice
|
||||||
|
ForceOverwrite bool ` json:"ForceOverwrite"`
|
||||||
|
// GPG options
|
||||||
|
Signing signingParams ` json:"Signing"`
|
||||||
|
// Don't generate contents indexes
|
||||||
|
SkipContents *bool ` json:"SkipContents"`
|
||||||
|
// Skip bz2 compression for index files
|
||||||
|
SkipBz2 *bool ` json:"SkipBz2"`
|
||||||
|
// Don't remove unreferenced files in prefix/component
|
||||||
|
SkipCleanup *bool ` json:"SkipCleanup"`
|
||||||
|
// only when updating published snapshots, list of objects 'Component/Name'
|
||||||
|
Snapshots []sourceParams `binding:"required" json:"Snapshots"`
|
||||||
|
// Provide index files by hash
|
||||||
|
AcquireByHash *bool ` json:"AcquireByHash"`
|
||||||
|
// Enable multiple packages with the same filename in different distributions
|
||||||
|
MultiDist *bool ` json:"MultiDist"`
|
||||||
|
}
|
||||||
|
|
||||||
// @Summary Update published repository
|
// @Summary Update published repository
|
||||||
// @Description Update a published repository.
|
// @Description **Update a published local repository or switch published snapshot**
|
||||||
|
// @Description
|
||||||
|
// @Description API action depends on published repository contents:
|
||||||
|
// @Description * if local repository has been published, published repository would be updated to match local repository contents
|
||||||
|
// @Description * if snapshots have been been published, it is possible to switch each component to new snapshot
|
||||||
// @Tags Publish
|
// @Tags Publish
|
||||||
// @Accept json
|
// @Accept json
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Param prefix path string true "publishing prefix"
|
// @Param prefix path string true "publishing prefix"
|
||||||
// @Param distribution path string true "distribution name"
|
// @Param distribution path string true "distribution name"
|
||||||
// @Success 200 {object} deb.RemoteRepo
|
// @Consume json
|
||||||
|
// @Param request body publishedRepoUpdateSwitchParams true "Parameters"
|
||||||
|
// @Produce json
|
||||||
|
// @Success 200 {object} deb.PublishedRepo
|
||||||
// @Failure 400 {object} Error "Bad Request"
|
// @Failure 400 {object} Error "Bad Request"
|
||||||
// @Failure 404 {object} Error "Published repository or source not found"
|
// @Failure 404 {object} Error "Published repository or source not found"
|
||||||
// @Failure 500 {object} Error "Internal Error"
|
// @Failure 500 {object} Error "Internal Error"
|
||||||
@@ -354,20 +380,7 @@ func apiPublishUpdateSwitch(c *gin.Context) {
|
|||||||
storage, prefix := deb.ParsePrefix(param)
|
storage, prefix := deb.ParsePrefix(param)
|
||||||
distribution := slashEscape(c.Params.ByName("distribution"))
|
distribution := slashEscape(c.Params.ByName("distribution"))
|
||||||
|
|
||||||
var b struct {
|
var b publishedRepoUpdateSwitchParams
|
||||||
ForceOverwrite bool
|
|
||||||
Signing signingParams
|
|
||||||
SkipContents *bool
|
|
||||||
SkipBz2 *bool
|
|
||||||
SkipCleanup *bool
|
|
||||||
Snapshots []struct {
|
|
||||||
Component string `binding:"required"`
|
|
||||||
Name string `binding:"required"`
|
|
||||||
}
|
|
||||||
AcquireByHash *bool
|
|
||||||
MultiDist *bool
|
|
||||||
}
|
|
||||||
|
|
||||||
if c.Bind(&b) != nil {
|
if c.Bind(&b) != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -393,7 +406,7 @@ func apiPublishUpdateSwitch(c *gin.Context) {
|
|||||||
|
|
||||||
if published.SourceKind == deb.SourceLocalRepo {
|
if published.SourceKind == deb.SourceLocalRepo {
|
||||||
if len(b.Snapshots) > 0 {
|
if len(b.Snapshots) > 0 {
|
||||||
AbortWithJSONError(c, 400, fmt.Errorf("snapshots shouldn't be given when updating local repo"))
|
AbortWithJSONError(c, http.StatusBadRequest, fmt.Errorf("snapshots shouldn't be given when updating local repo"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
updatedComponents = published.Components()
|
updatedComponents = published.Components()
|
||||||
@@ -483,8 +496,9 @@ func apiPublishUpdateSwitch(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if b.SkipCleanup == nil || !*b.SkipCleanup {
|
if b.SkipCleanup == nil || !*b.SkipCleanup {
|
||||||
err = collection.CleanupPrefixComponentFiles(context, published, result.AddedComponents(), result.UpdatedComponents(), result.RemovedComponents(),
|
cleanComponents := make([]string, 0, len(result.UpdatedSources)+len(result.RemovedSources))
|
||||||
collectionFactory, out)
|
cleanComponents = append(append(cleanComponents, result.UpdatedComponents()...), result.RemovedComponents()...)
|
||||||
|
err = collection.CleanupPrefixComponentFiles(context, published, cleanComponents, collectionFactory, out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &task.ProcessReturnValue{Code: http.StatusInternalServerError, Value: nil}, fmt.Errorf("unable to update: %s", err)
|
return &task.ProcessReturnValue{Code: http.StatusInternalServerError, Value: nil}, fmt.Errorf("unable to update: %s", err)
|
||||||
}
|
}
|
||||||
@@ -495,7 +509,9 @@ func apiPublishUpdateSwitch(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @Summary Delete published repository
|
// @Summary Delete published repository
|
||||||
// @Description Delete a published repository.
|
// @Description **Delete a published repository**
|
||||||
|
// @Description
|
||||||
|
// @Description Delete published repository, clean up files in published directory.
|
||||||
// @Tags Publish
|
// @Tags Publish
|
||||||
// @Accept json
|
// @Accept json
|
||||||
// @Produce json
|
// @Produce json
|
||||||
@@ -503,7 +519,7 @@ func apiPublishUpdateSwitch(c *gin.Context) {
|
|||||||
// @Param distribution path string true "distribution name"
|
// @Param distribution path string true "distribution name"
|
||||||
// @Param force query int true "force: 1 to enable"
|
// @Param force query int true "force: 1 to enable"
|
||||||
// @Param skipCleanup query int true "skipCleanup: 1 to enable"
|
// @Param skipCleanup query int true "skipCleanup: 1 to enable"
|
||||||
// @Success 200 {object} task.ProcessReturnValue
|
// @Success 200
|
||||||
// @Failure 400 {object} Error "Bad Request"
|
// @Failure 400 {object} Error "Bad Request"
|
||||||
// @Failure 404 {object} Error "Published repository not found"
|
// @Failure 404 {object} Error "Published repository not found"
|
||||||
// @Failure 500 {object} Error "Internal Error"
|
// @Failure 500 {object} Error "Internal Error"
|
||||||
@@ -538,6 +554,16 @@ func apiPublishDrop(c *gin.Context) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Summary Add staged source
|
||||||
|
// @Description **Create and add a staged source**
|
||||||
|
// @Tags Publish
|
||||||
|
// @Param prefix path string true "publishing prefix"
|
||||||
|
// @Param distribution path string true "distribution name"
|
||||||
|
// @Produce json
|
||||||
|
// @Success 200 {object} sourceParams
|
||||||
|
// @Failure 400 {object} Error "Bad Request"
|
||||||
|
// @Failure 404 {object} Error "Published repository not found"
|
||||||
|
// @Failure 500 {object} Error "Internal Error"
|
||||||
// @Router /api/publish/{prefix}/{distribution}/sources [post]
|
// @Router /api/publish/{prefix}/{distribution}/sources [post]
|
||||||
func apiPublishSourcesCreate(c *gin.Context) {
|
func apiPublishSourcesCreate(c *gin.Context) {
|
||||||
var (
|
var (
|
||||||
@@ -576,7 +602,7 @@ func apiPublishSourcesCreate(c *gin.Context) {
|
|||||||
|
|
||||||
_, exists := sources[component]
|
_, exists := sources[component]
|
||||||
if exists {
|
if exists {
|
||||||
AbortWithJSONError(c, http.StatusBadRequest, fmt.Errorf("unable to create: Component %q already exists", component))
|
AbortWithJSONError(c, http.StatusBadRequest, fmt.Errorf("unable to create: Component '%s' already exists", component))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -594,6 +620,16 @@ func apiPublishSourcesCreate(c *gin.Context) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Summary Get staged sources
|
||||||
|
// @Description **Get the staged source list**
|
||||||
|
// @Tags Publish
|
||||||
|
// @Param prefix path string true "publishing prefix"
|
||||||
|
// @Param distribution path string true "distribution name"
|
||||||
|
// @Produce json
|
||||||
|
// @Success 200 {array} sourceParams
|
||||||
|
// @Failure 400 {object} Error "Bad Request"
|
||||||
|
// @Failure 404 {object} Error "Published repository not found or no source changes exist"
|
||||||
|
// @Failure 500 {object} Error "Internal Error"
|
||||||
// @Router /api/publish/{prefix}/{distribution}/sources [get]
|
// @Router /api/publish/{prefix}/{distribution}/sources [get]
|
||||||
func apiPublishSourcesList(c *gin.Context) {
|
func apiPublishSourcesList(c *gin.Context) {
|
||||||
param := slashEscape(c.Params.ByName("prefix"))
|
param := slashEscape(c.Params.ByName("prefix"))
|
||||||
@@ -624,6 +660,18 @@ func apiPublishSourcesList(c *gin.Context) {
|
|||||||
c.JSON(http.StatusOK, revision.SourceList())
|
c.JSON(http.StatusOK, revision.SourceList())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Summary Set staged sources
|
||||||
|
// @Description **Set the staged source list**
|
||||||
|
// @Tags Publish
|
||||||
|
// @Param prefix path string true "publishing prefix"
|
||||||
|
// @Param distribution path string true "distribution name"
|
||||||
|
// @Consume json
|
||||||
|
// @Param request body publishedRepoUpdateParams true "Parameters"
|
||||||
|
// @Produce json
|
||||||
|
// @Success 200 {array} sourceParams
|
||||||
|
// @Failure 400 {object} Error "Bad Request"
|
||||||
|
// @Failure 404 {object} Error "Published repository not found"
|
||||||
|
// @Failure 500 {object} Error "Internal Error"
|
||||||
// @Router /api/publish/{prefix}/{distribution}/sources [put]
|
// @Router /api/publish/{prefix}/{distribution}/sources [put]
|
||||||
func apiPublishSourcesUpdate(c *gin.Context) {
|
func apiPublishSourcesUpdate(c *gin.Context) {
|
||||||
var (
|
var (
|
||||||
@@ -640,13 +688,13 @@ func apiPublishSourcesUpdate(c *gin.Context) {
|
|||||||
|
|
||||||
published, err := collection.ByStoragePrefixDistribution(storage, prefix, distribution)
|
published, err := collection.ByStoragePrefixDistribution(storage, prefix, distribution)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
AbortWithJSONError(c, http.StatusNotFound, fmt.Errorf("unable to show: %s", err))
|
AbortWithJSONError(c, http.StatusNotFound, fmt.Errorf("unable to update: %s", err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = collection.LoadComplete(published, collectionFactory)
|
err = collection.LoadComplete(published, collectionFactory)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
AbortWithJSONError(c, http.StatusInternalServerError, fmt.Errorf("unable to show: %s", err))
|
AbortWithJSONError(c, http.StatusInternalServerError, fmt.Errorf("unable to update: %s", err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -672,10 +720,22 @@ func apiPublishSourcesUpdate(c *gin.Context) {
|
|||||||
return &task.ProcessReturnValue{Code: http.StatusInternalServerError, Value: nil}, fmt.Errorf("unable to save to DB: %s", err)
|
return &task.ProcessReturnValue{Code: http.StatusInternalServerError, Value: nil}, fmt.Errorf("unable to save to DB: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &task.ProcessReturnValue{Code: http.StatusOK, Value: published}, nil
|
return &task.ProcessReturnValue{Code: http.StatusOK, Value: revision.SourceList()}, nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Summary Delete staged sources
|
||||||
|
// @Description **Delete the staged source list**
|
||||||
|
// @Description
|
||||||
|
// @Description Delete staged sources and keep existing sources of published repository.
|
||||||
|
// @Tags Publish
|
||||||
|
// @Param prefix path string true "publishing prefix"
|
||||||
|
// @Param distribution path string true "distribution name"
|
||||||
|
// @Produce json
|
||||||
|
// @Success 200
|
||||||
|
// @Failure 400 {object} Error "Bad Request"
|
||||||
|
// @Failure 404 {object} Error "Published repository not found"
|
||||||
|
// @Failure 500 {object} Error "Internal Error"
|
||||||
// @Router /api/publish/{prefix}/{distribution}/sources [delete]
|
// @Router /api/publish/{prefix}/{distribution}/sources [delete]
|
||||||
func apiPublishSourcesDelete(c *gin.Context) {
|
func apiPublishSourcesDelete(c *gin.Context) {
|
||||||
param := slashEscape(c.Params.ByName("prefix"))
|
param := slashEscape(c.Params.ByName("prefix"))
|
||||||
@@ -707,10 +767,21 @@ func apiPublishSourcesDelete(c *gin.Context) {
|
|||||||
return &task.ProcessReturnValue{Code: http.StatusInternalServerError, Value: nil}, fmt.Errorf("unable to save to DB: %s", err)
|
return &task.ProcessReturnValue{Code: http.StatusInternalServerError, Value: nil}, fmt.Errorf("unable to save to DB: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &task.ProcessReturnValue{Code: http.StatusOK, Value: published}, nil
|
return &task.ProcessReturnValue{Code: http.StatusOK, Value: gin.H{}}, nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Summary Update staged source
|
||||||
|
// @Description **Update the staged source of a component**
|
||||||
|
// @Tags Publish
|
||||||
|
// @Param prefix path string true "publishing prefix"
|
||||||
|
// @Param distribution path string true "distribution name"
|
||||||
|
// @Param component path string true "component name"
|
||||||
|
// @Produce json
|
||||||
|
// @Success 200
|
||||||
|
// @Failure 400 {object} Error "Bad Request"
|
||||||
|
// @Failure 404 {object} Error "Published repository/component not found"
|
||||||
|
// @Failure 500 {object} Error "Internal Error"
|
||||||
// @Router /api/publish/{prefix}/{distribution}/sources/{component} [put]
|
// @Router /api/publish/{prefix}/{distribution}/sources/{component} [put]
|
||||||
func apiPublishSourceUpdate(c *gin.Context) {
|
func apiPublishSourceUpdate(c *gin.Context) {
|
||||||
var (
|
var (
|
||||||
@@ -743,7 +814,7 @@ func apiPublishSourceUpdate(c *gin.Context) {
|
|||||||
|
|
||||||
_, exists := sources[component]
|
_, exists := sources[component]
|
||||||
if !exists {
|
if !exists {
|
||||||
AbortWithJSONError(c, http.StatusNotFound, fmt.Errorf("unable to update: Component %q does not exist", component))
|
AbortWithJSONError(c, http.StatusNotFound, fmt.Errorf("unable to update: Component '%s' does not exist", component))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -770,10 +841,21 @@ func apiPublishSourceUpdate(c *gin.Context) {
|
|||||||
return &task.ProcessReturnValue{Code: http.StatusInternalServerError, Value: nil}, fmt.Errorf("unable to save to DB: %s", err)
|
return &task.ProcessReturnValue{Code: http.StatusInternalServerError, Value: nil}, fmt.Errorf("unable to save to DB: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &task.ProcessReturnValue{Code: http.StatusOK, Value: published}, nil
|
return &task.ProcessReturnValue{Code: http.StatusOK, Value: gin.H{}}, nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Summary Delete staged source
|
||||||
|
// @Description **Delete the staged source**
|
||||||
|
// @Tags Publish
|
||||||
|
// @Param prefix path string true "publishing prefix"
|
||||||
|
// @Param distribution path string true "distribution name"
|
||||||
|
// @Param component path string true "component name"
|
||||||
|
// @Produce json
|
||||||
|
// @Success 200
|
||||||
|
// @Failure 400 {object} Error "Bad Request"
|
||||||
|
// @Failure 404 {object} Error "Published repository not found"
|
||||||
|
// @Failure 500 {object} Error "Internal Error"
|
||||||
// @Router /api/publish/{prefix}/{distribution}/sources/{component} [delete]
|
// @Router /api/publish/{prefix}/{distribution}/sources/{component} [delete]
|
||||||
func apiPublishSourceDelete(c *gin.Context) {
|
func apiPublishSourceDelete(c *gin.Context) {
|
||||||
var err error
|
var err error
|
||||||
@@ -788,19 +870,25 @@ func apiPublishSourceDelete(c *gin.Context) {
|
|||||||
|
|
||||||
published, err := collection.ByStoragePrefixDistribution(storage, prefix, distribution)
|
published, err := collection.ByStoragePrefixDistribution(storage, prefix, distribution)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
AbortWithJSONError(c, http.StatusNotFound, fmt.Errorf("unable to show: %s", err))
|
AbortWithJSONError(c, http.StatusNotFound, fmt.Errorf("unable to delete: %s", err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = collection.LoadComplete(published, collectionFactory)
|
err = collection.LoadComplete(published, collectionFactory)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
AbortWithJSONError(c, http.StatusInternalServerError, fmt.Errorf("unable to show: %s", err))
|
AbortWithJSONError(c, http.StatusInternalServerError, fmt.Errorf("unable to delete: %s", err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
revision := published.ObtainRevision()
|
revision := published.ObtainRevision()
|
||||||
sources := revision.Sources
|
sources := revision.Sources
|
||||||
|
|
||||||
|
_, exists := sources[component]
|
||||||
|
if !exists {
|
||||||
|
AbortWithJSONError(c, http.StatusNotFound, fmt.Errorf("unable to delete: Component '%s' does not exist", component))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
delete(sources, component)
|
delete(sources, component)
|
||||||
|
|
||||||
resources := []string{string(published.Key())}
|
resources := []string{string(published.Key())}
|
||||||
@@ -811,10 +899,41 @@ func apiPublishSourceDelete(c *gin.Context) {
|
|||||||
return &task.ProcessReturnValue{Code: http.StatusInternalServerError, Value: nil}, fmt.Errorf("unable to save to DB: %s", err)
|
return &task.ProcessReturnValue{Code: http.StatusInternalServerError, Value: nil}, fmt.Errorf("unable to save to DB: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &task.ProcessReturnValue{Code: http.StatusOK, Value: published}, nil
|
return &task.ProcessReturnValue{Code: http.StatusOK, Value: gin.H{}}, nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type publishedRepoUpdateParams struct {
|
||||||
|
// when publishing, overwrite files in pool/ directory without notice
|
||||||
|
ForceOverwrite bool ` json:"ForceOverwrite"`
|
||||||
|
// GPG options
|
||||||
|
Signing signingParams ` json:"Signing"`
|
||||||
|
// Don't generate contents indexes
|
||||||
|
SkipContents *bool ` json:"SkipContents"`
|
||||||
|
// Skip bz2 compression for index files
|
||||||
|
SkipBz2 *bool ` json:"SkipBz2"`
|
||||||
|
// Don't remove unreferenced files in prefix/component
|
||||||
|
SkipCleanup *bool ` json:"SkipCleanup"`
|
||||||
|
// Provide index files by hash
|
||||||
|
AcquireByHash *bool ` json:"AcquireByHash"`
|
||||||
|
// Enable multiple packages with the same filename in different distributions
|
||||||
|
MultiDist *bool ` json:"MultiDist"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Summary Update content of published repository
|
||||||
|
// @Description **Update the content of a published repository**
|
||||||
|
// @Description
|
||||||
|
// @Description Replace the sources of the published repository (if available) and (re-)publish new content.
|
||||||
|
// @Tags Publish
|
||||||
|
// @Param prefix path string true "publishing prefix"
|
||||||
|
// @Param distribution path string true "distribution name"
|
||||||
|
// @Consume json
|
||||||
|
// @Param request body publishedRepoUpdateParams true "Parameters"
|
||||||
|
// @Produce json
|
||||||
|
// @Success 200 {object} deb.PublishedRepo
|
||||||
|
// @Failure 400 {object} Error "Bad Request"
|
||||||
|
// @Failure 404 {object} Error "Published repository/component not found"
|
||||||
|
// @Failure 500 {object} Error "Internal Error"
|
||||||
// @Router /api/publish/{prefix}/{distribution}/update [post]
|
// @Router /api/publish/{prefix}/{distribution}/update [post]
|
||||||
func apiPublishUpdate(c *gin.Context) {
|
func apiPublishUpdate(c *gin.Context) {
|
||||||
param := slashEscape(c.Params.ByName("prefix"))
|
param := slashEscape(c.Params.ByName("prefix"))
|
||||||
@@ -891,8 +1010,9 @@ func apiPublishUpdate(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if b.SkipCleanup == nil || !*b.SkipCleanup {
|
if b.SkipCleanup == nil || !*b.SkipCleanup {
|
||||||
err = collection.CleanupPrefixComponentFiles(context, published,
|
cleanComponents := make([]string, 0, len(result.UpdatedSources)+len(result.RemovedSources))
|
||||||
result.AddedComponents(), result.UpdatedComponents(), result.RemovedComponents(), collectionFactory, out)
|
cleanComponents = append(append(cleanComponents, result.UpdatedComponents()...), result.RemovedComponents()...)
|
||||||
|
err = collection.CleanupPrefixComponentFiles(context, published, cleanComponents, collectionFactory, out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &task.ProcessReturnValue{Code: http.StatusInternalServerError, Value: nil}, fmt.Errorf("unable to update: %s", err)
|
return &task.ProcessReturnValue{Code: http.StatusInternalServerError, Value: nil}, fmt.Errorf("unable to update: %s", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ func aptlyMirrorUpdate(cmd *commander.Command, args []string) error {
|
|||||||
return fmt.Errorf("unable to update: %s", err)
|
return fmt.Errorf("unable to update: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
context.Progress().Printf("\nMirror `%s` has been successfully updated.\n", repo.Name)
|
context.Progress().Printf("\nMirror `%s` has been updated successfully.\n", repo.Name)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,9 +44,9 @@ func aptlyPublishSourceAdd(cmd *commander.Command, args []string) error {
|
|||||||
name := names[i]
|
name := names[i]
|
||||||
_, exists := sources[component]
|
_, exists := sources[component]
|
||||||
if exists {
|
if exists {
|
||||||
return fmt.Errorf("unable to add: component %q has already been added", component)
|
return fmt.Errorf("unable to add: component '%s' has already been added", component)
|
||||||
}
|
}
|
||||||
context.Progress().Printf("Adding component %q with source %q [%s]...\n", component, name, published.SourceKind)
|
context.Progress().Printf("Adding component '%s' with source '%s' [%s]...\n", component, name, published.SourceKind)
|
||||||
|
|
||||||
sources[component] = names[i]
|
sources[component] = names[i]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,9 +42,9 @@ func aptlyPublishSourceRemove(cmd *commander.Command, args []string) error {
|
|||||||
for _, component := range components {
|
for _, component := range components {
|
||||||
name, exists := sources[component]
|
name, exists := sources[component]
|
||||||
if !exists {
|
if !exists {
|
||||||
return fmt.Errorf("unable to remove: component %q does not exist", component)
|
return fmt.Errorf("unable to remove: component '%s' does not exist", component)
|
||||||
}
|
}
|
||||||
context.Progress().Printf("Removing component %q with source %q [%s]...\n", component, name, published.SourceKind)
|
context.Progress().Printf("Removing component '%s' with source '%s' [%s]...\n", component, name, published.SourceKind)
|
||||||
|
|
||||||
delete(sources, component)
|
delete(sources, component)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,9 +44,9 @@ func aptlyPublishSourceUpdate(cmd *commander.Command, args []string) error {
|
|||||||
name := names[i]
|
name := names[i]
|
||||||
_, exists := sources[component]
|
_, exists := sources[component]
|
||||||
if !exists {
|
if !exists {
|
||||||
return fmt.Errorf("unable to update: component %q does not exist", component)
|
return fmt.Errorf("unable to update: component '%s' does not exist", component)
|
||||||
}
|
}
|
||||||
context.Progress().Printf("Updating component %q with source %q [%s]...\n", component, name, published.SourceKind)
|
context.Progress().Printf("Updating component '%s' with source '%s' [%s]...\n", component, name, published.SourceKind)
|
||||||
|
|
||||||
sources[component] = name
|
sources[component] = name
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,8 +115,7 @@ func aptlyPublishSwitch(cmd *commander.Command, args []string) error {
|
|||||||
|
|
||||||
skipCleanup := context.Flags().Lookup("skip-cleanup").Value.Get().(bool)
|
skipCleanup := context.Flags().Lookup("skip-cleanup").Value.Get().(bool)
|
||||||
if !skipCleanup {
|
if !skipCleanup {
|
||||||
err = collectionFactory.PublishedRepoCollection().CleanupPrefixComponentFiles(context, published,
|
err = collectionFactory.PublishedRepoCollection().CleanupPrefixComponentFiles(context, published, components, collectionFactory, context.Progress())
|
||||||
[]string{}, components, []string{}, collectionFactory, context.Progress())
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to switch: %s", err)
|
return fmt.Errorf("unable to switch: %s", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,14 +76,15 @@ func aptlyPublishUpdate(cmd *commander.Command, args []string) error {
|
|||||||
|
|
||||||
skipCleanup := context.Flags().Lookup("skip-cleanup").Value.Get().(bool)
|
skipCleanup := context.Flags().Lookup("skip-cleanup").Value.Get().(bool)
|
||||||
if !skipCleanup {
|
if !skipCleanup {
|
||||||
err = collectionFactory.PublishedRepoCollection().CleanupPrefixComponentFiles(context, published,
|
cleanComponents := make([]string, 0, len(result.UpdatedSources)+len(result.RemovedSources))
|
||||||
result.AddedComponents(), result.UpdatedComponents(), result.RemovedComponents(), collectionFactory, context.Progress())
|
cleanComponents = append(append(cleanComponents, result.UpdatedComponents()...), result.RemovedComponents()...)
|
||||||
|
err = collectionFactory.PublishedRepoCollection().CleanupPrefixComponentFiles(context, published, cleanComponents, collectionFactory, context.Progress())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to update: %s", err)
|
return fmt.Errorf("unable to update: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
context.Progress().Printf("\nPublished %s repository %s has been successfully updated.\n", published.SourceKind, published.String())
|
context.Progress().Printf("\nPublished %s repository %s has been updated successfully.\n", published.SourceKind, published.String())
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
+82
-29
@@ -1462,73 +1462,127 @@ func (collection *PublishedRepoCollection) listReferencedFilesByComponent(prefix
|
|||||||
|
|
||||||
// CleanupPrefixComponentFiles removes all unreferenced files in published storage under prefix/component pair
|
// CleanupPrefixComponentFiles removes all unreferenced files in published storage under prefix/component pair
|
||||||
func (collection *PublishedRepoCollection) CleanupPrefixComponentFiles(publishedStorageProvider aptly.PublishedStorageProvider,
|
func (collection *PublishedRepoCollection) CleanupPrefixComponentFiles(publishedStorageProvider aptly.PublishedStorageProvider,
|
||||||
published *PublishedRepo, addedComponents, updatedComponents, removedComponents []string,
|
published *PublishedRepo, cleanComponents []string, collectionFactory *CollectionFactory, progress aptly.Progress) error {
|
||||||
collectionFactory *CollectionFactory, progress aptly.Progress) error {
|
|
||||||
|
var err error
|
||||||
|
|
||||||
collection.loadList()
|
collection.loadList()
|
||||||
|
|
||||||
|
storage := published.Storage
|
||||||
prefix := published.Prefix
|
prefix := published.Prefix
|
||||||
distribution := published.Distribution
|
distribution := published.Distribution
|
||||||
multiDist := published.MultiDist
|
|
||||||
|
rootPath := filepath.Join(prefix, "dists", distribution)
|
||||||
publishedStorage := publishedStorageProvider.GetPublishedStorage(published.Storage)
|
publishedStorage := publishedStorageProvider.GetPublishedStorage(published.Storage)
|
||||||
|
|
||||||
components := make([]string, 0, len(addedComponents)+len(updatedComponents)+len(removedComponents))
|
sort.Strings(cleanComponents)
|
||||||
components = append(append(append(components, addedComponents...), updatedComponents...), removedComponents...)
|
publishedComponents := published.Components()
|
||||||
sort.Strings(components)
|
removedComponents := utils.StrSlicesSubstract(cleanComponents, publishedComponents)
|
||||||
|
updatedComponents := utils.StrSlicesSubstract(cleanComponents, removedComponents)
|
||||||
|
|
||||||
|
if progress != nil {
|
||||||
|
progress.Printf("Cleaning up published repository %s/%s...\n", published.StoragePrefix(), distribution)
|
||||||
|
}
|
||||||
|
|
||||||
for _, component := range removedComponents {
|
for _, component := range removedComponents {
|
||||||
if progress != nil {
|
if progress != nil {
|
||||||
progress.Printf("Removing component %q from prefix %q...\n", component, prefix)
|
progress.Printf("Removing component '%s'...\n", component)
|
||||||
}
|
}
|
||||||
|
|
||||||
err := publishedStorage.RemoveDirs(filepath.Join(prefix, "dists", distribution, component), progress)
|
err = publishedStorage.RemoveDirs(filepath.Join(rootPath, component), progress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if multiDist {
|
// Ensure that component does not exist in multi distribution pool
|
||||||
for _, component := range removedComponents {
|
err = publishedStorage.RemoveDirs(filepath.Join(prefix, "pool", distribution, component), nil)
|
||||||
err = publishedStorage.RemoveDirs(filepath.Join(prefix, "pool", distribution, component), progress)
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
referencedFiles := map[string][]string{}
|
||||||
|
|
||||||
|
if published.MultiDist {
|
||||||
|
rootPath = filepath.Join(prefix, "pool", distribution)
|
||||||
|
|
||||||
|
// Get all referenced files by component for determining orphaned pool files.
|
||||||
|
for _, component := range publishedComponents {
|
||||||
|
packageList, err := NewPackageListFromRefList(published.RefList(component), collectionFactory.PackageCollection(), progress)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
packageList.ForEach(func(p *Package) error {
|
||||||
|
poolDir, err := p.PoolDirectory()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, file := range p.Files() {
|
||||||
|
referencedFiles[component] = append(referencedFiles[component], filepath.Join(poolDir, file.Filename))
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
rootPath = filepath.Join(prefix, "pool")
|
||||||
|
|
||||||
|
// In case of a shared component pool directory, we must check, if a component is no longer referenced by any other
|
||||||
|
// published repository within the same prefix.
|
||||||
|
referencedComponents := map[string]struct{}{}
|
||||||
|
for _, p := range collection.list {
|
||||||
|
if p.Prefix == prefix && p.Storage == storage && !p.MultiDist {
|
||||||
|
for _, component := range p.Components() {
|
||||||
|
referencedComponents[component] = struct{}{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove orphaned component pool directories in the prefix.
|
||||||
|
for _, component := range removedComponents {
|
||||||
|
_, exists := referencedComponents[component]
|
||||||
|
if !exists {
|
||||||
|
err := publishedStorage.RemoveDirs(filepath.Join(rootPath, component), progress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get all referenced files by component for determining orphaned pool files.
|
||||||
|
referencedFiles, err = collection.listReferencedFilesByComponent(prefix, publishedComponents, collectionFactory, progress)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
components = make([]string, 0, len(updatedComponents)+len(removedComponents))
|
for _, component := range updatedComponents {
|
||||||
components = append(append(components, addedComponents...), updatedComponents...)
|
|
||||||
|
|
||||||
referencedFiles, err := collection.listReferencedFilesByComponent(prefix, components, collectionFactory, progress)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, component := range components {
|
|
||||||
if progress != nil {
|
if progress != nil {
|
||||||
progress.Printf("Cleaning up component %q in prefix %q...\n", component, prefix)
|
progress.Printf("Cleaning up component '%s'...\n", component)
|
||||||
}
|
}
|
||||||
sort.Strings(referencedFiles[component])
|
sort.Strings(referencedFiles[component])
|
||||||
|
|
||||||
rootPath := filepath.Join(prefix, "pool", component)
|
path := filepath.Join(rootPath, component)
|
||||||
existingFiles, err := publishedStorage.Filelist(rootPath)
|
existingFiles, err := publishedStorage.Filelist(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
sort.Strings(existingFiles)
|
sort.Strings(existingFiles)
|
||||||
|
|
||||||
filesToDelete := utils.StrSlicesSubstract(existingFiles, referencedFiles[component])
|
orphanedFiles := utils.StrSlicesSubstract(existingFiles, referencedFiles[component])
|
||||||
|
|
||||||
for _, file := range filesToDelete {
|
for _, file := range orphanedFiles {
|
||||||
err = publishedStorage.Remove(filepath.Join(rootPath, file))
|
err = publishedStorage.Remove(filepath.Join(path, file))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove removes published repository, cleaning up directories, files
|
// Remove removes published repository, cleaning up directories, files
|
||||||
@@ -1579,8 +1633,7 @@ func (collection *PublishedRepoCollection) Remove(publishedStorageProvider aptly
|
|||||||
nil, collection.list[len(collection.list)-1], collection.list[:len(collection.list)-1]
|
nil, collection.list[len(collection.list)-1], collection.list[:len(collection.list)-1]
|
||||||
|
|
||||||
if !skipCleanup && len(cleanComponents) > 0 {
|
if !skipCleanup && len(cleanComponents) > 0 {
|
||||||
err = collection.CleanupPrefixComponentFiles(publishedStorageProvider, repo, []string{}, cleanComponents, []string{},
|
err = collection.CleanupPrefixComponentFiles(publishedStorageProvider, repo, cleanComponents, collectionFactory, progress)
|
||||||
collectionFactory, progress)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !force {
|
if !force {
|
||||||
return fmt.Errorf("cleanup failed, use -force-drop to override: %s", err)
|
return fmt.Errorf("cleanup failed, use -force-drop to override: %s", err)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package deb
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@@ -359,6 +360,25 @@ func (s *PublishedRepoSuite) TestDistributionComponentGuessing(c *C) {
|
|||||||
c.Check(err, ErrorMatches, "duplicate component name: main")
|
c.Check(err, ErrorMatches, "duplicate component name: main")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *PublishedRepoSuite) TestUpdate(c *C) {
|
||||||
|
revision := s.repo2.ObtainRevision()
|
||||||
|
sources := revision.Sources
|
||||||
|
sources["test"] = "local1"
|
||||||
|
|
||||||
|
result, err := s.repo2.Update(s.factory, nil)
|
||||||
|
c.Assert(err, IsNil)
|
||||||
|
c.Assert(result, NotNil)
|
||||||
|
c.Assert(s.repo2.Revision, IsNil)
|
||||||
|
|
||||||
|
c.Assert(result.AddedSources, DeepEquals, map[string]string{"test": "local1"})
|
||||||
|
c.Assert(result.UpdatedSources, DeepEquals, map[string]string{"main": "local1"})
|
||||||
|
c.Assert(result.RemovedSources, DeepEquals, map[string]string{})
|
||||||
|
|
||||||
|
c.Assert(result.AddedComponents(), DeepEquals, []string{"test"})
|
||||||
|
c.Assert(result.UpdatedComponents(), DeepEquals, []string{"main"})
|
||||||
|
c.Assert(result.RemovedComponents(), DeepEquals, []string{})
|
||||||
|
}
|
||||||
|
|
||||||
func (s *PublishedRepoSuite) TestPublish(c *C) {
|
func (s *PublishedRepoSuite) TestPublish(c *C) {
|
||||||
err := s.repo.Publish(s.packagePool, s.provider, s.factory, &NullSigner{}, nil, false)
|
err := s.repo.Publish(s.packagePool, s.provider, s.factory, &NullSigner{}, nil, false)
|
||||||
c.Assert(err, IsNil)
|
c.Assert(err, IsNil)
|
||||||
@@ -489,6 +509,30 @@ func (s *PublishedRepoSuite) TestEncodeDecode(c *C) {
|
|||||||
c.Assert(repo2, DeepEquals, s.repo2)
|
c.Assert(repo2, DeepEquals, s.repo2)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *PublishedRepoSuite) TestPublishedRepoRevision(c *C) {
|
||||||
|
revision := s.repo2.ObtainRevision()
|
||||||
|
c.Assert(revision, NotNil)
|
||||||
|
|
||||||
|
sources := revision.Sources
|
||||||
|
c.Assert(sources, NotNil)
|
||||||
|
c.Assert(sources, DeepEquals, map[string]string{"main": "local1"})
|
||||||
|
|
||||||
|
sources["test1"] = "snap1"
|
||||||
|
sources["test2"] = "snap2"
|
||||||
|
|
||||||
|
c.Assert(revision.Components(), DeepEquals, []string{"main", "test1", "test2"})
|
||||||
|
c.Assert(revision.SourceNames(), DeepEquals, []string{"local1", "snap1", "snap2"})
|
||||||
|
|
||||||
|
bytes, err := json.Marshal(revision)
|
||||||
|
c.Assert(err, IsNil)
|
||||||
|
|
||||||
|
json_expected := `{"Sources":[{"Component":"main","Name":"local1"},{"Component":"test1","Name":"snap1"},{"Component":"test2","Name":"snap2"}]}`
|
||||||
|
c.Assert(string(bytes), Equals, json_expected)
|
||||||
|
|
||||||
|
c.Assert(s.repo2.DropRevision(), DeepEquals, revision)
|
||||||
|
c.Assert(s.repo2.Revision, IsNil)
|
||||||
|
}
|
||||||
|
|
||||||
type PublishedRepoCollectionSuite struct {
|
type PublishedRepoCollectionSuite struct {
|
||||||
PackageListMixinSuite
|
PackageListMixinSuite
|
||||||
db database.Storage
|
db database.Storage
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/d
|
|||||||
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/rkward-dbgsym_0.7.5-1~bullseyecran.0_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/rkward-dbgsym_0.7.5-1~bullseyecran.0_i386.deb
|
||||||
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/rkward_0.7.5-1~bullseyecran.0_amd64.deb
|
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/rkward_0.7.5-1~bullseyecran.0_amd64.deb
|
||||||
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/rkward_0.7.5-1~bullseyecran.0_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/rkward_0.7.5-1~bullseyecran.0_i386.deb
|
||||||
Mirror `flat-src` has been successfully updated.
|
Mirror `flat-src` has been updated successfully.
|
||||||
Packages filtered: 110 -> 11.
|
Packages filtered: 110 -> 11.
|
||||||
gpgv: using RSA key 7BA040A510E4E66ED3743EC1B8F25A8A73EACF41
|
gpgv: using RSA key 7BA040A510E4E66ED3743EC1B8F25A8A73EACF41
|
||||||
gpgv: Good signature from "Johannes Ranke <johannes.ranke@jrwb.de>"
|
gpgv: Good signature from "Johannes Ranke <johannes.ranke@jrwb.de>"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Downloading: http://repo.aptly.info/system-tests/snapshot.debian.org/archive/deb
|
|||||||
Downloading: http://repo.aptly.info/system-tests/snapshot.debian.org/archive/debian/20220201T025006Z/pool/main/s/sensible-utils/sensible-utils_0.0.9+deb9u1_all.deb
|
Downloading: http://repo.aptly.info/system-tests/snapshot.debian.org/archive/debian/20220201T025006Z/pool/main/s/sensible-utils/sensible-utils_0.0.9+deb9u1_all.deb
|
||||||
Downloading: http://repo.aptly.info/system-tests/snapshot.debian.org/archive/debian/20220201T025006Z/pool/main/s/sysvinit/sysvinit-utils_2.88dsf-59.9_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/snapshot.debian.org/archive/debian/20220201T025006Z/pool/main/s/sysvinit/sysvinit-utils_2.88dsf-59.9_i386.deb
|
||||||
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/snapshot.debian.org/archive/debian/20220201T025006Z/dists/stretch/InRelease
|
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/snapshot.debian.org/archive/debian/20220201T025006Z/dists/stretch/InRelease
|
||||||
Mirror `stretch-main` has been successfully updated.
|
Mirror `stretch-main` has been updated successfully.
|
||||||
Packages filtered: 50604 -> 3.
|
Packages filtered: 50604 -> 3.
|
||||||
Retrying 0 http://repo.aptly.info/system-tests/snapshot.debian.org/archive/debian/20220201T025006Z/dists/stretch/InRelease...
|
Retrying 0 http://repo.aptly.info/system-tests/snapshot.debian.org/archive/debian/20220201T025006Z/dists/stretch/InRelease...
|
||||||
gpgv: issuer "debian-release@lists.debian.org"
|
gpgv: issuer "debian-release@lists.debian.org"
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archi
|
|||||||
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/pool/main/g/gnupg2/scdaemon_2.1.18-8~deb9u4_amd64.deb
|
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/pool/main/g/gnupg2/scdaemon_2.1.18-8~deb9u4_amd64.deb
|
||||||
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/pool/main/g/gnupg2/scdaemon_2.1.18-8~deb9u4_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/pool/main/g/gnupg2/scdaemon_2.1.18-8~deb9u4_i386.deb
|
||||||
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/InRelease
|
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/InRelease
|
||||||
Mirror `stretch` has been successfully updated.
|
Mirror `stretch` has been updated successfully.
|
||||||
Packages filtered: 78248 -> 20.
|
Packages filtered: 78248 -> 20.
|
||||||
Retrying 0 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/InRelease...
|
Retrying 0 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/InRelease...
|
||||||
gpgv: issuer "debian-release@lists.debian.org"
|
gpgv: issuer "debian-release@lists.debian.org"
|
||||||
|
|||||||
@@ -58,4 +58,4 @@ Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/va
|
|||||||
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/pool/wheezy/main/v/varnish/varnish-dbg_3.0.3-1~wheezy_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/pool/wheezy/main/v/varnish/varnish-dbg_3.0.3-1~wheezy_i386.deb
|
||||||
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/pool/wheezy/main/v/varnish/varnish_3.0.3-1~wheezy_amd64.deb
|
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/pool/wheezy/main/v/varnish/varnish_3.0.3-1~wheezy_amd64.deb
|
||||||
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/pool/wheezy/main/v/varnish/varnish_3.0.3-1~wheezy_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/pool/wheezy/main/v/varnish/varnish_3.0.3-1~wheezy_i386.deb
|
||||||
Mirror `varnish` has been successfully updated.
|
Mirror `varnish` has been updated successfully.
|
||||||
@@ -6,4 +6,4 @@ Downloading & parsing package files...
|
|||||||
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/dists/wheezy/Release
|
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/dists/wheezy/Release
|
||||||
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/dists/wheezy/main/binary-amd64/Packages.bz2
|
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/dists/wheezy/main/binary-amd64/Packages.bz2
|
||||||
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/dists/wheezy/main/binary-i386/Packages.bz2
|
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/dists/wheezy/main/binary-i386/Packages.bz2
|
||||||
Mirror `varnish` has been successfully updated.
|
Mirror `varnish` has been updated successfully.
|
||||||
@@ -6,4 +6,4 @@ Downloading & parsing package files...
|
|||||||
Downloading https://dl.bintray.com/smira/deb/Packages.bz2...
|
Downloading https://dl.bintray.com/smira/deb/Packages.bz2...
|
||||||
Downloading https://dl.bintray.com/smira/deb/Release...
|
Downloading https://dl.bintray.com/smira/deb/Release...
|
||||||
Downloading https://dl.bintray.com/smira/deb/libboost-program-options-dev_1.49.0.1_i386.deb...
|
Downloading https://dl.bintray.com/smira/deb/libboost-program-options-dev_1.49.0.1_i386.deb...
|
||||||
Mirror `bintray` has been successfully updated.
|
Mirror `bintray` has been updated successfully.
|
||||||
@@ -6,4 +6,4 @@ Downloading & parsing package files...
|
|||||||
Downloading https://dl.bintray.com/smira/deb/Packages.bz2...
|
Downloading https://dl.bintray.com/smira/deb/Packages.bz2...
|
||||||
Downloading https://dl.bintray.com/smira/deb/Release...
|
Downloading https://dl.bintray.com/smira/deb/Release...
|
||||||
Downloading https://dl.bintray.com/smira/deb/libboost-program-options-dev_1.49.0.1_i386.deb...
|
Downloading https://dl.bintray.com/smira/deb/libboost-program-options-dev_1.49.0.1_i386.deb...
|
||||||
Mirror `bintray` has been successfully updated.
|
Mirror `bintray` has been updated successfully.
|
||||||
@@ -6,5 +6,5 @@ Download queue: 0 items (0 B)
|
|||||||
Downloading & parsing package files...
|
Downloading & parsing package files...
|
||||||
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/Release
|
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/Release
|
||||||
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/main/binary-i386/Packages.gz
|
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/main/binary-i386/Packages.gz
|
||||||
Mirror `stretch` has been successfully updated.
|
Mirror `stretch` has been updated successfully.
|
||||||
Packages filtered: 50604 -> 1.
|
Packages filtered: 50604 -> 1.
|
||||||
@@ -7,5 +7,5 @@ Downloading & parsing package files...
|
|||||||
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/Release
|
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/Release
|
||||||
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/main/binary-i386/Packages.gz
|
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/main/binary-i386/Packages.gz
|
||||||
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/pool/main/b/boost-defaults/libboost-program-options-dev_1.62.0.1_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/pool/main/b/boost-defaults/libboost-program-options-dev_1.62.0.1_i386.deb
|
||||||
Mirror `stretch` has been successfully updated.
|
Mirror `stretch` has been updated successfully.
|
||||||
Packages filtered: 50604 -> 1.
|
Packages filtered: 50604 -> 1.
|
||||||
@@ -12,4 +12,4 @@ Downloading: http://repo.aptly.info/system-tests/packages.pagerduty.com/pdagent/
|
|||||||
Building download queue...
|
Building download queue...
|
||||||
Download queue: 23 items (3.46 MiB)
|
Download queue: 23 items (3.46 MiB)
|
||||||
|
|
||||||
Mirror `pagerduty` has been successfully updated.
|
Mirror `pagerduty` has been updated successfully.
|
||||||
|
|||||||
@@ -58,4 +58,4 @@ Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/va
|
|||||||
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/pool/wheezy/main/v/varnish/varnish-dbg_3.0.3-1~wheezy_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/pool/wheezy/main/v/varnish/varnish-dbg_3.0.3-1~wheezy_i386.deb
|
||||||
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/pool/wheezy/main/v/varnish/varnish_3.0.3-1~wheezy_amd64.deb
|
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/pool/wheezy/main/v/varnish/varnish_3.0.3-1~wheezy_amd64.deb
|
||||||
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/pool/wheezy/main/v/varnish/varnish_3.0.3-1~wheezy_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/pool/wheezy/main/v/varnish/varnish_3.0.3-1~wheezy_i386.deb
|
||||||
Mirror `varnish` has been successfully updated.
|
Mirror `varnish` has been updated successfully.
|
||||||
@@ -8,7 +8,7 @@ Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/d
|
|||||||
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/Packages.bz2
|
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/Packages.bz2
|
||||||
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/r-cran-class_7.3-22-2~bullseyecran.0_amd64.deb
|
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/r-cran-class_7.3-22-2~bullseyecran.0_amd64.deb
|
||||||
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/r-cran-class_7.3-22-2~bullseyecran.0_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/r-cran-class_7.3-22-2~bullseyecran.0_i386.deb
|
||||||
Mirror `flat` has been successfully updated.
|
Mirror `flat` has been updated successfully.
|
||||||
Packages filtered: 89 -> 2.
|
Packages filtered: 89 -> 2.
|
||||||
openpgp: Good signature from "Johannes Ranke <johannes.ranke@jrwb.de>"
|
openpgp: Good signature from "Johannes Ranke <johannes.ranke@jrwb.de>"
|
||||||
openpgp: RSA key ID B8F25A8A73EACF41
|
openpgp: RSA key ID B8F25A8A73EACF41
|
||||||
@@ -11,4 +11,4 @@ Downloading: http://repo.aptly.info/system-tests/packages.pagerduty.com/pdagent/
|
|||||||
Building download queue...
|
Building download queue...
|
||||||
Download queue: 23 items (3.46 MiB)
|
Download queue: 23 items (3.46 MiB)
|
||||||
|
|
||||||
Mirror `pagerduty` has been successfully updated.
|
Mirror `pagerduty` has been updated successfully.
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ Applying filter...
|
|||||||
Building download queue...
|
Building download queue...
|
||||||
Download queue: 0 items (0 B)
|
Download queue: 0 items (0 B)
|
||||||
|
|
||||||
Mirror `libnvidia-container` has been successfully updated.
|
Mirror `libnvidia-container` has been updated successfully.
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archi
|
|||||||
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/non-free/installer-s390x/current/images/SHA256SUMS
|
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/non-free/installer-s390x/current/images/SHA256SUMS
|
||||||
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/InRelease
|
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/InRelease
|
||||||
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/non-free/installer-s390x/current/images/SHA256SUMS
|
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/non-free/installer-s390x/current/images/SHA256SUMS
|
||||||
Mirror `stretch` has been successfully updated.
|
Mirror `stretch` has been updated successfully.
|
||||||
Packages filtered: 49256 -> 1.
|
Packages filtered: 49256 -> 1.
|
||||||
Retrying 0 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/InRelease...
|
Retrying 0 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/InRelease...
|
||||||
Retrying 0 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/non-free/installer-s390x/current/images/SHA256SUMS...
|
Retrying 0 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/non-free/installer-s390x/current/images/SHA256SUMS...
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ Downloading: http://repo.aptly.info/system-tests/us.archive.ubuntu.com/ubuntu/di
|
|||||||
Downloading: http://repo.aptly.info/system-tests/us.archive.ubuntu.com/ubuntu/dists/trusty/restricted/installer-amd64/current/images/SHA256SUMS
|
Downloading: http://repo.aptly.info/system-tests/us.archive.ubuntu.com/ubuntu/dists/trusty/restricted/installer-amd64/current/images/SHA256SUMS
|
||||||
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/us.archive.ubuntu.com/ubuntu/dists/trusty/InRelease
|
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/us.archive.ubuntu.com/ubuntu/dists/trusty/InRelease
|
||||||
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/us.archive.ubuntu.com/ubuntu/dists/trusty/restricted/installer-amd64/current/images/SHA256SUMS
|
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/us.archive.ubuntu.com/ubuntu/dists/trusty/restricted/installer-amd64/current/images/SHA256SUMS
|
||||||
Mirror `trusty` has been successfully updated.
|
Mirror `trusty` has been updated successfully.
|
||||||
Packages filtered: 8616 -> 1.
|
Packages filtered: 8616 -> 1.
|
||||||
Retrying 0 http://repo.aptly.info/system-tests/us.archive.ubuntu.com/ubuntu/dists/trusty/InRelease...
|
Retrying 0 http://repo.aptly.info/system-tests/us.archive.ubuntu.com/ubuntu/dists/trusty/InRelease...
|
||||||
Retrying 0 http://repo.aptly.info/system-tests/us.archive.ubuntu.com/ubuntu/dists/trusty/restricted/installer-amd64/current/images/SHA256SUMS...
|
Retrying 0 http://repo.aptly.info/system-tests/us.archive.ubuntu.com/ubuntu/dists/trusty/restricted/installer-amd64/current/images/SHA256SUMS...
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archi
|
|||||||
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/main/binary-i386/Packages.gz
|
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/main/binary-i386/Packages.gz
|
||||||
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/pool/main/b/boost-defaults/libboost-program-options-dev_1.62.0.1_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/pool/main/b/boost-defaults/libboost-program-options-dev_1.62.0.1_i386.deb
|
||||||
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/pool/main/b/boost-defaults/libboost-program-options-dev_1.62.0.1_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/pool/main/b/boost-defaults/libboost-program-options-dev_1.62.0.1_i386.deb
|
||||||
Mirror `grab` has been successfully updated.
|
Mirror `grab` has been updated successfully.
|
||||||
Packages filtered: 50604 -> 1.
|
Packages filtered: 50604 -> 1.
|
||||||
Retrying 0 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/InRelease
|
Retrying 0 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/InRelease
|
||||||
Retrying 0 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/InRelease
|
Retrying 0 http://repo.aptly.info/system-tests/archive.debian.org/debian-archive/debian/dists/stretch/InRelease
|
||||||
|
|||||||
@@ -18,4 +18,4 @@ Download queue: 1 items (30 B)
|
|||||||
Downloading: ${url}pool/main/a/amanda/amanda-client_3.3.1-3~bpo60+1_amd64.deb
|
Downloading: ${url}pool/main/a/amanda/amanda-client_3.3.1-3~bpo60+1_amd64.deb
|
||||||
WARNING: ${url}pool/main/a/amanda/amanda-client_3.3.1-3~bpo60+1_amd64.deb: sha1 hash mismatch "8d3a014000038725d6daf8771b42a0784253688f" != "66b27417d37e024c46526c2f6d358a754fc552f3"
|
WARNING: ${url}pool/main/a/amanda/amanda-client_3.3.1-3~bpo60+1_amd64.deb: sha1 hash mismatch "8d3a014000038725d6daf8771b42a0784253688f" != "66b27417d37e024c46526c2f6d358a754fc552f3"
|
||||||
|
|
||||||
Mirror `failure` has been successfully updated.
|
Mirror `failure` has been updated successfully.
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/d
|
|||||||
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/rkward-dbgsym_0.7.5-1~bullseyecran.0_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/rkward-dbgsym_0.7.5-1~bullseyecran.0_i386.deb
|
||||||
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/rkward_0.7.5-1~bullseyecran.0_amd64.deb
|
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/rkward_0.7.5-1~bullseyecran.0_amd64.deb
|
||||||
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/rkward_0.7.5-1~bullseyecran.0_i386.deb
|
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/rkward_0.7.5-1~bullseyecran.0_i386.deb
|
||||||
Mirror `flat` has been successfully updated.
|
Mirror `flat` has been updated successfully.
|
||||||
gpgv: using RSA key 7BA040A510E4E66ED3743EC1B8F25A8A73EACF41
|
gpgv: using RSA key 7BA040A510E4E66ED3743EC1B8F25A8A73EACF41
|
||||||
gpgv: Good signature from "Johannes Ranke <johannes.ranke@jrwb.de>"
|
gpgv: Good signature from "Johannes Ranke <johannes.ranke@jrwb.de>"
|
||||||
gpgv: Signature made Thu Nov 2 07:43:52 2023 UTC
|
gpgv: Signature made Thu Nov 2 07:43:52 2023 UTC
|
||||||
@@ -15,4 +15,4 @@ Downloading: http://repo.aptly.info/system-tests/ppa.launchpad.net/gladky-anton/
|
|||||||
Building download queue...
|
Building download queue...
|
||||||
Download queue: 0 items (0 B)
|
Download queue: 0 items (0 B)
|
||||||
|
|
||||||
Mirror `gnuplot-maverick-src` has been successfully updated.
|
Mirror `gnuplot-maverick-src` has been updated successfully.
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/d
|
|||||||
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/survival_3.5-7-1~bullseyecran.0.debian.tar.xz
|
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/survival_3.5-7-1~bullseyecran.0.debian.tar.xz
|
||||||
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/survival_3.5-7-1~bullseyecran.0.dsc
|
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/survival_3.5-7-1~bullseyecran.0.dsc
|
||||||
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/survival_3.5-7.orig.tar.gz
|
Downloading: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/bullseye-cran40/survival_3.5-7.orig.tar.gz
|
||||||
Mirror `flat-src` has been successfully updated.
|
Mirror `flat-src` has been updated successfully.
|
||||||
gpgv: using RSA key 7BA040A510E4E66ED3743EC1B8F25A8A73EACF41
|
gpgv: using RSA key 7BA040A510E4E66ED3743EC1B8F25A8A73EACF41
|
||||||
gpgv: Good signature from "Johannes Ranke <johannes.ranke@jrwb.de>"
|
gpgv: Good signature from "Johannes Ranke <johannes.ranke@jrwb.de>"
|
||||||
gpgv: Signature made Thu Nov 2 07:43:52 2023 UTC
|
gpgv: Signature made Thu Nov 2 07:43:52 2023 UTC
|
||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository azure:test1:./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published local repository azure:test1:./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository azure:test1:./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository azure:test1:./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published snapshot repository azure:test1:./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
Published snapshot repository azure:test1:./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository azure:test1:./sq2...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published repository has been removed successfully.
|
Published repository has been removed successfully.
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
Removing ${HOME}/.aptly/public/dists/sq1...
|
Removing ${HOME}/.aptly/public/dists/sq1...
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./sq1...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published repository has been removed successfully.
|
Published repository has been removed successfully.
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
Removing ${HOME}/.aptly/public/dists/sq2...
|
Removing ${HOME}/.aptly/public/dists/sq2...
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./sq2...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published repository has been removed successfully.
|
Published repository has been removed successfully.
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
Removing ${HOME}/.aptly/public/dists/sq1...
|
Removing ${HOME}/.aptly/public/dists/sq1...
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./sq1...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published repository has been removed successfully.
|
Published repository has been removed successfully.
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
Prefix: .
|
||||||
|
Distribution: wheezy
|
||||||
|
Architectures: i386
|
||||||
|
Sources:
|
||||||
|
main: local-repo [local]
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
Loading packages...
|
||||||
|
Generating metadata files and linking package files...
|
||||||
|
Finalizing metadata files...
|
||||||
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
|
|
||||||
|
Snapshot snap1 has been successfully published.
|
||||||
|
Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing.
|
||||||
|
Now you can add following line to apt sources:
|
||||||
|
deb http://your-server/ maverick main
|
||||||
|
Don't forget to add your GPG key to apt with apt-key.
|
||||||
|
|
||||||
|
You can also use `aptly serve` to publish your repositories over HTTP quickly.
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
Adding component "test" with source "snap2" [snapshot]...
|
Adding component 'test' with source 'snap2' [snapshot]...
|
||||||
|
|
||||||
You can run 'aptly publish update maverick .' to update the content of the published repository.
|
You can run 'aptly publish update maverick .' to update the content of the published repository.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Adding component "test" with source "snap2" [snapshot]...
|
Adding component 'test' with source 'snap2' [snapshot]...
|
||||||
Adding component "other-test" with source "snap3" [snapshot]...
|
Adding component 'other-test' with source 'snap3' [snapshot]...
|
||||||
|
|
||||||
You can run 'aptly publish update maverick .' to update the content of the published repository.
|
You can run 'aptly publish update maverick .' to update the content of the published repository.
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
ERROR: unable to add: component "main" has already been added
|
ERROR: unable to add: component 'main' has already been added
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
Removing component "test" with source "snap2" [snapshot]...
|
Removing component 'test' with source 'snap2' [snapshot]...
|
||||||
|
|
||||||
You can run 'aptly publish update maverick .' to update the content of the published repository.
|
You can run 'aptly publish update maverick .' to update the content of the published repository.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Removing component "test" with source "snap2" [snapshot]...
|
Removing component 'test' with source 'snap2' [snapshot]...
|
||||||
Removing component "other-test" with source "snap3" [snapshot]...
|
Removing component 'other-test' with source 'snap3' [snapshot]...
|
||||||
|
|
||||||
You can run 'aptly publish update maverick .' to update the content of the published repository.
|
You can run 'aptly publish update maverick .' to update the content of the published repository.
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
ERROR: unable to remove: component "not-existent" does not exist
|
ERROR: unable to remove: component 'not-existent' does not exist
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
Updating component "main" with source "snap2" [snapshot]...
|
Updating component 'main' with source 'snap2' [snapshot]...
|
||||||
|
|
||||||
You can run 'aptly publish update maverick .' to update the content of the published repository.
|
You can run 'aptly publish update maverick .' to update the content of the published repository.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Updating component "main" with source "snap2" [snapshot]...
|
Updating component 'main' with source 'snap2' [snapshot]...
|
||||||
Updating component "test" with source "snap3" [snapshot]...
|
Updating component 'test' with source 'snap3' [snapshot]...
|
||||||
|
|
||||||
You can run 'aptly publish update maverick .' to update the content of the published repository.
|
You can run 'aptly publish update maverick .' to update the content of the published repository.
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
ERROR: unable to update: component "not-existent" does not exist
|
ERROR: unable to update: component 'not-existent' does not exist
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published snapshot repository ./maverick [i386, source] publishes {main: [snap2]: Snapshot from local repo [local-repo2]} has been successfully switched to new source.
|
Published snapshot repository ./maverick [i386, source] publishes {main: [snap2]: Snapshot from local repo [local-repo2]} has been successfully switched to new source.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published snapshot repository ./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
Published snapshot repository ./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published snapshot repository ./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
Published snapshot repository ./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./bookworm...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published snapshot repository ./bookworm (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
Published snapshot repository ./bookworm (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published snapshot repository ./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
Published snapshot repository ./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "ppa" components main...
|
Cleaning up published repository ppa/maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published snapshot repository ppa/maverick [amd64, i386] publishes {main: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick} has been successfully switched to new source.
|
Published snapshot repository ppa/maverick [amd64, i386] publishes {main: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick} has been successfully switched to new source.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published snapshot repository ./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
Published snapshot repository ./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "ppa" components main...
|
Cleaning up published repository ppa/maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published snapshot repository ppa/maverick [i386] publishes {main: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick} has been successfully switched to new source.
|
Published snapshot repository ppa/maverick [i386] publishes {main: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick} has been successfully switched to new source.
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components b, c...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'b'...
|
||||||
|
Cleaning up component 'c'...
|
||||||
|
|
||||||
Published snapshot repository ./maverick [amd64, i386, source] publishes {a: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick}, {b: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'}, {c: [local2]: Snapshot from local repo [local-repo]} has been successfully switched to new source.
|
Published snapshot repository ./maverick [amd64, i386, source] publishes {a: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick}, {b: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'}, {c: [local2]: Snapshot from local repo [local-repo]} has been successfully switched to new source.
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -4,4 +4,4 @@ Finalizing metadata files...
|
|||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
|
|
||||||
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./bookworm...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published local repository ./bookworm [i386, source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository ./bookworm [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components ...
|
Cleaning up published repository ./maverick...
|
||||||
|
|
||||||
Published snapshot repository ./maverick (origin: LP-PPA-gladky-anton-gnuplot) [i386] publishes {main: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick}, {other-test: [snap3]: Created as empty}, {test: [snap2]: Created as empty} has been successfully updated.
|
Published snapshot repository ./maverick (origin: LP-PPA-gladky-anton-gnuplot) [i386] publishes {main: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick}, {other-test: [snap3]: Created as empty}, {test: [snap2]: Created as empty} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,12 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components ...
|
Cleaning up published repository ./maverick...
|
||||||
|
Removing component 'other-test'...
|
||||||
|
Removing ${HOME}/.aptly/public/dists/maverick/other-test...
|
||||||
|
Removing component 'test'...
|
||||||
|
Removing ${HOME}/.aptly/public/dists/maverick/test...
|
||||||
|
Removing ${HOME}/.aptly/public/pool/other-test...
|
||||||
|
Removing ${HOME}/.aptly/public/pool/test...
|
||||||
|
|
||||||
Published snapshot repository ./maverick [i386] publishes {main: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick} has been successfully updated.
|
Published snapshot repository ./maverick [i386] publishes {main: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components other-test, test...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'other-test'...
|
||||||
|
Cleaning up component 'test'...
|
||||||
|
|
||||||
Published snapshot repository ./maverick [i386] publishes {main: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick}, {other-test: [snap5]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick}, {test: [snap4]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick} has been successfully updated.
|
Published snapshot repository ./maverick [i386] publishes {main: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick}, {other-test: [snap5]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick}, {test: [snap4]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,10 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components test...
|
Cleaning up published repository ./maverick...
|
||||||
|
Removing component 'main'...
|
||||||
|
Removing ${HOME}/.aptly/public/dists/maverick/main...
|
||||||
|
Removing ${HOME}/.aptly/public/pool/main...
|
||||||
|
Cleaning up component 'test'...
|
||||||
|
|
||||||
Published snapshot repository ./maverick [i386] publishes {other-test: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick}, {test: [snap3]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick} has been successfully updated.
|
Published snapshot repository ./maverick [i386] publishes {other-test: [snap1]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick}, {test: [snap3]: Snapshot from mirror [gnuplot-maverick]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up component 'main' in prefix '.'...
|
||||||
|
|
||||||
Published local repository ./maverick [source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository ./maverick [source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components contrib, main...
|
Cleaning up published repository ./maverick...
|
||||||
|
Cleaning up component 'contrib'...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published local repository ./maverick [i386, source] publishes {contrib: [repo2]}, {main: [repo1]} has been successfully updated.
|
Published local repository ./maverick [i386, source] publishes {contrib: [repo2]}, {main: [repo1]} has been updated successfully.
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
Loading packages...
|
Loading packages...
|
||||||
Generating metadata files and linking package files...
|
Generating metadata files and linking package files...
|
||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Cleaning up prefix "." components contrib, main...
|
Cleaning up published repository ./squeeze...
|
||||||
|
Cleaning up component 'contrib'...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published local repository ./squeeze [i386] publishes {contrib: [repo2]}, {main: [repo1]} has been successfully updated.
|
Published local repository ./squeeze [i386] publishes {contrib: [repo2]}, {main: [repo1]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository s3:test1:./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published local repository s3:test1:./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository s3:test1:./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository s3:test1:./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published snapshot repository s3:test1:./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
Published snapshot repository s3:test1:./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository s3:test1:./sq2...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published repository has been removed successfully.
|
Published repository has been removed successfully.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository s3:test1:./maverick...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published local repository s3:test1:./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository s3:test1:./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up prefix '.' components main...
|
||||||
|
|
||||||
Published local repository swift:test1:./maverick [i386, source] publishes {main: [local-repo]} has been successfully updated.
|
Published local repository swift:test1:./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ Generating metadata files and linking package files...
|
|||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up prefix '.' components main...
|
||||||
|
|
||||||
Published snapshot repository swift:test1:./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new snapshot.
|
Published snapshot repository swift:test1:./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new snapshot.
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
Cleaning up prefix "." components main...
|
Cleaning up prefix '.' components main...
|
||||||
|
|
||||||
Published repository has been removed successfully.
|
Published repository has been removed successfully.
|
||||||
|
|||||||
@@ -51,3 +51,17 @@ class PublishShow4Test(BaseTest):
|
|||||||
"aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec snap1 ppa/smira",
|
"aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec snap1 ppa/smira",
|
||||||
]
|
]
|
||||||
runCmd = "aptly publish show -json maverick ppa/smira"
|
runCmd = "aptly publish show -json maverick ppa/smira"
|
||||||
|
|
||||||
|
|
||||||
|
class PublishShow5Test(BaseTest):
|
||||||
|
"""
|
||||||
|
publish show: existing local repo
|
||||||
|
"""
|
||||||
|
fixtureDB = True
|
||||||
|
fixturePool = True
|
||||||
|
fixtureCmds = [
|
||||||
|
"aptly repo create -distribution=wheezy local-repo",
|
||||||
|
"aptly publish repo -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -architectures=i386 local-repo"
|
||||||
|
]
|
||||||
|
runCmd = "aptly publish show wheezy"
|
||||||
|
gold_processor = BaseTest.expand_environ
|
||||||
|
|||||||
@@ -1344,3 +1344,23 @@ class PublishSnapshot41Test(BaseTest):
|
|||||||
self.check_exists('public/pool/main/libx/libxslt/libxslt1.1_1.1.32-2.2~deb10u2_i386.deb')
|
self.check_exists('public/pool/main/libx/libxslt/libxslt1.1_1.1.32-2.2~deb10u2_i386.deb')
|
||||||
self.check_exists('public/pool/main/libz/libzstd/libzstd1_1.3.8+dfsg-3+deb10u2_i386.deb')
|
self.check_exists('public/pool/main/libz/libzstd/libzstd1_1.3.8+dfsg-3+deb10u2_i386.deb')
|
||||||
self.check_exists('public/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1+deb10u2_i386.deb')
|
self.check_exists('public/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1+deb10u2_i386.deb')
|
||||||
|
|
||||||
|
|
||||||
|
class PublishSnapshot42Test(BaseTest):
|
||||||
|
"""
|
||||||
|
publish snapshot: mirror with multi-dist
|
||||||
|
"""
|
||||||
|
fixtureDB = True
|
||||||
|
fixturePool = True
|
||||||
|
fixtureCmds = [
|
||||||
|
"aptly snapshot create snap1 from mirror gnuplot-maverick",
|
||||||
|
]
|
||||||
|
runCmd = "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -multi-dist snap1"
|
||||||
|
gold_processor = BaseTest.expand_environ
|
||||||
|
|
||||||
|
def check(self):
|
||||||
|
super(PublishSnapshot42Test, self).check()
|
||||||
|
self.check_not_exists(
|
||||||
|
'public/pool/main/g/gnuplot/gnuplot-doc_4.6.1-1~maverick2_all.deb')
|
||||||
|
self.check_exists(
|
||||||
|
'public/pool/maverick/main/g/gnuplot/gnuplot-doc_4.6.1-1~maverick2_all.deb')
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
Removing ${HOME}/.aptly/public/dists/def...
|
Removing ${HOME}/.aptly/public/dists/def...
|
||||||
Cleaning up prefix "." components main...
|
Cleaning up published repository ./def...
|
||||||
|
Cleaning up component 'main'...
|
||||||
|
|
||||||
Published repository has been removed successfully.
|
Published repository has been removed successfully.
|
||||||
|
|||||||
@@ -1402,6 +1402,58 @@ class PublishSourcesListAPITestRepo(APITest):
|
|||||||
self.check_equal(sources_expected, sources.json())
|
self.check_equal(sources_expected, sources.json())
|
||||||
|
|
||||||
|
|
||||||
|
class PublishSourceReplaceAPITestRepo(APITest):
|
||||||
|
"""
|
||||||
|
PUT /publish/:prefix/:distribution/sources/main
|
||||||
|
"""
|
||||||
|
fixtureGpg = True
|
||||||
|
|
||||||
|
def check(self):
|
||||||
|
repo1_name = self.random_name()
|
||||||
|
self.check_equal(self.post(
|
||||||
|
"/api/repos", json={"Name": repo1_name, "DefaultDistribution": "wheezy"}).status_code, 201)
|
||||||
|
|
||||||
|
d = self.random_name()
|
||||||
|
self.check_equal(self.upload("/api/files/" + d,
|
||||||
|
"libboost-program-options-dev_1.49.0.1_i386.deb", "pyspi_0.6.1-1.3.dsc",
|
||||||
|
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
|
||||||
|
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
|
||||||
|
|
||||||
|
self.check_equal(self.post("/api/repos/" + repo1_name + "/file/" + d).status_code, 200)
|
||||||
|
|
||||||
|
repo2_name = self.random_name()
|
||||||
|
self.check_equal(self.post(
|
||||||
|
"/api/repos", json={"Name": repo2_name, "DefaultDistribution": "wheezy"}).status_code, 201)
|
||||||
|
|
||||||
|
d = self.random_name()
|
||||||
|
self.check_equal(self.upload("/api/files/" + d,
|
||||||
|
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
|
||||||
|
|
||||||
|
self.check_equal(self.post("/api/repos/" + repo2_name + "/file/" + d).status_code, 200)
|
||||||
|
|
||||||
|
# publishing under prefix, default distribution
|
||||||
|
prefix = self.random_name()
|
||||||
|
self.check_equal(self.post(
|
||||||
|
"/api/publish/" + prefix,
|
||||||
|
json={
|
||||||
|
"SourceKind": "local",
|
||||||
|
"Sources": [{"Component": "main", "Name": repo1_name}],
|
||||||
|
"Signing": DefaultSigningOptions,
|
||||||
|
}
|
||||||
|
).status_code, 201)
|
||||||
|
|
||||||
|
# Actual test
|
||||||
|
self.check_equal(self.put(
|
||||||
|
"/api/publish/" + prefix + "/wheezy/sources/main",
|
||||||
|
json={"Component": "test", "Name": repo2_name}
|
||||||
|
).status_code, 200)
|
||||||
|
|
||||||
|
sources_expected = [{"Component": "test", "Name": repo2_name}]
|
||||||
|
sources = self.get("/api/publish/" + prefix + "/wheezy/sources")
|
||||||
|
self.check_equal(sources.status_code, 200)
|
||||||
|
self.check_equal(sources_expected, sources.json())
|
||||||
|
|
||||||
|
|
||||||
class PublishUpdateSourcesAPITestRepo(APITest):
|
class PublishUpdateSourcesAPITestRepo(APITest):
|
||||||
"""
|
"""
|
||||||
POST /publish/:prefix/:distribution/update
|
POST /publish/:prefix/:distribution/update
|
||||||
|
|||||||
Reference in New Issue
Block a user