diff --git a/contrib/agrarian-build-menu.sh b/contrib/agrarian-build-menu.sh index 76a8c3b6..9a95533e 100755 --- a/contrib/agrarian-build-menu.sh +++ b/contrib/agrarian-build-menu.sh @@ -116,6 +116,78 @@ sudo_cmd() { fi } +apt_source_text() { + grep -RhsE '^(deb |Types:|URIs:|Suites:|Components:)' \ + /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources \ + 2>/dev/null || true +} + +ubuntu_sources_need_repair() { + [[ -r /etc/os-release ]] || return 1 + # shellcheck disable=SC1091 + . /etc/os-release + [[ "${ID:-}" == "ubuntu" && -n "${VERSION_CODENAME:-}" ]] || return 1 + + local sources + sources="$(apt_source_text)" + [[ "$sources" == *"$VERSION_CODENAME-updates"* && "$sources" == *"$VERSION_CODENAME-security"* ]] && return 1 + return 0 +} + +repair_ubuntu_sources() { + [[ -r /etc/os-release ]] || return 0 + # shellcheck disable=SC1091 + . /etc/os-release + [[ "${ID:-}" == "ubuntu" && -n "${VERSION_CODENAME:-}" ]] || return 0 + + local arch uri security_uri source_file + arch="$(dpkg --print-architecture 2>/dev/null || true)" + case "$arch" in + arm64|armhf|ppc64el|riscv64|s390x) + uri="http://ports.ubuntu.com/ubuntu-ports" + security_uri="http://ports.ubuntu.com/ubuntu-ports" + ;; + *) + uri="http://archive.ubuntu.com/ubuntu" + security_uri="http://security.ubuntu.com/ubuntu" + ;; + esac + source_file="/etc/apt/sources.list.d/agrarian-ubuntu.sources" + + cat >&2 < "$temp_file" <&2 <