From 00687513b0181bcef1259fa159c58ea2f09e7343 Mon Sep 17 00:00:00 2001 From: Natanael Copa <ncopa@alpinelinux.org> Date: Wed, 24 Jan 2024 19:35:52 +0000 Subject: [PATCH] setup-xorg-base: avoid duplicate community repos simplify and remove duplicate logic of adding community repos. --- setup-xorg-base.in | 32 ++++++++------------------------ tests/setup_xorg_base_test | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 26 deletions(-) diff --git a/setup-xorg-base.in b/setup-xorg-base.in index 8c457dd..757f2b8 100644 --- a/setup-xorg-base.in +++ b/setup-xorg-base.in @@ -24,31 +24,15 @@ done shift $(($OPTIND - 1)) # For every main/ repo, enable corresponding community/ repo -orig="$ROOT"/etc/apk/repositories -if test -f "$orig"; then - echo '>> Enabling community repositories' - tmp="$orig".setup-xorg-base.tmp - :> "$tmp" - while read line ; do - echo "$line" - nosharp="${line##\#*}" - nomain="${line%%/main}" - if test "$line" = "$nosharp" && test "$line" != "$nomain"; then - echo "$nomain"/community - fi - done < "$orig" >> "$tmp" - mv -f "$tmp" "$orig" - apk update -fi +for repo in $(grep '^[^#].*/main$' "$ROOT"/etc/apk/repositories 2>/dev/null); do + crepo="${repo%%/main}/community" + if ! grep -q -x -- "$crepo" "$ROOT"/etc/apk/repositories; then + echo ">>> Enabling repository $crepo" + echo "$crepo" >> "$ROOT"/etc/apk/repositories + fi +done -# enable community repo -if [ -f "$ROOT"/etc/apk/repositories ] && ! grep -q '^[^#].*/community$' "$ROOT"/etc/apk/repositories; then - repo=$(grep '^[^#].*/main$' /etc/apk/repositories | sed 's:/main$:/community:') - escaped_repo=$(echo $repo | sed -e 's:/:\\/:g' -e 's:\.:\\.:g') - sed -i -e "/^[^#].*\/main$/a $repo" \ - -e "/^#${escaped_repo}$/d" \ - "$ROOT"/etc/apk/repositories \ - && echo ">> Enabling community repository" +if [ -n "$crepo" ]; then apk update fi diff --git a/tests/setup_xorg_base_test b/tests/setup_xorg_base_test index b661035..cffb004 100755 --- a/tests/setup_xorg_base_test +++ b/tests/setup_xorg_base_test @@ -3,7 +3,8 @@ . $(atf_get_srcdir)/test_env.sh init_tests \ setup_xorg_base_usage \ - setup_xorg_base + setup_xorg_base \ + setup_xorg_base_community_duplicates setup_xorg_base_usage_body() { test_usage setup-xorg-base @@ -12,11 +13,42 @@ setup_xorg_base_usage_body() { setup_xorg_base_body() { init_env mkdir -p etc/apk - echo "https://dl-cdn.alpinelinux.org/alpine/edge/main" > etc/apk/repositories + cat > etc/apk/repositories <<-EOF + https://dl-cdn.alpinelinux.org/alpine/edge/main + #https://dl-cdn.alpinelinux.org/alpine/edge/community + EOF atf_check -s exit:0 \ -o match:"apk add.*xorg-server.*foobar" \ -o match:"Starting udev" \ -e empty \ setup-xorg-base foobar + + atf_check \ + -o match:"https://dl-cdn.alpinelinux.org/alpine/edge/community" \ + cat etc/apk/repositories +} + +setup_xorg_base_community_duplicates_body() { + init_env + mkdir -p etc/apk + cat > etc/apk/repositories <<-EOF + https://dl-cdn.alpinelinux.org/alpine/edge/main + https://example.tld/main + https://dl-cdn.alpinelinux.org/alpine/edge/community + EOF + + atf_check -s exit:0 \ + -o match:"apk update" \ + -e empty \ + setup-xorg-base + + atf_check \ + -o match:"https://example.tld/community" \ + -o match:"https://dl-cdn.alpinelinux.org/alpine/edge/community" \ + cat etc/apk/repositories + + atf_check \ + -o match:"2" \ + grep -c -w "community" etc/apk/repositories } -- GitLab