]> git.saurik.com Git - cydia.git/blame - Library/firmware.sh
Fixed cancel button sizing; blackified dropbar.
[cydia.git] / Library / firmware.sh
CommitLineData
de0dbbab 1#!/bin/bash
5ec44e34 2
12762dfa 3set -e
bcdc9d75 4
5ec44e34 5shopt -s extglob
bcdc9d75 6shopt -s nullglob
de0dbbab
JF
7
8version=$(sw_vers -productVersion)
bcdc9d75 9cpu=$(uname -p)
de0dbbab 10
bcdc9d75
JF
11if [[ ${cpu} == arm ]]; then
12 data=/var/lib/dpkg
13 model=hw.machine
14 arch=iphoneos-arm
15else
16 data=/Library/Cydia/dpkg
17 model=hw.model
18 arch=cydia
19fi
4825688a 20
bcdc9d75 21model=$(sysctl -n "${model}")
4825688a 22
bcdc9d75 23status=${data}/status
12762dfa 24
bcdc9d75 25function lower() {
d4bccfd4 26 sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'
bcdc9d75 27}
12762dfa 28
bcdc9d75
JF
29# Generate New Package {{{
30function pseudo() {
31 local package=$1 version=$2 description=$3 name=$4
32 echo "/." >"${data}"/info/"${package}".list
4825688a 33
bcdc9d75
JF
34 cat <<EOF
35Package: ${package}
de0dbbab
JF
36Essential: yes
37Status: install ok installed
38Priority: required
39Section: System
40Installed-Size: 0
bcdc9d75 41Architecture: ${arch}
de0dbbab 42Version: ${version}
bcdc9d75 43Description: ${description}
5ec44e34 44Tag: role::cydia
5ec44e34
JF
45EOF
46
bcdc9d75
JF
47 [[ -n ${name} ]] && echo "Name: ${name}"
48 echo
49}
50# }}}
5ec44e34 51
bcdc9d75 52{
5ec44e34 53
bcdc9d75 54# Delete Old Packages {{{
93429d56
JF
55 unset firmware
56 unset blank
323be572 57
bcdc9d75
JF
58 while IFS= read -r line; do
59 #echo "#${firmware+@}/${blank+@} ${line}" 1>&2
de0dbbab 60
bcdc9d75
JF
61 if [[ ${line} == '' && "${blank+@}" ]]; then
62 continue
63 else
64 unset blank
65 fi
12762dfa 66
bcdc9d75
JF
67 if [[ ${line} == "Package: "@(firmware|gsc.*|cy+*) ]]; then
68 firmware=
69 elif [[ ${line} == '' ]]; then
70 blank=
71 fi
5ec44e34 72
bcdc9d75
JF
73 if [[ "${firmware+@}" ]]; then
74 if [[ "${blank+@}" ]]; then
75 unset firmware
76 fi
77 continue
78 fi
5ec44e34 79
bcdc9d75
JF
80 #echo "${firmware+@}/${blank+@} ${line}" 1>&2
81 echo "${line}"
82 done <"${status}"
4825688a 83
bcdc9d75
JF
84 #echo "#${firmware+@}/${blank+@} EOF" 1>&2
85 if ! [[ "${blank+@}" || "${firmware+@}" ]]; then
86 echo
87 fi
88# }}}
89
90 if [[ ${cpu} == arm ]]; then
91 pseudo "firmware" "${version}" "almost impressive Apple frameworks"
92
41ea28ce
JF
93 while [[ 1 ]]; do
94 gssc=$(gssc 2>&1)
95 if [[ ${gssc} != *'(null)'* ]]; then
96 break
97 fi
98 sleep 1
99 done
100
101 echo "${gssc}" | sed -re '
bcdc9d75
JF
102 /^ [^ ]* = [0-9.]*;$/ ! d;
103 s/^ ([^ ]*) = ([0-9.]*);$/\1 \2/;
104 s/([A-Z])/-\L\1/g; s/^"([^ ]*)"/\1/;
105 s/^-//;
106 / 0$/ d;
107 ' | while read -r name value; do
108 pseudo "gsc.${name}" "${value}" "virtual GraphicsServices dependency"
35d7388c
JF
109
110 if [[ ${name} == ipad ]]; then
111 pseudo "gsc.wildcat" "${value}" "virtual virtual GraphicsServices dependency"
112 fi
bcdc9d75
JF
113 done
114 fi
de0dbbab 115
bcdc9d75
JF
116 if [[ ${cpu} == arm ]]; then
117 os=ios
118 else
119 os=macosx
120 fi
121
122 pseudo "cy+os.${os}" "${version}" "virtual operating system dependency"
123 pseudo "cy+cpu.${cpu}" "0" "virtual CPU dependency"
124
125 name=${model%%*([0-9]),*([0-9])}
126 version=${model#${name}}
127 name=$(lower <<<${name})
128 version=${version/,/.}
129 pseudo "cy+model.${name}" "${version}" "virtual model dependency"
de0dbbab 130
bcdc9d75 131 pseudo "cy+kernel.$(lower <<<$(sysctl -n kern.ostype))" "$(sysctl -n kern.osrelease)" "virtual kernel dependency"
5ec44e34 132
bcdc9d75
JF
133} >"${status}"_
134
135mv -f "${status}"{_,}
136
137if [[ ${cpu} == arm ]]; then
138 if [[ ! -h /User && -d /User ]]; then
139 cp -afT /User /var/mobile
140 fi && rm -rf /User && ln -s "/var/mobile" /User
141
142 echo 3 >/var/lib/cydia/firmware.ver
143fi