diff --git a/deb/index_files.go b/deb/index_files.go new file mode 100644 index 00000000..a1abeaec --- /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: udeb, + 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/publish.go b/deb/publish.go index efb9969a..b1688492 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,36 @@ 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) + if pkg.Architecture == "all" || utils.StrSliceHasItem(p.Architectures, pkg.Architecture) { + 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) { - err = pkg.LinkFromPool(publishedStorage, packagePool, p.Prefix, component, forceOverwrite) + bufWriter, err := indexes.PackageIndex(component, arch, pkg.IsUdeb).BufWriter() if err != nil { return err } @@ -501,113 +492,58 @@ 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, 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 +557,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/system/t06_publish/PublishRepo12Test_gold b/system/t06_publish/PublishRepo12Test_gold index bee36b01..1525e376 100644 --- a/system/t06_publish/PublishRepo12Test_gold +++ b/system/t06_publish/PublishRepo12Test_gold @@ -1,8 +1,9 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.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 diff --git a/system/t06_publish/PublishRepo14Test_gold b/system/t06_publish/PublishRepo14Test_gold index 443899a1..1816ac7e 100644 --- a/system/t06_publish/PublishRepo14Test_gold +++ b/system/t06_publish/PublishRepo14Test_gold @@ -1,10 +1,11 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ maverick contrib deb-src http://your-server/ maverick contrib diff --git a/system/t06_publish/PublishRepo15Test_gold b/system/t06_publish/PublishRepo15Test_gold index 443899a1..1816ac7e 100644 --- a/system/t06_publish/PublishRepo15Test_gold +++ b/system/t06_publish/PublishRepo15Test_gold @@ -1,10 +1,11 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ maverick contrib deb-src http://your-server/ maverick contrib diff --git a/system/t06_publish/PublishRepo16Test_gold b/system/t06_publish/PublishRepo16Test_gold index 906bdcea..66a427d4 100644 --- a/system/t06_publish/PublishRepo16Test_gold +++ b/system/t06_publish/PublishRepo16Test_gold @@ -1,11 +1,12 @@ 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: Local repo local-repo has been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.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 diff --git a/system/t06_publish/PublishRepo17Test_gold b/system/t06_publish/PublishRepo17Test_gold index 707a2715..79cc567d 100644 --- a/system/t06_publish/PublishRepo17Test_gold +++ b/system/t06_publish/PublishRepo17Test_gold @@ -1,10 +1,11 @@ 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 repos repo1, repo2 have been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ maverick contrib main deb-src http://your-server/ maverick contrib main diff --git a/system/t06_publish/PublishRepo18Test_gold b/system/t06_publish/PublishRepo18Test_gold index a105d5fc..01ea1ce7 100644 --- a/system/t06_publish/PublishRepo18Test_gold +++ b/system/t06_publish/PublishRepo18Test_gold @@ -1,10 +1,11 @@ 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 repos repo1, repo2 have been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ squeeze contrib main deb-src http://your-server/ squeeze contrib main diff --git a/system/t06_publish/PublishRepo1Test_gold b/system/t06_publish/PublishRepo1Test_gold index 8b8f3486..67294302 100644 --- a/system/t06_publish/PublishRepo1Test_gold +++ b/system/t06_publish/PublishRepo1Test_gold @@ -1,10 +1,11 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.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 diff --git a/system/t06_publish/PublishRepo25Test_gold b/system/t06_publish/PublishRepo25Test_gold index 63326118..21feaebc 100644 --- a/system/t06_publish/PublishRepo25Test_gold +++ b/system/t06_publish/PublishRepo25Test_gold @@ -2,11 +2,12 @@ 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: Local repo local-repo2 has been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ squeeze main deb-src http://your-server/ squeeze main diff --git a/system/t06_publish/PublishRepo26Test_gold b/system/t06_publish/PublishRepo26Test_gold index 8b8f3486..67294302 100644 --- a/system/t06_publish/PublishRepo26Test_gold +++ b/system/t06_publish/PublishRepo26Test_gold @@ -1,10 +1,11 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.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 diff --git a/system/t06_publish/PublishRepo2Test_gold b/system/t06_publish/PublishRepo2Test_gold index 443899a1..1816ac7e 100644 --- a/system/t06_publish/PublishRepo2Test_gold +++ b/system/t06_publish/PublishRepo2Test_gold @@ -1,10 +1,11 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ maverick contrib deb-src http://your-server/ maverick contrib diff --git a/system/t06_publish/PublishRepo3Test_gold b/system/t06_publish/PublishRepo3Test_gold index 4aa7a0e2..dcaccb48 100644 --- a/system/t06_publish/PublishRepo3Test_gold +++ b/system/t06_publish/PublishRepo3Test_gold @@ -1,10 +1,11 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ maverick contrib Don't forget to add your GPG key to apt with apt-key. diff --git a/system/t06_publish/PublishRepo4Test_gold b/system/t06_publish/PublishRepo4Test_gold index 0e0a9c7b..f6bc914a 100644 --- a/system/t06_publish/PublishRepo4Test_gold +++ b/system/t06_publish/PublishRepo4Test_gold @@ -1,10 +1,11 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ppa/ maverick main deb-src http://your-server/ppa/ maverick main diff --git a/system/t06_publish/PublishSnapshot13Test_gold b/system/t06_publish/PublishSnapshot13Test_gold index 848cd407..b7cb4131 100644 --- a/system/t06_publish/PublishSnapshot13Test_gold +++ b/system/t06_publish/PublishSnapshot13Test_gold @@ -1,8 +1,9 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ maverick main Don't forget to add your GPG key to apt with apt-key. diff --git a/system/t06_publish/PublishSnapshot15Test_gold b/system/t06_publish/PublishSnapshot15Test_gold index e0fafd8c..721bc04c 100644 --- a/system/t06_publish/PublishSnapshot15Test_gold +++ b/system/t06_publish/PublishSnapshot15Test_gold @@ -1,8 +1,9 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ maverick main Don't forget to add your GPG key to apt with apt-key. diff --git a/system/t06_publish/PublishSnapshot16Test_gold b/system/t06_publish/PublishSnapshot16Test_gold index e7518879..c35c533b 100644 --- a/system/t06_publish/PublishSnapshot16Test_gold +++ b/system/t06_publish/PublishSnapshot16Test_gold @@ -1,10 +1,11 @@ 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 snap16 has been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.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 diff --git a/system/t06_publish/PublishSnapshot17Test_gold b/system/t06_publish/PublishSnapshot17Test_gold index a1d7e456..dd40f1a4 100644 --- a/system/t06_publish/PublishSnapshot17Test_gold +++ b/system/t06_publish/PublishSnapshot17Test_gold @@ -1,10 +1,11 @@ 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 snap17 has been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.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 diff --git a/system/t06_publish/PublishSnapshot19Test_gold b/system/t06_publish/PublishSnapshot19Test_gold index 17f563c4..0351f26c 100644 --- a/system/t06_publish/PublishSnapshot19Test_gold +++ b/system/t06_publish/PublishSnapshot19Test_gold @@ -1,8 +1,9 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ maverick main Don't forget to add your GPG key to apt with apt-key. diff --git a/system/t06_publish/PublishSnapshot1Test_gold b/system/t06_publish/PublishSnapshot1Test_gold index f21e3054..c3ebba3f 100644 --- a/system/t06_publish/PublishSnapshot1Test_gold +++ b/system/t06_publish/PublishSnapshot1Test_gold @@ -1,10 +1,11 @@ Loading packages... Generating metadata files and linking package files... +Finalizing metadata files... Signing file 'Release' with gpg, please enter your passphrase when prompted: Clearsigning file 'Release' with gpg, please enter your passphrase when prompted: Snapshot snap1 has been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ maverick main Don't forget to add your GPG key to apt with apt-key. diff --git a/system/t06_publish/PublishSnapshot20Test_gold b/system/t06_publish/PublishSnapshot20Test_gold index 1ff04477..c86a36ba 100644 --- a/system/t06_publish/PublishSnapshot20Test_gold +++ b/system/t06_publish/PublishSnapshot20Test_gold @@ -1,8 +1,9 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.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 diff --git a/system/t06_publish/PublishSnapshot22Test_gold b/system/t06_publish/PublishSnapshot22Test_gold index 1ff04477..c86a36ba 100644 --- a/system/t06_publish/PublishSnapshot22Test_gold +++ b/system/t06_publish/PublishSnapshot22Test_gold @@ -1,8 +1,9 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.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 diff --git a/system/t06_publish/PublishSnapshot23Test_gold b/system/t06_publish/PublishSnapshot23Test_gold index 1ff04477..c86a36ba 100644 --- a/system/t06_publish/PublishSnapshot23Test_gold +++ b/system/t06_publish/PublishSnapshot23Test_gold @@ -1,8 +1,9 @@ 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. +Please setup your webserver to serve directory '/Users/smira/.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 diff --git a/system/t06_publish/PublishSnapshot24Test_gold b/system/t06_publish/PublishSnapshot24Test_gold index 92859d40..2724a49c 100644 --- a/system/t06_publish/PublishSnapshot24Test_gold +++ b/system/t06_publish/PublishSnapshot24Test_gold @@ -1,10 +1,11 @@ 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 snap24 has been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.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. diff --git a/system/t06_publish/PublishSnapshot25Test_gold b/system/t06_publish/PublishSnapshot25Test_gold index 1b95a2eb..883869f5 100644 --- a/system/t06_publish/PublishSnapshot25Test_gold +++ b/system/t06_publish/PublishSnapshot25Test_gold @@ -1,11 +1,12 @@ 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: Snapshot snap25 has been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ maverick main Don't forget to add your GPG key to apt with apt-key. diff --git a/system/t06_publish/PublishSnapshot26Test_gold b/system/t06_publish/PublishSnapshot26Test_gold index b7def77e..b3ef3d42 100644 --- a/system/t06_publish/PublishSnapshot26Test_gold +++ b/system/t06_publish/PublishSnapshot26Test_gold @@ -1,10 +1,11 @@ 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: Snapshots snap26.1, snap26.2 have been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ maverick contrib main deb-src http://your-server/ maverick contrib main diff --git a/system/t06_publish/PublishSnapshot27Test_gold b/system/t06_publish/PublishSnapshot27Test_gold index 604b8d09..8e6e1e61 100644 --- a/system/t06_publish/PublishSnapshot27Test_gold +++ b/system/t06_publish/PublishSnapshot27Test_gold @@ -1,10 +1,11 @@ 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: Snapshots snap27.1, snap27.2 have been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ maverick contrib main deb-src http://your-server/ maverick contrib main diff --git a/system/t06_publish/PublishSnapshot2Test_gold b/system/t06_publish/PublishSnapshot2Test_gold index 950aab8b..81be488d 100644 --- a/system/t06_publish/PublishSnapshot2Test_gold +++ b/system/t06_publish/PublishSnapshot2Test_gold @@ -1,10 +1,11 @@ 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 snap2 has been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.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. diff --git a/system/t06_publish/PublishSnapshot34Test_gold b/system/t06_publish/PublishSnapshot34Test_gold index 2a851c89..26d73dd0 100644 --- a/system/t06_publish/PublishSnapshot34Test_gold +++ b/system/t06_publish/PublishSnapshot34Test_gold @@ -2,11 +2,12 @@ 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: Snapshot snap2 has been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ squeeze main deb-src http://your-server/ squeeze main diff --git a/system/t06_publish/PublishSnapshot3Test_gold b/system/t06_publish/PublishSnapshot3Test_gold index 0b1abe52..3a5ad6e6 100644 --- a/system/t06_publish/PublishSnapshot3Test_gold +++ b/system/t06_publish/PublishSnapshot3Test_gold @@ -1,10 +1,11 @@ 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 snap3 has been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ squeeze contrib Don't forget to add your GPG key to apt with apt-key. diff --git a/system/t06_publish/PublishSnapshot4Test_gold b/system/t06_publish/PublishSnapshot4Test_gold index 817f40ae..241d5156 100644 --- a/system/t06_publish/PublishSnapshot4Test_gold +++ b/system/t06_publish/PublishSnapshot4Test_gold @@ -1,10 +1,11 @@ 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 snap4 has been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.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. diff --git a/system/t06_publish/PublishSnapshot5Test_gold b/system/t06_publish/PublishSnapshot5Test_gold index 67cf0fc2..34badbc3 100644 --- a/system/t06_publish/PublishSnapshot5Test_gold +++ b/system/t06_publish/PublishSnapshot5Test_gold @@ -1,10 +1,11 @@ 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 snap5 has been successfully published. -Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing. +Please setup your webserver to serve directory '/Users/smira/.aptly/public' with autoindexing. Now you can add following line to apt sources: deb http://your-server/ppa/smira/ squeeze main Don't forget to add your GPG key to apt with apt-key. 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.