Skip to content

Commit 5144035

Browse files
author
Giles Westwood
committed
merging new builder functions
1 parent 4f38b93 commit 5144035

File tree

1 file changed

+72
-8
lines changed

1 file changed

+72
-8
lines changed

lib/apt.sh

Lines changed: 72 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ sk-apt-distupgrade-manual(){
7373

7474
sk-apt-support-eol(){
7575
sk_help "Usage: $FUNCNAME. Migrate an EOL Ubuntu server to the old-releases apt repo. This should be a last resort as we should be upgrading them. Use when OS and code dependencies exist that block an upgrade." "$@" && return
76-
sudo perl -pi -e 's/us-east-1\.ec2\.archive\.ubuntu\.com/old-releases\.ubuntu\.com/g' /etc/apt/sources.list
76+
sudo perl -pi -e 's/us-east-\d+\.ec2\.archive\.ubuntu\.com/old-releases\.ubuntu\.com/g' /etc/apt/sources.list
7777
sudo perl -pi -e 's/gb\.archive\.ubuntu\.com/old-releases\.ubuntu\.com/g' /etc/apt/sources.list
7878
sudo perl -pi -e 's/security\.ubuntu\.com/old-releases\.ubuntu\.com/g' /etc/apt/sources.list
7979
sudo perl -pi -e 's/deb-src.*$//g' /etc/apt/sources.list
@@ -94,17 +94,74 @@ sk-apt-add-custom-source(){
9494
sudo bash -c "echo $@ > $source_filename"
9595
fi
9696
}
97+
####################################################
98+
99+
_builder_setup(){
100+
if [[ ! -d "$HOME/build" ]];then
101+
mkdir -p "$HOME/build/var/lib/dpkg"
102+
touch "$HOME/build/var/lib/dpkg/status"
103+
mkdir -p "$HOME/build/var/lib/apt"
104+
mkdir -p "$HOME/build/var/cache/apt"
105+
fi
106+
export BUILDER_WORKDIR="$HOME/build"
107+
}
108+
109+
sk-apt-builder-distro-config(){
110+
local distribution=${1:-$DISTRIB_CODENAME}
111+
_builder_setup
112+
echo "
113+
Dir::State "$BUILDER_WORKDIR/var/lib/apt";
114+
Dir::State::status "$BUILDER_WORKDIR/var/lib/dpkg/status";
115+
Dir::Etc::SourceList "$BUILDER_WORKDIR/$distribution.list";
116+
Dir::Cache "$BUILDER_WORKDIR/var/cache/apt";
117+
Dir::Etc::sourceparts "-";
118+
APT::Get::List-Cleanup "0";
119+
pkgCacheGen::Essential "none";
120+
" > $BUILDER_WORKDIR/$distribution.config
121+
}
122+
123+
sk-apt-builder-source-package(){
124+
local package=${1:-wibble}
125+
local distribution=${2:-$DISTRIB_CODENAME}
126+
sk-apt-builder-distro-source $distribution
127+
sk-apt-builder-distro-config $distribution
128+
apt-get update -c $BUILDER_WORKDIR/$distribution.config
129+
apt-get source $package -c $BUILDER_WORKDIR/$distribution.config
130+
}
131+
132+
sk-apt-builder-distro-source(){
133+
_builder_setup
134+
local distribution=${1:-$DISTRIB_CODENAME}
135+
sk-apt-add-distro-source $distribution /$HOME/build/$distribution.list
136+
}
137+
138+
##########################################################
139+
140+
sk-apt-distro-is-eol(){
141+
local distribution=${1:-$DISTRIB_CODENAME}
142+
local tmp_dir=$(sk-tmp-userdir)
143+
curl -s https://changelogs.ubuntu.com/meta-release >> $tmp_dir/meta-release
144+
if grep -q $distribution $tmp_dir/meta-release | grep -q old-releases;then
145+
return 0
146+
else
147+
return 1
148+
fi
149+
}
97150

98151
sk-apt-add-distro-source(){
99152
sk_help_noarg "$FUNCNAME <distro> <listname>. Add /etc/apt/sources.list.d/<listname>.list" "$@" && return
100-
local distribution=$1
153+
local distribution=${1:-$DISTRIB_CODENAME}
101154
local listfile=${2:-/etc/apt/sources.list.d/$distribution}
102155

103156
# sources.list format: deb uri distribution [component1] [component2] [...]
104157
[ ! -d /etc/apt/sources.list.d ] && sudo mkdir /etc/apt/sources.list.d
105158

106159
# start with a new file
107-
sudo rm -f $listfile
160+
if grep -q etc <<< "$(echo $listfile)" ;then
161+
sudo rm -f $listfile
162+
else
163+
rm -f $listfile
164+
fi
108165

109166
lsbdistid=$(lsb_release -i | awk '{print $3}')
110167
case $lsbdistid in
@@ -115,15 +172,22 @@ sk-apt-add-distro-source(){
115172

116173
local distribution_list="$distribution ${distribution}-updates ${distribution}-backports"
117174
echo $distribution_list
118-
case $distribution in
119-
lucid) local uri_list="http://old-releases.ubuntu.com/ubuntu/";;
120-
*) local uri_list="http://gb.archive.ubuntu.com/ubuntu/ http://security.ubuntu.com/ubuntu";;
121-
esac
175+
176+
if sk-apt-distro-is-eol ;then
177+
local uri_list="http://old-releases.ubuntu.com/ubuntu/"
178+
else
179+
local uri_list="http://gb.archive.ubuntu.com/ubuntu/ http://security.ubuntu.com/ubuntu"
180+
fi
122181

123182
for uri in $uri_list;do
124183
grep -q security <<< $(echo "$uri") && distribution_list="${distribution}-security"
125184
for distribution_name in $distribution_list;do
126-
sudo bash -c "echo 'deb-src $uri $distribution_name $components' >> $listfile"
185+
if grep -q etc <<< "$(echo $listfile)" ;then
186+
sudo bash -c "echo 'deb-src $uri $distribution_name $components' >> $listfile"
187+
else
188+
bash -c "echo 'deb-src $uri $distribution_name $components' >> $listfile"
189+
fi
190+
127191
done
128192
done
129193

0 commit comments

Comments
 (0)