]> git.saurik.com Git - cydia.git/blobdiff - sysroot.sh
Gracefully recover from low-memory conditions.
[cydia.git] / sysroot.sh
index f03d3a93b738afb828d9bff8162f3ca840920bd8..5e87c3c432b3d6fd92f2efd5cc904d2624b1cab1 100755 (executable)
@@ -11,7 +11,17 @@ set -e
 shopt -s extglob
 shopt -s nullglob
 
-PATH=/Library/Cydia/bin:$PATH
+for command in unlzma wget; do
+    if ! which "${command}" &>/dev/null; then
+        echo "Cannot run \`${command}\`. Please read compiling.txt." 1>&2
+        exit 1
+    fi
+done
+
+if tar --help | grep bsdtar &>/dev/null; then
+    echo "Running \`tar\` is bsdtar :(. Please read compiling.txt." 1>&2
+    exit 1
+fi
 
 rm -rf sysroot
 mkdir sysroot
@@ -22,6 +32,10 @@ distribution=tangelo
 component=main
 architecture=iphoneos-arm
 
+declare -A dpkgz
+dpkgz[gz]=gunzip
+dpkgz[lzma]=unlzma
+
 wget -qO- "${repository}dists/${distribution}/${component}/binary-${architecture}/Packages.bz2" | bzcat | {
     regex='^([^ \t]*): *(.*)'
     declare -A fields
@@ -31,8 +45,25 @@ wget -qO- "${repository}dists/${distribution}/${component}/binary-${architecture
             package=${fields[package]}
             if [[ ${package} == *(apr|apr-lib|apt7|apt7-lib|coreutils|mobilesubstrate|pcre) ]]; then
                 filename=${fields[filename]}
+
                 wget -O "${package}.deb" "${repository}${filename}"
-                dpkg-deb -x "${package}.deb" .
+                for z in lzma gz; do
+                    compressed=data.tar.${z}
+
+                    if ar -x "${package}.deb" "${compressed}" 2>/dev/null; then
+                        ${dpkgz[${z}]} "${compressed}"
+                        break
+                    fi
+                done
+
+                if ! [[ -e data.tar ]]; then
+                    echo "unable to extract package" 1>&2
+                    exit 1
+                fi
+
+                ls -la data.tar
+                tar -xf ./data.tar
+                rm -f data.tar
             fi
 
             unset fields