List the China mirrors first when the machine's region is China
This commit is contained in:
1 parent
0c0f4881cb
commit
83d158ad07
8 files changed
+85
No files matched your search
@@ -73,6 +73,7 @@ GROUP_DESCRIPTIONS[plymouth]="Plymouth boot theme management"
|
|||||||
GROUP_DESCRIPTIONS[power]="Power supply detection"
|
GROUP_DESCRIPTIONS[power]="Power supply detection"
|
||||||
GROUP_DESCRIPTIONS[powerprofiles]="Power profile management"
|
GROUP_DESCRIPTIONS[powerprofiles]="Power profile management"
|
||||||
GROUP_DESCRIPTIONS[refresh]="Reset config to defaults"
|
GROUP_DESCRIPTIONS[refresh]="Reset config to defaults"
|
||||||
|
GROUP_DESCRIPTIONS[region]="Region-specific package sources and setup"
|
||||||
GROUP_DESCRIPTIONS[reinstall]="Reinstall and reset workflows"
|
GROUP_DESCRIPTIONS[reinstall]="Reinstall and reset workflows"
|
||||||
GROUP_DESCRIPTIONS[reminder]="Desktop notification reminders"
|
GROUP_DESCRIPTIONS[reminder]="Desktop notification reminders"
|
||||||
GROUP_DESCRIPTIONS[remove]="Removal workflows"
|
GROUP_DESCRIPTIONS[remove]="Removal workflows"
|
||||||
|
|||||||
@@ -35,6 +35,11 @@ sudo cp -f /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
|
|||||||
echo "Setting channel to $channel"
|
echo "Setting channel to $channel"
|
||||||
sudo cp -f "$OMARCHY_PATH/default/pacman/pacman-$channel.conf" /etc/pacman.conf
|
sudo cp -f "$OMARCHY_PATH/default/pacman/pacman-$channel.conf" /etc/pacman.conf
|
||||||
sudo cp -f "$OMARCHY_PATH/default/pacman/mirrorlist-$channel" /etc/pacman.d/mirrorlist
|
sudo cp -f "$OMARCHY_PATH/default/pacman/mirrorlist-$channel" /etc/pacman.d/mirrorlist
|
||||||
|
region=$(omarchy-region)
|
||||||
|
if [[ $region == "China" ]]; then
|
||||||
|
echo "Adding China mirrors"
|
||||||
|
sudo sed -i -f "$OMARCHY_PATH/default/region/china/pacman.sed" /etc/pacman.conf /etc/pacman.d/mirrorlist
|
||||||
|
fi
|
||||||
|
|
||||||
# Allow user customization of /etc/pacman.conf before the upgrade runs, so
|
# Allow user customization of /etc/pacman.conf before the upgrade runs, so
|
||||||
# custom repositories and IgnorePkg entries shape the downgrade-capable
|
# custom repositories and IgnorePkg entries shape the downgrade-capable
|
||||||
|
|||||||
Executable
+16
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:summary=Show the region this machine is set up for
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
region_file=/etc/omarchy/region
|
||||||
|
|
||||||
|
if [[ ! -e $region_file ]]; then
|
||||||
|
echo "Global"
|
||||||
|
elif [[ $(<"$region_file") == "china" ]]; then
|
||||||
|
echo "China"
|
||||||
|
else
|
||||||
|
echo "Unknown region in $region_file: $(<"$region_file")" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
s|^Server = https://\([a-z-]*\)\.omarchy\.org/\(.*\)$|Server = https://\1.omarchy.cn/\2\n&|
|
||||||
@@ -2,6 +2,10 @@
|
|||||||
# installs use the live ISO's offline pacman.conf until this final restore.
|
# installs use the live ISO's offline pacman.conf until this final restore.
|
||||||
cp -f "$OMARCHY_PATH/default/pacman/pacman-${OMARCHY_MIRROR:-stable}.conf" /etc/pacman.conf
|
cp -f "$OMARCHY_PATH/default/pacman/pacman-${OMARCHY_MIRROR:-stable}.conf" /etc/pacman.conf
|
||||||
cp -f "$OMARCHY_PATH/default/pacman/mirrorlist-${OMARCHY_MIRROR:-stable}" /etc/pacman.d/mirrorlist
|
cp -f "$OMARCHY_PATH/default/pacman/mirrorlist-${OMARCHY_MIRROR:-stable}" /etc/pacman.d/mirrorlist
|
||||||
|
region=$(omarchy-region)
|
||||||
|
if [[ $region == "China" ]]; then
|
||||||
|
sed -i -f "$OMARCHY_PATH/default/region/china/pacman.sed" /etc/pacman.conf /etc/pacman.d/mirrorlist
|
||||||
|
fi
|
||||||
|
|
||||||
# Wait for CUPS to own the file, the way omarchy-settings does, so pacman does
|
# Wait for CUPS to own the file, the way omarchy-settings does, so pacman does
|
||||||
# not turn the override into a .pacnew during ISO package installation.
|
# not turn the override into a .pacnew during ISO package installation.
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
|
|||||||
source "$SHELL_TEST_DIR/fixtures/sudo-boundary-test.sh"
|
source "$SHELL_TEST_DIR/fixtures/sudo-boundary-test.sh"
|
||||||
copy_boundary_file bin/omarchy-channel-set
|
copy_boundary_file bin/omarchy-channel-set
|
||||||
copy_boundary_file bin/omarchy-refresh-pacman
|
copy_boundary_file bin/omarchy-refresh-pacman
|
||||||
|
copy_boundary_file bin/omarchy-region
|
||||||
copy_boundary_file bin/omarchy-update
|
copy_boundary_file bin/omarchy-update
|
||||||
export OMARCHY_UPDATE_LOGGED=1
|
export OMARCHY_UPDATE_LOGGED=1
|
||||||
|
|
||||||
|
|||||||
Executable
+56
@@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
|
||||||
|
|
||||||
|
test_tmp=$(mktemp -d)
|
||||||
|
trap 'rm -rf "$test_tmp"' EXIT
|
||||||
|
|
||||||
|
china_sed="$ROOT/default/region/china/pacman.sed"
|
||||||
|
|
||||||
|
expected_stable_omarchy='Server = https://pkgs.omarchy.cn/stable/$arch
|
||||||
|
Server = https://pkgs.omarchy.org/stable/$arch'
|
||||||
|
actual=$(sed -f "$china_sed" "$ROOT/default/pacman/pacman-stable.conf" | sed -n '/^\[omarchy\]/,/^$/p' | grep '^Server')
|
||||||
|
[[ $actual == "$expected_stable_omarchy" ]] || fail "stable [omarchy] lists pkgs.omarchy.cn before pkgs.omarchy.org" "$actual"
|
||||||
|
pass "stable [omarchy] lists pkgs.omarchy.cn before pkgs.omarchy.org"
|
||||||
|
|
||||||
|
declare -A mirrors=([stable]=stable-mirror [rc]=rc-mirror [edge]=mirror)
|
||||||
|
for channel in stable rc edge; do
|
||||||
|
host=${mirrors[$channel]}
|
||||||
|
expected="Server = https://$host.omarchy.cn/\$repo/os/\$arch
|
||||||
|
Server = https://$host.omarchy.org/\$repo/os/\$arch"
|
||||||
|
actual=$(sed -f "$china_sed" "$ROOT/default/pacman/mirrorlist-$channel")
|
||||||
|
[[ $actual == "$expected" ]] || fail "$channel mirrorlist lists $host.omarchy.cn first" "$actual"
|
||||||
|
pass "$channel mirrorlist lists $host.omarchy.cn first"
|
||||||
|
|
||||||
|
for file in "pacman-$channel.conf" "mirrorlist-$channel"; do
|
||||||
|
original=$(<"$ROOT/default/pacman/$file")
|
||||||
|
stripped=$(sed -f "$china_sed" "$ROOT/default/pacman/$file" | grep -v '^Server = https://[a-z-]*\.omarchy\.cn/')
|
||||||
|
[[ $stripped == "$original" ]] || fail "$file only gains .cn servers" "$(diff <(echo "$original") <(echo "$stripped"))"
|
||||||
|
|
||||||
|
org_count=$(grep -c '^Server = https://[a-z-]*\.omarchy\.org/' "$ROOT/default/pacman/$file")
|
||||||
|
cn_count=$(sed -f "$china_sed" "$ROOT/default/pacman/$file" | grep -c '^Server = https://[a-z-]*\.omarchy\.cn/')
|
||||||
|
((org_count > 0 && org_count == cn_count)) || fail "$file gets one .cn twin per .org server" "org=$org_count cn=$cn_count"
|
||||||
|
done
|
||||||
|
pass "$channel templates only gain one .cn twin per .org server"
|
||||||
|
done
|
||||||
|
|
||||||
|
region_bin="$test_tmp/omarchy-region"
|
||||||
|
region_file="$test_tmp/region"
|
||||||
|
sed "s|/etc/omarchy/region|$region_file|" "$ROOT/bin/omarchy-region" >"$region_bin"
|
||||||
|
chmod +x "$region_bin"
|
||||||
|
|
||||||
|
[[ $("$region_bin") == "Global" ]] || fail "no region file reads as Global"
|
||||||
|
pass "no region file reads as Global"
|
||||||
|
|
||||||
|
echo china >"$region_file"
|
||||||
|
[[ $("$region_bin") == "China" ]] || fail "china region file reads as China"
|
||||||
|
pass "china region file reads as China"
|
||||||
|
|
||||||
|
echo mars >"$region_file"
|
||||||
|
if output=$("$region_bin" 2>&1); then
|
||||||
|
fail "an unknown region fails" "$output"
|
||||||
|
fi
|
||||||
|
[[ $output == "Unknown region in $region_file: mars" ]] || fail "an unknown region names the file and value" "$output"
|
||||||
|
pass "an unknown region fails and names the file and value"
|
||||||
@@ -6,6 +6,7 @@ source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
|
|||||||
source "$SHELL_TEST_DIR/fixtures/sudo-boundary-test.sh"
|
source "$SHELL_TEST_DIR/fixtures/sudo-boundary-test.sh"
|
||||||
copy_boundary_file bin/omarchy-update
|
copy_boundary_file bin/omarchy-update
|
||||||
copy_boundary_file bin/omarchy-refresh-pacman
|
copy_boundary_file bin/omarchy-refresh-pacman
|
||||||
|
copy_boundary_file bin/omarchy-region
|
||||||
# Replace the step symlink, preserving the real fixture dispatcher.
|
# Replace the step symlink, preserving the real fixture dispatcher.
|
||||||
rm "$SUDO_TEST_ROOT/bin/omarchy-update-aur-pkgs"
|
rm "$SUDO_TEST_ROOT/bin/omarchy-update-aur-pkgs"
|
||||||
copy_boundary_file bin/omarchy-update-aur-pkgs
|
copy_boundary_file bin/omarchy-update-aur-pkgs
|
||||||
|
|||||||
Reference in new issue
Block a user