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