-
Notifications
You must be signed in to change notification settings - Fork 35
/
sysroot.sh
executable file
·110 lines (85 loc) · 2.59 KB
/
sysroot.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/usr/bin/env bash
if [[ ${BASH_VERSION} != 4* ]]; then
echo "bash 4.0 required" 1>&2
exit 1
fi
set -o pipefail
set -e
shopt -s extglob
shopt -s nullglob
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
xcode=$(xcodebuild -sdk macosx -version Path)
rm -rf sysroot
mkdir sysroot
cd sysroot
repository=http://apt.saurik.com/
distribution=tangelo
component=main
architecture=iphoneos-arm
declare -A dpkgz
dpkgz[gz]=gunzip
dpkgz[lzma]=unlzma
function extract() {
package=$1
url=$2
wget -O "${package}.deb" "${url}"
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
}
declare -A urls
urls[apt7]=http://apt.saurik.com/debs/apt7_0.7.25.3-7_iphoneos-arm.deb
urls[apt7-lib]=http://apt.saurik.com/debs/apt7-lib_0.7.25.3-12_iphoneos-arm.deb
urls[coreutils]=http://apt.saurik.com/debs/coreutils_7.4-11_iphoneos-arm.deb
if [[ 0 ]]; then
wget -qO- "${repository}dists/${distribution}/${component}/binary-${architecture}/Packages.bz2" | bzcat | {
regex='^([^ \t]*): *(.*)'
declare -A fields
while IFS= read -r line; do
if [[ ${line} == '' ]]; then
package=${fields[package]}
if [[ -n ${urls[${package}]} ]]; then
filename=${fields[filename]}
urls[${package}]=${repository}${filename}
fi
unset fields
declare -A fields
elif [[ ${line} =~ ${regex} ]]; then
name=${BASH_REMATCH[1],,}
value=${BASH_REMATCH[2]}
fields[${name}]=${value}
fi
done
}
fi
for package in "${!urls[@]}"; do
extract "${package}" "${urls[${package}]}"
done
rm -f *.deb
mkdir -p usr/include
cd usr/include
mkdir CoreFoundation
wget -O CoreFoundation/CFUniChar.h "http://www.opensource.apple.com/source/CF/CF-550/CFUniChar.h?txt"
mkdir -p WebCore
wget -O WebCore/WebCoreThread.h 'http://www.opensource.apple.com/source/WebCore/WebCore-658.28/wak/WebCoreThread.h?txt'
ln -s /System/Library/Frameworks/IOKit.framework/Headers IOKit