Skip to content

Commit 402f419

Browse files
committed
Use https://ppa.launchpadcontent.net for launchpad PPA
1 parent 9063c33 commit 402f419

File tree

2 files changed

+53
-33
lines changed

2 files changed

+53
-33
lines changed

scripts/install-requirements.sh

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@
22

33
# Function to cURL.
44
get() {
5-
file_path=$1
6-
shift
5+
mode=$1
6+
file_path=$2
7+
shift 2
78
links=("$@")
8-
command -v sudo >/dev/null && SUDO=sudo
9-
for link in "${links[@]}"; do
10-
status_code=$(${SUDO} curl -w "%{http_code}" -o "$file_path" -sL "$link")
11-
[ "$status_code" = "200" ] && break
12-
done
9+
if [ "$mode" = "-s" ]; then
10+
sudo curl -sL "${links[0]}"
11+
else
12+
for link in "${links[@]}"; do
13+
status_code=$(sudo curl -w "%{http_code}" -o "$file_path" -sL "$link")
14+
[ "$status_code" = "200" ] && break
15+
done
16+
fi
1317
}
1418

1519
# Helper function to update the package list(s).
@@ -40,7 +44,7 @@ update_lists() {
4044
# Function to get the fingerprint from a Ubuntu repository.
4145
ubuntu_fingerprint() {
4246
ppa=$1
43-
curl -sL "$lp_api"/~"${ppa%/*}"/+archive/"${ppa##*/}" | jq -r '.signing_key_fingerprint'
47+
get -s "" "${lp_api[@]/%//~${ppa%/*}/+archive/${ppa##*/}}" | jq -r '.signing_key_fingerprint'
4448
}
4549

4650
# Function to get the fingerprint from a Debian repository.
@@ -49,7 +53,7 @@ debian_fingerprint() {
4953
ppa_url=$2
5054
package_dist=$3
5155
release_pub=/tmp/"${ppa/\//-}".gpg
52-
get "$release_pub" "$ppa_url"/dists/"$package_dist"/Release.gpg
56+
get -q "$release_pub" "$ppa_url"/dists/"$package_dist"/Release.gpg
5357
gpg --homedir /tmp --list-packets "$release_pub" | grep -Eo 'fpr\sv4\s.*[a-zA-Z0-9]+' | head -n 1 | cut -d ' ' -f 3
5458
}
5559

@@ -61,12 +65,12 @@ add_key() {
6165
key_source=$4
6266
key_file=$5
6367
key_urls=("$key_source")
64-
if [[ "$key_source" =~ launchpad.net|debian.org|setup-php.com ]]; then
68+
if [[ "$key_source" =~ launchpad.net|launchpadcontent.net|debian.org|setup-php.com ]]; then
6569
fingerprint="$("${ID}"_fingerprint "$ppa" "$ppa_url" "$package_dist")"
6670
sks_params="op=get&options=mr&exact=on&search=0x$fingerprint"
6771
key_urls=("${sks[@]/%/\/pks\/lookup\?"$sks_params"}")
6872
fi
69-
[ ! -e "$key_source" ] && get "$key_file" "${key_urls[@]}"
73+
[ ! -e "$key_source" ] && get -q "$key_file" "${key_urls[@]}"
7074
if [[ "$(file "$key_file")" =~ .*('Public-Key (old)'|'Secret-Key') ]]; then
7175
gpg --homedir /tmp --batch --yes --dearmor "$key_file" && rm -f "$key_file" >/dev/null 2>&1
7276
mv "$key_file".gpg "$key_file"
@@ -76,7 +80,7 @@ add_key() {
7680
# Function to add a package list.
7781
add_list() {
7882
ppa=${1-ondrej/php}
79-
ppa_url=${2:-"$lp_ppa/$ppa/ubuntu"}
83+
ppa_url=${2:-"$lpc_ppa/$ppa/ubuntu"}
8084
key_source=${3:-"$ppa_url"}
8185
package_dist=${4:-"$VERSION_CODENAME"}
8286
branches=${5:-main}
@@ -92,9 +96,11 @@ add_list() {
9296
# Function to remove a package list.
9397
remove_list() {
9498
ppa=${1-ondrej/php}
95-
ppa_url=${2:-"$lp_ppa/$ppa/ubuntu"}
96-
grep -lr "$ppa_url" "$list_dir" | xargs -n1 rm -f
97-
rm -f "$key_dir"/"${ppa/\//-}"-keyring || true
99+
[ -n "$2" ] && ppa_urls=("$2") || ppa_urls=("$lp_ppa/$ppa/ubuntu" "$lpc_ppa/$ppa/ubuntu")
100+
for ppa_url in "${ppa_urls[@]}"; do
101+
grep -lr "$ppa_url" "$list_dir" | xargs -n1 sudo rm -f
102+
done
103+
sudo rm -f "$key_dir"/"${ppa/\//-}"-keyring || true
98104
}
99105

100106
# Function to add a package repository.
@@ -148,8 +154,12 @@ fi
148154
list_dir='/etc/apt/sources.list.d'
149155
list_file="$list_dir/ubuntu.sources"
150156
[ -e "$list_file" ] || list_file='/etc/apt/sources.list'
151-
lp_api='https://api.launchpad.net/1.0'
157+
lp_api=(
158+
'https://api.launchpad.net/1.0'
159+
'https://api.launchpad.net/devel'
160+
)
152161
lp_ppa='http://ppa.launchpad.net'
162+
lpc_ppa='https://ppa.launchpadcontent.net'
153163
key_dir='/usr/share/keyrings'
154164
sks=(
155165
'https://keyserver.ubuntu.com'

scripts/install.sh

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,25 @@ HELP
1010
}
1111

1212
get() {
13-
file_path=$1
14-
shift
13+
mode=$1
14+
file_path=$2
15+
shift 2
1516
links=("$@")
16-
command -v sudo >/dev/null && SUDO=sudo
17-
for link in "${links[@]}"; do
18-
status_code=$(${SUDO} curl -w "%{http_code}" -o "$file_path" -sL "$link")
19-
[ "$status_code" = "200" ] && break
20-
done
17+
if [ "$mode" = "-s" ]; then
18+
sudo curl -sL "${links[0]}"
19+
else
20+
for link in "${links[@]}"; do
21+
status_code=$(sudo curl -w "%{http_code}" -o "$file_path" -sL "$link")
22+
[ "$status_code" = "200" ] && break
23+
done
24+
fi
2125
}
2226

2327
set_base_version_id() {
2428
[[ "$ID" =~ ubuntu|debian ]] && return;
2529
if ! [ -d "$dist_info_dir" ]; then
2630
sudo mkdir -p "$dist_info_dir"
27-
get "$dist_info_dir"/os_releases.csv https://raw.githubusercontent.com/shivammathur/setup-php/develop/src/configs/os_releases.csv
31+
get -q "$dist_info_dir"/os_releases.csv https://raw.githubusercontent.com/shivammathur/setup-php/develop/src/configs/os_releases.csv
2832
fi
2933
for base in ubuntu debian; do
3034
[[ "$ID_LIKE" =~ $base ]] && ID="$base" && VERSION_ID="$(grep -hr -m 1 "$VERSION_CODENAME" /usr/share/distro-info | cut -d ',' -f 1 | cut -d ' ' -f 1)" && break
@@ -95,15 +99,15 @@ check_lists() {
9599

96100
ubuntu_fingerprint() {
97101
ppa=$1
98-
curl -sL "$lp_api"/~"${ppa%/*}"/+archive/"${ppa##*/}" | jq -r '.signing_key_fingerprint'
102+
get -s "" "${lp_api[@]/%//~${ppa%/*}/+archive/${ppa##*/}}" | jq -r '.signing_key_fingerprint'
99103
}
100104

101105
debian_fingerprint() {
102106
ppa=$1
103107
ppa_url=$2
104108
package_dist=$3
105109
release_pub=/tmp/"${ppa/\//-}".gpg
106-
get "$release_pub" "$ppa_url"/dists/"$package_dist"/Release.gpg
110+
get -q "$release_pub" "$ppa_url"/dists/"$package_dist"/Release.gpg
107111
gpg --list-packets "$release_pub" | grep -Eo 'fpr\sv4\s.*[a-zA-Z0-9]+' | head -n 1 | cut -d ' ' -f 3
108112
}
109113

@@ -114,20 +118,20 @@ add_key() {
114118
key_source=$4
115119
key_file=$5
116120
key_urls=("$key_source")
117-
if [[ "$key_source" =~ launchpad.net|debian.org|setup-php.com ]]; then
121+
if [[ "$key_source" =~ launchpad.net|launchpadcontent.net|debian.org|setup-php.com ]]; then
118122
fingerprint="$("${ID}"_fingerprint "$ppa" "$ppa_url" "$package_dist")"
119123
sks_params="op=get&options=mr&exact=on&search=0x$fingerprint"
120124
key_urls=("${sks[@]/%/\/pks\/lookup\?"$sks_params"}")
121125
fi
122-
[ ! -e "$key_source" ] && get "$key_file" "${key_urls[@]}"
126+
[ ! -e "$key_source" ] && get -q "$key_file" "${key_urls[@]}"
123127
if [[ "$(file "$key_file")" =~ .*('Public-Key (old)'|'Secret-Key') ]]; then
124128
sudo gpg --batch --yes --dearmor "$key_file" >/dev/null 2>&1 && sudo mv "$key_file".gpg "$key_file"
125129
fi
126130
}
127131

128132
add_list() {
129133
ppa=${1-ondrej/php}
130-
ppa_url=${2:-"$lp_ppa/$ppa/ubuntu"}
134+
ppa_url=${2:-"$lpc_ppa/$ppa/ubuntu"}
131135
key_source=${3:-"$ppa_url"}
132136
package_dist=${4:-"$VERSION_CODENAME"}
133137
branches=${5:-main}
@@ -148,8 +152,10 @@ add_list() {
148152

149153
remove_list() {
150154
ppa=${1-ondrej/php}
151-
ppa_url=${2:-"$lp_ppa/$ppa/ubuntu"}
152-
grep -lr "$ppa_url" "$list_dir" | xargs -n1 sudo rm -f
155+
[ -n "$2" ] && ppa_urls=("$2") || ppa_urls=("$lp_ppa/$ppa/ubuntu" "$lpc_ppa/$ppa/ubuntu")
156+
for ppa_url in "${ppa_urls[@]}"; do
157+
grep -lr "$ppa_url" "$list_dir" | xargs -n1 sudo rm -f
158+
done
153159
sudo rm -f "$key_dir"/"${ppa/\//-}"-keyring || true
154160
}
155161

@@ -280,7 +286,7 @@ install() {
280286
to_wait=($!)
281287
fi
282288
tar_file="php_$version$PHP_PKG_SUFFIX+$ID$VERSION_ID$ARCH_SUFFIX.tar.zst"
283-
get "/tmp/$tar_file" "https://github.com/shivammathur/php-builder/releases/download/$version/$tar_file"
289+
get -q "/tmp/$tar_file" "https://github.com/shivammathur/php-builder/releases/download/$version/$tar_file"
284290
sudo rm -rf /etc/php/"$version" /tmp/php"$version"
285291
sudo mkdir -m 777 -p /tmp/php"$version" /var/run /run/php /lib/systemd/system /usr/lib/tmpfiles.d /etc/apache2/mods-available /etc/apache2/conf-available /etc/apache2/sites-available /etc/nginx/sites-available /usr/lib/apache2/modules
286292
extract_build "$tar_file" /tmp/php"$version"
@@ -415,8 +421,12 @@ list_file="$list_dir/ubuntu.sources"
415421
[ -e "$list_file" ] || list_file='/etc/apt/sources.list'
416422
debconf_fix='DEBIAN_FRONTEND=noninteractive'
417423
upstream_lsb='/etc/upstream-release/lsb-release'
418-
lp_api='https://api.launchpad.net/1.0'
424+
lp_api=(
425+
'https://api.launchpad.net/1.0'
426+
'https://api.launchpad.net/devel'
427+
)
419428
lp_ppa='http://ppa.launchpad.net'
429+
lpc_ppa='https://ppa.launchpadcontent.net'
420430
key_dir='/usr/share/keyrings'
421431
dist_info_dir='/usr/share/distro-info'
422432
sury='https://packages.sury.org'

0 commit comments

Comments
 (0)