88}
99
1010dump_symbols () {
11- readelf -Ws $1 | perl -n -e ' /: (\w*).*?( \w+)@@GLIBC_ / && print "$2 $1\n"'
11+ readelf -Ws $1 | perl -n -e ' /: (\w+)\s+\w+\s+(?:FUNC|OBJECT)\s+(?: \w+\s+){3}(\w+)\b(?:@@GLIBC)? / && print "$2 $1\n"' | sort -u
1212}
1313
1414extract_label () {
@@ -96,10 +96,11 @@ requirements_general() {
9696get_debian () {
9797 local url=" $1 "
9898 local info=" $2 "
99+ local pkgname=" $3 "
99100 local tmp=` mktemp -d`
100101 echo " Getting $info "
101102 echo " -> Location: $url "
102- local id=` echo $url | perl -n -e ' /(libc6 [^\/]*)\./ && print $1' `
103+ local id=` echo $url | perl -n -e ' /(' " $pkgname " ' [^\/]*)\./ && print $1' `
103104 echo " -> ID: $id "
104105 check_id $id || return
105106 echo " -> Downloading package"
@@ -116,8 +117,9 @@ get_debian() {
116117get_all_debian () {
117118 local info=$1
118119 local url=$2
119- for f in ` wget $url / -O - 2> /dev/null | grep -Eoh ' libc6(-i386|-amd64)?_[^"]*(amd64|i386)\.deb' | grep -v " </a>" ` ; do
120- get_debian $url /$f $1
120+ local pkgname=$3
121+ for f in ` wget $url / -O - 2> /dev/null | grep -Eoh " $pkgname " ' (-i386|-amd64|-x32)?_[^"]*(amd64|i386)\.deb' | grep -v " </a>" ` ; do
122+ get_debian " $url /$f " " $info " " $pkgname "
121123 done
122124 return 0
123125}
@@ -137,10 +139,11 @@ requirements_debian() {
137139get_rpm () {
138140 local url=" $1 "
139141 local info=" $2 "
142+ local pkgname=" $3 "
140143 local tmp=" $( mktemp -d) "
141144 echo " Getting $info "
142145 echo " -> Location: $url "
143- local id=$( echo " $url " | perl -n -e ' /(libc [^\/]*)\./ && print $1' )
146+ local id=$( echo " $url " | perl -n -e ' /(' " $pkgname " ' [^\/]*)\./ && print $1' )
144147 echo " -> ID: $id "
145148 check_id " $id " || return
146149 echo " -> Downloading package"
@@ -157,22 +160,23 @@ get_rpm() {
157160get_all_rpm () {
158161 local info=$1
159162 local pkg=$2
160- local arch=$3
163+ local pkgname=$3
164+ local arch=$4
161165 local website=" http://rpmfind.net"
162166 local searchurl=" $website /linux/rpm2html/search.php?query=$pkg "
163167 echo " Getting package $pkg locations"
164168 local url=" "
165169 for i in $( seq 1 3) ; do
166170 urls=$( wget " $searchurl " -O - 2> /dev/null \
167- | grep -oh " /[^']*libc [^']*\.$arch \.rpm" )
171+ | grep -oh " /[^']*${pkgname} [^']*\.$arch \.rpm" )
168172 [[ -z " $urls " ]] || break
169173 echo " Retrying..."
170174 sleep 1
171175 done
172176 [[ -n " $urls " ]] || die " Failed to get package version"
173177 for url in $urls
174178 do
175- get_rpm " $website$url " " $info "
179+ get_rpm " $website$url " " $info " " $pkgname "
176180 sleep .1
177181 done
178182}
@@ -208,7 +212,7 @@ get_from_filelistgz() {
208212 [[ -n " $urls " ]] || die " Failed to get package version"
209213 for url in $urls
210214 do
211- get_rpm " $website /$url " " $info "
215+ get_rpm " $website /$url " " $info " " $pkg "
212216 sleep .1
213217 done
214218}
@@ -227,10 +231,11 @@ requirements_centos() {
227231get_pkg () {
228232 local url=" $1 "
229233 local info=" $2 "
234+ local pkgname=" $3 "
230235 local tmp=" $( mktemp -d) "
231236 echo " Getting $info "
232237 echo " -> Location: $url "
233- local id=$( echo " $url " | perl -n -e ' /(libc [^\/]*)\.pkg\.tar\.(xz|zst)/ && print $1' | ( (echo " $url " | grep -q ' lib32' ) && sed ' s/x86_64/x86/g' || cat))
238+ local id=$( echo " $url " | perl -n -e ' /(' " $pkgname " ' [^\/]*)\.pkg\.tar\.(xz|zst)/ && print $1' | ( (echo " $url " | grep -q ' lib32' ) && sed ' s/x86_64/x86/g' || cat))
234239 echo " -> ID: $id "
235240 check_id $id || return
236241 echo " -> Downloading package"
@@ -256,11 +261,12 @@ get_pkg() {
256261get_all_pkg () {
257262 local info=$1
258263 local directory=$2
264+ local pkgname=$3
259265 echo " Getting package $info locations"
260266 local url=" "
261267 for i in $( seq 1 3) ; do
262268 urls=$( wget " $directory " -O - 2> /dev/null \
263- | grep -oh ' [^"]*libc [^"]*\.pkg[^"]*' \
269+ | grep -oh ' [^"]*' " $pkgname " ' [^"]*\.pkg[^"]*' \
264270 | grep -v ' .sig' \
265271 | grep -v ' >' )
266272 [[ -z " $urls " ]] || break
@@ -270,7 +276,7 @@ get_all_pkg() {
270276 [[ -n " $urls " ]] || die " Failed to get package version"
271277 for url in $urls
272278 do
273- get_pkg " $directory /$url " " $info "
279+ get_pkg " $directory /$url " " $info " " $pkgname "
274280 sleep .1
275281 done
276282}
@@ -288,6 +294,67 @@ requirements_pkg() {
288294 return 0
289295}
290296
297+
298+ # ===== Alpine ===== #
299+
300+ get_apk () {
301+ local url=" $1 "
302+ local info=" $2 " 229
303+ local pkgname=" $3 "
304+ local tmp=$( mktemp -d)
305+ echo " Getting $info "
306+ echo " -> Location: $url "
307+ local id=$( echo " $url " | perl -n -e ' /(' " $pkgname " ' [^\/]*)\.apk/ && print $1' )
308+ echo " -> ID: $id "
309+ check_id $id || return
310+ echo " -> Downloading package"
311+ wget " $url " 2> /dev/null -O " $tmp /pkg.tar.gz" || die " Failed to download package from $url "
312+ echo " -> Extracting package"
313+ pushd $tmp 1> /dev/null
314+ tar xzf pkg.tar.gz --warning=none
315+ popd 1> /dev/null
316+ index_libc " $tmp " " $id " " $info " " $url "
317+ rm -rf $tmp
318+ }
319+
320+ get_all_apk () {
321+ local info=$1
322+ local repo=$2
323+ local version=$3
324+ local component=$4
325+ local arch=$5
326+ local pkgname=$6
327+ local directory=" $repo /$version /$component /$arch /"
328+ echo " Getting package $info locations"
329+ local url=" "
330+ for i in $( seq 1 3) ; do
331+ urls=$( wget " $directory " -O - 2> /dev/null \
332+ | grep -oh ' [^"]*' " $pkgname " ' -[0-9][^"]*\.apk' \
333+ | grep -v ' .sig' \
334+ | grep -v ' >' )
335+ [[ -z " $urls " ]] || break
336+ echo " Retrying..."
337+ sleep 1
338+ done
339+ [[ -n " $urls " ]] || die " Failed to get package version"
340+ for url in $urls
341+ do
342+ get_apk " $directory$url " " $info " " $pkgname "
343+ sleep .1
344+ done
345+ }
346+
347+ requirements_apk () {
348+ which mktemp 1> /dev/null 2>&1 || return
349+ which perl 1> /dev/null 2>&1 || return
350+ which wget 1> /dev/null 2>&1 || return
351+ which tar 1> /dev/null 2>&1 || return
352+ which gzip 1> /dev/null 2>&1 || return
353+ which grep 1> /dev/null 2>&1 || return
354+ return 0
355+ }
356+
357+
291358# ===== Local ===== #
292359
293360add_local () {
0 commit comments