]> git.saurik.com Git - cydia.git/blob - sysroot.sh
Stop running sysroot.sh at sign of first error.
[cydia.git] / sysroot.sh
1 #!/usr/bin/env bash
2
3 if [[ ${BASH_VERSION} != 4* ]]; then
4 echo "bash 4.0 required" 1>&2
5 exit 1
6 fi
7
8 set -o pipefail
9 set -e
10
11 shopt -s extglob
12 shopt -s nullglob
13
14 PATH=/Library/Cydia/bin:$PATH
15
16 rm -rf sysroot
17 mkdir sysroot
18 cd sysroot
19
20 repository=http://apt.saurik.com/
21 distribution=tangelo
22 component=main
23 architecture=iphoneos-arm
24
25 wget -qO- "${repository}dists/${distribution}/${component}/binary-${architecture}/Packages.bz2" | bzcat | {
26 regex='^([^ \t]*): *(.*)'
27 declare -A fields
28
29 while IFS= read -r line; do
30 if [[ ${line} == '' ]]; then
31 package=${fields[package]}
32 if [[ ${package} == *(apr|apr-lib|apt7|apt7-lib|coreutils|mobilesubstrate|pcre) ]]; then
33 filename=${fields[filename]}
34 wget -O "${package}.deb" "${repository}${filename}"
35 dpkg-deb -x "${package}.deb" .
36 fi
37
38 unset fields
39 declare -A fields
40 elif [[ ${line} =~ ${regex} ]]; then
41 name=${BASH_REMATCH[1],,}
42 value=${BASH_REMATCH[2]}
43 fields[${name}]=${value}
44 fi
45 done
46 }
47
48 rm -f *.deb
49
50 if substrate=$(readlink usr/include/substrate.h); then
51 if [[ ${substrate} == /* ]]; then
52 ln -sf "../..${substrate}" usr/include/substrate.h
53 fi
54 fi
55
56 mkdir -p usr/include
57 cd usr/include
58
59 mkdir CoreFoundation
60 wget -O CoreFoundation/CFBundlePriv.h "http://www.opensource.apple.com/source/CF/CF-550/CFBundlePriv.h?txt"
61 wget -O CoreFoundation/CFPriv.h "http://www.opensource.apple.com/source/CF/CF-550/CFPriv.h?txt"
62 wget -O CoreFoundation/CFUniChar.h "http://www.opensource.apple.com/source/CF/CF-550/CFUniChar.h?txt"
63
64 if true; then
65 mkdir -p WebCore
66 wget -O WebCore/WebCoreThread.h 'http://www.opensource.apple.com/source/WebCore/WebCore-658.28/wak/WebCoreThread.h?txt'
67 else
68 wget -O WebCore.tgz http://www.opensource.apple.com/tarballs/WebCore/WebCore-658.28.tar.gz
69 tar -zx --transform 's@^[^/]*/@WebCore.d/@' -f WebCore.tgz
70
71 mkdir WebCore
72 cp -a WebCore.d/{*,rendering/style,platform/graphics/transforms}/*.h WebCore
73 cp -a WebCore.d/platform/{animation,graphics,network,text}/*.h WebCore
74 cp -a WebCore.d/{accessibility,platform{,/{graphics,network,text}}}/{cf,mac,iphone}/*.h WebCore
75 cp -a WebCore.d/bridge/objc/*.h WebCore
76
77 wget -O JavaScriptCore.tgz http://www.opensource.apple.com/tarballs/JavaScriptCore/JavaScriptCore-554.1.tar.gz
78 #tar -zx --transform 's@^[^/]*/API/@JavaScriptCore/@' -f JavaScriptCore.tgz $(tar -ztf JavaScriptCore.tgz | grep '/API/[^/]*.h$')
79 tar -zx \
80 --transform 's@^[^/]*/@@' \
81 --transform 's@^icu/@@' \
82 -f JavaScriptCore.tgz $(tar -ztf JavaScriptCore.tgz | sed -e '
83 /\/icu\/unicode\/.*\.h$/ p;
84 /\/profiler\/.*\.h$/ p;
85 /\/runtime\/.*\.h$/ p;
86 /\/wtf\/.*\.h$/ p;
87 d;
88 ')
89 fi
90
91 for framework in ApplicationServices CoreServices IOKit IOSurface JavaScriptCore QuartzCore WebKit; do
92 ln -s /System/Library/Frameworks/"${framework}".framework/Headers "${framework}"
93 done
94
95 for framework in /System/Library/Frameworks/CoreServices.framework/Frameworks/*.framework; do
96 name=${framework}
97 name=${name%.framework}
98 name=${name##*/}
99 ln -s "${framework}/Headers" "${name}"
100 done
101
102 mkdir -p Cocoa
103 cat >Cocoa/Cocoa.h <<EOF
104 #define NSImage UIImage
105 #define NSView UIView
106 #define NSWindow UIWindow
107
108 #define NSPoint CGPoint
109 #define NSRect CGRect
110
111 #define NSPasteboard UIPasteboard
112 #define NSSelectionAffinity int
113 @protocol NSUserInterfaceValidations;
114 EOF
115
116 mkdir -p GraphicsServices
117 cat >GraphicsServices/GraphicsServices.h <<EOF
118 typedef struct __GSEvent *GSEventRef;
119 typedef struct __GSFont *GSFontRef;
120 EOF