summaryrefslogtreecommitdiffstats
path: root/patches/packetary/0002-clone-Create-metadata-for-empty-components.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/packetary/0002-clone-Create-metadata-for-empty-components.patch')
-rw-r--r--patches/packetary/0002-clone-Create-metadata-for-empty-components.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/patches/packetary/0002-clone-Create-metadata-for-empty-components.patch b/patches/packetary/0002-clone-Create-metadata-for-empty-components.patch
new file mode 100644
index 00000000..70d75fee
--- /dev/null
+++ b/patches/packetary/0002-clone-Create-metadata-for-empty-components.patch
@@ -0,0 +1,43 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Tue, 1 Nov 2016 23:01:58 +0100
+Subject: [PATCH] clone: Create metadata for empty components
+
+In certain scenarios, mirror components (e.g. trusty-security)
+are present in both packetary configuration input, and in target
+system's apt source definitions, but contain no packages of interest.
+
+For such repository/requirements combinations, packetary currently
+skips creating metadata (Release, Packages) for those components,
+which leads to the partial mirror missing some critical files for apt,
+(an empty file would be enough).
+
+e.g.: Using packetary to create a partial Ubuntu mirror, then trying
+to build a bootstrap image from the new mirror leads to:
+
+W: Failed to fetch http://127.0.0.1:8080/mirrors/ubuntu/dists/\
+ trusty-security/multiverse/binary-amd64/Packages 404
+
+Closes-bug: 1638631
+
+Change-Id: I850b43d5b4d8742d99e9a5702cc9ad4de881a401
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ packetary/api/repositories.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/packetary/api/repositories.py b/packetary/api/repositories.py
+index ec8c54c..2c72e29 100644
+--- a/packetary/api/repositories.py
++++ b/packetary/api/repositories.py
+@@ -121,6 +121,11 @@ class RepositoryApi(object):
+ for pkg in all_packages:
+ package_groups[pkg.repository].add(pkg)
+
++ # Make sure we create metadata for all repos, even if empty
++ for repo in repositories:
++ if repo not in package_groups:
++ package_groups[repo] = set()
++
+ stat = CopyStatistics()
+ mirrors = defaultdict(set)
+ options = options or self.CopyOptions()