]> git.saurik.com Git - cydia.git/blobdiff - sysroot.sh
basic_string::_S_construct NULL not valid
[cydia.git] / sysroot.sh
index 819d8b72a23e48698e8b8947c3d72e9c00541cda..5e87c3c432b3d6fd92f2efd5cc904d2624b1cab1 100755 (executable)
@@ -5,10 +5,23 @@ if [[ ${BASH_VERSION} != 4* ]]; then
     exit 1
 fi
 
+set -o pipefail
+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
@@ -19,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
@@ -28,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
@@ -44,6 +78,12 @@ wget -qO- "${repository}dists/${distribution}/${component}/binary-${architecture
 
 rm -f *.deb
 
+if substrate=$(readlink usr/include/substrate.h); then
+    if [[ ${substrate} == /* ]]; then
+        ln -sf "../..${substrate}" usr/include/substrate.h
+    fi
+fi
+
 mkdir -p usr/include
 cd usr/include