From: srinuvasan <
srinuv...@siemens.com>
The very first time when we generate the base-apt the REPO_BASE_DIR
is empty, it doesn't contain any packages, hence repo_contains_package
function returns 2, based on the return value (2), we are adding all the
packages to the empty repo by calling the repo_add_packages function.
After clearing the temporary and cache files, when we retrigger the base-apt
we should skip the repo_add_packages function for all the packages (assume that
repo packages are not contaminated), but we observed repo_contains_function
says some of the packages not available in the existing repo, but really those
packages available in the repo.
Here the issue is, reprepro caching all the packages by skipping the
epoch version if any packages have, and all the packages contain only the
<upstream_version>-<debian_version>.
But in the download folder , few packages contain the epoch version,
f.e: automake, git-man, ssh, now we try to find the packages with
epoch version in APT repo, but APT repos skip the epoch version
during repo generation.
With that wrong finding again we are calling the repo_add_package
function for few packages, even those packages already available in the repo.
Skip the epoch version during finding the packages in the repo, with that we can eliminate
unnecessarily adding the packages to repo.
Signed-off-by: srinuvasan <
srinuv...@siemens.com>
---
meta/classes/repository.bbclass | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/meta/classes/repository.bbclass b/meta/classes/repository.bbclass
index 28e712fd..7379658d 100644
--- a/meta/classes/repository.bbclass
+++ b/meta/classes/repository.bbclass
@@ -99,7 +99,8 @@ repo_contains_package() {
local file="$2"
local package
- package=$(find ${dir} -name ${file##*/})
+ file_name=$(echo "${file##*/}" | sed 's/[0-9]%3a//g')
+ package=$(find ${dir} -name ${file_name})
if [ -n "$package" ]; then
# yes
cmp --silent "$package" "$file" && return 0
--
2.39.5