diff --git a/README.rst b/README.rst index 85e7d2c0..be90bb6c 100644 --- a/README.rst +++ b/README.rst @@ -33,7 +33,7 @@ Aptly features: ("+" means planned features) Current limitations: -* debian-installer and translations not supported yet +* translations are not supported yet Download -------- diff --git a/cmd/mirror_create.go b/cmd/mirror_create.go index 69c74226..27a7dcc0 100644 --- a/cmd/mirror_create.go +++ b/cmd/mirror_create.go @@ -17,6 +17,7 @@ func aptlyMirrorCreate(cmd *commander.Command, args []string) error { } downloadSources := LookupOption(context.Config().DownloadSourcePackages, context.flags, "with-sources") + downloadUdebs := context.flags.Lookup("with-udebs").Value.Get().(bool) var ( mirrorName, archiveURL, distribution string @@ -33,7 +34,8 @@ func aptlyMirrorCreate(cmd *commander.Command, args []string) error { archiveURL, distribution, components = args[1], args[2], args[3:] } - repo, err := deb.NewRemoteRepo(mirrorName, archiveURL, distribution, components, context.ArchitecturesList(), downloadSources) + repo, err := deb.NewRemoteRepo(mirrorName, archiveURL, distribution, components, context.ArchitecturesList(), + downloadSources, downloadUdebs) if err != nil { return fmt.Errorf("unable to create mirror: %s", err) } @@ -90,6 +92,7 @@ Example: cmd.Flag.Bool("ignore-signatures", false, "disable verification of Release file signatures") cmd.Flag.Bool("with-sources", false, "download source packages in addition to binary packages") + cmd.Flag.Bool("with-udebs", false, "download .udeb packages (Debian installer support)") cmd.Flag.String("filter", "", "filter packages in mirror") cmd.Flag.Bool("filter-with-deps", false, "when filtering, include dependencies of matching packages as well") cmd.Flag.Var(&keyRingsFlag{}, "keyring", "gpg keyring to use when verifying Release file (could be specified multiple times)") diff --git a/cmd/mirror_edit.go b/cmd/mirror_edit.go index e331e2a7..35e5747c 100644 --- a/cmd/mirror_edit.go +++ b/cmd/mirror_edit.go @@ -27,9 +27,15 @@ func aptlyMirrorEdit(cmd *commander.Command, args []string) error { repo.FilterWithDeps = flag.Value.Get().(bool) case "with-sources": repo.DownloadSources = flag.Value.Get().(bool) + case "with-udebs": + repo.DownloadUdebs = flag.Value.Get().(bool) } }) + if repo.IsFlat() && repo.DownloadUdebs { + return fmt.Errorf("unable to edit: flat mirrors don't support udebs") + } + if repo.Filter != "" { _, err = query.Parse(repo.Filter) if err != nil { @@ -59,7 +65,7 @@ func makeCmdMirrorEdit() *commander.Command { cmd := &commander.Command{ Run: aptlyMirrorEdit, UsageLine: "edit ", - Short: "edit properties of mirorr", + Short: "edit mirror settings", Long: ` Command edit allows one to change settings of mirror: filters, list of architectures. @@ -74,6 +80,7 @@ Example: cmd.Flag.String("filter", "", "filter packages in mirror") cmd.Flag.Bool("filter-with-deps", false, "when filtering, include dependencies of matching packages as well") cmd.Flag.Bool("with-sources", false, "download source packages in addition to binary packages") + cmd.Flag.Bool("with-udebs", false, "download .udeb packages (Debian installer support)") return cmd } diff --git a/cmd/mirror_show.go b/cmd/mirror_show.go index 53296cdb..b208c321 100644 --- a/cmd/mirror_show.go +++ b/cmd/mirror_show.go @@ -37,6 +37,11 @@ func aptlyMirrorShow(cmd *commander.Command, args []string) error { downloadSources = "yes" } fmt.Printf("Download Sources: %s\n", downloadSources) + downloadUdebs := "no" + if repo.DownloadUdebs { + downloadUdebs = "yes" + } + fmt.Printf("Download .udebs: %s\n", downloadUdebs) if repo.Filter != "" { fmt.Printf("Filter: %s\n", repo.Filter) filterWithDeps := "no" diff --git a/cmd/repo_add.go b/cmd/repo_add.go index a1370b95..7626efc0 100644 --- a/cmd/repo_add.go +++ b/cmd/repo_add.go @@ -61,14 +61,16 @@ func aptlyRepoAdd(cmd *commander.Command, args []string) error { return nil } - if strings.HasSuffix(info.Name(), ".deb") || strings.HasSuffix(info.Name(), ".dsc") { + if strings.HasSuffix(info.Name(), ".deb") || strings.HasSuffix(info.Name(), ".udeb") || + strings.HasSuffix(info.Name(), ".dsc") { packageFiles = append(packageFiles, path) } return nil }) } else { - if strings.HasSuffix(info.Name(), ".deb") || strings.HasSuffix(info.Name(), ".dsc") { + if strings.HasSuffix(info.Name(), ".deb") || strings.HasSuffix(info.Name(), ".udeb") || + strings.HasSuffix(info.Name(), ".dsc") { packageFiles = append(packageFiles, location) } else { context.Progress().ColoredPrintf("@y[!]@| @!Unknwon file extenstion: %s@|", location) @@ -93,6 +95,7 @@ func aptlyRepoAdd(cmd *commander.Command, args []string) error { candidateProcessedFiles := []string{} isSourcePackage := strings.HasSuffix(file, ".dsc") + isUdebPackage := strings.HasSuffix(file, ".udeb") if isSourcePackage { stanza, err = deb.GetControlFileFromDsc(file, verifier) @@ -105,7 +108,11 @@ func aptlyRepoAdd(cmd *commander.Command, args []string) error { } } else { stanza, err = deb.GetControlFileFromDeb(file) - p = deb.NewPackageFromControlFile(stanza) + if isUdebPackage { + p = deb.NewUdebPackageFromControlFile(stanza) + } else { + p = deb.NewPackageFromControlFile(stanza) + } } if err != nil { context.Progress().ColoredPrintf("@y[!]@| @!Unable to read file %s: %s@|", file, err) @@ -216,8 +223,8 @@ func makeCmdRepoAdd() *commander.Command { UsageLine: "add | ...", Short: "add packages to local repository", Long: ` -Command adds packages to local repository from .deb (binary packages) and .dsc (source packages) files. -When importing from directory aptly would do recursive scan looking for all files matching *.deb or *.dsc +Command adds packages to local repository from .deb, .udeb (binary packages) and .dsc (source packages) files. +When importing from directory aptly would do recursive scan looking for all files matching *.[u]deb or *.dsc patterns. Every file discovered would be analyzed to extract metadata, package would then be created and added to the database. Files would be imported to internal package pool. For source packages, all required files are added automatically as well. Extra files for source package should be in the same directory as *.dsc file. diff --git a/deb/index_files.go b/deb/index_files.go new file mode 100644 index 00000000..a1eb0015 --- /dev/null +++ b/deb/index_files.go @@ -0,0 +1,254 @@ +package deb + +import ( + "bufio" + "fmt" + "github.com/smira/aptly/aptly" + "github.com/smira/aptly/utils" + "os" + "path/filepath" + "strings" +) + +type indexFiles struct { + publishedStorage aptly.PublishedStorage + basePath string + renameMap map[string]string + generatedFiles map[string]utils.ChecksumInfo + tempDir string + suffix string + indexes map[string]*indexFile +} + +type indexFile struct { + parent *indexFiles + discardable bool + compressable bool + signable bool + relativePath string + tempFilename string + tempFile *os.File + w *bufio.Writer +} + +func (file *indexFile) BufWriter() (*bufio.Writer, error) { + if file.w == nil { + var err error + file.tempFilename = filepath.Join(file.parent.tempDir, strings.Replace(file.relativePath, "/", "_", -1)) + file.tempFile, err = os.Create(file.tempFilename) + if err != nil { + return nil, fmt.Errorf("unable to create temporary index file: %s", err) + } + + file.w = bufio.NewWriter(file.tempFile) + } + + return file.w, nil +} + +func (file *indexFile) Finalize(signer utils.Signer) error { + if file.w == nil { + if file.discardable { + return nil + } + file.BufWriter() + } + + err := file.w.Flush() + if err != nil { + file.tempFile.Close() + return fmt.Errorf("unable to write to index file: %s", err) + } + + if file.compressable { + err = utils.CompressFile(file.tempFile) + if err != nil { + file.tempFile.Close() + return fmt.Errorf("unable to compress index file: %s", err) + } + } + + file.tempFile.Close() + + exts := []string{""} + if file.compressable { + exts = append(exts, ".gz", ".bz2") + } + + for _, ext := range exts { + var checksumInfo utils.ChecksumInfo + + checksumInfo, err = utils.ChecksumsForFile(file.tempFilename + ext) + if err != nil { + return fmt.Errorf("unable to collect checksums: %s", err) + } + file.parent.generatedFiles[file.relativePath+ext] = checksumInfo + } + + err = file.parent.publishedStorage.MkDir(filepath.Dir(filepath.Join(file.parent.basePath, file.relativePath))) + if err != nil { + return fmt.Errorf("unable to create dir: %s", err) + } + + for _, ext := range exts { + err = file.parent.publishedStorage.PutFile(filepath.Join(file.parent.basePath, file.relativePath+file.parent.suffix+ext), + file.tempFilename+ext) + if err != nil { + return fmt.Errorf("unable to publish file: %s", err) + } + + if file.parent.suffix != "" { + file.parent.renameMap[filepath.Join(file.parent.basePath, file.relativePath+file.parent.suffix+ext)] = + filepath.Join(file.parent.basePath, file.relativePath+ext) + } + } + + if file.signable && signer != nil { + err = signer.DetachedSign(file.tempFilename, file.tempFilename+".gpg") + if err != nil { + return fmt.Errorf("unable to detached sign file: %s", err) + } + + err = signer.ClearSign(file.tempFilename, filepath.Join(filepath.Dir(file.tempFilename), "In"+filepath.Base(file.tempFilename))) + if err != nil { + return fmt.Errorf("unable to clearsign file: %s", err) + } + + if file.parent.suffix != "" { + file.parent.renameMap[filepath.Join(file.parent.basePath, file.relativePath+file.parent.suffix+".gpg")] = + filepath.Join(file.parent.basePath, file.relativePath+".gpg") + file.parent.renameMap[filepath.Join(file.parent.basePath, "In"+file.relativePath+file.parent.suffix)] = + filepath.Join(file.parent.basePath, "In"+file.relativePath) + } + + err = file.parent.publishedStorage.PutFile(filepath.Join(file.parent.basePath, file.relativePath+file.parent.suffix+".gpg"), + file.tempFilename+".gpg") + if err != nil { + return fmt.Errorf("unable to publish file: %s", err) + } + + err = file.parent.publishedStorage.PutFile(filepath.Join(file.parent.basePath, "In"+file.relativePath+file.parent.suffix), + filepath.Join(filepath.Dir(file.tempFilename), "In"+filepath.Base(file.tempFilename))) + if err != nil { + return fmt.Errorf("unable to publish file: %s", err) + } + } + + return nil +} + +func newIndexFiles(publishedStorage aptly.PublishedStorage, basePath, tempDir, suffix string) *indexFiles { + return &indexFiles{ + publishedStorage: publishedStorage, + basePath: basePath, + renameMap: make(map[string]string), + generatedFiles: make(map[string]utils.ChecksumInfo), + tempDir: tempDir, + suffix: suffix, + indexes: make(map[string]*indexFile), + } +} + +func (files *indexFiles) PackageIndex(component, arch string, udeb bool) *indexFile { + key := fmt.Sprintf("pi-%s-%s-%s", component, arch, udeb) + file, ok := files.indexes[key] + if !ok { + var relativePath string + + if arch == "source" { + relativePath = filepath.Join(component, "source", "Sources") + } else { + if udeb { + relativePath = filepath.Join(component, "debian-installer", fmt.Sprintf("binary-%s", arch), "Packages") + } else { + relativePath = filepath.Join(component, fmt.Sprintf("binary-%s", arch), "Packages") + } + } + + file = &indexFile{ + parent: files, + discardable: false, + compressable: true, + signable: false, + relativePath: relativePath, + } + + files.indexes[key] = file + } + + return file +} + +func (files *indexFiles) ReleaseIndex(component, arch string, udeb bool) *indexFile { + key := fmt.Sprintf("ri-%s-%s-%s", component, arch, udeb) + file, ok := files.indexes[key] + if !ok { + var relativePath string + + if arch == "source" { + relativePath = filepath.Join(component, "source", "Release") + } else { + if udeb { + relativePath = filepath.Join(component, "debian-installer", fmt.Sprintf("binary-%s", arch), "Release") + } else { + relativePath = filepath.Join(component, fmt.Sprintf("binary-%s", arch), "Release") + } + } + + file = &indexFile{ + parent: files, + discardable: udeb, + compressable: false, + signable: false, + relativePath: relativePath, + } + + files.indexes[key] = file + } + + return file +} + +func (files *indexFiles) ReleaseFile() *indexFile { + return &indexFile{ + parent: files, + discardable: false, + compressable: false, + signable: true, + relativePath: "Release", + } +} + +func (files *indexFiles) FinalizeAll(progress aptly.Progress) (err error) { + if progress != nil { + progress.InitBar(int64(len(files.indexes)), false) + defer progress.ShutdownBar() + } + + for _, file := range files.indexes { + err = file.Finalize(nil) + if err != nil { + return + } + if progress != nil { + progress.AddBar(1) + } + } + + files.indexes = make(map[string]*indexFile) + + return +} + +func (files *indexFiles) RenameFiles() error { + var err error + + for oldName, newName := range files.renameMap { + err = files.publishedStorage.RenameFile(oldName, newName) + if err != nil { + return fmt.Errorf("unable to rename: %s", err) + } + } + + return nil +} diff --git a/deb/package.go b/deb/package.go index 976b8a2e..be734ed5 100644 --- a/deb/package.go +++ b/deb/package.go @@ -24,6 +24,8 @@ type Package struct { Provides []string // Is this source package IsSource bool + // Is this udeb package + IsUdeb bool // Hash of files section FilesHash uint64 // Is this >= 0.6 package? @@ -169,6 +171,14 @@ func NewSourcePackageFromControlFile(input Stanza) (*Package, error) { return result, nil } +// NewUdebPackageFromControlFile creates .udeb Package from parsed Debian control file +func NewUdebPackageFromControlFile(input Stanza) *Package { + p := NewPackageFromControlFile(input) + p.IsUdeb = true + + return p +} + // Key returns unique key identifying package func (p *Package) Key(prefix string) []byte { if p.V06Plus { @@ -220,6 +230,9 @@ func (p *Package) GetField(name string) string { if p.IsSource { return "source" } + if p.IsUdeb { + return "udeb" + } return "deb" case "Name": return p.Name diff --git a/deb/package_test.go b/deb/package_test.go index efab20db..ddcf754e 100644 --- a/deb/package_test.go +++ b/deb/package_test.go @@ -28,6 +28,7 @@ func (s *PackageSuite) TestNewFromPara(c *C) { p := NewPackageFromControlFile(s.stanza) c.Check(p.IsSource, Equals, false) + c.Check(p.IsUdeb, Equals, false) c.Check(p.Name, Equals, "alien-arena-common") c.Check(p.Version, Equals, "7.40-2") c.Check(p.Architecture, Equals, "i386") @@ -40,11 +41,27 @@ func (s *PackageSuite) TestNewFromPara(c *C) { c.Check(p.deps.Depends, DeepEquals, []string{"libc6 (>= 2.7)", "alien-arena-data (>= 7.40)"}) } +func (s *PackageSuite) TestNewUdebFromPara(c *C) { + stanza, _ := NewControlFileReader(bytes.NewBufferString(udebPackageMeta)).ReadStanza() + p := NewUdebPackageFromControlFile(stanza) + + c.Check(p.IsSource, Equals, false) + c.Check(p.IsUdeb, Equals, true) + c.Check(p.Name, Equals, "dmidecode-udeb") + c.Check(p.Version, Equals, "2.11-9") + c.Check(p.Architecture, Equals, "amd64") + c.Check(p.Provides, DeepEquals, []string(nil)) + c.Check(p.Files(), HasLen, 1) + c.Check(p.Files()[0].Filename, Equals, "dmidecode-udeb_2.11-9_amd64.udeb") + c.Check(p.deps.Depends, DeepEquals, []string{"libc6-udeb (>= 2.13)"}) +} + func (s *PackageSuite) TestNewSourceFromPara(c *C) { p, err := NewSourcePackageFromControlFile(s.sourceStanza) c.Check(err, IsNil) c.Check(p.IsSource, Equals, true) + c.Check(p.IsUdeb, Equals, false) c.Check(p.Name, Equals, "access-modifier-checker") c.Check(p.Version, Equals, "1.0-4") c.Check(p.Architecture, Equals, "source") @@ -134,21 +151,28 @@ func (s *PackageSuite) TestGetField(c *C) { p4, _ := NewSourcePackageFromControlFile(s.sourceStanza.Copy()) + stanza5, _ := NewControlFileReader(bytes.NewBufferString(udebPackageMeta)).ReadStanza() + p5 := NewUdebPackageFromControlFile(stanza5) + c.Check(p.GetField("$Source"), Equals, "alien-arena") c.Check(p2.GetField("$Source"), Equals, "alien-arena-common") c.Check(p3.GetField("$Source"), Equals, "alien-arena") c.Check(p4.GetField("$Source"), Equals, "") + c.Check(p5.GetField("$Source"), Equals, "dmidecode") c.Check(p.GetField("$SourceVersion"), Equals, "7.40-2") c.Check(p2.GetField("$SourceVersion"), Equals, "7.40-2") c.Check(p3.GetField("$SourceVersion"), Equals, "3.5") c.Check(p4.GetField("$SourceVersion"), Equals, "") + c.Check(p5.GetField("$SourceVersion"), Equals, "2.11-9") c.Check(p.GetField("$Architecture"), Equals, "i386") c.Check(p4.GetField("$Architecture"), Equals, "source") + c.Check(p5.GetField("$Architecture"), Equals, "amd64") c.Check(p.GetField("$PackageType"), Equals, "deb") c.Check(p4.GetField("$PackageType"), Equals, "source") + c.Check(p5.GetField("$PackageType"), Equals, "udeb") c.Check(p.GetField("Name"), Equals, "alien-arena-common") c.Check(p4.GetField("Name"), Equals, "access-modifier-checker") @@ -455,3 +479,20 @@ Directory: pool/main/a/access-modifier-checker Priority: source Section: java ` + +const udebPackageMeta = `Package: dmidecode-udeb +Source: dmidecode +Version: 2.11-9 +Installed-Size: 115 +Maintainer: Daniel Baumann +Architecture: amd64 +Depends: libc6-udeb (>= 2.13) +Description: SMBIOS/DMI table decoder (udeb) +Description-md5: bdfb786c6a57097be8c8600b800e749f +Section: debian-installer +Priority: optional +Filename: pool/main/d/dmidecode/dmidecode-udeb_2.11-9_amd64.udeb +Size: 29188 +MD5sum: ae70341c4d96dcded89fa670bcfea31e +SHA1: 9532ae4226a85805189a671ee0283f719d48a5ba +SHA256: bbb3a2cb07f741c3995b6d4bb08d772d83582b93a0236d4ea7736bc0370fc320` diff --git a/deb/publish.go b/deb/publish.go index efb9969a..0083516f 100644 --- a/deb/publish.go +++ b/deb/publish.go @@ -1,7 +1,6 @@ package deb import ( - "bufio" "bytes" "code.google.com/p/go-uuid/uuid" "fmt" @@ -440,9 +439,6 @@ func (p *PublishedRepo) Publish(packagePool aptly.PackagePool, publishedStorageP suffix = ".tmp" } - generatedFiles := map[string]utils.ChecksumInfo{} - renameMap := map[string]string{} - if progress != nil { progress.Printf("Generating metadata files and linking package files...\n") } @@ -454,41 +450,44 @@ func (p *PublishedRepo) Publish(packagePool aptly.PackagePool, publishedStorageP } defer os.RemoveAll(tempDir) + indexes := newIndexFiles(publishedStorage, basePath, tempDir, suffix) + for component, list := range lists { - var relativePath string + hadUdebs := false - // For all architectures, generate packages/sources files + // For all architectures, pregenerate packages/sources files for _, arch := range p.Architectures { + indexes.PackageIndex(component, arch, false) + } + + if progress != nil { + progress.InitBar(int64(list.Len()), false) + } + + err = list.ForEach(func(pkg *Package) error { if progress != nil { - progress.InitBar(int64(list.Len()), false) + progress.AddBar(1) } - if arch == "source" { - relativePath = filepath.Join(component, "source", "Sources") - } else { - relativePath = filepath.Join(component, fmt.Sprintf("binary-%s", arch), "Packages") - } - err = publishedStorage.MkDir(filepath.Dir(filepath.Join(basePath, relativePath))) - if err != nil { - return err - } - - var packagesFile *os.File - - packagesFileName := filepath.Join(tempDir, fmt.Sprintf("pkgs_%s_%s", component, arch)) - packagesFile, err = os.Create(packagesFileName) - if err != nil { - return fmt.Errorf("unable to create temporary Packages file: %s", err) - } - - bufWriter := bufio.NewWriter(packagesFile) - - err = list.ForEach(func(pkg *Package) error { - if progress != nil { - progress.AddBar(1) - } + matches := false + for _, arch := range p.Architectures { if pkg.MatchesArchitecture(arch) { - err = pkg.LinkFromPool(publishedStorage, packagePool, p.Prefix, component, forceOverwrite) + matches = true + break + } + } + + if matches { + hadUdebs = hadUdebs || pkg.IsUdeb + err = pkg.LinkFromPool(publishedStorage, packagePool, p.Prefix, component, forceOverwrite) + if err != nil { + return err + } + } + + for _, arch := range p.Architectures { + if pkg.MatchesArchitecture(arch) { + bufWriter, err := indexes.PackageIndex(component, arch, pkg.IsUdeb).BufWriter() if err != nil { return err } @@ -501,113 +500,63 @@ func (p *PublishedRepo) Publish(packagePool aptly.PackagePool, publishedStorageP if err != nil { return err } - - pkg.files = nil - pkg.deps = nil - pkg.extra = nil - - } - - return nil - }) - - if err != nil { - return fmt.Errorf("unable to process packages: %s", err) - } - - err = bufWriter.Flush() - if err != nil { - return fmt.Errorf("unable to write Packages file: %s", err) - } - - err = utils.CompressFile(packagesFile) - if err != nil { - return fmt.Errorf("unable to compress Packages files: %s", err) - } - - packagesFile.Close() - - for _, ext := range []string{"", ".gz", ".bz2"} { - var checksumInfo utils.ChecksumInfo - - checksumInfo, err = utils.ChecksumsForFile(packagesFileName + ext) - if err != nil { - return fmt.Errorf("unable to collect checksums: %s", err) - } - generatedFiles[relativePath+ext] = checksumInfo - - err = publishedStorage.PutFile(filepath.Join(basePath, relativePath+suffix+ext), packagesFileName+ext) - if err != nil { - return fmt.Errorf("unable to publish file: %s", err) - } - - if suffix != "" { - renameMap[filepath.Join(basePath, relativePath+suffix+ext)] = filepath.Join(basePath, relativePath+ext) } } - if progress != nil { - progress.ShutdownBar() + pkg.files = nil + pkg.deps = nil + pkg.extra = nil + + return nil + }) + + if err != nil { + return fmt.Errorf("unable to process packages: %s", err) + } + + if progress != nil { + progress.ShutdownBar() + } + + udebs := []bool{false} + if hadUdebs { + udebs = append(udebs, true) + + // For all architectures, pregenerate .udeb indexes + for _, arch := range p.Architectures { + indexes.PackageIndex(component, arch, true) } } // For all architectures, generate Release files for _, arch := range p.Architectures { - release := make(Stanza) - release["Archive"] = p.Distribution - release["Architecture"] = arch - release["Component"] = component - release["Origin"] = p.GetOrigin() - release["Label"] = p.GetLabel() + for _, udeb := range udebs { + release := make(Stanza) + release["Archive"] = p.Distribution + release["Architecture"] = arch + release["Component"] = component + release["Origin"] = p.GetOrigin() + release["Label"] = p.GetLabel() - if arch == "source" { - relativePath = filepath.Join(component, "source", "Release") - } else { - relativePath = filepath.Join(component, fmt.Sprintf("binary-%s", arch), "Release") + bufWriter, err := indexes.ReleaseIndex(component, arch, udeb).BufWriter() + + err = release.WriteTo(bufWriter) + if err != nil { + return fmt.Errorf("unable to create Release file: %s", err) + } } - - var file *os.File - - fileName := filepath.Join(tempDir, fmt.Sprintf("release_%s_%s", component, arch)) - file, err = os.Create(fileName) - if err != nil { - return fmt.Errorf("unable to create temporary Release file: %s", err) - } - - bufWriter := bufio.NewWriter(file) - - err = release.WriteTo(bufWriter) - if err != nil { - return fmt.Errorf("unable to create Release file: %s", err) - } - - err = bufWriter.Flush() - if err != nil { - return fmt.Errorf("unable to create Release file: %s", err) - } - - file.Close() - - var checksumInfo utils.ChecksumInfo - checksumInfo, err = utils.ChecksumsForFile(fileName) - if err != nil { - return fmt.Errorf("unable to collect checksums: %s", err) - } - generatedFiles[relativePath] = checksumInfo - - err = publishedStorage.PutFile(filepath.Join(basePath, relativePath+suffix), fileName) - if err != nil { - file.Close() - return fmt.Errorf("unable to publish file: %s", err) - } - - if suffix != "" { - renameMap[filepath.Join(basePath, relativePath+suffix)] = filepath.Join(basePath, relativePath) - } - } } + if progress != nil { + progress.Printf("Finalizing metadata files...\n") + } + + err = indexes.FinalizeAll(progress) + if err != nil { + return err + } + release := make(Stanza) release["Origin"] = p.GetOrigin() release["Label"] = p.GetLabel() @@ -621,80 +570,36 @@ func (p *PublishedRepo) Publish(packagePool aptly.PackagePool, publishedStorageP release["Components"] = strings.Join(p.Components(), " ") - for path, info := range generatedFiles { + for path, info := range indexes.generatedFiles { release["MD5Sum"] += fmt.Sprintf(" %s %8d %s\n", info.MD5, info.Size, path) release["SHA1"] += fmt.Sprintf(" %s %8d %s\n", info.SHA1, info.Size, path) release["SHA256"] += fmt.Sprintf(" %s %8d %s\n", info.SHA256, info.Size, path) } - var releaseFile *os.File - releaseFilename := filepath.Join(tempDir, "Release") - releaseFile, err = os.Create(releaseFilename) + releaseFile := indexes.ReleaseFile() + bufWriter, err := releaseFile.BufWriter() if err != nil { - return fmt.Errorf("unable to create temporary Release file: %s", err) + return err } - bufWriter := bufio.NewWriter(releaseFile) - err = release.WriteTo(bufWriter) if err != nil { return fmt.Errorf("unable to create Release file: %s", err) } - err = bufWriter.Flush() - if err != nil { - return fmt.Errorf("unable to create Release file: %s", err) - } - - releaseFile.Close() - - if suffix != "" { - renameMap[filepath.Join(basePath, "Release"+suffix)] = filepath.Join(basePath, "Release") - } - - err = publishedStorage.PutFile(filepath.Join(basePath, "Release"+suffix), releaseFilename) - if err != nil { - return fmt.Errorf("unable to publish file: %s", err) - } - // Signing files might output to console, so flush progress writer first if progress != nil { progress.Flush() } - if signer != nil { - err = signer.DetachedSign(releaseFilename, releaseFilename+".gpg") - if err != nil { - return fmt.Errorf("unable to sign Release file: %s", err) - } - - err = signer.ClearSign(releaseFilename, filepath.Join(filepath.Dir(releaseFilename), "InRelease"+suffix)) - if err != nil { - return fmt.Errorf("unable to sign Release file: %s", err) - } - - if suffix != "" { - renameMap[filepath.Join(basePath, "Release"+suffix+".gpg")] = filepath.Join(basePath, "Release.gpg") - renameMap[filepath.Join(basePath, "InRelease"+suffix)] = filepath.Join(basePath, "InRelease") - } - - err = publishedStorage.PutFile(filepath.Join(basePath, "Release"+suffix+".gpg"), releaseFilename+".gpg") - if err != nil { - return fmt.Errorf("unable to publish file: %s", err) - } - - err = publishedStorage.PutFile(filepath.Join(basePath, "InRelease"+suffix), - filepath.Join(filepath.Dir(releaseFilename), "InRelease"+suffix)) - if err != nil { - return fmt.Errorf("unable to publish file: %s", err) - } + err = releaseFile.Finalize(signer) + if err != nil { + return err } - for oldName, newName := range renameMap { - err = publishedStorage.RenameFile(oldName, newName) - if err != nil { - return fmt.Errorf("unable to rename: %s", err) - } + err = indexes.RenameFiles() + if err != nil { + return err } return nil diff --git a/deb/publish_test.go b/deb/publish_test.go index c361f241..56e1db95 100644 --- a/deb/publish_test.go +++ b/deb/publish_test.go @@ -93,7 +93,7 @@ func (s *PublishedRepoSuite) SetUpTest(c *C) { "files:other": s.publishedStorage2}} s.packagePool = files.NewPackagePool(s.root) - repo, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false) + repo, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false, false) repo.packageRefs = s.reflist s.factory.RemoteRepoCollection().Add(repo) diff --git a/deb/remote.go b/deb/remote.go index 1d439d44..fb4dceda 100644 --- a/deb/remote.go +++ b/deb/remote.go @@ -37,6 +37,8 @@ type RemoteRepo struct { Architectures []string // Should we download sources? DownloadSources bool + // Should we download .udebs? + DownloadUdebs bool // Meta-information about repository Meta Stanza // Last update date @@ -55,7 +57,7 @@ type RemoteRepo struct { // NewRemoteRepo creates new instance of Debian remote repository with specified params func NewRemoteRepo(name string, archiveRoot string, distribution string, components []string, - architectures []string, downloadSources bool) (*RemoteRepo, error) { + architectures []string, downloadSources bool, downloadUdebs bool) (*RemoteRepo, error) { result := &RemoteRepo{ UUID: uuid.New(), Name: name, @@ -64,6 +66,7 @@ func NewRemoteRepo(name string, archiveRoot string, distribution string, compone Components: components, Architectures: architectures, DownloadSources: downloadSources, + DownloadUdebs: downloadUdebs, } err := result.prepare() @@ -80,6 +83,9 @@ func NewRemoteRepo(name string, archiveRoot string, distribution string, compone if len(result.Components) > 0 { return nil, fmt.Errorf("components aren't supported for flat repos") } + if result.DownloadUdebs { + return nil, fmt.Errorf("debian-installer udebs aren't supported for flat repos") + } result.Components = nil } @@ -102,7 +108,10 @@ func (repo *RemoteRepo) prepare() error { func (repo *RemoteRepo) String() string { srcFlag := "" if repo.DownloadSources { - srcFlag = " [src]" + srcFlag += " [src]" + } + if repo.DownloadUdebs { + srcFlag += " [udeb]" } distribution := repo.Distribution if distribution == "" { @@ -169,6 +178,13 @@ func (repo *RemoteRepo) SourcesURL(component string) *url.URL { return repo.archiveRootURL.ResolveReference(path) } +// UdebURL returns URL of Packages files for given component and +// architecture +func (repo *RemoteRepo) UdebURL(component string, architecture string) *url.URL { + path := &url.URL{Path: fmt.Sprintf("dists/%s/%s/debian-installer/binary-%s/Packages", repo.Distribution, component, architecture)} + return repo.archiveRootURL.ResolveReference(path) +} + // PackageURL returns URL of package file relative to repository root // architecture func (repo *RemoteRepo) PackageURL(filename string) *url.URL { @@ -342,6 +358,9 @@ func (repo *RemoteRepo) Download(progress aptly.Progress, d aptly.Downloader, co for _, component := range repo.Components { for _, architecture := range repo.Architectures { packagesURLs = append(packagesURLs, []string{repo.BinaryURL(component, architecture).String(), "binary"}) + if repo.DownloadUdebs { + packagesURLs = append(packagesURLs, []string{repo.UdebURL(component, architecture).String(), "udeb"}) + } } if repo.DownloadSources { packagesURLs = append(packagesURLs, []string{repo.SourcesURL(component).String(), "source"}) @@ -378,6 +397,8 @@ func (repo *RemoteRepo) Download(progress aptly.Progress, d aptly.Downloader, co if kind == "binary" { p = NewPackageFromControlFile(stanza) + } else if kind == "udeb" { + p = NewUdebPackageFromControlFile(stanza) } else if kind == "source" { p, err = NewSourcePackageFromControlFile(stanza) if err != nil { diff --git a/deb/remote_test.go b/deb/remote_test.go index 206101dc..af618d1c 100644 --- a/deb/remote_test.go +++ b/deb/remote_test.go @@ -79,8 +79,8 @@ type RemoteRepoSuite struct { var _ = Suite(&RemoteRepoSuite{}) func (s *RemoteRepoSuite) SetUpTest(c *C) { - s.repo, _ = NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian", "squeeze", []string{"main"}, []string{}, false) - s.flat, _ = NewRemoteRepo("exp42", "http://repos.express42.com/virool/precise/", "./", []string{}, []string{}, false) + s.repo, _ = NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian", "squeeze", []string{"main"}, []string{}, false, false) + s.flat, _ = NewRemoteRepo("exp42", "http://repos.express42.com/virool/precise/", "./", []string{}, []string{}, false, false) s.downloader = http.NewFakeDownloader().ExpectResponse("http://mirror.yandex.ru/debian/dists/squeeze/Release", exampleReleaseFile) s.progress = console.NewProgress() s.db, _ = database.OpenDB(c.MkDir()) @@ -96,7 +96,7 @@ func (s *RemoteRepoSuite) TearDownTest(c *C) { } func (s *RemoteRepoSuite) TestInvalidURL(c *C) { - _, err := NewRemoteRepo("s", "http://lolo%2", "squeeze", []string{"main"}, []string{}, false) + _, err := NewRemoteRepo("s", "http://lolo%2", "squeeze", []string{"main"}, []string{}, false, false) c.Assert(err, ErrorMatches, ".*hexadecimal escape in host.*") } @@ -106,11 +106,11 @@ func (s *RemoteRepoSuite) TestFlatCreation(c *C) { c.Check(s.flat.Architectures, IsNil) c.Check(s.flat.Components, IsNil) - flat2, _ := NewRemoteRepo("flat2", "http://pkg.jenkins-ci.org/debian-stable", "binary/", []string{}, []string{}, false) + flat2, _ := NewRemoteRepo("flat2", "http://pkg.jenkins-ci.org/debian-stable", "binary/", []string{}, []string{}, false, false) c.Check(flat2.IsFlat(), Equals, true) c.Check(flat2.Distribution, Equals, "./binary/") - _, err := NewRemoteRepo("fl", "http://some.repo/", "./", []string{"main"}, []string{}, false) + _, err := NewRemoteRepo("fl", "http://some.repo/", "./", []string{"main"}, []string{}, false, false) c.Check(err, ErrorMatches, "components aren't supported for flat repos") } @@ -119,8 +119,9 @@ func (s *RemoteRepoSuite) TestString(c *C) { c.Check(s.flat.String(), Equals, "[exp42]: http://repos.express42.com/virool/precise/ ./") s.repo.DownloadSources = true + s.repo.DownloadUdebs = true s.flat.DownloadSources = true - c.Check(s.repo.String(), Equals, "[yandex]: http://mirror.yandex.ru/debian/ squeeze [src]") + c.Check(s.repo.String(), Equals, "[yandex]: http://mirror.yandex.ru/debian/ squeeze [src] [udeb]") c.Check(s.flat.String(), Equals, "[exp42]: http://repos.express42.com/virool/precise/ ./ [src]") } @@ -151,6 +152,10 @@ func (s *RemoteRepoSuite) TestBinaryURL(c *C) { c.Assert(s.repo.BinaryURL("main", "amd64").String(), Equals, "http://mirror.yandex.ru/debian/dists/squeeze/main/binary-amd64/Packages") } +func (s *RemoteRepoSuite) TestUdebURL(c *C) { + c.Assert(s.repo.UdebURL("main", "amd64").String(), Equals, "http://mirror.yandex.ru/debian/dists/squeeze/main/debian-installer/binary-amd64/Packages") +} + func (s *RemoteRepoSuite) TestSourcesURL(c *C) { c.Assert(s.repo.SourcesURL("main").String(), Equals, "http://mirror.yandex.ru/debian/dists/squeeze/main/source/Sources") } @@ -209,13 +214,13 @@ func (s *RemoteRepoSuite) TestFetchNullVerifier2(c *C) { } func (s *RemoteRepoSuite) TestFetchWrongArchitecture(c *C) { - s.repo, _ = NewRemoteRepo("s", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{"xyz"}, false) + s.repo, _ = NewRemoteRepo("s", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{"xyz"}, false, false) err := s.repo.Fetch(s.downloader, nil) c.Assert(err, ErrorMatches, "architecture xyz not available in repo.*") } func (s *RemoteRepoSuite) TestFetchWrongComponent(c *C) { - s.repo, _ = NewRemoteRepo("s", "http://mirror.yandex.ru/debian/", "squeeze", []string{"xyz"}, []string{"i386"}, false) + s.repo, _ = NewRemoteRepo("s", "http://mirror.yandex.ru/debian/", "squeeze", []string{"xyz"}, []string{"i386"}, false, false) err := s.repo.Fetch(s.downloader, nil) c.Assert(err, ErrorMatches, "component xyz not available in repo.*") } @@ -399,7 +404,7 @@ func (s *RemoteRepoCollectionSuite) TestAddByName(c *C) { r, err := s.collection.ByName("yandex") c.Assert(err, ErrorMatches, "*.not found") - repo, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false) + repo, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false, false) c.Assert(s.collection.Add(repo), IsNil) c.Assert(s.collection.Add(repo), ErrorMatches, ".*already exists") @@ -417,7 +422,7 @@ func (s *RemoteRepoCollectionSuite) TestByUUID(c *C) { r, err := s.collection.ByUUID("some-uuid") c.Assert(err, ErrorMatches, "*.not found") - repo, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false) + repo, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false, false) c.Assert(s.collection.Add(repo), IsNil) r, err = s.collection.ByUUID(repo.UUID) @@ -426,7 +431,7 @@ func (s *RemoteRepoCollectionSuite) TestByUUID(c *C) { } func (s *RemoteRepoCollectionSuite) TestUpdateLoadComplete(c *C) { - repo, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false) + repo, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false, false) c.Assert(s.collection.Update(repo), IsNil) collection := NewRemoteRepoCollection(s.db) @@ -447,7 +452,7 @@ func (s *RemoteRepoCollectionSuite) TestUpdateLoadComplete(c *C) { } func (s *RemoteRepoCollectionSuite) TestForEachAndLen(c *C) { - repo, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false) + repo, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false, false) s.collection.Add(repo) count := 0 @@ -469,10 +474,10 @@ func (s *RemoteRepoCollectionSuite) TestForEachAndLen(c *C) { } func (s *RemoteRepoCollectionSuite) TestDrop(c *C) { - repo1, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false) + repo1, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false, false) s.collection.Add(repo1) - repo2, _ := NewRemoteRepo("tyndex", "http://mirror.yandex.ru/debian/", "wheezy", []string{"main"}, []string{}, false) + repo2, _ := NewRemoteRepo("tyndex", "http://mirror.yandex.ru/debian/", "wheezy", []string{"main"}, []string{}, false, false) s.collection.Add(repo2) r1, _ := s.collection.ByUUID(repo1.UUID) diff --git a/deb/snapshot_test.go b/deb/snapshot_test.go index 9d52d713..83db0853 100644 --- a/deb/snapshot_test.go +++ b/deb/snapshot_test.go @@ -15,7 +15,7 @@ var _ = Suite(&SnapshotSuite{}) func (s *SnapshotSuite) SetUpTest(c *C) { s.SetUpPackages() - s.repo, _ = NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false) + s.repo, _ = NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false, false) s.repo.packageRefs = s.reflist } @@ -108,11 +108,11 @@ func (s *SnapshotCollectionSuite) SetUpTest(c *C) { s.collection = NewSnapshotCollection(s.db) s.SetUpPackages() - s.repo1, _ = NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false) + s.repo1, _ = NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false, false) s.repo1.packageRefs = s.reflist s.snapshot1, _ = NewSnapshotFromRepository("snap1", s.repo1) - s.repo2, _ = NewRemoteRepo("android", "http://mirror.yandex.ru/debian/", "lenny", []string{"main"}, []string{}, false) + s.repo2, _ = NewRemoteRepo("android", "http://mirror.yandex.ru/debian/", "lenny", []string{"main"}, []string{}, false, false) s.repo2.packageRefs = s.reflist s.snapshot2, _ = NewSnapshotFromRepository("snap2", s.repo2) @@ -192,7 +192,7 @@ func (s *SnapshotCollectionSuite) TestFindByRemoteRepoSource(c *C) { c.Check(s.collection.ByRemoteRepoSource(s.repo1), DeepEquals, []*Snapshot{s.snapshot1}) c.Check(s.collection.ByRemoteRepoSource(s.repo2), DeepEquals, []*Snapshot{s.snapshot2}) - repo3, _ := NewRemoteRepo("other", "http://mirror.yandex.ru/debian/", "lenny", []string{"main"}, []string{}, false) + repo3, _ := NewRemoteRepo("other", "http://mirror.yandex.ru/debian/", "lenny", []string{"main"}, []string{}, false, false) c.Check(s.collection.ByRemoteRepoSource(repo3), DeepEquals, []*Snapshot{}) } diff --git a/man/aptly.1 b/man/aptly.1 index 4302fa15..1159e801 100644 --- a/man/aptly.1 +++ b/man/aptly.1 @@ -311,6 +311,10 @@ gpg keyring to use when verifying Release file (could be specified multiple time \-\fBwith\-sources\fR=false download source packages in addition to binary packages . +.TP +\-\fBwith\-udebs\fR=false +download \.udeb packages (Debian installer support) +. .SH "LIST MIRRORS" \fBaptly\fR \fBmirror\fR \fBlist\fR . @@ -411,7 +415,7 @@ Example: .P $ aptly mirror rename wheezy\-min wheezy\-main . -.SH "EDIT PROPERTIES OF MIRORR" +.SH "EDIT MIRROR SETTINGS" \fBaptly\fR \fBmirror\fR \fBedit\fR \fIname\fR . .P @@ -438,6 +442,10 @@ when filtering, include dependencies of matching packages as well \-\fBwith\-sources\fR=false download source packages in addition to binary packages . +.TP +\-\fBwith\-udebs\fR=false +download \.udeb packages (Debian installer support) +. .SH "SEARCH MIRROR FOR PACKAGES MATCHING QUERY" \fBaptly\fR \fBmirror\fR \fBsearch\fR \fIname\fR \fIpackage\-query\fR . @@ -468,7 +476,7 @@ include dependencies into search results \fBaptly\fR \fBrepo\fR \fBadd\fR \fIname\fR . .P -Command adds packages to local repository from \.deb (binary packages) and \.dsc (source packages) files\. When importing from directory aptly would do recursive scan looking for all files matching \fI\.deb or\fR\.dsc patterns\. Every file discovered would be analyzed to extract metadata, package would then be created and added to the database\. Files would be imported to internal package pool\. For source packages, all required files are added automatically as well\. Extra files for source package should be in the same directory as *\.dsc file\. +Command adds packages to local repository from \.deb, \.udeb (binary packages) and \.dsc (source packages) files\. When importing from directory aptly would do recursive scan looking for all files matching \fI\.[u]deb or\fR\.dsc patterns\. Every file discovered would be analyzed to extract metadata, package would then be created and added to the database\. Files would be imported to internal package pool\. For source packages, all required files are added automatically as well\. Extra files for source package should be in the same directory as *\.dsc file\. . .P Example: diff --git a/system/lib.py b/system/lib.py index 34b5f684..e3e84f6a 100644 --- a/system/lib.py +++ b/system/lib.py @@ -155,6 +155,7 @@ class BaseTest(object): if not hasattr(command, "__iter__"): params = { 'files': os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files"), + 'udebs': os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "udebs"), 'testfiles': os.path.join(os.path.dirname(inspect.getsourcefile(self.__class__)), self.__class__.__name__), } if self.fixtureWebServer: diff --git a/system/t03_help/MirrorCreateHelpTest_gold b/system/t03_help/MirrorCreateHelpTest_gold index 25c2e7f2..9a37486e 100644 --- a/system/t03_help/MirrorCreateHelpTest_gold +++ b/system/t03_help/MirrorCreateHelpTest_gold @@ -24,4 +24,5 @@ Options: -ignore-signatures=false: disable verification of Release file signatures -keyring=: gpg keyring to use when verifying Release file (could be specified multiple times) -with-sources=false: download source packages in addition to binary packages + -with-udebs=false: download .udeb packages (Debian installer support) diff --git a/system/t03_help/MirrorCreateTest_gold b/system/t03_help/MirrorCreateTest_gold index dcb524ce..d696eb5d 100644 --- a/system/t03_help/MirrorCreateTest_gold +++ b/system/t03_help/MirrorCreateTest_gold @@ -15,4 +15,5 @@ Options: -ignore-signatures=false: disable verification of Release file signatures -keyring=: gpg keyring to use when verifying Release file (could be specified multiple times) -with-sources=false: download source packages in addition to binary packages + -with-udebs=false: download .udeb packages (Debian installer support) ERROR: unable to parse command diff --git a/system/t03_help/WrongFlagTest_gold b/system/t03_help/WrongFlagTest_gold index 738bf59c..a6df4f0e 100644 --- a/system/t03_help/WrongFlagTest_gold +++ b/system/t03_help/WrongFlagTest_gold @@ -16,4 +16,5 @@ Options: -ignore-signatures=false: disable verification of Release file signatures -keyring=: gpg keyring to use when verifying Release file (could be specified multiple times) -with-sources=false: download source packages in addition to binary packages + -with-udebs=false: download .udeb packages (Debian installer support) ERROR: unable to parse flags diff --git a/system/t04_mirror/CreateMirror11Test_mirror_show b/system/t04_mirror/CreateMirror11Test_mirror_show index 22eabff4..522449e3 100644 --- a/system/t04_mirror/CreateMirror11Test_mirror_show +++ b/system/t04_mirror/CreateMirror11Test_mirror_show @@ -4,6 +4,7 @@ Distribution: squeeze Components: main, contrib, non-free Architectures: amd64, armel, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, sparc Download Sources: no +Download .udebs: no Last update: never Information from release file: diff --git a/system/t04_mirror/CreateMirror13Test_mirror_show b/system/t04_mirror/CreateMirror13Test_mirror_show index d9eee928..1a012184 100644 --- a/system/t04_mirror/CreateMirror13Test_mirror_show +++ b/system/t04_mirror/CreateMirror13Test_mirror_show @@ -4,6 +4,7 @@ Distribution: wheezy Components: main, contrib, non-free Architectures: amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc Download Sources: no +Download .udebs: no Last update: never Information from release file: diff --git a/system/t04_mirror/CreateMirror14Test_mirror_show b/system/t04_mirror/CreateMirror14Test_mirror_show index 2789c252..8f479d62 100644 --- a/system/t04_mirror/CreateMirror14Test_mirror_show +++ b/system/t04_mirror/CreateMirror14Test_mirror_show @@ -4,6 +4,7 @@ Distribution: ./ Components: Architectures: Download Sources: no +Download .udebs: no Last update: never Information from release file: diff --git a/system/t04_mirror/CreateMirror17Test_mirror_show b/system/t04_mirror/CreateMirror17Test_mirror_show index 3e6e75d4..816e61d5 100644 --- a/system/t04_mirror/CreateMirror17Test_mirror_show +++ b/system/t04_mirror/CreateMirror17Test_mirror_show @@ -4,6 +4,7 @@ Distribution: wheezy Components: main, contrib, non-free Architectures: i386 Download Sources: yes +Download .udebs: no Last update: never Information from release file: diff --git a/system/t04_mirror/CreateMirror18Test_mirror_show b/system/t04_mirror/CreateMirror18Test_mirror_show index abd2a7d1..d2d32be5 100644 --- a/system/t04_mirror/CreateMirror18Test_mirror_show +++ b/system/t04_mirror/CreateMirror18Test_mirror_show @@ -4,6 +4,7 @@ Distribution: maverick Components: main Architectures: amd64, armel, i386, powerpc Download Sources: no +Download .udebs: no Last update: never Information from release file: diff --git a/system/t04_mirror/CreateMirror19Test_mirror_show b/system/t04_mirror/CreateMirror19Test_mirror_show index 52bf55df..c4425802 100644 --- a/system/t04_mirror/CreateMirror19Test_mirror_show +++ b/system/t04_mirror/CreateMirror19Test_mirror_show @@ -4,17 +4,16 @@ Distribution: wheezy/updates Components: main Architectures: i386 Download Sources: yes +Download .udebs: no Last update: never Information from release file: Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc Codename: wheezy Components: updates/main updates/contrib updates/non-free -Date: Tue, 11 Mar 2014 21:11:28 UTC Description: Debian 7.0 Security Updates Label: Debian-Security Origin: Debian Suite: stable -Valid-Until: Fri, 21 Mar 2014 21:11:28 UTC Version: 7.0 diff --git a/system/t04_mirror/CreateMirror1Test_mirror_show b/system/t04_mirror/CreateMirror1Test_mirror_show index d5542dde..94f4085f 100644 --- a/system/t04_mirror/CreateMirror1Test_mirror_show +++ b/system/t04_mirror/CreateMirror1Test_mirror_show @@ -4,6 +4,7 @@ Distribution: wheezy Components: main, contrib, non-free Architectures: amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc Download Sources: no +Download .udebs: no Last update: never Information from release file: diff --git a/system/t04_mirror/CreateMirror21Test_mirror_show b/system/t04_mirror/CreateMirror21Test_mirror_show index f6800017..a328a922 100644 --- a/system/t04_mirror/CreateMirror21Test_mirror_show +++ b/system/t04_mirror/CreateMirror21Test_mirror_show @@ -4,6 +4,7 @@ Distribution: ./binary/ Components: Architectures: Download Sources: no +Download .udebs: no Last update: never Information from release file: diff --git a/system/t04_mirror/CreateMirror22Test_mirror_show b/system/t04_mirror/CreateMirror22Test_mirror_show index add4d654..8b9e103d 100644 --- a/system/t04_mirror/CreateMirror22Test_mirror_show +++ b/system/t04_mirror/CreateMirror22Test_mirror_show @@ -4,6 +4,7 @@ Distribution: wheezy/updates Components: main Architectures: amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc Download Sources: no +Download .udebs: no Filter: nginx | Priority (required) Filter With Deps: no Last update: never @@ -12,11 +13,9 @@ Information from release file: Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc Codename: wheezy Components: updates/main updates/contrib updates/non-free -Date: Sun, 13 Jul 2014 12:12:08 UTC Description: Debian 7.0 Security Updates Label: Debian-Security Origin: Debian Suite: stable -Valid-Until: Wed, 23 Jul 2014 12:12:08 UTC Version: 7.0 diff --git a/system/t04_mirror/CreateMirror25Test_gold b/system/t04_mirror/CreateMirror25Test_gold new file mode 100644 index 00000000..6eab7a88 --- /dev/null +++ b/system/t04_mirror/CreateMirror25Test_gold @@ -0,0 +1,4 @@ +Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release... + +Mirror [mirror25]: http://mirror.yandex.ru/debian/ wheezy [udeb] successfully added. +You can run 'aptly mirror update mirror25' to download repository contents. diff --git a/system/t04_mirror/CreateMirror25Test_mirror_show b/system/t04_mirror/CreateMirror25Test_mirror_show new file mode 100644 index 00000000..7f5a17eb --- /dev/null +++ b/system/t04_mirror/CreateMirror25Test_mirror_show @@ -0,0 +1,20 @@ +Name: mirror25 +Archive Root URL: http://mirror.yandex.ru/debian/ +Distribution: wheezy +Components: main, contrib, non-free +Architectures: i386 +Download Sources: no +Download .udebs: yes +Last update: never + +Information from release file: +Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc +Codename: wheezy +Components: main contrib non-free +Date: Sat, 12 Jul 2014 10:59:25 UTC +Description: Debian 7.6 Released 12 July 2014 + +Label: Debian +Origin: Debian +Suite: stable +Version: 7.6 diff --git a/system/t04_mirror/CreateMirror26Test_gold b/system/t04_mirror/CreateMirror26Test_gold new file mode 100644 index 00000000..97027669 --- /dev/null +++ b/system/t04_mirror/CreateMirror26Test_gold @@ -0,0 +1 @@ +ERROR: unable to create mirror: debian-installer udebs aren't supported for flat repos diff --git a/system/t04_mirror/CreateMirror2Test_mirror_show b/system/t04_mirror/CreateMirror2Test_mirror_show index 183348a4..60c7d9de 100644 --- a/system/t04_mirror/CreateMirror2Test_mirror_show +++ b/system/t04_mirror/CreateMirror2Test_mirror_show @@ -4,6 +4,7 @@ Distribution: wheezy Components: main Architectures: amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc Download Sources: no +Download .udebs: no Last update: never Information from release file: diff --git a/system/t04_mirror/CreateMirror3Test_mirror_show b/system/t04_mirror/CreateMirror3Test_mirror_show index 804abb9e..5586b8b2 100644 --- a/system/t04_mirror/CreateMirror3Test_mirror_show +++ b/system/t04_mirror/CreateMirror3Test_mirror_show @@ -4,6 +4,7 @@ Distribution: wheezy Components: main, contrib Architectures: i386, amd64 Download Sources: no +Download .udebs: no Last update: never Information from release file: diff --git a/system/t04_mirror/CreateMirror7Test_mirror_show b/system/t04_mirror/CreateMirror7Test_mirror_show index c53b3f5c..9f0029af 100644 --- a/system/t04_mirror/CreateMirror7Test_mirror_show +++ b/system/t04_mirror/CreateMirror7Test_mirror_show @@ -4,6 +4,7 @@ Distribution: wheezy Components: main, contrib Architectures: i386, amd64 Download Sources: no +Download .udebs: no Last update: never Information from release file: diff --git a/system/t04_mirror/CreateMirror9Test_mirror_show b/system/t04_mirror/CreateMirror9Test_mirror_show index e6d63aa5..1243bde1 100644 --- a/system/t04_mirror/CreateMirror9Test_mirror_show +++ b/system/t04_mirror/CreateMirror9Test_mirror_show @@ -4,6 +4,7 @@ Distribution: squeeze-backports Components: main, contrib, non-free Architectures: amd64, armel, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, sparc Download Sources: no +Download .udebs: no Last update: never Information from release file: @@ -11,11 +12,9 @@ Architectures: amd64 armel i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel po ButAutomaticUpgrades: yes Codename: squeeze-backports Components: main contrib non-free -Date: Fri, 07 Feb 2014 02:56:49 UTC Description: Backports for the Squeeze Distribution Label: Debian Backports NotAutomatic: yes Origin: Debian Backports Suite: squeeze-backports -Valid-Until: Fri, 14 Feb 2014 02:56:49 UTC diff --git a/system/t04_mirror/EditMirror1Test_mirror_show b/system/t04_mirror/EditMirror1Test_mirror_show index a0bffd09..f934ffc9 100644 --- a/system/t04_mirror/EditMirror1Test_mirror_show +++ b/system/t04_mirror/EditMirror1Test_mirror_show @@ -4,6 +4,7 @@ Distribution: wheezy Components: main Architectures: i386, amd64 Download Sources: yes +Download .udebs: no Filter: nginx Filter With Deps: yes Number of packages: 56121 diff --git a/system/t04_mirror/EditMirror3Test_mirror_show b/system/t04_mirror/EditMirror3Test_mirror_show index 59b134fc..d3348f0c 100644 --- a/system/t04_mirror/EditMirror3Test_mirror_show +++ b/system/t04_mirror/EditMirror3Test_mirror_show @@ -4,7 +4,7 @@ Distribution: wheezy Components: main Architectures: i386, amd64 Download Sources: no -Last update: 2014-06-28 01:23:25 MSK +Download .udebs: no Number of packages: 56121 Information from release file: diff --git a/system/t04_mirror/EditMirror5Test_mirror_show b/system/t04_mirror/EditMirror5Test_mirror_show index 535f67b8..8790d809 100644 --- a/system/t04_mirror/EditMirror5Test_mirror_show +++ b/system/t04_mirror/EditMirror5Test_mirror_show @@ -4,17 +4,16 @@ Distribution: wheezy/updates Components: main Architectures: amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc Download Sources: no +Download .udebs: no Last update: never Information from release file: Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc Codename: wheezy Components: updates/main updates/contrib updates/non-free -Date: Fri, 25 Jul 2014 03:31:55 UTC Description: Debian 7.0 Security Updates Label: Debian-Security Origin: Debian Suite: stable -Valid-Until: Mon, 04 Aug 2014 03:31:55 UTC Version: 7.0 diff --git a/system/t04_mirror/EditMirror6Test_mirror_show b/system/t04_mirror/EditMirror6Test_mirror_show index e47d2258..3f448097 100644 --- a/system/t04_mirror/EditMirror6Test_mirror_show +++ b/system/t04_mirror/EditMirror6Test_mirror_show @@ -4,6 +4,7 @@ Distribution: wheezy Components: main Architectures: amd64, s390 Download Sources: no +Download .udebs: no Number of packages: 56121 Information from release file: diff --git a/system/t04_mirror/EditMirror8Test_gold b/system/t04_mirror/EditMirror8Test_gold new file mode 100644 index 00000000..1291476b --- /dev/null +++ b/system/t04_mirror/EditMirror8Test_gold @@ -0,0 +1 @@ +Mirror [wheezy-main]: http://mirror.yandex.ru/debian/ wheezy [udeb] successfully updated. diff --git a/system/t04_mirror/EditMirror8Test_mirror_show b/system/t04_mirror/EditMirror8Test_mirror_show new file mode 100644 index 00000000..3aa03131 --- /dev/null +++ b/system/t04_mirror/EditMirror8Test_mirror_show @@ -0,0 +1,20 @@ +Name: wheezy-main +Archive Root URL: http://mirror.yandex.ru/debian/ +Distribution: wheezy +Components: main +Architectures: i386, amd64 +Download Sources: no +Download .udebs: yes +Number of packages: 56121 + +Information from release file: +Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc +Codename: wheezy +Components: main contrib non-free +Date: Sat, 26 Apr 2014 09:27:11 UTC +Description: Debian 7.5 Released 26 April 2014 + +Label: Debian +Origin: Debian +Suite: stable +Version: 7.5 diff --git a/system/t04_mirror/EditMirror9Test_gold b/system/t04_mirror/EditMirror9Test_gold new file mode 100644 index 00000000..a2e1e5a4 --- /dev/null +++ b/system/t04_mirror/EditMirror9Test_gold @@ -0,0 +1 @@ +ERROR: unable to edit: flat mirrors don't support udebs diff --git a/system/t04_mirror/ShowMirror1Test_gold b/system/t04_mirror/ShowMirror1Test_gold index d5542dde..94f4085f 100644 --- a/system/t04_mirror/ShowMirror1Test_gold +++ b/system/t04_mirror/ShowMirror1Test_gold @@ -4,6 +4,7 @@ Distribution: wheezy Components: main, contrib, non-free Architectures: amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc Download Sources: no +Download .udebs: no Last update: never Information from release file: diff --git a/system/t04_mirror/ShowMirror3Test_gold b/system/t04_mirror/ShowMirror3Test_gold index 94db9a7c..a8315473 100644 --- a/system/t04_mirror/ShowMirror3Test_gold +++ b/system/t04_mirror/ShowMirror3Test_gold @@ -4,7 +4,7 @@ Distribution: wheezy Components: contrib Architectures: i386, amd64 Download Sources: no -Last update: 2014-02-25 00:21:33 MSK +Download .udebs: no Number of packages: 325 Information from release file: diff --git a/system/t04_mirror/ShowMirror4Test_gold b/system/t04_mirror/ShowMirror4Test_gold index 7a8182b7..1412be26 100644 --- a/system/t04_mirror/ShowMirror4Test_gold +++ b/system/t04_mirror/ShowMirror4Test_gold @@ -4,6 +4,7 @@ Distribution: wheezy/updates Components: main Architectures: amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc Download Sources: no +Download .udebs: no Filter: nginx | Priority (required) Filter With Deps: yes Last update: never @@ -12,11 +13,9 @@ Information from release file: Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc Codename: wheezy Components: updates/main updates/contrib updates/non-free -Date: Sun, 13 Jul 2014 12:12:08 UTC Description: Debian 7.0 Security Updates Label: Debian-Security Origin: Debian Suite: stable -Valid-Until: Wed, 23 Jul 2014 12:12:08 UTC Version: 7.0 diff --git a/system/t04_mirror/UpdateMirror12Test_gold b/system/t04_mirror/UpdateMirror12Test_gold new file mode 100644 index 00000000..1a7390dd --- /dev/null +++ b/system/t04_mirror/UpdateMirror12Test_gold @@ -0,0 +1,33 @@ + + +Applying filter... +Building download queue... +Download queue: 10 items (0.76 MiB) +Downloading & parsing package files... +Downloading http://mirror.yandex.ru/debian/dists/squeeze/InRelease... +Downloading http://mirror.yandex.ru/debian/dists/squeeze/Release... +Downloading http://mirror.yandex.ru/debian/dists/squeeze/Release.gpg... +Downloading http://mirror.yandex.ru/debian/dists/squeeze/main/binary-amd64/Packages.bz2... +Downloading http://mirror.yandex.ru/debian/dists/squeeze/main/binary-i386/Packages.bz2... +Downloading http://mirror.yandex.ru/debian/dists/squeeze/main/debian-installer/binary-amd64/Packages.bz2... +Downloading http://mirror.yandex.ru/debian/dists/squeeze/main/debian-installer/binary-i386/Packages.bz2... +Downloading http://mirror.yandex.ru/debian/dists/squeeze/non-free/binary-amd64/Packages.bz2... +Downloading http://mirror.yandex.ru/debian/dists/squeeze/non-free/binary-i386/Packages.bz2... +Downloading http://mirror.yandex.ru/debian/dists/squeeze/non-free/debian-installer/binary-amd64/Packages.bz2... +Downloading http://mirror.yandex.ru/debian/dists/squeeze/non-free/debian-installer/binary-i386/Packages.bz2... +Downloading http://mirror.yandex.ru/debian/pool/main/d/dmraid/dmraid-udeb_1.0.0.rc16-4.1_amd64.udeb... +Downloading http://mirror.yandex.ru/debian/pool/main/d/dmraid/dmraid-udeb_1.0.0.rc16-4.1_i386.udeb... +Downloading http://mirror.yandex.ru/debian/pool/main/d/dmraid/dmraid_1.0.0.rc16-4.1_amd64.deb... +Downloading http://mirror.yandex.ru/debian/pool/main/d/dmraid/dmraid_1.0.0.rc16-4.1_i386.deb... +Downloading http://mirror.yandex.ru/debian/pool/main/d/dmraid/libdmraid-dev_1.0.0.rc16-4.1_amd64.deb... +Downloading http://mirror.yandex.ru/debian/pool/main/d/dmraid/libdmraid-dev_1.0.0.rc16-4.1_i386.deb... +Downloading http://mirror.yandex.ru/debian/pool/main/d/dmraid/libdmraid1.0.0.rc16-udeb_1.0.0.rc16-4.1_amd64.udeb... +Downloading http://mirror.yandex.ru/debian/pool/main/d/dmraid/libdmraid1.0.0.rc16-udeb_1.0.0.rc16-4.1_i386.udeb... +Downloading http://mirror.yandex.ru/debian/pool/main/d/dmraid/libdmraid1.0.0.rc16_1.0.0.rc16-4.1_amd64.deb... +Downloading http://mirror.yandex.ru/debian/pool/main/d/dmraid/libdmraid1.0.0.rc16_1.0.0.rc16-4.1_i386.deb... +Mirror `squeeze` has been successfully updated. +Packages filtered: 45830 -> 10. +gpgv: Good signature from "Debian Archive Automatic Signing Key (6.0/squeeze) " +gpgv: Good signature from "Squeeze Stable Release Key " +gpgv: RSA key ID 473041FA +gpgv: RSA key ID B98321F9 \ No newline at end of file diff --git a/system/t04_mirror/create.py b/system/t04_mirror/create.py index 6e1e8ab0..0e469e33 100644 --- a/system/t04_mirror/create.py +++ b/system/t04_mirror/create.py @@ -277,7 +277,7 @@ class CreateMirror23Test(BaseTest): class CreateMirror24Test(BaseTest): """ - create mirror: mirror with wrong filter + create mirror: disable config value with option """ runCmd = "aptly mirror create -ignore-signatures=false -keyring=aptlytest.gpg mirror24 http://security.debian.org/ wheezy/updates main" fixtureGpg = True @@ -286,3 +286,23 @@ class CreateMirror24Test(BaseTest): configOverride = { "gpgDisableVerify": True } + + +class CreateMirror25Test(BaseTest): + """ + create mirror: mirror with udebs enabled + """ + runCmd = "aptly -architectures=i386 mirror create -ignore-signatures -with-udebs mirror25 http://mirror.yandex.ru/debian/ wheezy" + + def check(self): + self.check_output() + self.check_cmd_output("aptly mirror show mirror25", "mirror_show") + + +class CreateMirror26Test(BaseTest): + """ + create mirror: flat mirror with udebs + """ + runCmd = "aptly mirror create -keyring=aptlytest.gpg -with-udebs mirror26 http://pkg.jenkins-ci.org/debian-stable binary/" + fixtureGpg = True + expectedCode = 1 diff --git a/system/t04_mirror/edit.py b/system/t04_mirror/edit.py index 968535af..53b36cbf 100644 --- a/system/t04_mirror/edit.py +++ b/system/t04_mirror/edit.py @@ -79,3 +79,25 @@ class EditMirror7Test(BaseTest): fixtureDB = True runCmd = "aptly mirror edit -architectures=amd64,x56 wheezy-main" expectedCode = 1 + + +class EditMirror8Test(BaseTest): + """ + edit mirror: enable udebs + """ + fixtureDB = True + runCmd = "aptly mirror edit -with-udebs wheezy-main" + + def check(self): + self.check_output() + self.check_cmd_output("aptly mirror show wheezy-main", "mirror_show", match_prepare=lambda s: re.sub(r"Last update: [0-9:+A-Za-z -]+\n", "", s)) + + +class EditMirror9Test(BaseTest): + """ + edit mirror: flat mirror with udebs + """ + fixtureCmds = ["aptly mirror create -keyring=aptlytest.gpg mirror9 http://pkg.jenkins-ci.org/debian-stable binary/"] + fixtureGpg = True + runCmd = "aptly mirror edit -with-udebs mirror9" + expectedCode = 1 diff --git a/system/t04_mirror/update.py b/system/t04_mirror/update.py index 167418e0..13d293ee 100644 --- a/system/t04_mirror/update.py +++ b/system/t04_mirror/update.py @@ -156,3 +156,19 @@ class UpdateMirror11Test(BaseTest): def output_processor(self, output): return "\n".join(sorted(output.split("\n"))) + + +class UpdateMirror12Test(BaseTest): + """ + update mirrors: update with udebs + """ + longTest = False + fixtureGpg = True + fixtureCmds = [ + "aptly -architectures=i386,amd64 mirror create -keyring=aptlytest.gpg -filter='$$Source (dmraid)' -with-udebs squeeze http://mirror.yandex.ru/debian/ squeeze main non-free", + ] + runCmd = "aptly mirror update -keyring=aptlytest.gpg squeeze" + outputMatchPrepare = lambda _, s: re.sub(r'Signature made .* using', '', s) + + def output_processor(self, output): + return "\n".join(sorted(output.split("\n"))) diff --git a/system/t06_publish/PublishRepo12Test_gold b/system/t06_publish/PublishRepo12Test_gold index bee36b01..ee9f9d5e 100644 --- a/system/t06_publish/PublishRepo12Test_gold +++ b/system/t06_publish/PublishRepo12Test_gold @@ -1,5 +1,6 @@ Loading packages... Generating metadata files and linking package files... +Finalizing metadata files... Local repo local-repo has been successfully published. Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. diff --git a/system/t06_publish/PublishRepo14Test_gold b/system/t06_publish/PublishRepo14Test_gold index 443899a1..c44a11e0 100644 --- a/system/t06_publish/PublishRepo14Test_gold +++ b/system/t06_publish/PublishRepo14Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishRepo15Test_gold b/system/t06_publish/PublishRepo15Test_gold index 443899a1..c44a11e0 100644 --- a/system/t06_publish/PublishRepo15Test_gold +++ b/system/t06_publish/PublishRepo15Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishRepo16Test_gold b/system/t06_publish/PublishRepo16Test_gold index 906bdcea..cbe2b131 100644 --- a/system/t06_publish/PublishRepo16Test_gold +++ b/system/t06_publish/PublishRepo16Test_gold @@ -1,6 +1,7 @@ Warning: publishing from empty source, architectures list should be complete, it can't be changed after publishing (use -architectures flag) 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: diff --git a/system/t06_publish/PublishRepo17Test_gold b/system/t06_publish/PublishRepo17Test_gold index 707a2715..0ccea7ca 100644 --- a/system/t06_publish/PublishRepo17Test_gold +++ b/system/t06_publish/PublishRepo17Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishRepo18Test_gold b/system/t06_publish/PublishRepo18Test_gold index a105d5fc..c24630e5 100644 --- a/system/t06_publish/PublishRepo18Test_gold +++ b/system/t06_publish/PublishRepo18Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishRepo1Test_gold b/system/t06_publish/PublishRepo1Test_gold index 8b8f3486..365295fa 100644 --- a/system/t06_publish/PublishRepo1Test_gold +++ b/system/t06_publish/PublishRepo1Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishRepo25Test_gold b/system/t06_publish/PublishRepo25Test_gold index 63326118..b65dfd33 100644 --- a/system/t06_publish/PublishRepo25Test_gold +++ b/system/t06_publish/PublishRepo25Test_gold @@ -2,6 +2,7 @@ WARNING: force overwrite mode enabled, aptly might corrupt other published repos 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: diff --git a/system/t06_publish/PublishRepo26Test_gold b/system/t06_publish/PublishRepo26Test_gold index 8b8f3486..365295fa 100644 --- a/system/t06_publish/PublishRepo26Test_gold +++ b/system/t06_publish/PublishRepo26Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishRepo26Test_udeb_binary b/system/t06_publish/PublishRepo26Test_udeb_binary new file mode 100644 index 00000000..3f13340f --- /dev/null +++ b/system/t06_publish/PublishRepo26Test_udeb_binary @@ -0,0 +1,20 @@ +Package: dmraid-udeb +Version: 1.0.0.rc16-4.1 +Installed-Size: 36 +Priority: optional +Section: debian-installer +Maintainer: Giuseppe Iuculano +Architecture: i386 +Description: Device-Mapper Software RAID support tool (udeb) + dmraid discovers, activates, deactivates and displays properties + of software RAID sets (eg, ATARAID) and contained DOS partitions. + . + This is the minimal package (udeb) used by debian-installer +MD5sum: 4d8bb4dafb0ef9059dac75846e162784 +SHA1: fd5c73e08d4c5381b1136c2ff170332d77526246 +SHA256: fe4ff3351186f03039f8cd6f78e8e4f473a75b613f950caac06fa21dda2d59e8 +Source: dmraid +Size: 11022 +Depends: libc6-udeb (>= 2.11), libdmraid1.0.0.rc16-udeb (>= 1.0.0.rc16), dmsetup-udeb +Filename: pool/main/d/dmraid/dmraid-udeb_1.0.0.rc16-4.1_i386.udeb + diff --git a/system/t06_publish/PublishRepo27Test_gold b/system/t06_publish/PublishRepo27Test_gold new file mode 100644 index 00000000..365295fa --- /dev/null +++ b/system/t06_publish/PublishRepo27Test_gold @@ -0,0 +1,14 @@ +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: + +Local repo local-repo 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 + deb-src 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. diff --git a/system/t06_publish/PublishRepo27Test_udeb_binary b/system/t06_publish/PublishRepo27Test_udeb_binary new file mode 100644 index 00000000..dbfc3986 --- /dev/null +++ b/system/t06_publish/PublishRepo27Test_udeb_binary @@ -0,0 +1,20 @@ +Package: dmraid-udeb +Version: 1.0.0.rc16-4.1 +Installed-Size: 36 +Priority: optional +Section: debian-installer +Maintainer: Giuseppe Iuculano +Architecture: i386 +Description: Device-Mapper Software RAID support tool (udeb) + dmraid discovers, activates, deactivates and displays properties + of software RAID sets (eg, ATARAID) and contained DOS partitions. + . + This is the minimal package (udeb) used by debian-installer +MD5sum: 4d8bb4dafb0ef9059dac75846e162784 +SHA1: fd5c73e08d4c5381b1136c2ff170332d77526246 +SHA256: fe4ff3351186f03039f8cd6f78e8e4f473a75b613f950caac06fa21dda2d59e8 +Filename: pool/main/d/dmraid/dmraid-udeb_1.0.0.rc16-4.1_i386.udeb +Size: 11022 +Source: dmraid +Depends: libc6-udeb (>= 2.11), libdmraid1.0.0.rc16-udeb (>= 1.0.0.rc16), dmsetup-udeb + diff --git a/system/t06_publish/PublishRepo2Test_gold b/system/t06_publish/PublishRepo2Test_gold index 443899a1..c44a11e0 100644 --- a/system/t06_publish/PublishRepo2Test_gold +++ b/system/t06_publish/PublishRepo2Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishRepo3Test_gold b/system/t06_publish/PublishRepo3Test_gold index 4aa7a0e2..0b9fb7c9 100644 --- a/system/t06_publish/PublishRepo3Test_gold +++ b/system/t06_publish/PublishRepo3Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishRepo4Test_gold b/system/t06_publish/PublishRepo4Test_gold index 0e0a9c7b..82b3864d 100644 --- a/system/t06_publish/PublishRepo4Test_gold +++ b/system/t06_publish/PublishRepo4Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishSnapshot13Test_gold b/system/t06_publish/PublishSnapshot13Test_gold index 848cd407..e9a324b8 100644 --- a/system/t06_publish/PublishSnapshot13Test_gold +++ b/system/t06_publish/PublishSnapshot13Test_gold @@ -1,5 +1,6 @@ Loading packages... Generating metadata files and linking package files... +Finalizing metadata files... Snapshot snap13 has been successfully published. Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. diff --git a/system/t06_publish/PublishSnapshot15Test_gold b/system/t06_publish/PublishSnapshot15Test_gold index e0fafd8c..b5b73ebe 100644 --- a/system/t06_publish/PublishSnapshot15Test_gold +++ b/system/t06_publish/PublishSnapshot15Test_gold @@ -1,5 +1,6 @@ Loading packages... Generating metadata files and linking package files... +Finalizing metadata files... Snapshot snap15 has been successfully published. Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. diff --git a/system/t06_publish/PublishSnapshot16Test_gold b/system/t06_publish/PublishSnapshot16Test_gold index e7518879..0befa253 100644 --- a/system/t06_publish/PublishSnapshot16Test_gold +++ b/system/t06_publish/PublishSnapshot16Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishSnapshot17Test_gold b/system/t06_publish/PublishSnapshot17Test_gold index a1d7e456..66bc66b4 100644 --- a/system/t06_publish/PublishSnapshot17Test_gold +++ b/system/t06_publish/PublishSnapshot17Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishSnapshot19Test_gold b/system/t06_publish/PublishSnapshot19Test_gold index 17f563c4..4546c238 100644 --- a/system/t06_publish/PublishSnapshot19Test_gold +++ b/system/t06_publish/PublishSnapshot19Test_gold @@ -1,5 +1,6 @@ Loading packages... Generating metadata files and linking package files... +Finalizing metadata files... Snapshot snap5 has been successfully published. Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. diff --git a/system/t06_publish/PublishSnapshot1Test_gold b/system/t06_publish/PublishSnapshot1Test_gold index f21e3054..8cf10f19 100644 --- a/system/t06_publish/PublishSnapshot1Test_gold +++ b/system/t06_publish/PublishSnapshot1Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishSnapshot1Test_packages_amd64 b/system/t06_publish/PublishSnapshot1Test_packages_amd64 new file mode 100644 index 00000000..fe39b007 --- /dev/null +++ b/system/t06_publish/PublishSnapshot1Test_packages_amd64 @@ -0,0 +1,109 @@ +Package: gnuplot +Version: 4.6.1-1~maverick2 +Installed-Size: 20 +Priority: optional +Section: math +Maintainer: Debian Science Team +Architecture: all +Description: Command-line driven interactive plotting program + Gnuplot is a portable command-line driven interactive data and function + plotting utility that supports lots of output formats, including drivers + for many printers, (La)TeX, (x)fig, Postscript, and so on. The X11-output + is packaged in gnuplot-x11. + . + Data files and self-defined functions can be manipulated by the internal + C-like language. Can perform smoothing, spline-fitting, or nonlinear fits, + and can work with complex numbers. + . + This package is for transition and to install a full-featured gnuplot + supporting the X11-output. +MD5sum: 4912a4464d5588f685c4aa6cfc6be46c +SHA1: 4a50deb413e05f77b31687405465b1229b3be328 +Source: +Size: 1046 +Filename: pool/main/g/gnuplot/gnuplot_4.6.1-1~maverick2_all.deb +Suggests: gnuplot-doc (>= 4.6.1-1~maverick2) +Depends: gnuplot-nox (>= 4.6.1-1~maverick2), gnuplot-x11 (>= 4.6.1-1~maverick2) + +Package: gnuplot-doc +Version: 4.6.1-1~maverick2 +Installed-Size: 5572 +Priority: optional +Section: doc +Maintainer: Debian Science Team +Architecture: all +Description: Command-line driven interactive plotting program + Gnuplot is a portable command-line driven interactive data and function + plotting utility that supports lots of output formats, including drivers + for many printers, (La)TeX, (x)fig, Postscript, and so on. The X11-output + is packaged in gnuplot-x11. + . + Data files and self-defined functions can be manipulated by the internal + C-like language. Can perform smoothing, spline-fitting, or nonlinear fits, + and can work with complex numbers. + . + This package contains the additional documentation. +MD5sum: 25a5028811171f2f1fa157a2f6953e82 +SHA1: 837dd002143054ca01d3b01cae410cc4b4fe10c4 +Source: gnuplot +Depends: dpkg (>= 1.15.4) | install-info +Filename: pool/main/g/gnuplot/gnuplot-doc_4.6.1-1~maverick2_all.deb +Size: 2675242 + +Package: gnuplot-nox +Version: 4.6.1-1~maverick2 +Installed-Size: 2624 +Priority: optional +Section: math +Maintainer: Debian Science Team +Architecture: amd64 +Description: Command-line driven interactive plotting program + Gnuplot is a portable command-line driven interactive data and function + plotting utility that supports lots of output formats, including drivers + for many printers, (La)TeX, (x)fig, Postscript, and so on. The X11-output + is packaged in gnuplot-x11. + . + Data files and self-defined functions can be manipulated by the internal + C-like language. Can perform smoothing, spline-fitting, or nonlinear fits, + and can work with complex numbers. + . + This package is for working without an X server. +MD5sum: db55daca818697b23024255e536399da +SHA1: d5a1b0bbfb562e5cecef3f3fb70ddb4cd6103507 +Suggests: gnuplot-x11 (>= 4.6.1-1~maverick2), gnuplot-doc (>= 4.6.1-1~maverick2) +Filename: pool/main/g/gnuplot/gnuplot-nox_4.6.1-1~maverick2_amd64.deb +Replaces: gnuplot (<< 4.0.0) +Source: gnuplot +Recommends: groff, ttf-liberation +Size: 1129114 +Depends: libc6 (>= 2.11), libcairo2 (>= 1.6.0), libedit2 (>= 2.5.cvs.20010821-1), libgd2-noxpm (>= 2.0.36~rc1~dfsg) | libgd2-xpm (>= 2.0.36~rc1~dfsg), libglib2.0-0 (>= 2.12.0), liblua5.1-0, libpango1.0-0 (>= 1.14.0) + +Package: gnuplot-x11 +Version: 4.6.1-1~maverick2 +Installed-Size: 1716 +Priority: optional +Section: math +Maintainer: Debian Science Team +Architecture: amd64 +Description: Command-line driven interactive plotting program + Gnuplot is a portable command-line driven interactive data and function + plotting utility that supports lots of output formats, including drivers + for many printers, (La)TeX, (x)fig, Postscript, and so on. The X11-output + is packaged in gnuplot-x11. + . + Data files and self-defined functions can be manipulated by the internal + C-like language. Can perform smoothing, spline-fitting, or nonlinear fits, + and can work with complex numbers. + . + This package contains the terminal driver that enables gnuplot to plot + images interactively under X11. Most users will want this, it is however + packaged separately so that low-end systems don't need X installed to use + gnuplot. +MD5sum: 17ab6787992b979e3a4851a90dfaf0a8 +SHA1: d60b0ee30a885ba0202adddccd7968ab70be7426 +Size: 819248 +Source: gnuplot +Depends: gnuplot-nox (>= 4.6.1-1~maverick2), libc6 (>= 2.11), libcairo2 (>= 1.6.0), libedit2 (>= 2.5.cvs.20010821-1), libgcc1 (>= 1:4.1.1), libgd2-noxpm (>= 2.0.36~rc1~dfsg) | libgd2-xpm (>= 2.0.36~rc1~dfsg), libglib2.0-0 (>= 2.12.0), liblua5.1-0, libpango1.0-0 (>= 1.14.0), libstdc++6 (>= 4.1.1), libwxbase2.8-0 (>= 2.8.11.0), libwxgtk2.8-0 (>= 2.8.11.0), libx11-6 +Replaces: gnuplot (<< 4.0.0) +Filename: pool/main/g/gnuplot/gnuplot-x11_4.6.1-1~maverick2_amd64.deb + diff --git a/system/t06_publish/PublishSnapshot1Test_packages_i386 b/system/t06_publish/PublishSnapshot1Test_packages_i386 new file mode 100644 index 00000000..1c5127de --- /dev/null +++ b/system/t06_publish/PublishSnapshot1Test_packages_i386 @@ -0,0 +1,109 @@ +Package: gnuplot +Version: 4.6.1-1~maverick2 +Installed-Size: 20 +Priority: optional +Section: math +Maintainer: Debian Science Team +Architecture: all +Description: Command-line driven interactive plotting program + Gnuplot is a portable command-line driven interactive data and function + plotting utility that supports lots of output formats, including drivers + for many printers, (La)TeX, (x)fig, Postscript, and so on. The X11-output + is packaged in gnuplot-x11. + . + Data files and self-defined functions can be manipulated by the internal + C-like language. Can perform smoothing, spline-fitting, or nonlinear fits, + and can work with complex numbers. + . + This package is for transition and to install a full-featured gnuplot + supporting the X11-output. +MD5sum: 4912a4464d5588f685c4aa6cfc6be46c +SHA1: 4a50deb413e05f77b31687405465b1229b3be328 +Size: 1046 +Depends: gnuplot-nox (>= 4.6.1-1~maverick2), gnuplot-x11 (>= 4.6.1-1~maverick2) +Suggests: gnuplot-doc (>= 4.6.1-1~maverick2) +Filename: pool/main/g/gnuplot/gnuplot_4.6.1-1~maverick2_all.deb +Source: + +Package: gnuplot-doc +Version: 4.6.1-1~maverick2 +Installed-Size: 5572 +Priority: optional +Section: doc +Maintainer: Debian Science Team +Architecture: all +Description: Command-line driven interactive plotting program + Gnuplot is a portable command-line driven interactive data and function + plotting utility that supports lots of output formats, including drivers + for many printers, (La)TeX, (x)fig, Postscript, and so on. The X11-output + is packaged in gnuplot-x11. + . + Data files and self-defined functions can be manipulated by the internal + C-like language. Can perform smoothing, spline-fitting, or nonlinear fits, + and can work with complex numbers. + . + This package contains the additional documentation. +MD5sum: 25a5028811171f2f1fa157a2f6953e82 +SHA1: 837dd002143054ca01d3b01cae410cc4b4fe10c4 +Source: gnuplot +Filename: pool/main/g/gnuplot/gnuplot-doc_4.6.1-1~maverick2_all.deb +Depends: dpkg (>= 1.15.4) | install-info +Size: 2675242 + +Package: gnuplot-nox +Version: 4.6.1-1~maverick2 +Installed-Size: 2536 +Priority: optional +Section: math +Maintainer: Debian Science Team +Architecture: i386 +Description: Command-line driven interactive plotting program + Gnuplot is a portable command-line driven interactive data and function + plotting utility that supports lots of output formats, including drivers + for many printers, (La)TeX, (x)fig, Postscript, and so on. The X11-output + is packaged in gnuplot-x11. + . + Data files and self-defined functions can be manipulated by the internal + C-like language. Can perform smoothing, spline-fitting, or nonlinear fits, + and can work with complex numbers. + . + This package is for working without an X server. +MD5sum: a7ef16004b62fd78acb77edb058ea1c1 +SHA1: 629c3e62f787b0af47b184beb0460dd261c9ca4d +Size: 1046496 +Source: gnuplot +Depends: libc6 (>= 2.11), libcairo2 (>= 1.6.0), libedit2 (>= 2.5.cvs.20010821-1), libgd2-noxpm (>= 2.0.36~rc1~dfsg) | libgd2-xpm (>= 2.0.36~rc1~dfsg), libglib2.0-0 (>= 2.12.0), liblua5.1-0, libpango1.0-0 (>= 1.14.0) +Suggests: gnuplot-x11 (>= 4.6.1-1~maverick2), gnuplot-doc (>= 4.6.1-1~maverick2) +Recommends: groff, ttf-liberation +Replaces: gnuplot (<< 4.0.0) +Filename: pool/main/g/gnuplot/gnuplot-nox_4.6.1-1~maverick2_i386.deb + +Package: gnuplot-x11 +Version: 4.6.1-1~maverick2 +Installed-Size: 1604 +Priority: optional +Section: math +Maintainer: Debian Science Team +Architecture: i386 +Description: Command-line driven interactive plotting program + Gnuplot is a portable command-line driven interactive data and function + plotting utility that supports lots of output formats, including drivers + for many printers, (La)TeX, (x)fig, Postscript, and so on. The X11-output + is packaged in gnuplot-x11. + . + Data files and self-defined functions can be manipulated by the internal + C-like language. Can perform smoothing, spline-fitting, or nonlinear fits, + and can work with complex numbers. + . + This package contains the terminal driver that enables gnuplot to plot + images interactively under X11. Most users will want this, it is however + packaged separately so that low-end systems don't need X installed to use + gnuplot. +MD5sum: fcad938905d0ace50a6ce0c73b2c6583 +SHA1: 02f9a93097a8f798a054e26154dbe5789088c069 +Source: gnuplot +Replaces: gnuplot (<< 4.0.0) +Filename: pool/main/g/gnuplot/gnuplot-x11_4.6.1-1~maverick2_i386.deb +Depends: gnuplot-nox (>= 4.6.1-1~maverick2), libc6 (>= 2.11), libcairo2 (>= 1.6.0), libedit2 (>= 2.5.cvs.20010821-1), libgcc1 (>= 1:4.1.1), libgd2-noxpm (>= 2.0.36~rc1~dfsg) | libgd2-xpm (>= 2.0.36~rc1~dfsg), libglib2.0-0 (>= 2.12.0), liblua5.1-0, libpango1.0-0 (>= 1.14.0), libstdc++6 (>= 4.1.1), libwxbase2.8-0 (>= 2.8.11.0), libwxgtk2.8-0 (>= 2.8.11.0), libx11-6 +Size: 724388 + diff --git a/system/t06_publish/PublishSnapshot20Test_gold b/system/t06_publish/PublishSnapshot20Test_gold index 1ff04477..648d37fb 100644 --- a/system/t06_publish/PublishSnapshot20Test_gold +++ b/system/t06_publish/PublishSnapshot20Test_gold @@ -1,5 +1,6 @@ Loading packages... Generating metadata files and linking package files... +Finalizing metadata files... Snapshot snap3 has been successfully published. Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. diff --git a/system/t06_publish/PublishSnapshot22Test_gold b/system/t06_publish/PublishSnapshot22Test_gold index 1ff04477..648d37fb 100644 --- a/system/t06_publish/PublishSnapshot22Test_gold +++ b/system/t06_publish/PublishSnapshot22Test_gold @@ -1,5 +1,6 @@ Loading packages... Generating metadata files and linking package files... +Finalizing metadata files... Snapshot snap3 has been successfully published. Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. diff --git a/system/t06_publish/PublishSnapshot23Test_gold b/system/t06_publish/PublishSnapshot23Test_gold index 1ff04477..648d37fb 100644 --- a/system/t06_publish/PublishSnapshot23Test_gold +++ b/system/t06_publish/PublishSnapshot23Test_gold @@ -1,5 +1,6 @@ Loading packages... Generating metadata files and linking package files... +Finalizing metadata files... Snapshot snap3 has been successfully published. Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. diff --git a/system/t06_publish/PublishSnapshot24Test_gold b/system/t06_publish/PublishSnapshot24Test_gold index 92859d40..b951722b 100644 --- a/system/t06_publish/PublishSnapshot24Test_gold +++ b/system/t06_publish/PublishSnapshot24Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishSnapshot25Test_gold b/system/t06_publish/PublishSnapshot25Test_gold index 1b95a2eb..6e087c6e 100644 --- a/system/t06_publish/PublishSnapshot25Test_gold +++ b/system/t06_publish/PublishSnapshot25Test_gold @@ -1,6 +1,7 @@ Warning: publishing from empty source, architectures list should be complete, it can't be changed after publishing (use -architectures flag) 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: diff --git a/system/t06_publish/PublishSnapshot26Test_gold b/system/t06_publish/PublishSnapshot26Test_gold index b7def77e..b59e5089 100644 --- a/system/t06_publish/PublishSnapshot26Test_gold +++ b/system/t06_publish/PublishSnapshot26Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishSnapshot27Test_gold b/system/t06_publish/PublishSnapshot27Test_gold index 604b8d09..3e4d4262 100644 --- a/system/t06_publish/PublishSnapshot27Test_gold +++ b/system/t06_publish/PublishSnapshot27Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishSnapshot2Test_gold b/system/t06_publish/PublishSnapshot2Test_gold index 950aab8b..045b14e7 100644 --- a/system/t06_publish/PublishSnapshot2Test_gold +++ b/system/t06_publish/PublishSnapshot2Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishSnapshot34Test_gold b/system/t06_publish/PublishSnapshot34Test_gold index 2a851c89..aa3529d9 100644 --- a/system/t06_publish/PublishSnapshot34Test_gold +++ b/system/t06_publish/PublishSnapshot34Test_gold @@ -2,6 +2,7 @@ WARNING: force overwrite mode enabled, aptly might corrupt other published repos 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: diff --git a/system/t06_publish/PublishSnapshot35Test_gold b/system/t06_publish/PublishSnapshot35Test_gold new file mode 100644 index 00000000..ad5dad8d --- /dev/null +++ b/system/t06_publish/PublishSnapshot35Test_gold @@ -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 squeeze 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/ squeeze 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. diff --git a/system/t06_publish/PublishSnapshot35Test_packages_amd64 b/system/t06_publish/PublishSnapshot35Test_packages_amd64 new file mode 100644 index 00000000..32ad0b4b --- /dev/null +++ b/system/t06_publish/PublishSnapshot35Test_packages_amd64 @@ -0,0 +1,88 @@ +Package: dmraid +Version: 1.0.0.rc16-4.1 +Installed-Size: 112 +Priority: optional +Section: admin +Maintainer: Giuseppe Iuculano +Architecture: amd64 +Description: Device-Mapper Software RAID support tool + dmraid discovers, activates, deactivates and displays properties + of software RAID sets (eg, ATARAID) and contained DOS partitions. + . + dmraid uses the Linux device-mapper to create devices with respective + mappings for the ATARAID sets discovered. + . + The following formats are supported: + Highpoint HPT37X/HPT45X + Intel Software RAID + LSI Logic MegaRAID + NVidia NForce RAID (nvraid) + Promise FastTrack + Silicon Image(tm) Medley(tm) + VIA Software RAID + . + Please read the documentation in /usr/share/doc/dmraid BEFORE attempting + any use of this software. Improper use can cause data loss! +MD5sum: 35da9bcdd12c7fb08eb7192f0a17ddf2 +SHA1: 6a89d3f9e3b80a172811bb7d74eac43f119a8b7c +SHA256: 125405c4b0a7364bf209c161f393d4d0152ba9d02a55a95d90a7637f7b373b8f +Tag: admin::filesystem, admin::kernel, hardware::storage, implemented-in::c, interface::commandline, role::program, scope::utility, use::scanning +Size: 38620 +Depends: libc6 (>= 2.3), libdmraid1.0.0.rc16 (>= 1.0.0.rc16), libselinux1 (>= 1.32), libsepol1 (>= 1.14), udev, dmsetup +Homepage: http://people.redhat.com/~heinzm/sw/dmraid/ +Source: +Filename: pool/main/d/dmraid/dmraid_1.0.0.rc16-4.1_amd64.deb + +Package: libdmraid-dev +Version: 1.0.0.rc16-4.1 +Installed-Size: 496 +Priority: optional +Section: libdevel +Maintainer: Giuseppe Iuculano +Architecture: amd64 +Description: Device-Mapper Software RAID support tool - header files + dmraid discovers, activates, deactivates and displays properties + of software RAID sets (eg, ATARAID) and contained DOS partitions. + . + dmraid uses the Linux device-mapper to create devices with respective + mappings for the ATARAID sets discovered. + . + This package contains the header files needed to link programs against + dmraid. +MD5sum: bb209b5796592d786c28844b949216dc +SHA1: cd8baba807fa92a88a265a044d821df8b677b5cb +SHA256: 081a48ad5372a941c35d41733da89a52cbe2d8f49032c2a4ef03148e4049615f +Homepage: http://people.redhat.com/~heinzm/sw/dmraid/ +Tag: admin::hardware, devel::lang:c, devel::library, hardware::storage, implemented-in::c, qa::low-popcon, role::devel-lib, use::driver +Size: 152618 +Depends: libdmraid1.0.0.rc16 (= 1.0.0.rc16-4.1) +Filename: pool/main/d/dmraid/libdmraid-dev_1.0.0.rc16-4.1_amd64.deb +Source: dmraid + +Package: libdmraid1.0.0.rc16 +Version: 1.0.0.rc16-4.1 +Installed-Size: 244 +Priority: optional +Section: libs +Maintainer: Giuseppe Iuculano +Architecture: amd64 +Description: Device-Mapper Software RAID support tool - shared library + dmraid discovers, activates, deactivates and displays properties + of software RAID sets (eg, ATARAID) and contained DOS partitions. + . + dmraid uses the Linux device-mapper to create devices with respective + mappings for the ATARAID sets discovered. + . + This package contains the dmraid shared library, which implements + the back half of dmraid, including on-disk metadata formats. +MD5sum: a66d03bb1ddad78f879660ddedf86295 +SHA1: 6292936617c466e67a3148c66d0c27c068d055d3 +SHA256: 29f06bd3ae42e3380b356b69598be07724d178af35f2f1a64648c7f8ff85bef9 +Depends: libc6 (>= 2.7), libdevmapper1.02.1 (>= 2:1.02.20) +Homepage: http://people.redhat.com/~heinzm/sw/dmraid/ +Size: 108978 +Tag: admin::hardware, admin::kernel, devel::lang:c, devel::library, hardware::storage, implemented-in::c, role::{devel-lib,kernel,shared-lib}, use::driver +Filename: pool/main/d/dmraid/libdmraid1.0.0.rc16_1.0.0.rc16-4.1_amd64.deb +Replaces: libdmraid1.0.0.rc15 (<< 1.0.0.rc16-1) +Source: dmraid + diff --git a/system/t06_publish/PublishSnapshot35Test_packages_i386 b/system/t06_publish/PublishSnapshot35Test_packages_i386 new file mode 100644 index 00000000..be1c153c --- /dev/null +++ b/system/t06_publish/PublishSnapshot35Test_packages_i386 @@ -0,0 +1,88 @@ +Package: libdmraid1.0.0.rc16 +Version: 1.0.0.rc16-4.1 +Installed-Size: 268 +Priority: optional +Section: libs +Maintainer: Giuseppe Iuculano +Architecture: i386 +Description: Device-Mapper Software RAID support tool - shared library + dmraid discovers, activates, deactivates and displays properties + of software RAID sets (eg, ATARAID) and contained DOS partitions. + . + dmraid uses the Linux device-mapper to create devices with respective + mappings for the ATARAID sets discovered. + . + This package contains the dmraid shared library, which implements + the back half of dmraid, including on-disk metadata formats. +MD5sum: 9330ba2ffd2f22d695fdf692f8120159 +SHA1: 6b262419836e8cad4500043f5e9e6a1581074023 +SHA256: 2b2238679ac8ff4776a3a2caf533c551700d9f92a7d2af23d6457acf7de5d6c8 +Tag: admin::hardware, admin::kernel, devel::lang:c, devel::library, hardware::storage, implemented-in::c, role::{devel-lib,kernel,shared-lib}, use::driver +Filename: pool/main/d/dmraid/libdmraid1.0.0.rc16_1.0.0.rc16-4.1_i386.deb +Replaces: libdmraid1.0.0.rc15 (<< 1.0.0.rc16-1) +Homepage: http://people.redhat.com/~heinzm/sw/dmraid/ +Source: dmraid +Depends: libc6 (>= 2.7), libdevmapper1.02.1 (>= 2:1.02.20) +Size: 106088 + +Package: dmraid +Version: 1.0.0.rc16-4.1 +Installed-Size: 176 +Priority: optional +Section: admin +Maintainer: Giuseppe Iuculano +Architecture: i386 +Description: Device-Mapper Software RAID support tool + dmraid discovers, activates, deactivates and displays properties + of software RAID sets (eg, ATARAID) and contained DOS partitions. + . + dmraid uses the Linux device-mapper to create devices with respective + mappings for the ATARAID sets discovered. + . + The following formats are supported: + Highpoint HPT37X/HPT45X + Intel Software RAID + LSI Logic MegaRAID + NVidia NForce RAID (nvraid) + Promise FastTrack + Silicon Image(tm) Medley(tm) + VIA Software RAID + . + Please read the documentation in /usr/share/doc/dmraid BEFORE attempting + any use of this software. Improper use can cause data loss! +MD5sum: f8aea4e9eaea341b112f02e9efe1678e +SHA1: bb96a258038c79bc04eef49d5875deed4c67dd16 +SHA256: 6a8294bef99040055009da41597869bfdb17ac89c3166e49c57340abe7f702ba +Size: 37984 +Depends: libc6 (>= 2.3), libdmraid1.0.0.rc16 (>= 1.0.0.rc16), libselinux1 (>= 1.32), libsepol1 (>= 1.14), udev, dmsetup +Filename: pool/main/d/dmraid/dmraid_1.0.0.rc16-4.1_i386.deb +Tag: admin::filesystem, admin::kernel, hardware::storage, implemented-in::c, interface::commandline, role::program, scope::utility, use::scanning +Source: +Homepage: http://people.redhat.com/~heinzm/sw/dmraid/ + +Package: libdmraid-dev +Version: 1.0.0.rc16-4.1 +Installed-Size: 440 +Priority: optional +Section: libdevel +Maintainer: Giuseppe Iuculano +Architecture: i386 +Description: Device-Mapper Software RAID support tool - header files + dmraid discovers, activates, deactivates and displays properties + of software RAID sets (eg, ATARAID) and contained DOS partitions. + . + dmraid uses the Linux device-mapper to create devices with respective + mappings for the ATARAID sets discovered. + . + This package contains the header files needed to link programs against + dmraid. +MD5sum: 5395970df02ab5f1609cd7eccc15ead1 +SHA1: f27bd38eeb58a32ee7e58ac8a2950649bd4ef17b +SHA256: 2abe9142ce6aa341df57303b5bc847522779ea9109b0fe734e2ae4419872da71 +Tag: admin::hardware, devel::lang:c, devel::library, hardware::storage, implemented-in::c, qa::low-popcon, role::devel-lib, use::driver +Homepage: http://people.redhat.com/~heinzm/sw/dmraid/ +Size: 145808 +Filename: pool/main/d/dmraid/libdmraid-dev_1.0.0.rc16-4.1_i386.deb +Depends: libdmraid1.0.0.rc16 (= 1.0.0.rc16-4.1) +Source: dmraid + diff --git a/system/t06_publish/PublishSnapshot35Test_packages_udeb_amd64 b/system/t06_publish/PublishSnapshot35Test_packages_udeb_amd64 new file mode 100644 index 00000000..45ca5fd0 --- /dev/null +++ b/system/t06_publish/PublishSnapshot35Test_packages_udeb_amd64 @@ -0,0 +1,40 @@ +Package: dmraid-udeb +Version: 1.0.0.rc16-4.1 +Installed-Size: 32 +Priority: optional +Section: debian-installer +Maintainer: Giuseppe Iuculano +Architecture: amd64 +Description: Device-Mapper Software RAID support tool (udeb) + dmraid discovers, activates, deactivates and displays properties + of software RAID sets (eg, ATARAID) and contained DOS partitions. + . + This is the minimal package (udeb) used by debian-installer +MD5sum: 721685fde18001ad0c9ac172c3118983 +SHA1: 88e229b76cb5866c8868a491a6690b3fde2b33d5 +SHA256: efae69921b97494e40437712053b60a5105fa433f3cfbae3bb2991d341eb95a6 +Filename: pool/main/d/dmraid/dmraid-udeb_1.0.0.rc16-4.1_amd64.udeb +Depends: libc6-udeb (>= 2.11), libdmraid1.0.0.rc16-udeb (>= 1.0.0.rc16), dmsetup-udeb +Source: dmraid +Size: 11806 + +Package: libdmraid1.0.0.rc16-udeb +Version: 1.0.0.rc16-4.1 +Installed-Size: 0 +Priority: optional +Section: debian-installer +Maintainer: Giuseppe Iuculano +Architecture: amd64 +Description: Device-Mapper Software RAID support tool - shared library (udeb) + dmraid discovers, activates, deactivates and displays properties + of software RAID sets (eg, ATARAID) and contained DOS partitions. + . + This is the minimal package (udeb shared library) used by debian-installer +MD5sum: efae3ee2d1ccd78aaec7d452ecba4c6a +SHA1: 2ef8c01a0375c92f59fed32949b9469cc53d0b99 +SHA256: aabf098de9fcf2da0c0f66f2d9f1cb61f7e244dd2b009361e40cd29827749d44 +Size: 92372 +Filename: pool/main/d/dmraid/libdmraid1.0.0.rc16-udeb_1.0.0.rc16-4.1_amd64.udeb +Source: dmraid +Depends: libc6-udeb (>= 2.11), libdevmapper1.02.1-udeb (>= 2:1.02.48) + diff --git a/system/t06_publish/PublishSnapshot35Test_packages_udeb_i386 b/system/t06_publish/PublishSnapshot35Test_packages_udeb_i386 new file mode 100644 index 00000000..0f65046d --- /dev/null +++ b/system/t06_publish/PublishSnapshot35Test_packages_udeb_i386 @@ -0,0 +1,40 @@ +Package: dmraid-udeb +Version: 1.0.0.rc16-4.1 +Installed-Size: 36 +Priority: optional +Section: debian-installer +Maintainer: Giuseppe Iuculano +Architecture: i386 +Description: Device-Mapper Software RAID support tool (udeb) + dmraid discovers, activates, deactivates and displays properties + of software RAID sets (eg, ATARAID) and contained DOS partitions. + . + This is the minimal package (udeb) used by debian-installer +MD5sum: 4d8bb4dafb0ef9059dac75846e162784 +SHA1: fd5c73e08d4c5381b1136c2ff170332d77526246 +SHA256: fe4ff3351186f03039f8cd6f78e8e4f473a75b613f950caac06fa21dda2d59e8 +Source: dmraid +Size: 11022 +Filename: pool/main/d/dmraid/dmraid-udeb_1.0.0.rc16-4.1_i386.udeb +Depends: libc6-udeb (>= 2.11), libdmraid1.0.0.rc16-udeb (>= 1.0.0.rc16), dmsetup-udeb + +Package: libdmraid1.0.0.rc16-udeb +Version: 1.0.0.rc16-4.1 +Installed-Size: 212 +Priority: optional +Section: debian-installer +Maintainer: Giuseppe Iuculano +Architecture: i386 +Description: Device-Mapper Software RAID support tool - shared library (udeb) + dmraid discovers, activates, deactivates and displays properties + of software RAID sets (eg, ATARAID) and contained DOS partitions. + . + This is the minimal package (udeb shared library) used by debian-installer +MD5sum: aba78093c15c8bcd8e237f6a578c6c65 +SHA1: c5e95d443889775a48d6c48bf332a21a37ce63c6 +SHA256: 1c51dbf4cd1a5a683fd60e2b4f44dc6f8f574de3aea52354541a9a105f10f918 +Depends: libc6-udeb (>= 2.11), libdevmapper1.02.1-udeb (>= 2:1.02.48) +Source: dmraid +Filename: pool/main/d/dmraid/libdmraid1.0.0.rc16-udeb_1.0.0.rc16-4.1_i386.udeb +Size: 89490 + diff --git a/system/t06_publish/PublishSnapshot35Test_release b/system/t06_publish/PublishSnapshot35Test_release new file mode 100644 index 00000000..2e1afbf0 --- /dev/null +++ b/system/t06_publish/PublishSnapshot35Test_release @@ -0,0 +1,58 @@ +Origin: . squeeze +Label: . squeeze +Codename: squeeze +Date: Tue, 30 Sep 2014 15:35:22 UTC +Architectures: amd64 i386 +Components: main +Description: Generated by aptly +MD5Sum: + a75ee7a5106ba4369de928e26b7afefd 803 main/debian-installer/binary-i386/Packages.bz2 + d82f063b0a674ee60d070fc960c33c92 677 main/debian-installer/binary-amd64/Packages.gz + 8b51fb682910e0d52caa31b61ef1192a 807 main/debian-installer/binary-amd64/Packages.bz2 + a77ec46f63b69e32fdf3a5aa484c1190 1592 main/binary-i386/Packages.bz2 + 9efff4ebb46b70b71215a8df4f71069d 88 main/binary-amd64/Release + d9d38d0cff22f7364cbabb4e8b536316 87 main/debian-installer/binary-i386/Release + 0eaacc9b677879735bcc958c2e24c699 1395 main/binary-i386/Packages.gz + e1c910470349056521dbc4d473a48637 677 main/debian-installer/binary-i386/Packages.gz + d9d38d0cff22f7364cbabb4e8b536316 87 main/binary-i386/Release + 1093e4c5170235ac5cc872f985088815 3669 main/binary-amd64/Packages + c4b9d1069fcb04fdad832a657ff02ef3 3663 main/binary-i386/Packages + b58a784bc0764d523fd9134b53c8dda0 1585 main/binary-amd64/Packages.bz2 + 9ac58b6597a8e0344d69c2550aca9720 1601 main/debian-installer/binary-i386/Packages + f940214380907f004b1e175a6c20bf07 1603 main/debian-installer/binary-amd64/Packages + 9efff4ebb46b70b71215a8df4f71069d 88 main/debian-installer/binary-amd64/Release + 703b425641f4e847a1f0a8a0c28fb128 1394 main/binary-amd64/Packages.gz +SHA1: + a0c5944608dc219fad9d799b3fa6aae280d331c0 803 main/debian-installer/binary-i386/Packages.bz2 + 5faf018385934f65a6af0c4ab3af2fda62c63aff 677 main/debian-installer/binary-amd64/Packages.gz + 61c9b82f75a642839e6e32e5a734f890417b1160 807 main/debian-installer/binary-amd64/Packages.bz2 + e69414d40bb79bca8dc1b274ceb42fb04c3d02ee 1592 main/binary-i386/Packages.bz2 + 7c25a15429615225e3eb90540ba783561fc09448 88 main/binary-amd64/Release + f07fcb0797d81341b6284ed86e5903dc57341a90 87 main/debian-installer/binary-i386/Release + a8657c2409859da9f91280a5da48f3b5276e2829 1395 main/binary-i386/Packages.gz + b8e5b5b41a6ded99006a94c0550cd2291ac19d7f 677 main/debian-installer/binary-i386/Packages.gz + f07fcb0797d81341b6284ed86e5903dc57341a90 87 main/binary-i386/Release + 0c86f7bd6ed2b52b0ab12ea08a76d14235b85d7c 3669 main/binary-amd64/Packages + 4227cdcd3260e10eee066182f22ec8eec4fc7f0a 3663 main/binary-i386/Packages + 8cec67723e4cee24f67ffa46a1f4ae7165fb31f0 1585 main/binary-amd64/Packages.bz2 + ae94f4b0b3396951399de65e04784ef7b0f95119 1601 main/debian-installer/binary-i386/Packages + 6f8e5137388e594b31bed56ca9e08f8e9f305ca4 1603 main/debian-installer/binary-amd64/Packages + 7c25a15429615225e3eb90540ba783561fc09448 88 main/debian-installer/binary-amd64/Release + 163a7a656c5e338d53bbc6cbe80263ca551dfa15 1394 main/binary-amd64/Packages.gz +SHA256: + 4f8eeab36071b8791ce74099df89e01d46ab66f3c76dd9afe6c31fe48c30783d 803 main/debian-installer/binary-i386/Packages.bz2 + bf7b96d1c66abb7dc6037299ab4fe0119d42b66c8c01cfa0520e27d813c99e50 677 main/debian-installer/binary-amd64/Packages.gz + 3a30d9da1ed1108d3451c0c7fe60d99594a2cdf2459a8e505920ed69043bdc6c 807 main/debian-installer/binary-amd64/Packages.bz2 + 1d947dcc40ad2ace3b8226b68161948478a187eb9865d4b62c5068200e0ec058 1592 main/binary-i386/Packages.bz2 + e8378aced6fec291729f656e1d884225ec9c28ba67fc434ef2531223bc37033e 88 main/binary-amd64/Release + 62b9292134aefb30a75aff3e25c2c694d128d73a1d193f29a397789dd902a854 87 main/debian-installer/binary-i386/Release + e30a8b568654e69f1fe7744ace4ffb0d385a8e52502ffd9f84a8184130386a08 1395 main/binary-i386/Packages.gz + f6f2350eab308eb2f290b98f088e973e70ded5d1244688b71edfb201ac85e832 677 main/debian-installer/binary-i386/Packages.gz + 62b9292134aefb30a75aff3e25c2c694d128d73a1d193f29a397789dd902a854 87 main/binary-i386/Release + e2d936cb65a504e6bf13bb09c5a0c6e8943cdd7845d715d571b1fb58262a624f 3669 main/binary-amd64/Packages + 14ae70d15fa8263b55056ef36bac9208ee9e03847118788cc00b6d2a46b5fa10 3663 main/binary-i386/Packages + 0128db3912e0e2f92b2e3a277c28239d6e072323b35bc007dbf32bc696df413c 1585 main/binary-amd64/Packages.bz2 + c3f2708d36c503619f5b3f43b2c7da3f559b72f723c96d0ce9c664f92c6fcc14 1601 main/debian-installer/binary-i386/Packages + 1f90f76bc0df9a588940d14f3ee0ad7d26a86809537f2e5ff4d340e4a8a21f3d 1603 main/debian-installer/binary-amd64/Packages + e8378aced6fec291729f656e1d884225ec9c28ba67fc434ef2531223bc37033e 88 main/debian-installer/binary-amd64/Release + e179f48a91a8dc614a37e2fb21d8d82ff3937fd44e077ec0e2507b8382d896ab 1394 main/binary-amd64/Packages.gz diff --git a/system/t06_publish/PublishSnapshot35Test_release_udeb_i386 b/system/t06_publish/PublishSnapshot35Test_release_udeb_i386 new file mode 100644 index 00000000..77d3c28c --- /dev/null +++ b/system/t06_publish/PublishSnapshot35Test_release_udeb_i386 @@ -0,0 +1,5 @@ +Origin: . squeeze +Label: . squeeze +Architecture: i386 +Archive: squeeze +Component: main diff --git a/system/t06_publish/PublishSnapshot3Test_gold b/system/t06_publish/PublishSnapshot3Test_gold index 0b1abe52..ce8cd03c 100644 --- a/system/t06_publish/PublishSnapshot3Test_gold +++ b/system/t06_publish/PublishSnapshot3Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishSnapshot4Test_gold b/system/t06_publish/PublishSnapshot4Test_gold index 817f40ae..f4fe3441 100644 --- a/system/t06_publish/PublishSnapshot4Test_gold +++ b/system/t06_publish/PublishSnapshot4Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishSnapshot5Test_gold b/system/t06_publish/PublishSnapshot5Test_gold index 67cf0fc2..11b57889 100644 --- a/system/t06_publish/PublishSnapshot5Test_gold +++ b/system/t06_publish/PublishSnapshot5Test_gold @@ -1,5 +1,6 @@ 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: diff --git a/system/t06_publish/PublishSwitch11Test_gold b/system/t06_publish/PublishSwitch11Test_gold index 038992dd..2385a0ed 100644 --- a/system/t06_publish/PublishSwitch11Test_gold +++ b/system/t06_publish/PublishSwitch11Test_gold @@ -2,6 +2,7 @@ WARNING: force overwrite mode enabled, aptly might corrupt other published repos 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: Cleaning up prefix "." components main... diff --git a/system/t06_publish/PublishSwitch1Test_gold b/system/t06_publish/PublishSwitch1Test_gold index 4718a447..3369aa06 100644 --- a/system/t06_publish/PublishSwitch1Test_gold +++ b/system/t06_publish/PublishSwitch1Test_gold @@ -1,5 +1,6 @@ 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: Cleaning up prefix "." components main... diff --git a/system/t06_publish/PublishSwitch2Test_gold b/system/t06_publish/PublishSwitch2Test_gold index 43468d71..c8464423 100644 --- a/system/t06_publish/PublishSwitch2Test_gold +++ b/system/t06_publish/PublishSwitch2Test_gold @@ -1,5 +1,6 @@ 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: Cleaning up prefix "ppa" components main... diff --git a/system/t06_publish/PublishSwitch3Test_gold b/system/t06_publish/PublishSwitch3Test_gold index 4718a447..3369aa06 100644 --- a/system/t06_publish/PublishSwitch3Test_gold +++ b/system/t06_publish/PublishSwitch3Test_gold @@ -1,5 +1,6 @@ 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: Cleaning up prefix "." components main... diff --git a/system/t06_publish/PublishSwitch4Test_gold b/system/t06_publish/PublishSwitch4Test_gold index 2a0bd499..7256431a 100644 --- a/system/t06_publish/PublishSwitch4Test_gold +++ b/system/t06_publish/PublishSwitch4Test_gold @@ -1,5 +1,6 @@ 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: Cleaning up prefix "ppa" components main... diff --git a/system/t06_publish/PublishSwitch8Test_gold b/system/t06_publish/PublishSwitch8Test_gold index e28bc2bb..d9870ff9 100644 --- a/system/t06_publish/PublishSwitch8Test_gold +++ b/system/t06_publish/PublishSwitch8Test_gold @@ -1,5 +1,6 @@ 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: Cleaning up prefix "." components b, c... diff --git a/system/t06_publish/PublishUpdate10Test_gold b/system/t06_publish/PublishUpdate10Test_gold index f13cb098..bda2f4dd 100644 --- a/system/t06_publish/PublishUpdate10Test_gold +++ b/system/t06_publish/PublishUpdate10Test_gold @@ -2,6 +2,7 @@ WARNING: force overwrite mode enabled, aptly might corrupt other published repos 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: Cleaning up prefix "." components main... diff --git a/system/t06_publish/PublishUpdate1Test_gold b/system/t06_publish/PublishUpdate1Test_gold index 9179c19d..72e92234 100644 --- a/system/t06_publish/PublishUpdate1Test_gold +++ b/system/t06_publish/PublishUpdate1Test_gold @@ -1,5 +1,6 @@ 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: Cleaning up prefix "." components main... diff --git a/system/t06_publish/PublishUpdate2Test_gold b/system/t06_publish/PublishUpdate2Test_gold index 9179c19d..72e92234 100644 --- a/system/t06_publish/PublishUpdate2Test_gold +++ b/system/t06_publish/PublishUpdate2Test_gold @@ -1,5 +1,6 @@ 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: Cleaning up prefix "." components main... diff --git a/system/t06_publish/PublishUpdate3Test_gold b/system/t06_publish/PublishUpdate3Test_gold index 9179c19d..72e92234 100644 --- a/system/t06_publish/PublishUpdate3Test_gold +++ b/system/t06_publish/PublishUpdate3Test_gold @@ -1,5 +1,6 @@ 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: Cleaning up prefix "." components main... diff --git a/system/t06_publish/PublishUpdate4Test_gold b/system/t06_publish/PublishUpdate4Test_gold index 4ebbbebe..dce245d5 100644 --- a/system/t06_publish/PublishUpdate4Test_gold +++ b/system/t06_publish/PublishUpdate4Test_gold @@ -1,5 +1,6 @@ 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: Cleaning up prefix "." components main... diff --git a/system/t06_publish/PublishUpdate7Test_gold b/system/t06_publish/PublishUpdate7Test_gold index 9eb5d807..813d7055 100644 --- a/system/t06_publish/PublishUpdate7Test_gold +++ b/system/t06_publish/PublishUpdate7Test_gold @@ -1,5 +1,6 @@ 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: Cleaning up prefix "." components contrib, main... diff --git a/system/t06_publish/PublishUpdate8Test_gold b/system/t06_publish/PublishUpdate8Test_gold index 046785d1..09aa9845 100644 --- a/system/t06_publish/PublishUpdate8Test_gold +++ b/system/t06_publish/PublishUpdate8Test_gold @@ -1,5 +1,6 @@ Loading packages... Generating metadata files and linking package files... +Finalizing metadata files... Cleaning up prefix "." components contrib, main... Publish for local repo ./squeeze [i386] publishes {contrib: [repo2]}, {main: [repo1]} has been successfully updated. diff --git a/system/t06_publish/repo.py b/system/t06_publish/repo.py index e0fdc6ac..b29d4623 100644 --- a/system/t06_publish/repo.py +++ b/system/t06_publish/repo.py @@ -608,3 +608,41 @@ class PublishRepo26Test(BaseTest): "--verify", os.path.join(os.environ["HOME"], ".aptly", 'public/dists/maverick/Release.gpg'), os.path.join(os.environ["HOME"], ".aptly", 'public/dists/maverick/Release')]) + +class PublishRepo27Test(BaseTest): + """ + publish repo: with udebs + """ + fixtureCmds = [ + "aptly repo create local-repo", + "aptly repo add local-repo ${files} ${udebs}", + ] + runCmd = "aptly publish repo -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=maverick local-repo" + gold_processor = BaseTest.expand_environ + + def check(self): + super(PublishRepo27Test, self).check() + + self.check_exists('public/dists/maverick/InRelease') + self.check_exists('public/dists/maverick/Release') + self.check_exists('public/dists/maverick/Release.gpg') + + self.check_exists('public/dists/maverick/main/binary-i386/Release') + self.check_exists('public/dists/maverick/main/binary-i386/Packages') + self.check_exists('public/dists/maverick/main/binary-i386/Packages.gz') + self.check_exists('public/dists/maverick/main/binary-i386/Packages.bz2') + self.check_exists('public/dists/maverick/main/source/Release') + self.check_exists('public/dists/maverick/main/source/Sources') + self.check_exists('public/dists/maverick/main/source/Sources.gz') + self.check_exists('public/dists/maverick/main/source/Sources.bz2') + + self.check_exists('public/pool/main/p/pyspi/pyspi_0.6.1-1.3.dsc') + self.check_exists('public/pool/main/p/pyspi/pyspi_0.6.1-1.3.diff.gz') + self.check_exists('public/pool/main/p/pyspi/pyspi_0.6.1.orig.tar.gz') + self.check_exists('public/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc') + self.check_exists('public/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb') + self.check_exists('public/pool/main/d/dmraid/dmraid-udeb_1.0.0.rc16-4.1_amd64.udeb') + self.check_exists('public/pool/main/d/dmraid/dmraid-udeb_1.0.0.rc16-4.1_i386.udeb') + + # verify contents except of sums + self.check_file_contents('public/dists/maverick/main/debian-installer/binary-i386/Packages', 'udeb_binary', match_prepare=lambda s: "\n".join(sorted(s.split("\n")))) diff --git a/system/t06_publish/snapshot.py b/system/t06_publish/snapshot.py index 10d26b36..5fac3d25 100644 --- a/system/t06_publish/snapshot.py +++ b/system/t06_publish/snapshot.py @@ -8,6 +8,10 @@ def strip_processor(output): return "\n".join([l for l in output.split("\n") if not l.startswith(' ') and not l.startswith('Date:')]) +def sorted_processor(output): + return "\n".join(sorted(output.split("\n"))) + + class PublishSnapshot1Test(BaseTest): """ publish snapshot: defaults @@ -27,12 +31,16 @@ class PublishSnapshot1Test(BaseTest): self.check_exists('public/dists/maverick/Release') self.check_exists('public/dists/maverick/Release.gpg') + self.check_exists('public/dists/maverick/main/binary-i386/Release') self.check_exists('public/dists/maverick/main/binary-i386/Packages') self.check_exists('public/dists/maverick/main/binary-i386/Packages.gz') self.check_exists('public/dists/maverick/main/binary-i386/Packages.bz2') + self.check_exists('public/dists/maverick/main/binary-amd64/Release') self.check_exists('public/dists/maverick/main/binary-amd64/Packages') self.check_exists('public/dists/maverick/main/binary-amd64/Packages.gz') self.check_exists('public/dists/maverick/main/binary-amd64/Packages.bz2') + self.check_not_exists('public/dists/maverick/main/debian-installer/binary-i386/Packages') + self.check_not_exists('public/dists/maverick/main/debian-installer/binary-amd64/Packages') self.check_exists('public/pool/main/g/gnuplot/gnuplot-doc_4.6.1-1~maverick2_all.deb') @@ -42,6 +50,9 @@ class PublishSnapshot1Test(BaseTest): self.check_file_contents('public/dists/maverick/main/binary-i386/Release', 'release_i386') self.check_file_contents('public/dists/maverick/main/binary-amd64/Release', 'release_amd64') + self.check_file_contents('public/dists/maverick/main/binary-i386/Packages', 'packages_i386', match_prepare=sorted_processor) + self.check_file_contents('public/dists/maverick/main/binary-amd64/Packages', 'packages_amd64', match_prepare=sorted_processor) + # verify signatures self.run_cmd(["gpg", "--no-auto-check-trustdb", "--keyring", os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "aptly.pub"), "--verify", os.path.join(os.environ["HOME"], ".aptly", 'public/dists/maverick/InRelease')]) @@ -822,3 +833,96 @@ class PublishSnapshot34Test(BaseTest): super(PublishSnapshot34Test, self).check() self.check_file_contents("public/pool/main/p/pyspi/pyspi_0.6.1.orig.tar.gz", "file") + + +class PublishSnapshot35Test(BaseTest): + """ + publish snapshot: mirror with udebs + """ + fixtureGpg = True + fixtureCmds = [ + "aptly -architectures=i386,amd64 mirror create -keyring=aptlytest.gpg -filter='$$Source (dmraid)' -with-udebs squeeze http://mirror.yandex.ru/debian/ squeeze main non-free", + "aptly mirror update -keyring=aptlytest.gpg squeeze", + "aptly snapshot create squeeze from mirror squeeze", + ] + runCmd = "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec squeeze" + gold_processor = BaseTest.expand_environ + + def check(self): + super(PublishSnapshot35Test, self).check() + + self.check_exists('public/dists/squeeze/InRelease') + self.check_exists('public/dists/squeeze/Release') + self.check_exists('public/dists/squeeze/Release.gpg') + + self.check_exists('public/dists/squeeze/main/binary-i386/Release') + self.check_exists('public/dists/squeeze/main/binary-i386/Packages') + self.check_exists('public/dists/squeeze/main/binary-i386/Packages.gz') + self.check_exists('public/dists/squeeze/main/binary-i386/Packages.bz2') + self.check_exists('public/dists/squeeze/main/debian-installer/binary-i386/Release') + self.check_exists('public/dists/squeeze/main/debian-installer/binary-i386/Packages') + self.check_exists('public/dists/squeeze/main/debian-installer/binary-i386/Packages.gz') + self.check_exists('public/dists/squeeze/main/debian-installer/binary-i386/Packages.bz2') + self.check_exists('public/dists/squeeze/main/binary-amd64/Release') + self.check_exists('public/dists/squeeze/main/binary-amd64/Packages') + self.check_exists('public/dists/squeeze/main/binary-amd64/Packages.gz') + self.check_exists('public/dists/squeeze/main/binary-amd64/Packages.bz2') + self.check_exists('public/dists/squeeze/main/debian-installer/binary-amd64/Release') + self.check_exists('public/dists/squeeze/main/debian-installer/binary-amd64/Packages') + self.check_exists('public/dists/squeeze/main/debian-installer/binary-amd64/Packages.gz') + self.check_exists('public/dists/squeeze/main/debian-installer/binary-amd64/Packages.bz2') + self.check_not_exists('public/dists/squeeze/main/source/Sources') + self.check_not_exists('public/dists/squeeze/main/source/Sources.gz') + self.check_not_exists('public/dists/squeeze/main/source/Sources.bz2') + + self.check_exists('public/pool/main/d/dmraid/dmraid-udeb_1.0.0.rc16-4.1_amd64.udeb') + self.check_exists('public/pool/main/d/dmraid/dmraid-udeb_1.0.0.rc16-4.1_i386.udeb') + self.check_exists('public/pool/main/d/dmraid/dmraid_1.0.0.rc16-4.1_amd64.deb') + self.check_exists('public/pool/main/d/dmraid/dmraid_1.0.0.rc16-4.1_i386.deb') + + self.check_file_contents('public/dists/squeeze/main/binary-i386/Packages', 'packages_i386', match_prepare=sorted_processor) + self.check_file_contents('public/dists/squeeze/main/debian-installer/binary-i386/Packages', 'packages_udeb_i386', match_prepare=sorted_processor) + self.check_file_contents('public/dists/squeeze/main/binary-amd64/Packages', 'packages_amd64', match_prepare=sorted_processor) + self.check_file_contents('public/dists/squeeze/main/debian-installer/binary-amd64/Packages', 'packages_udeb_amd64', match_prepare=sorted_processor) + + # verify contents except of sums + self.check_file_contents('public/dists/squeeze/Release', 'release', match_prepare=strip_processor) + + self.check_file_contents('public/dists/squeeze/main/debian-installer/binary-i386/Release', 'release_udeb_i386', match_prepare=strip_processor) + + # verify sums + release = self.read_file('public/dists/squeeze/Release').split("\n") + release = [l for l in release if l.startswith(" ")] + pathsSeen = set() + for l in release: + fileHash, fileSize, path = l.split() + pathsSeen.add(path) + + fileSize = int(fileSize) + + st = os.stat(os.path.join(os.environ["HOME"], ".aptly", 'public/dists/squeeze/', path)) + if fileSize != st.st_size: + raise Exception("file size doesn't match for %s: %d != %d" % (path, fileSize, st.st_size)) + + if len(fileHash) == 32: + h = hashlib.md5() + elif len(fileHash) == 40: + h = hashlib.sha1() + else: + h = hashlib.sha256() + + h.update(self.read_file(os.path.join('public/dists/squeeze', path))) + + if h.hexdigest() != fileHash: + raise Exception("file hash doesn't match for %s: %s != %s" % (path, fileHash, h.hexdigest())) + + pathsExepcted = set() + for arch in ("i386", "amd64"): + for udeb in ("", "debian-installer/"): + for ext in ("", ".gz", ".bz2"): + pathsExepcted.add("main/%sbinary-%s/Packages%s" % (udeb, arch, ext)) + + pathsExepcted.add("main/%sbinary-%s/Release" % (udeb, arch)) + + if pathsSeen != pathsExepcted: + raise Exception("path seen wrong: %r != %r" % (pathsSeen, pathsExepcted)) diff --git a/system/t09_repo/AddRepo12Test_gold b/system/t09_repo/AddRepo12Test_gold new file mode 100644 index 00000000..362cf9ac --- /dev/null +++ b/system/t09_repo/AddRepo12Test_gold @@ -0,0 +1,2 @@ +Loading packages... +[+] dmraid-udeb_1.0.0.rc16-4.1_amd64 added diff --git a/system/t09_repo/AddRepo12Test_repo_show b/system/t09_repo/AddRepo12Test_repo_show new file mode 100644 index 00000000..b5cda2da --- /dev/null +++ b/system/t09_repo/AddRepo12Test_repo_show @@ -0,0 +1,7 @@ +Name: repo12 +Comment: Repo12 +Default Distribution: squeeze +Default Component: main +Number of packages: 1 +Packages: + dmraid-udeb_1.0.0.rc16-4.1_amd64 diff --git a/system/t09_repo/AddRepo13Test_gold b/system/t09_repo/AddRepo13Test_gold new file mode 100644 index 00000000..89051da0 --- /dev/null +++ b/system/t09_repo/AddRepo13Test_gold @@ -0,0 +1,6 @@ +Loading packages... +[+] libboost-program-options-dev_1.49.0.1_i386 added +[+] pyspi_0.6.1-1.4_source added +[+] pyspi_0.6.1-1.3_source added +[+] dmraid-udeb_1.0.0.rc16-4.1_amd64 added +[+] dmraid-udeb_1.0.0.rc16-4.1_i386 added diff --git a/system/t09_repo/AddRepo13Test_repo_show b/system/t09_repo/AddRepo13Test_repo_show new file mode 100644 index 00000000..b921958a --- /dev/null +++ b/system/t09_repo/AddRepo13Test_repo_show @@ -0,0 +1,11 @@ +Name: repo13 +Comment: Repo13 +Default Distribution: squeeze +Default Component: main +Number of packages: 5 +Packages: + dmraid-udeb_1.0.0.rc16-4.1_amd64 + dmraid-udeb_1.0.0.rc16-4.1_i386 + libboost-program-options-dev_1.49.0.1_i386 + pyspi_0.6.1-1.3_source + pyspi_0.6.1-1.4_source diff --git a/system/t09_repo/add.py b/system/t09_repo/add.py index 1e91c2ee..9b5d9319 100644 --- a/system/t09_repo/add.py +++ b/system/t09_repo/add.py @@ -232,3 +232,38 @@ class AddRepo11Test(BaseTest): def check(self): self.check_output() self.check_cmd_output("aptly repo show -with-packages repo11", "repo_show") + + +class AddRepo12Test(BaseTest): + """ + add package to local repo: .udeb file + """ + fixtureCmds = [ + "aptly repo create -comment=Repo12 -distribution=squeeze repo12", + ] + runCmd = "aptly repo add repo12 ${udebs}/dmraid-udeb_1.0.0.rc16-4.1_amd64.udeb" + + def check(self): + self.check_output() + self.check_cmd_output("aptly repo show -with-packages repo12", "repo_show") + + # check pool + self.check_exists('pool/72/16/dmraid-udeb_1.0.0.rc16-4.1_amd64.udeb') + + +class AddRepo13Test(BaseTest): + """ + add package to local repo: .udeb and .deb files + """ + fixtureCmds = [ + "aptly repo create -comment=Repo13 -distribution=squeeze repo13", + ] + runCmd = "aptly repo add repo13 ${udebs} ${files}" + + def check(self): + self.check_output() + self.check_cmd_output("aptly repo show -with-packages repo13", "repo_show") + + # check pool + self.check_exists('pool/72/16/dmraid-udeb_1.0.0.rc16-4.1_amd64.udeb') + self.check_exists('pool/b7/2c/pyspi_0.6.1-1.3.dsc') diff --git a/system/udebs/dmraid-udeb_1.0.0.rc16-4.1_amd64.udeb b/system/udebs/dmraid-udeb_1.0.0.rc16-4.1_amd64.udeb new file mode 100644 index 00000000..0e7f0635 Binary files /dev/null and b/system/udebs/dmraid-udeb_1.0.0.rc16-4.1_amd64.udeb differ diff --git a/system/udebs/dmraid-udeb_1.0.0.rc16-4.1_i386.udeb b/system/udebs/dmraid-udeb_1.0.0.rc16-4.1_i386.udeb new file mode 100644 index 00000000..ba61e2d7 Binary files /dev/null and b/system/udebs/dmraid-udeb_1.0.0.rc16-4.1_i386.udeb differ