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/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/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