From b2490514e771efbcc6c767fa1f7fbd53f11fdf6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= Date: Wed, 5 Feb 2025 15:39:01 +0100 Subject: [PATCH 1/3] Disable the local media in the installed system (bsc#1236813) esp. disable the offline repository with URL dir:///run/initramfs/live/install --- service/lib/agama/software/manager.rb | 13 +++++++++- service/package/rubygem-agama-yast.changes | 7 ++++++ service/test/agama/software/manager_test.rb | 27 +++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/service/lib/agama/software/manager.rb b/service/lib/agama/software/manager.rb index ba3881b7fc..1414ecc0d8 100644 --- a/service/lib/agama/software/manager.rb +++ b/service/lib/agama/software/manager.rb @@ -201,10 +201,16 @@ def install # Writes the repositories information to the installed system def finish + # remove the dir:///run/initramfs/live/install repository and similar + remove_local_repos Yast::Pkg.SourceSaveAll Yast::Pkg.TargetFinish # copy the libzypp caches to the target - copy_zypp_to_target + if Agama::Software::Repository.all.empty? + logger.info("No repository defined, not copying the libzypp caches") + else + copy_zypp_to_target + end registration.finish end @@ -700,6 +706,11 @@ def update_repositories(new_product) Yast::Pkg.SourceSaveAll end end + + # remove all local repositories + def remove_local_repos + Agama::Software::Repository.all.select(&:local?).each(&:delete!) + end end end end diff --git a/service/package/rubygem-agama-yast.changes b/service/package/rubygem-agama-yast.changes index 234b7cb787..3d542f157b 100644 --- a/service/package/rubygem-agama-yast.changes +++ b/service/package/rubygem-agama-yast.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Feb 5 14:32:29 UTC 2025 - Ladislav Slezák + +- Disable the local media in the installed system, esp. the + offline repository with URL dir:///run/initramfs/live/install + (bsc#1236813) + ------------------------------------------------------------------- Wed Jan 29 16:28:32 UTC 2025 - Josef Reidinger diff --git a/service/test/agama/software/manager_test.rb b/service/test/agama/software/manager_test.rb index e5583c017c..240ef0d470 100644 --- a/service/test/agama/software/manager_test.rb +++ b/service/test/agama/software/manager_test.rb @@ -89,6 +89,7 @@ allow(Yast::Pkg).to receive(:TargetFinish) allow(Yast::Pkg).to receive(:TargetLoad) allow(Yast::Pkg).to receive(:SourceSaveAll) + allow(Yast::Pkg).to receive(:SourceDelete) allow(Yast::Pkg).to receive(:ImportGPGKey) # allow glob to work for other calls allow(Dir).to receive(:glob).and_call_original @@ -435,6 +436,32 @@ subject.finish end + + context "only a local repository is used" do + let(:repo_id) { 42 } + before do + expect(Agama::Software::Repository).to receive(:all).and_return( + [ + Agama::Software::Repository.new( + repo_id: repo_id, repo_alias: "alias", name: "name", + url: "dir:///run/initramfs/live/install", enabled: true, autorefresh: false + ) + ] + ) + end + + it "removes the local repository" do + expect(Yast::Pkg).to receive(:SourceDelete).with(repo_id) + + subject.finish + end + + it "does not copy the libzypp cache" do + expect(subject).to_not receive(:copy_zypp_to_target) + + subject.finish + end + end end describe "#package_installed?" do From 87eebe1ed205fe2b50245ae95541ac98b4d6fdf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= Date: Wed, 5 Feb 2025 15:50:02 +0100 Subject: [PATCH 2/3] Fix unit test --- service/test/agama/software/manager_test.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/service/test/agama/software/manager_test.rb b/service/test/agama/software/manager_test.rb index 240ef0d470..7478401e7c 100644 --- a/service/test/agama/software/manager_test.rb +++ b/service/test/agama/software/manager_test.rb @@ -446,7 +446,9 @@ repo_id: repo_id, repo_alias: "alias", name: "name", url: "dir:///run/initramfs/live/install", enabled: true, autorefresh: false ) - ] + ], + # for the second and further calls return empty list, the repo has been removed + [] ) end From f7ae4a3fd3b02c97937f306042bd884e9f7aa631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= Date: Wed, 5 Feb 2025 17:00:45 +0100 Subject: [PATCH 3/3] Update unit test --- service/test/agama/software/manager_test.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/service/test/agama/software/manager_test.rb b/service/test/agama/software/manager_test.rb index 7478401e7c..f3551e9429 100644 --- a/service/test/agama/software/manager_test.rb +++ b/service/test/agama/software/manager_test.rb @@ -384,6 +384,15 @@ end it "copies the libzypp cache and credentials to the target system" do + allow(Agama::Software::Repository).to receive(:all).and_return( + [ + Agama::Software::Repository.new( + repo_id: 42, repo_alias: "alias", name: "name", + url: "http://example.com", enabled: true, autorefresh: false + ) + ] + ) + allow(Dir).to receive(:exist?).and_call_original allow(Dir).to receive(:entries).and_call_original