the_memo.sh 172 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551
  1. #!/bin/bash
  2. #TODO: Add in perl? Maybe?
  3. #TODO: Update deb build numbers as needed
  4. #TODO: Some bins (berkeleydb, readline libs) bitch about not being a vaild file descriptor when attempting to sign them. wtf
  5. MAINTAINER="Maintainer: Kevin Bradley <maintainer@nito.tv>"
  6. VERIFY="true"
  7. ARCH="arm64"
  8. PLATFORM="AppleTVOS"
  9. PLATFORM_LOWER="appletvos"
  10. MIN_VERSION="-mappletvos-version-min=9.0"
  11. CODESIGN_TOOL="jtool"
  12. CLANG_PATH="`xcrun -f clang`"
  13. CLANGPLUS_PATH="`xcrun -f clang++`"
  14. BUILD_ROOT="`pwd`"
  15. ROOT_PREFIX="usr"
  16. SKEL_PREFIX="$BUILD_ROOT/skel"
  17. PKG_NAME="" #The name of our current package being built
  18. PKG_VERSION="-1"
  19. WORKING_DIR="" #This stores the working directory under BUILD_ROOT
  20. BUILD_BASH="false"
  21. set -e
  22. # set trap to help debug any build errors
  23. trap "echo '** ERROR with build:'; pwd" INT TERM EXIT
  24. usage() {
  25. echo "usage: $0 [-c|--codesign-tool] [-b|--build-bash] [-i|--insecure] [-p|--platform] [-s|--sdk-path]"
  26. trap - INT TERM EXIT
  27. exit 0
  28. }
  29. while test $# -gt 0; do
  30. case "$1" in
  31. -h|--help)
  32. usage
  33. ;;
  34. -c|--codesign-tool)
  35. shift
  36. if test $# -gt 0; then
  37. CODESIGN_TOOL="$1"
  38. if [ ! "$CODESIGN_TOOL" == "ldid" ] && [ ! "$CODESIGN_TOOL" == "ldid2" ] && [ ! "$CODESIGN_TOOL" == "jtool" ]; then
  39. echo "Error: Invalid codesigning tool"
  40. trap - INT TERM EXIT
  41. exit 1
  42. fi
  43. else
  44. echo "Error: No codesigning tool given."
  45. echo " Try: ldid, jtool or ldid2"
  46. trap - INT TERM EXIT
  47. exit 1
  48. fi
  49. shift
  50. ;;
  51. -b|--build-bash)
  52. BUILD_BASH="true"
  53. shift
  54. ;;
  55. -i|--insecure|--no-verify)
  56. VERIFY="false"
  57. echo "Working without verifying packages..."
  58. echo "YOU BETTER KNOW WHAT YOU'RE DOING"
  59. sleep 2 #Give them a couple seconds to think about what they're about to do
  60. shift
  61. ;;
  62. -p|--platform)
  63. shift
  64. if test $# -gt 0; then
  65. PLATFORM="$1"
  66. else
  67. echo "No platform given."
  68. trap - INT TERM EXIT
  69. exit 1
  70. fi
  71. shift
  72. ;;
  73. -s|--sdk-path|--sdk)
  74. shift
  75. if test $# -gt 0; then
  76. SDK_PATH="$1"
  77. else
  78. echo "No platform given."
  79. trap - INT TERM EXIT
  80. exit 1
  81. fi
  82. shift
  83. ;;
  84. *)
  85. break
  86. ;;
  87. esac
  88. done
  89. #Check for required programs
  90. command -v cmake -j8 >/dev/null 2>&1 || { echo >&2 "Missing cmake.\nRun: brew install cmake" ; }
  91. command -v gtar >/dev/null 2>&1 || { echo >&2 "Missing gnutar.\nRun: brew install gnu-tar" ; }
  92. command -v dpkg >/dev/null 2>&1 || { echo >&2 "Missing dpkg.\nRun: brew install dpkg" ; }
  93. #jtool
  94. #command -v jtool >/dev/null 2>&1 || { }
  95. #brew
  96. #autoconf
  97. #docbook-xsl
  98. #One of the two is required
  99. command -v md5sum >/dev/null 2>&1 || { command -v md5 >/dev/null 2>&1 || { echo >&2 "Missing md5sum" ; } ; }
  100. if [ "$VERIFY" == "true" ]; then
  101. command -v gpg2 >/dev/null 2>&1 || { echo >&2 "Missing GPG. Cannot verify. Dying."; exit 127 ; }
  102. echo "Importing necessary PGP keys"
  103. gpg2 --recv-key 69184620 7C0135FB088AAF6C66C650B9BB5869F064EA74AB 702353E0F7E48EDB 7FD9FCCB000BEEEE A15B725964A95EE5 D8692123C4065DEA5E0F3AB5249B39D24F25E3B6 031EC2536E580D8EA286A9F22071B08A33BD3F06 9D5EAAF69013B842
  104. fi
  105. #Eventually we'll make -j8 this work for any platform
  106. #For now, this is just scaffolding for the future
  107. #When the time comes, there are several other places which have hardcoded appletvos in them
  108. if [ "$PLATFORM" == "AppleTVOS" ]; then
  109. #Defaults are good
  110. echo ""
  111. elif [ "$PLATFORM" == "WatchOS" ]; then
  112. #Untested
  113. PLATFORM_LOWER="watchos"
  114. MIN_VERSION="-mwatchos-version-min=3.0"
  115. ARCH="armv7k"
  116. else
  117. echo "Unsupported Platform."
  118. trap - INT TERM EXIT
  119. exit 127
  120. fi
  121. if [ -z "$SDK_PATH" ]; then
  122. if [ "$PLATFORM" == "AppleTVOS" ]; then
  123. SDK_PATH="`xcrun --sdk appletvos --show-sdk-path`"
  124. elif [ "$PLATFORM" == "WatchOS" ]; then
  125. SDK_PATH="`xcrun --sdk watchos --show-sdk-path`"
  126. fi
  127. elif [ ${SDK_PATH: -1} == "/" ]; then
  128. # Some of our sed's require SDK_PATH *not* end with /
  129. SDK_PATH="`echo $SDK_PATH | sed 's/\/$//g'`"
  130. fi
  131. #================
  132. #Helper Functions
  133. #----------------
  134. initDebStructure() {
  135. sudo rm -rf deb
  136. mkdir -p deb/DEBIAN
  137. sudo rm -rf deb-doc
  138. mkdir -p deb-doc/DEBIAN
  139. sudo rm -rf deb-dev
  140. mkdir -p deb-dev/DEBIAN
  141. }
  142. prepSDK() {
  143. #Availability.h patches
  144. #grep -R "#define __TVOS_UNAVAILABLE " "$SDK_PATH/usr/include/Availability.h"
  145. #grep -R "#define __TVOS_PROHIBITED " "$SDK_PATH/usr/include/Availability.h"
  146. #sudo sed -i -- "s|#define __TVOS_UNAVAILABLE __OS_AVAILABILITY(tvos,unavailable)|#define __TVOS_UNAVAILABLE_NOTQUITE __OS_AVAILABILITY(tvos,unavailable)|" /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/include/Availability.h
  147. #sudo sed -i -- "s|#define __TVOS_PROHIBITED __OS_AVAILABILITY(tvos,unavailable)|#define __TVOS_PROHIBITED_NOTQUITE __OS_AVAILABILITY(tvos,unavailable)|" /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/include/Availability.h
  148. #Fix for ncurses
  149. if [ ! -e "$SDK_PATH/usr/include/sys/ttydev.h" ]; then
  150. echo "Missing <sys/ttydev.h>. Moving it in from MacOSX SDK (with sudo)"
  151. sudo cp "`xcrun --sdk macosx --show-sdk-path`/usr/include/sys/ttydev.h" "$SDK_PATH/usr/include/sys/ttydev.h"
  152. fi
  153. #I forget.. Readline perhaps?
  154. #IOKit
  155. #~/Library/Developer/Xcode/tvOS\ DeviceSupport
  156. #9.0 (13T396)
  157. #9.0.1 (13T402)
  158. #10.1 (14U593)
  159. #10.1.1 (14U712a)
  160. #10.2.1 (14W585a)
  161. #10.2.2 (14W756)
  162. #11.1 (15J582)
  163. #/Users/kevinbradley/Library/Developer/Xcode/tvOS\ DeviceSupport/11.1\ \(15J582\)/Symbols/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
  164. }
  165. # this needs to be modified to have the proper spacing, if the spacing is absolutely perfect you can't ever use jtool to change the entitlements without building from scratch
  166. createEntitlements() {
  167. if [ ! -e "$BUILD_ROOT/ent.plist" ]; then
  168. echo "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd\">" >> "$BUILD_ROOT/ent.plist"
  169. echo "<plist version=\"1.0\">" >> "$BUILD_ROOT/ent.plist"
  170. echo "<dict>" >> "$BUILD_ROOT/ent.plist"
  171. echo " <key>platform-application</key>" >> "$BUILD_ROOT/ent.plist"
  172. echo " <true/>" >> "$BUILD_ROOT/ent.plist"
  173. echo " <key>com.apple.private.skip-library-validation</key>" >> "$BUILD_ROOT/ent.plist"
  174. echo " <true/>" >> "$BUILD_ROOT/ent.plist"
  175. echo "</dict>" >> "$BUILD_ROOT/ent.plist"
  176. echo "</plist>" >> "$BUILD_ROOT/ent.plist"
  177. fi
  178. }
  179. # for some reason the files signed this way don't run on tvOS 9 anymore
  180. codesign() {
  181. #local var=$(ldid -S "$1");
  182. if [ "$CODESIGN_TOOL" == "jtool" ]; then
  183. createEntitlements
  184. jtool --sign platform --ent "$BUILD_ROOT/ent.plist" "$1"
  185. sudo cp -X out.bin "$1"
  186. elif [ "$CODESIGN_TOOL" == "ldid" ]; then
  187. ldid -S "$1"
  188. elif [ "$CODESIGN_TOOL" == "ldid2" ]; then
  189. ldid2 -S "$1"
  190. fi
  191. }
  192. notifyProgress() {
  193. echo "$1"
  194. #say "$1"
  195. }
  196. createListFile() {
  197. if [ ! -d "$SKEL_PREFIX/var/lib/dpkg/info/" ]; then
  198. mkdir -p "$SKEL_PREFIX/var/lib/dpkg/info/"
  199. fi
  200. #md5 -r == md5sum
  201. MD5="md5sum"
  202. command -v md5sum >/dev/null 2>&1 || { MD5="md5 -r" ; }
  203. find "$BUILD_ROOT/$WORKING_DIR/deb" -type f -not -path "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/*" -exec $MD5 {} \; | awk '{ print $1 " " $2 }' | sed "s|$BUILD_ROOT/$WORKING_DIR/deb/||g" >> "$SKEL_PREFIX/var/lib/dpkg/info/$PKG_NAME.md5sums"
  204. find "$BUILD_ROOT/$WORKING_DIR/deb" -type f -not -path "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/*" | sed "s|$BUILD_ROOT/$WORKING_DIR/deb||g" >> "$SKEL_PREFIX/var/lib/dpkg/info/$PKG_NAME.list"
  205. FILES="$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/*"
  206. for f in $FILES; do
  207. file=${f##*/}
  208. if [ "$file" != "control" ]; then
  209. echo "Processing $file in $PKG_NAME..";
  210. cp "$f" "$SKEL_PREFIX/var/lib/dpkg/info/$PKG_NAME.$file"
  211. fi
  212. done
  213. }
  214. #warning: this will process ANY deb file you have in your $BUILD_ROOT
  215. createStatusFile() {
  216. cd "$BUILD_ROOT"
  217. rm -rf status
  218. rm -rf available
  219. for f in *.deb; do
  220. echo "Processing $f..";
  221. dpkg-deb -f "$f" >> status
  222. dpkg-deb -f "$f" >> available
  223. echo "Status: install ok installed" >> status
  224. echo "" >> status
  225. echo "" >> available
  226. done
  227. mv status "$SKEL_PREFIX/var/lib/dpkg/status"
  228. mv available "$SKEL_PREFIX/var/lib/dpkg/available"
  229. }
  230. checkPGPSig() {
  231. if [ "$VERIFY" == "true" ]; then
  232. SIGFILE="$1"
  233. FILE="$2"
  234. local VERIFY_TEST="`gpg --verify $SIGFILE $FILE 2>&1 | grep 'Good signature'`"
  235. if [ "$VERIFY_TEST" == "" ]; then
  236. echo "Failed to validate PGP signature for $FILE"
  237. trap - INT TERM EXIT
  238. exit 127
  239. fi
  240. echo "*** VALID SIGNATURE"
  241. fi
  242. }
  243. checkSHA256() {
  244. if [ "$VERIFY" == "true" ]; then
  245. FILE="$1"
  246. VALID_SHA="$2"
  247. VERIFY_TEST="`shasum -a 256 $FILE | cut -c 1-64`"
  248. if [ "$VERIFY_TEST" != "$VALID_SHA" ]; then
  249. echo "Failed to validate SHA256 signature for $FILE"
  250. trap - INT TERM EXIT
  251. exit 127
  252. fi
  253. echo "*** VALID SIGNATURE"
  254. fi
  255. }
  256. fixSystem() {
  257. FILE="$1"
  258. echo '#define PROC_PIDPATHINFO_MAXSIZE (1024)' >> "$FILE"
  259. echo 'static int file_exist(const char *filename) {' >> "$FILE"
  260. echo ' struct stat buffer;' >> "$FILE"
  261. echo ' int r = stat(filename, &buffer);' >> "$FILE"
  262. echo ' return (r == 0);' >> "$FILE"
  263. echo '}' >> "$FILE"
  264. echo '' >> "$FILE"
  265. echo 'static char *searchpath(const char *binaryname){' >> "$FILE"
  266. echo ' if (strstr(binaryname, "/") != NULL){' >> "$FILE"
  267. echo ' if (file_exist(binaryname)){' >> "$FILE"
  268. echo ' char *foundpath = malloc((strlen(binaryname) + 1) * (sizeof(char)));' >> "$FILE"
  269. echo ' strcpy(foundpath, binaryname);' >> "$FILE"
  270. echo ' return foundpath;' >> "$FILE"
  271. echo ' } else {' >> "$FILE"
  272. echo ' return NULL;' >> "$FILE"
  273. echo ' }' >> "$FILE"
  274. echo ' }' >> "$FILE"
  275. echo ' ' >> "$FILE"
  276. echo ' char *pathvar = getenv("PATH");' >> "$FILE"
  277. echo ' ' >> "$FILE"
  278. echo ' char *dir = strtok(pathvar,":");' >> "$FILE"
  279. echo ' while (dir != NULL){' >> "$FILE"
  280. echo ' char searchpth[PROC_PIDPATHINFO_MAXSIZE];' >> "$FILE"
  281. echo ' strcpy(searchpth, dir);' >> "$FILE"
  282. echo ' strcat(searchpth, "/");' >> "$FILE"
  283. echo ' strcat(searchpth, binaryname);' >> "$FILE"
  284. echo ' ' >> "$FILE"
  285. echo ' if (file_exist(searchpth)){' >> "$FILE"
  286. echo ' char *foundpath = malloc((strlen(searchpth) + 1) * (sizeof(char)));' >> "$FILE"
  287. echo ' strcpy(foundpath, searchpth);' >> "$FILE"
  288. echo ' return foundpath;' >> "$FILE"
  289. echo ' }' >> "$FILE"
  290. echo ' ' >> "$FILE"
  291. echo ' dir = strtok(NULL, ":");' >> "$FILE"
  292. echo ' }' >> "$FILE"
  293. echo ' return NULL;' >> "$FILE"
  294. echo '}' >> "$FILE"
  295. echo '' >> "$FILE"
  296. echo 'static int isShellScript(const char *path){' >> "$FILE"
  297. echo ' FILE *file = fopen(path, "r");' >> "$FILE"
  298. echo ' uint8_t header[2];' >> "$FILE"
  299. echo ' if (fread(header, sizeof(uint8_t), 2, file) == 2){' >> "$FILE"
  300. echo " if (header[0] == '#' && header[1] == '!'){" >> "$FILE"
  301. echo ' fclose(file);' >> "$FILE"
  302. echo ' return 1;' >> "$FILE"
  303. echo ' }' >> "$FILE"
  304. echo ' }' >> "$FILE"
  305. echo ' fclose(file);' >> "$FILE"
  306. echo ' return -1;' >> "$FILE"
  307. echo '}' >> "$FILE"
  308. echo '' >> "$FILE"
  309. echo 'static char *getInterpreter(char *path){' >> "$FILE"
  310. echo ' FILE *file = fopen(path, "r");' >> "$FILE"
  311. echo ' char *interpreterLine = NULL;' >> "$FILE"
  312. echo ' unsigned long lineSize = 0;' >> "$FILE"
  313. echo ' getline(&interpreterLine, &lineSize, file);' >> "$FILE"
  314. echo ' ' >> "$FILE"
  315. echo ' char *rawInterpreter = (interpreterLine+2);' >> "$FILE"
  316. echo ' rawInterpreter = strtok(rawInterpreter, " ");' >> "$FILE"
  317. echo ' rawInterpreter = strtok(rawInterpreter, "\n");' >> "$FILE"
  318. echo ' ' >> "$FILE"
  319. echo ' char *interpreter = malloc((strlen(rawInterpreter)+1) * sizeof(char));' >> "$FILE"
  320. echo ' strcpy(interpreter, rawInterpreter);' >> "$FILE"
  321. echo ' ' >> "$FILE"
  322. echo ' free(interpreterLine);' >> "$FILE"
  323. echo ' fclose(file);' >> "$FILE"
  324. echo ' return interpreter;' >> "$FILE"
  325. echo '}' >> "$FILE"
  326. echo '' >> "$FILE"
  327. echo 'static char *fixedCmd(const char *cmdStr){' >> "$FILE"
  328. echo ' char *cmdCpy = malloc((strlen(cmdStr)+1) * sizeof(char));' >> "$FILE"
  329. echo ' strcpy(cmdCpy, cmdStr);' >> "$FILE"
  330. echo ' ' >> "$FILE"
  331. echo ' char *cmd = strtok(cmdCpy, " ");' >> "$FILE"
  332. echo ' ' >> "$FILE"
  333. echo ' uint8_t size = strlen(cmd) + 1;' >> "$FILE"
  334. echo ' ' >> "$FILE"
  335. echo ' char *args = cmdCpy + (size + 1);' >> "$FILE"
  336. echo ' if ((strlen(cmdStr) - strlen(cmd)) == 0)' >> "$FILE"
  337. echo ' args = NULL;' >> "$FILE"
  338. echo ' ' >> "$FILE"
  339. echo ' char *abs_path = searchpath(cmd);' >> "$FILE"
  340. echo ' if (abs_path){' >> "$FILE"
  341. echo ' int isScript = isShellScript(abs_path);' >> "$FILE"
  342. echo ' if (isScript == 1){' >> "$FILE"
  343. echo ' char *interpreter = getInterpreter(abs_path);' >> "$FILE"
  344. echo ' ' >> "$FILE"
  345. echo ' uint8_t commandSize = strlen(interpreter) + 1 + strlen(abs_path);' >> "$FILE"
  346. echo ' ' >> "$FILE"
  347. echo ' if (args){' >> "$FILE"
  348. echo ' commandSize += 1 + strlen(args);' >> "$FILE"
  349. echo ' }' >> "$FILE"
  350. echo ' ' >> "$FILE"
  351. echo ' char *rawCommand = malloc(sizeof(char) * (commandSize + 1));' >> "$FILE"
  352. echo ' strcpy(rawCommand, interpreter);' >> "$FILE"
  353. echo ' strcat(rawCommand, " ");' >> "$FILE"
  354. echo ' strcat(rawCommand, abs_path);' >> "$FILE"
  355. echo ' ' >> "$FILE"
  356. echo ' if (args){' >> "$FILE"
  357. echo ' strcat(rawCommand, " ");' >> "$FILE"
  358. echo ' strcat(rawCommand, args);' >> "$FILE"
  359. echo ' }' >> "$FILE"
  360. echo ' rawCommand[(commandSize)+1] = "\0";' >> "$FILE"
  361. echo ' ' >> "$FILE"
  362. echo ' free(interpreter);' >> "$FILE"
  363. echo ' free(abs_path);' >> "$FILE"
  364. echo ' free(cmdCpy);' >> "$FILE"
  365. echo ' ' >> "$FILE"
  366. echo ' return rawCommand;' >> "$FILE"
  367. echo ' } else {' >> "$FILE"
  368. echo ' uint8_t commandSize = strlen(abs_path);' >> "$FILE"
  369. echo ' ' >> "$FILE"
  370. echo ' if (args){' >> "$FILE"
  371. echo ' commandSize += 1 + strlen(args);' >> "$FILE"
  372. echo ' }' >> "$FILE"
  373. echo ' ' >> "$FILE"
  374. echo ' char *rawCommand = malloc(sizeof(char) * (commandSize + 1));' >> "$FILE"
  375. echo ' strcat(rawCommand, abs_path);' >> "$FILE"
  376. echo ' ' >> "$FILE"
  377. echo ' if (args){' >> "$FILE"
  378. echo ' strcat(rawCommand, " ");' >> "$FILE"
  379. echo ' strcat(rawCommand, args);' >> "$FILE"
  380. echo ' }' >> "$FILE"
  381. echo ' rawCommand[(commandSize)+1] = "\0";' >> "$FILE"
  382. echo ' ' >> "$FILE"
  383. echo ' free(abs_path);' >> "$FILE"
  384. echo ' free(cmdCpy);' >> "$FILE"
  385. echo ' ' >> "$FILE"
  386. echo ' return rawCommand;' >> "$FILE"
  387. echo ' }' >> "$FILE"
  388. echo ' }' >> "$FILE"
  389. echo ' return cmdCpy;' >> "$FILE"
  390. echo '}' >> "$FILE"
  391. echo '' >> "$FILE"
  392. echo 'int RunCmd(const char *cmd) {' >> "$FILE"
  393. echo ' pid_t pid;' >> "$FILE"
  394. echo ' char *rawCmd = fixedCmd(cmd);' >> "$FILE"
  395. echo ' char *argv[] = {"sh", "-c", (char*)rawCmd, NULL};' >> "$FILE"
  396. echo ' int status;' >> "$FILE"
  397. echo ' status = posix_spawn(&pid, "/bin/sh", NULL, NULL, argv, environ);' >> "$FILE"
  398. echo ' if (status == 0) {' >> "$FILE"
  399. echo ' if (waitpid(pid, &status, 0) == -1) {' >> "$FILE"
  400. echo ' perror("waitpid");' >> "$FILE"
  401. echo ' }' >> "$FILE"
  402. echo ' } else {' >> "$FILE"
  403. echo ' printf("posix_spawn: %s\n", strerror(status));' >> "$FILE"
  404. echo ' }' >> "$FILE"
  405. echo ' free(rawCmd);' >> "$FILE"
  406. echo ' return status;' >> "$FILE"
  407. echo '}' >> "$FILE"
  408. }
  409. #=====================
  410. #OSGT10.1
  411. #---------------------
  412. #Download readline
  413. downloadReadline() {
  414. #http://gnu.askapache.com/readline/readline-7.0.tar.gz
  415. if [ ! -e readline-7.0.tar.gz ]; then
  416. echo "Downloading readline-7.0.tar.gz"
  417. curl -LO http://gnu.askapache.com/readline/readline-7.0.tar.gz
  418. curl -LO http://gnu.askapache.com/readline/readline-7.0.tar.gz.sig
  419. checkPGPSig readline-7.0.tar.gz.sig readline-7.0.tar.gz
  420. else
  421. echo "Using existing readline"
  422. fi
  423. sudo rm -rf readline-7.0
  424. tar xzvf readline-7.0.tar.gz
  425. WORKING_DIR="readline-7.0"
  426. PKG_NAME="readline"
  427. PKG_VERSION="7.0-1"
  428. cd "$WORKING_DIR"
  429. }
  430. #readline
  431. #Notes:
  432. # Doesn't like to build with ncurses.a in any of its linker paths (read: rm -rf skel)
  433. buildReadline() {
  434. downloadReadline
  435. if [ "$ARCH" == "arm64" ]; then
  436. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=aarch64-apple-darwin
  437. else
  438. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=arm-apple-darwin
  439. fi
  440. #make
  441. make -j8 DESTDIR="$SKEL_PREFIX" install
  442. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libhistory.7.0.dylib"
  443. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libreadline.7.0.dylib"
  444. initDebStructure
  445. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  446. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libhistory.7.0.dylib"
  447. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libreadline.7.0.dylib"
  448. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  449. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  450. echo "Section: Development" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  451. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  452. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  453. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  454. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  455. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  456. #echo "Depends: bash, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  457. echo "Description: command-line history management" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  458. echo "Homepage: https://tiswww.cwru.edu/php/chet/readline/rltop.html" >> deb/DEBIAN/control
  459. #Build the doc deb
  460. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  461. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  462. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  463. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  464. #Build the dev deb
  465. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  466. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  467. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  468. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin"
  469. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  470. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  471. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  472. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  473. dpkg -b deb
  474. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  475. dpkg -b deb-doc
  476. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  477. dpkg -b deb-dev
  478. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  479. createListFile
  480. cd "$BUILD_ROOT"
  481. }
  482. #Download ncurses
  483. downloadNcurses() {
  484. if [ ! -e ncurses-6.0.tar.gz ]; then
  485. echo "Downlading ncurses-6.0.tar.gz"
  486. curl -LO http://gnu.mirror.constant.com/ncurses/ncurses-6.0.tar.gz
  487. curl -LO http://gnu.mirror.constant.com/ncurses/ncurses-6.0.tar.gz.sig
  488. checkPGPSig ncurses-6.0.tar.gz.sig ncurses-6.0.tar.gz
  489. else
  490. echo "Using existing ncurses-6.0"
  491. fi
  492. sudo rm -rf ncurses-6.0
  493. tar xzvf ncurses-6.0.tar.gz
  494. WORKING_DIR="ncurses-6.0"
  495. PKG_NAME="ncurses"
  496. PKG_VERSION="6.0-1"
  497. cd "$WORKING_DIR"
  498. }
  499. patchNcurses() {
  500. if [ "$PLATFORM" == "AppleTVOS" ]; then
  501. if [ "$PKG_VERSION" == "6.0-1" ]; then
  502. # LEFT ERROR ON environ)' no ;
  503. # For some reason, building never fails on the error...
  504. # But still, tput is in /usr/bin... so.... ??
  505. cat progs/tput.c | head -n 55 > tput.patched.c
  506. echo "#include <stdint.h>" >> tput.patched.c
  507. echo "#include <stdio.h>" >> tput.patched.c
  508. echo "#include <stdlib.h>" >> tput.patched.c
  509. echo "#include <spawn.h>" >> tput.patched.c
  510. echo "#include <sys/wait.h>" >> tput.patched.c
  511. echo "" >> tput.patched.c
  512. echo "extern char **environ;" >> tput.patched.c
  513. echo "" >> tput.patched.c
  514. cat progs/tput.c | tail -n 350 | head -n 50 >> tput.patched.c
  515. fixSystem "tput.patched.c"
  516. cat progs/tput.c | tail -n 301 | sed 's/system(init_prog)/RunCmd(init_prog)/g' >> tput.patched.c
  517. cp tput.patched.c progs/tput.c
  518. fi
  519. fi
  520. }
  521. #ncurses
  522. #Notes:
  523. # Needs DESTDIR in make -j8 to not attempt to build test files (which fail to link)
  524. # May need the make clean in between to keep out artifacts from the old DESTDIR
  525. buildNcurses() {
  526. downloadNcurses
  527. if [ "$ARCH" == "arm64" ]; then
  528. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX/" --host=aarch64-apple-darwin
  529. else
  530. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX/" --host=arm-apple-darwin
  531. fi
  532. make -j8 DESTDIR="$SKEL_PREFIX/" install
  533. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/clear"
  534. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/infocmp"
  535. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/tabs"
  536. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/tic"
  537. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/toe"
  538. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/tput"
  539. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/tset"
  540. make clean
  541. initDebStructure
  542. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  543. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/clear"
  544. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/infocmp"
  545. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/tabs"
  546. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/tic"
  547. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/toe"
  548. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/tput"
  549. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/tset"
  550. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  551. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  552. echo "Section: System" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  553. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  554. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  555. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  556. echo "Description: feature-complete terminal library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  557. echo "Name: New Curses" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  558. echo "Homepage: https://www.gnu.org/software/ncurses/ncurses.html" >> deb/DEBIAN/control
  559. #Build the doc deb
  560. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  561. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  562. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  563. #Build the dev deb
  564. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  565. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin"
  566. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  567. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/ncurses6-config" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin/"
  568. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  569. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  570. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  571. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  572. dpkg -b deb
  573. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  574. dpkg -b deb-doc
  575. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  576. dpkg -b deb-dev
  577. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  578. createListFile
  579. cd "$BUILD_ROOT"
  580. }
  581. #Download bash
  582. downloadBash() {
  583. #http://gnu.askapache.com/bash/bash-4.4.12.tar.gz
  584. if [ ! -e bash-4.4.12.tar.gz ]; then
  585. echo "Downloading bash-4.4.12.tar.gz"
  586. curl -LO http://gnu.askapache.com/bash/bash-4.4.12.tar.gz
  587. curl -LO http://gnu.askapache.com/bash/bash-4.4.12.tar.gz.sig
  588. checkPGPSig bash-4.4.12.tar.gz.sig bash-4.4.12.tar.gz
  589. else
  590. echo "Using existing bash"
  591. fi
  592. sudo rm -rf bash-4.4.12
  593. tar xzvf bash-4.4.12.tar.gz
  594. WORKING_DIR="bash-4.4.12"
  595. PKG_NAME="bash"
  596. PKG_VERSION="4.4.12-1"
  597. cd "$WORKING_DIR"
  598. }
  599. patchBash() {
  600. if [ "$PLATFORM" == "AppleTVOS" ]; then
  601. sed -i -- 's|^#undef HAVE_SYS_SIGLIST$|#define HAVE_SYS_SIGLIST 1|' config.h.in
  602. fi
  603. }
  604. #bash
  605. #Notes:
  606. # Requires autoconf
  607. buildBash() {
  608. downloadBash
  609. patchBash
  610. if [ "$ARCH" == "arm64" ]; then
  611. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=aarch64-apple-darwin --disable-nls --with-installed-readline --disable-largefile bash_cv_dev_fd=absent bash_cv_sys_named_pipes=present bash_cv_job_control_missing=present bash_cv_func_sigsetjmp=present bash_cv_func_ctype_nonascii=no bash_cv_must_reinstall_sighandlers=no bash_cv_func_strcoll_broken=yes ac_cv_c_stack_direction=-1 ac_cv_func_mmap_fixed_mapped=yes gt_cv_int_divbyzero_sigfpe=no ac_cv_func_setvbuf_reversed=no ac_cv_func_strcoll_works=yes ac_cv_func_working_mktime=yes ac_cv_type_getgroups=gid_t bash_cv_dup2_broken=no ac_cv_prog_cc_g=no ac_cv_rl_version=6.0
  612. else
  613. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=arm-apple-darwin --disable-nls --with-installed-readline --disable-largefile bash_cv_dev_fd=absent bash_cv_sys_named_pipes=present bash_cv_job_control_missing=present bash_cv_func_sigsetjmp=present bash_cv_func_ctype_nonascii=no bash_cv_must_reinstall_sighandlers=no bash_cv_func_strcoll_broken=yes ac_cv_c_stack_direction=-1 ac_cv_func_mmap_fixed_mapped=yes gt_cv_int_divbyzero_sigfpe=no ac_cv_func_setvbuf_reversed=no ac_cv_func_strcoll_works=yes ac_cv_func_working_mktime=yes ac_cv_type_getgroups=gid_t bash_cv_dup2_broken=no ac_cv_prog_cc_g=no ac_cv_rl_version=6.0
  614. fi
  615. #make
  616. make -j8 DESTDIR="$SKEL_PREFIX" install
  617. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/bash"
  618. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/basename"
  619. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/dirname"
  620. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/finfo"
  621. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/head"
  622. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/id"
  623. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/ln"
  624. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/logname"
  625. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/mkdir"
  626. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/mypid"
  627. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/pathchk"
  628. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/print"
  629. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/printenv"
  630. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/push"
  631. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/realpath"
  632. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/rmdir"
  633. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/setpgid"
  634. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/sleep"
  635. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/strftime"
  636. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/sync"
  637. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/tee"
  638. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/truefalse"
  639. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/tty"
  640. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/uname"
  641. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/unlink"
  642. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/whoami"
  643. #Get rid of cross-compile artifacts
  644. sed -i -- "s|$SKEL_PREFIX||g" "$SKEL_PREFIX/$ROOT_PREFIX/bin/bashbug"
  645. sed -i -- "s|$SKEL_PREFIX||g" "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/Makefile.inc"
  646. sed -i -- "s|BUILD_DIR = $BUILD_ROOT/$WORKING_DIR|BUILD_DIR = /usr/src/usr.bin/$WORKING_DIR|g" "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/Makefile.inc"
  647. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/bashbug--"
  648. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/lib/bash/Makefile.inc--"
  649. initDebStructure
  650. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  651. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/bash"
  652. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/basename"
  653. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/dirname"
  654. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/finfo"
  655. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/head"
  656. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/id"
  657. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/ln"
  658. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/logname"
  659. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/mkdir"
  660. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/mypid"
  661. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/pathchk"
  662. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/print"
  663. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/printenv"
  664. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/push"
  665. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/realpath"
  666. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/rmdir"
  667. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/setpgid"
  668. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/sleep"
  669. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/strftime"
  670. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/sync"
  671. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/tee"
  672. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/truefalse"
  673. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/tty"
  674. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/uname"
  675. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/unlink"
  676. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/whoami"
  677. #Get rid of cross-compile artifacts
  678. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/bashbug"
  679. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/Makefile.inc"
  680. sed -i -- "s|BUILD_DIR = $BUILD_ROOT/$WORKING_DIR|BUILD_DIR = /usr/src/usr.bin/$WORKING_DIR|g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/Makefile.inc"
  681. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/bashbug--"
  682. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/bash/Makefile.inc--"
  683. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  684. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  685. echo "Section: Terminal_Support" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  686. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  687. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  688. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  689. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  690. if [ "$PLATFORM" == "AppleTVOS" ]; then
  691. echo "Pre-Depends: dpkg (>= 1.14.25-8), cy+model.appletv" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  692. echo "Depends: grep, readline (>= 6.0-7), sed, firmware (>= 10.2.2)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  693. else
  694. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  695. echo "Depends: grep, readline (>= 6.0-7), sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  696. fi
  697. echo "Description: the best shell ever written by Brian Fox" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  698. echo "Name: Bourne-Again SHell" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  699. echo "Homepage: http://www.gnu.org/software/bash/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  700. #Build the doc deb
  701. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  702. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  703. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  704. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  705. #Build the dev deb
  706. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  707. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  708. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  709. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  710. #FIXME: Make a $PKG_NAME-staticlibs.deb
  711. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  712. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  713. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  714. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  715. dpkg -b deb
  716. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  717. dpkg -b deb-doc
  718. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  719. dpkg -b deb-dev
  720. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  721. createListFile
  722. cd "$BUILD_ROOT"
  723. }
  724. # DONT USE UNLESS YOU ARE ON 11+; OVERWRITE BASH (or any other apple-signed file, for that matter), LEAD TO BRICK
  725. # 10.2 and up
  726. buildBashAndFriends() {
  727. notifyProgress "Building readline"
  728. buildReadline
  729. notifyProgress "Building ncurses"
  730. buildNcurses
  731. notifyProgress "Building bash"
  732. buildBash
  733. }
  734. #=====================
  735. #Basic Utils
  736. #---------------------
  737. #Download sed
  738. downloadSed() {
  739. if [ ! -e sed-4.4.tar.xz ]; then
  740. echo "Downloading sed-4.4.tar.xz"
  741. curl -LO https://ftp.gnu.org/gnu/sed/sed-4.4.tar.xz
  742. curl -LO https://ftp.gnu.org/gnu/sed/sed-4.4.tar.xz.sig
  743. checkPGPSig sed-4.4.tar.xz.sig sed-4.4.tar.xz
  744. else
  745. echo "Using existing sed"
  746. fi
  747. sudo rm -rf sed-4.4/
  748. tar xJvf sed-4.4.tar.xz
  749. WORKING_DIR="sed-4.4"
  750. PKG_NAME="sed"
  751. PKG_VERSION="4.4-1"
  752. cd "$WORKING_DIR"
  753. }
  754. #sed
  755. buildSed() {
  756. downloadSed
  757. if [ "$ARCH" == "arm64" ]; then
  758. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=aarch64-apple-darwin
  759. else
  760. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=arm-apple-darwin
  761. fi
  762. make -j8 DESTDIR="$SKEL_PREFIX/" install
  763. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/sed"
  764. initDebStructure
  765. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/" install
  766. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sed"
  767. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  768. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  769. echo "Section: Utilities" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  770. #echo "Installed-Size: 396" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  771. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  772. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  773. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  774. echo "Description: edits streams of text using patterns" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  775. echo "Homepage: http://www.gnu.org/software/sed/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  776. #Build the doc deb
  777. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  778. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  779. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  780. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  781. #Build the dev deb
  782. #No files
  783. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  784. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  785. dpkg -b deb
  786. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  787. dpkg -b deb-doc
  788. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  789. createListFile
  790. cd "$BUILD_ROOT"
  791. }
  792. #Download grep
  793. downloadGrep() {
  794. if [ ! -e grep-3.0.tar.xz ]; then
  795. echo "Downloading grep-3.0.tar.xz"
  796. curl -LO https://ftp.gnu.org/gnu/grep/grep-3.0.tar.xz
  797. curl -LO https://ftp.gnu.org/gnu/grep/grep-3.0.tar.xz.sig
  798. checkPGPSig grep-3.0.tar.xz.sig grep-3.0.tar.xz
  799. else
  800. echo "Using existing grep"
  801. fi
  802. sudo rm -rf grep-3.0/
  803. tar xJvf grep-3.0.tar.xz
  804. WORKING_DIR="grep-3.0"
  805. PKG_NAME="grep"
  806. PKG_VERSION="3.0-1"
  807. cd "$WORKING_DIR"
  808. }
  809. #grep
  810. buildGrep() {
  811. downloadGrep
  812. if [ "$ARCH" == "arm64" ]; then
  813. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=aarch64-apple-darwin --without-libiconv-prefix
  814. else
  815. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=arm-apple-darwin --without-libiconv-prefix
  816. fi
  817. #make
  818. make -j8 DESTDIR="$SKEL_PREFIX" install
  819. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/grep"
  820. initDebStructure
  821. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  822. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/grep"
  823. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  824. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  825. echo "Section: Utilities" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  826. #echo "Installed-Size: 396" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  827. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  828. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  829. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  830. echo "Description: searches files for regular expressions" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  831. echo "Homepage: http://www.gnu.org/software/grep/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  832. #Build the doc deb
  833. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  834. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  835. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  836. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  837. #Build the dev deb
  838. #No files
  839. #rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/info"
  840. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  841. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  842. dpkg -b deb
  843. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  844. dpkg -b deb-doc
  845. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  846. createListFile
  847. cd "$BUILD_ROOT"
  848. }
  849. #Download coreutils
  850. downloadCoreutils() {
  851. if [ ! -e coreutils-8.9.tar.xz ]; then
  852. echo "Downloading coreutils-8.9.tar.xz"
  853. curl -LO http://gnu.mirror.constant.com/coreutils/coreutils-8.9.tar.xz
  854. curl -LO http://gnu.mirror.constant.com/coreutils/coreutils-8.9.tar.xz.sig
  855. checkPGPSig coreutils-8.9.tar.xz.sig coreutils-8.9.tar.xz
  856. else
  857. echo "Using existing coreutils"
  858. fi
  859. sudo rm -rf coreutils-8.9
  860. tar xJvf coreutils-8.9.tar.xz
  861. WORKING_DIR="coreutils-8.9"
  862. PKG_NAME="coreutils"
  863. PKG_VERSION="8.9-1"
  864. cd "$WORKING_DIR"
  865. }
  866. patchCoreutils() {
  867. if [ "$PLATFORM" == "AppleTVOS" ]; then
  868. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' lib/config.hin
  869. sed -i -- 's|#undef HAVE_CLOCK_SETTIME||' lib/config.hin
  870. sed -i -- 's|#undef HAVE_FDATASYNC||' lib/config.hin
  871. sed -i -- 's|# define __stpncpy stpncpy||' lib/stpncpy.c
  872. if [ ! -d "$SKEL_PREFIX/$ROOT_PREFIX/include" ]; then
  873. mkdir -p "$SKEL_PREFIX/$ROOT_PREFIX/include"
  874. fi
  875. if [ ! -e "$SKEL_PREFIX/$ROOT_PREFIX/include/crt_externs.h" ]; then
  876. echo "#include <sys/cdefs.h>" >> "$SKEL_PREFIX/$ROOT_PREFIX/include/crt_externs.h"
  877. echo "" >> "$SKEL_PREFIX/$ROOT_PREFIX/include/crt_externs.h"
  878. echo "__BEGIN_DECLS" >> "$SKEL_PREFIX/$ROOT_PREFIX/include/crt_externs.h"
  879. echo "extern char ***_NSGetArgv(void);" >> "$SKEL_PREFIX/$ROOT_PREFIX/include/crt_externs.h"
  880. echo "extern int *_NSGetArgc(void);" >> "$SKEL_PREFIX/$ROOT_PREFIX/include/crt_externs.h"
  881. echo "extern char ***_NSGetEnviron(void);" >> "$SKEL_PREFIX/$ROOT_PREFIX/include/crt_externs.h"
  882. echo "extern char **_NSGetProgname(void);" >> "$SKEL_PREFIX/$ROOT_PREFIX/include/crt_externs.h"
  883. echo "extern struct mach_header *_NSGetMachExecuteHeader(void);" >> "$SKEL_PREFIX/$ROOT_PREFIX/include/crt_externs.h"
  884. echo "__END_DECLS" >> "$SKEL_PREFIX/$ROOT_PREFIX/include/crt_externs.h"
  885. fi
  886. fi
  887. }
  888. #coreutils
  889. buildCoreutils() {
  890. downloadCoreutils
  891. patchCoreutils
  892. # Only builds with arm-apple-darwin, not aarch64
  893. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX/" --host=arm-apple-darwin
  894. #make
  895. make -j8 DESTDIR="$SKEL_PREFIX" install
  896. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/["
  897. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/base64"
  898. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/basename"
  899. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/cat"
  900. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/chcon"
  901. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/chgrp"
  902. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/chmod"
  903. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/chown"
  904. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/chroot"
  905. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/cksum"
  906. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/comm"
  907. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/cp"
  908. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/csplit"
  909. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/cut"
  910. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/date"
  911. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dd"
  912. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/df"
  913. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dir"
  914. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dircolors"
  915. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dirname"
  916. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/du"
  917. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/echo"
  918. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/env"
  919. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/expand"
  920. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/expr"
  921. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/factor"
  922. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/false"
  923. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/fmt"
  924. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/fold"
  925. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/groups"
  926. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/head"
  927. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/hostid"
  928. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/id"
  929. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/install"
  930. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/join"
  931. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/kill"
  932. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/link"
  933. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/ln"
  934. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/logname"
  935. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/ls"
  936. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/md5sum"
  937. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/mkdir"
  938. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/mkfifo"
  939. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/mknod"
  940. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/mktemp"
  941. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/mv"
  942. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/nice"
  943. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/nl"
  944. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/nohup"
  945. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/nproc"
  946. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/od"
  947. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/paste"
  948. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/pathchk"
  949. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/pinky"
  950. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/pr"
  951. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/printenv"
  952. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/printf"
  953. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/ptx"
  954. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/pwd"
  955. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/readlink"
  956. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/rm"
  957. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/rmdir"
  958. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/runcon"
  959. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/seq"
  960. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/sha1sum"
  961. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/sha224sum"
  962. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/sha256sum"
  963. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/sha384sum"
  964. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/sha512sum"
  965. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/shred"
  966. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/shuf"
  967. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/sleep"
  968. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/sort"
  969. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/split"
  970. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/stat"
  971. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/stty"
  972. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/sum"
  973. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/sync"
  974. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/tac"
  975. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/tail"
  976. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/tee"
  977. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/test"
  978. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/timeout"
  979. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/touch"
  980. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/tr"
  981. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/true"
  982. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/truncate"
  983. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/tsort"
  984. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/tty"
  985. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/uname"
  986. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/unexpand"
  987. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/uniq"
  988. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/unlink"
  989. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/uptime"
  990. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/users"
  991. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/vdir"
  992. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/wc"
  993. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/who"
  994. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/whoami"
  995. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/yes"
  996. initDebStructure
  997. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  998. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/["
  999. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/base64"
  1000. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/basename"
  1001. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/cat"
  1002. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/chcon"
  1003. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/chgrp"
  1004. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/chmod"
  1005. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/chown"
  1006. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/chroot"
  1007. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/cksum"
  1008. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/comm"
  1009. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/cp"
  1010. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/csplit"
  1011. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/cut"
  1012. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/date"
  1013. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/dd"
  1014. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/df"
  1015. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/dir"
  1016. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/dircolors"
  1017. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/dirname"
  1018. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/du"
  1019. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/echo"
  1020. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/env"
  1021. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/expand"
  1022. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/expr"
  1023. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/factor"
  1024. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/false"
  1025. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/fmt"
  1026. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/fold"
  1027. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/groups"
  1028. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/head"
  1029. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/hostid"
  1030. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/id"
  1031. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/install"
  1032. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/join"
  1033. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/kill"
  1034. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/link"
  1035. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/ln"
  1036. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/logname"
  1037. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/ls"
  1038. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/md5sum"
  1039. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/mkdir"
  1040. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/mkfifo"
  1041. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/mknod"
  1042. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/mktemp"
  1043. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/mv"
  1044. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/nice"
  1045. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/nl"
  1046. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/nohup"
  1047. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/nproc"
  1048. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/od"
  1049. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/paste"
  1050. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/pathchk"
  1051. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/pinky"
  1052. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/pr"
  1053. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/printenv"
  1054. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/printf"
  1055. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/ptx"
  1056. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/pwd"
  1057. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/readlink"
  1058. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/rm"
  1059. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/rmdir"
  1060. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/runcon"
  1061. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/seq"
  1062. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sha1sum"
  1063. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sha224sum"
  1064. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sha256sum"
  1065. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sha384sum"
  1066. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sha512sum"
  1067. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/shred"
  1068. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/shuf"
  1069. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sleep"
  1070. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sort"
  1071. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/split"
  1072. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/stat"
  1073. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/stty"
  1074. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sum"
  1075. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sync"
  1076. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/tac"
  1077. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/tail"
  1078. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/tee"
  1079. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/test"
  1080. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/timeout"
  1081. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/touch"
  1082. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/tr"
  1083. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/true"
  1084. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/truncate"
  1085. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/tsort"
  1086. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/tty"
  1087. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/uname"
  1088. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/unexpand"
  1089. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/uniq"
  1090. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/unlink"
  1091. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/uptime"
  1092. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/users"
  1093. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/vdir"
  1094. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/wc"
  1095. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/who"
  1096. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/whoami"
  1097. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/yes"
  1098. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1099. echo "Priority: standard" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1100. echo "Section: Utilities" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1101. echo "Provides: md5sum, sha1sum" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1102. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1103. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1104. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1105. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1106. echo "Depends: grep, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1107. echo "Description: core set of Unix shell utilities from GNU" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1108. echo "Name: Core Utilities" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1109. echo "Homepage: http://www.gnu.org/software/coreutils/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1110. #Build the doc deb
  1111. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  1112. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1113. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  1114. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  1115. #Build the dev deb
  1116. #No files
  1117. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1118. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib"
  1119. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1120. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1121. dpkg -b deb
  1122. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1123. dpkg -b deb-doc
  1124. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1125. createListFile
  1126. cd "$BUILD_ROOT"
  1127. }
  1128. #Download findutils
  1129. downloadFindUtils() {
  1130. if [ ! -e findutils-4.6.0.tar.gz ]; then
  1131. echo "Downloading findutils-4.6.0.tar.gz "
  1132. curl -LO http://mirror.keystealth.org/gnu/findutils/findutils-4.6.0.tar.gz
  1133. curl -LO http://mirror.keystealth.org/gnu/findutils/findutils-4.6.0.tar.gz.sig
  1134. # NOT WORKING FOR SOME REASON, we have the signature but it still says theres no public sig, really weird
  1135. #checkPGPSig findutils-4.6.0.tar.gz.sig findutils-4.6.0.tar.gz
  1136. checkSHA256 findutils-4.6.0.tar.gz ded4c9f73731cd48fec3b6bdaccce896473b6d8e337e9612e16cf1431bb1169d
  1137. else
  1138. echo "Using existing findutils"
  1139. fi
  1140. sudo rm -rf findutils-4.6.0
  1141. tar xzvf findutils-4.6.0.tar.gz
  1142. WORKING_DIR="findutils-4.6.0"
  1143. PKG_NAME="findutils"
  1144. PKG_VERSION="4.6.0-1"
  1145. cd "$WORKING_DIR"
  1146. }
  1147. #findutils
  1148. buildFindUtils() {
  1149. downloadFindUtils
  1150. if [ "$ARCH" == "arm64" ]; then
  1151. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=aarch64-apple-darwin
  1152. else
  1153. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=arm-apple-darwin
  1154. fi
  1155. make -j8 DESTDIR="$SKEL_PREFIX" install
  1156. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/find"
  1157. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/locate"
  1158. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/xargs"
  1159. initDebStructure
  1160. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  1161. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1162. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1163. echo "Section: Utilities" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1164. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1165. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1166. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1167. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1168. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1169. #echo "Depends: bash, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1170. echo "Description: indexes and searches filesystems" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1171. echo "Name: Find Utilities" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1172. echo "Homepage: https://www.gnu.org/software/findutils/" >> deb/DEBIAN/control
  1173. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/find"
  1174. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/locate"
  1175. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/xargs"
  1176. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/var"
  1177. #Build the doc deb
  1178. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  1179. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1180. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  1181. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  1182. #Build the dev deb
  1183. #No files
  1184. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1185. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1186. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1187. dpkg -b deb
  1188. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1189. dpkg -b deb-doc
  1190. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1191. createListFile
  1192. cd "$BUILD_ROOT"
  1193. }
  1194. #Download diffutils
  1195. downloadDiffUtils() {
  1196. if [ ! -e diffutils-3.6.tar.xz ]; then
  1197. echo "Downloading diffutils-3.6.tar.xz"
  1198. curl -LO http://ftp.gnu.org/gnu/diffutils/diffutils-3.6.tar.xz
  1199. curl -LO http://ftp.gnu.org/gnu/diffutils/diffutils-3.6.tar.xz.sig
  1200. checkPGPSig diffutils-3.6.tar.xz.sig diffutils-3.6.tar.xz
  1201. else
  1202. echo "Using existing diffutils"
  1203. fi
  1204. sudo rm -rf diffutils-3.6
  1205. tar xJvf diffutils-3.6.tar.xz
  1206. WORKING_DIR="diffutils-3.6"
  1207. PKG_NAME="diffutils"
  1208. PKG_VERSION="3.6-1"
  1209. cd "$WORKING_DIR"
  1210. }
  1211. #diffutils
  1212. buildDiffUtils() {
  1213. downloadDiffUtils
  1214. if [ "$ARCH" == "arm64" ]; then
  1215. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=aarch64-apple-darwin
  1216. else
  1217. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=arm-apple-darwin
  1218. fi
  1219. #make
  1220. make -j8 DESTDIR="$SKEL_PREFIX" install
  1221. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/cmp"
  1222. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/diff"
  1223. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/diff3"
  1224. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/sdiff"
  1225. initDebStructure
  1226. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  1227. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/cmp"
  1228. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/diff"
  1229. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/diff3"
  1230. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sdiff"
  1231. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1232. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1233. echo "Section: Development" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1234. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1235. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1236. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1237. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1238. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1239. #echo "Depends: bash, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1240. echo "Description: compare two files for differences" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1241. echo "Name: Diff Utilities" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1242. echo "Homepage: http://www.gnu.org/software/diffutils/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1243. #Build the doc deb
  1244. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  1245. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1246. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  1247. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  1248. #Build the dev deb
  1249. #No files for this
  1250. #FIXME
  1251. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1252. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1253. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1254. dpkg -b deb
  1255. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1256. dpkg -b deb-doc
  1257. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1258. createListFile
  1259. cd "$BUILD_ROOT"
  1260. }
  1261. #Download darwintools
  1262. downloadDarwinTools() {
  1263. if [ ! -d DarwinToolsARM ]; then
  1264. echo "Fetching DarwinTools"
  1265. mkdir -p DarwinToolsARM
  1266. cd DarwinToolsARM
  1267. curl -LO https://opensource.apple.com/source/DarwinTools/DarwinTools-1/sw_vers.c
  1268. #Not built yet
  1269. curl -LO https://opensource.apple.com/source/launchd/launchd-842.92.1/support/launchctl.c
  1270. #sw_vers.c
  1271. checkSHA256 sw_vers.c 55aab510b465f7687b8ebe23f0e51926606fd5316da138778838b2dac3e7c7e0
  1272. else
  1273. echo "Using existing DarwinTools"
  1274. cd DarwinToolsARM
  1275. fi
  1276. WORKING_DIR="DarwinToolsARM"
  1277. PKG_NAME="darwintools"
  1278. PKG_VERSION="1.0-1"
  1279. }
  1280. patchDarwinTools() {
  1281. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1282. sed -i -- 's|#include <CoreFoundation/CFPriv.h>|extern CFDictionaryRef _CFCopySystemVersionDictionary(void);\
  1283. extern CFDictionaryRef _CFCopyServerVersionDictionary(void);|' sw_vers.c
  1284. sed -i -- 's|_kCFSystemVersionProductNameKey|CFSTR(\"ProductName\")|g' sw_vers.c
  1285. sed -i -- 's|_kCFSystemVersionProductVersionKey|CFSTR(\"ProductVersion\")|g' sw_vers.c
  1286. sed -i -- 's|_kCFSystemVersionBuildVersionKey|CFSTR(\"ProductBuildVersion\")|g' sw_vers.c
  1287. fi
  1288. }
  1289. #darwintools
  1290. #Notes:
  1291. # This only builds a striped down version of the one on iOS
  1292. # If you're building for a non-appletv platform, you may need to fix things here.
  1293. buildDarwinTools() {
  1294. downloadDarwinTools
  1295. patchDarwinTools
  1296. "$CLANG_PATH" -arch "$ARCH" -isysroot"$SDK_PATH" -framework CoreFoundation "$MIN_VERSION" -o "sw_vers" sw_vers.c
  1297. codesign "$BUILD_ROOT/$WORKING_DIR/sw_vers"
  1298. cp sw_vers "$SKEL_PREFIX/$ROOT_PREFIX/bin/"
  1299. initDebStructure
  1300. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/"
  1301. cp sw_vers "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/"
  1302. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1303. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1304. echo "Section: Administration" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1305. echo "Maintainer: $MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1306. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1307. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1308. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1309. echo "Description: sw_vers" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1310. echo "Name: Darwin Tools" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1311. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete #Not that there are any...
  1312. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1313. dpkg -b deb
  1314. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1315. cd "$BUILD_ROOT"
  1316. }
  1317. #Download uikittools
  1318. downloadUIKitTools() {
  1319. if [ ! -d uikittools ]; then
  1320. echo "Fetching uikittools"
  1321. git clone git://git.saurik.com/uikittools.git
  1322. else
  1323. echo "Using existing uikittools"
  1324. fi
  1325. WORKING_DIR="uikittools"
  1326. PKG_NAME="uikittools"
  1327. PKG_VERSION="1.1.12-1"
  1328. cd "$WORKING_DIR"
  1329. git checkout tags/v1.1.12
  1330. }
  1331. #uikittools
  1332. #Notes:
  1333. # This only builds a striped down version of the one on iOS
  1334. # If you're building for a non-appletv platform, you may need to fix things here.
  1335. buildUIKitTools() {
  1336. downloadUIKitTools
  1337. "$CLANGPLUS_PATH" -arch "$ARCH" -isysroot"$SDK_PATH" -Os -Werror -framework CoreFoundation -framework Foundation "$MIN_VERSION" -o cfversion cfversion.mm
  1338. "$CLANGPLUS_PATH" -arch "$ARCH" -isysroot"$SDK_PATH" -Os -Werror -framework CoreFoundation -framework Foundation "$MIN_VERSION" -o gssc gssc.mm
  1339. "$CLANGPLUS_PATH" -arch "$ARCH" -isysroot"$SDK_PATH" -Os -Werror -framework CoreFoundation -framework Foundation -framework UIKit "$MIN_VERSION" -o uiduid uiduid.mm
  1340. codesign "$BUILD_ROOT/$WORKING_DIR/cfversion"
  1341. codesign "$BUILD_ROOT/$WORKING_DIR/gssc"
  1342. codesign "$BUILD_ROOT/$WORKING_DIR/uiduid"
  1343. cp gssc cfversion uiduid "$SKEL_PREFIX/$ROOT_PREFIX/bin/"
  1344. initDebStructure
  1345. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/"
  1346. cp gssc cfversion uiduid "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/"
  1347. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1348. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1349. echo "Section: Utilities" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1350. echo "Maintainer: $MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1351. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1352. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1353. echo "Description: UIKit/GraphicsServices command line access" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1354. echo "Name: UIKit Tools" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1355. echo "Author: Jay Freeman (saurik) <saurik@saurik.com>" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1356. echo "Depiction: http://cydia.saurik.com/info/uikittools/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1357. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1358. echo "Pre-Depends: cy+model.appletv" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1359. echo "Depends: coreutils, firmware (>= 9.0)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1360. else
  1361. #FIXME: If you're building for some other platform, you should address this.
  1362. echo "Depends: coreutils" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1363. fi
  1364. echo "Tag: purpose::console, role::hacker" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1365. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete #Not that there are any...
  1366. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1367. dpkg -b deb
  1368. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1369. cd "$BUILD_ROOT"
  1370. }
  1371. buildBasicUtils() {
  1372. notifyProgress "Building sed"
  1373. buildSed
  1374. notifyProgress "Building grep"
  1375. buildGrep
  1376. notifyProgress "Building coreutils"
  1377. buildCoreutils
  1378. notifyProgress "Building findutils"
  1379. buildFindUtils
  1380. notifyProgress "Building diffutils"
  1381. buildDiffUtils
  1382. notifyProgress "Building DarwinTools"
  1383. buildDarwinTools
  1384. notifyProgress "Building UIKitTools"
  1385. buildUIKitTools
  1386. }
  1387. #=====================
  1388. #DPKG and Dependencies
  1389. #---------------------
  1390. #Download zlib
  1391. downloadZLib() {
  1392. #Download zlib
  1393. if [ ! -d zlib ]; then
  1394. echo "Downloading zlib git"
  1395. git clone https://github.com/madler/zlib.git
  1396. else
  1397. echo "Using existing zlib"
  1398. fi
  1399. WORKING_DIR="zlib"
  1400. PKG_NAME="zlib"
  1401. PKG_VERSION="1.2.11-1"
  1402. cd "$WORKING_DIR"
  1403. git checkout tags/v1.2.11
  1404. sudo rm -rf build
  1405. mkdir build
  1406. cd build
  1407. WORKING_DIR="$WORKING_DIR/build"
  1408. }
  1409. #zlib
  1410. buildZLib() {
  1411. downloadZLib
  1412. cmake -j8 -DCMAKE_INSTALL_NAME_DIR="/$ROOT_PREFIX/lib" -DCMAKE_OSX_SYSROOT="$SDK_PATH/" -DCMAKE_C_FLAGS="-arch $ARCH" -DCMAKE_INSTALL_PREFIX="/$ROOT_PREFIX" ..
  1413. #make
  1414. make -j8 DESTDIR="$SKEL_PREFIX" install
  1415. initDebStructure
  1416. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/" install
  1417. export COPYFILE_DISABLE
  1418. export COPY_EXTENDED_ATTRIBUTES_DISABLE
  1419. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1420. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1421. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1422. #echo "Installed-Size: 396" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1423. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1424. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1425. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1426. echo "Description: Massively spiffy yet delicately unobtrusive compression library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1427. echo "Name: zlib" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1428. echo "Homepage: http://zlib.net/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1429. #Build the doc deb
  1430. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  1431. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  1432. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  1433. #Build the dev deb
  1434. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  1435. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share"
  1436. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1437. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  1438. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share"
  1439. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1440. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1441. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1442. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1443. dpkg -b deb
  1444. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1445. dpkg -b deb-doc
  1446. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1447. dpkg -b deb-dev
  1448. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1449. createListFile
  1450. cd "$BUILD_ROOT"
  1451. }
  1452. #Download xz
  1453. downloadXZ() {
  1454. if [ ! -e xz-5.2.3.tar.gz ]; then
  1455. echo "Downloading xz-5.2.3.tar.gz"
  1456. curl -LO http://tukaani.org/xz/xz-5.2.3.tar.gz
  1457. curl -LO http://tukaani.org/xz/xz-5.2.3.tar.gz.sig
  1458. checkPGPSig xz-5.2.3.tar.gz.sig xz-5.2.3.tar.gz
  1459. else
  1460. echo "Using xz-5.2.3.tar.gz"
  1461. fi
  1462. sudo rm -rf xz-5.2.3
  1463. tar xzvf xz-5.2.3.tar.gz
  1464. WORKING_DIR="xz-5.2.3"
  1465. PKG_NAME="xz"
  1466. PKG_VERSION="5.2.3-1"
  1467. cd "$WORKING_DIR"
  1468. }
  1469. patchXZ() {
  1470. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1471. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' config.h.in
  1472. fi
  1473. }
  1474. #xz
  1475. buildXZ() {
  1476. downloadXZ
  1477. patchXZ
  1478. if [ "$ARCH" == "arm64" ]; then
  1479. ./configure CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CXXFLAGS="$MIN_VERSION -isysroot $SDK_PATH -arch $ARCH" CFLAGS="$MIN_VERSION -isysroot $SDK_PATH -arch $ARCH" LIBS="$MIN_VERSION -isysroot $SDK_PATH -arch $ARCH" --prefix="/$ROOT_PREFIX" --host=aarch64-apple-darwin
  1480. else
  1481. ./configure CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CXXFLAGS="$MIN_VERSION -isysroot $SDK_PATH -arch $ARCH" CFLAGS="$MIN_VERSION -isysroot $SDK_PATH -arch $ARCH" LIBS="$MIN_VERSION -isysroot $SDK_PATH -arch $ARCH" --prefix="/$ROOT_PREFIX" --host=arm-apple-darwin
  1482. fi
  1483. make DESTDIR="$SKEL_PREFIX" install
  1484. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/lzmadec"
  1485. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/lzmainfo"
  1486. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/xz"
  1487. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/xzdec"
  1488. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/liblzma.5.dylib"
  1489. if [ ! -e "$SKEL_PREFIX/$ROOT_PREFIX/local/lib/liblzma.5.dylib" ]; then
  1490. mkdir -p "$SKEL_PREFIX/$ROOT_PREFIX/local/lib"
  1491. #cp "$SKEL_PREFIX/$ROOT_PREFIX/lib/liblzma.5.dylib" "$SKEL_PREFIX/$ROOT_PREFIX/local/lib/liblzma.5.dylib"
  1492. ln -s /usr/lib/liblzma.5.dylib "$SKEL_PREFIX/$ROOT_PREFIX/local/lib/liblzma.5.dylib"
  1493. fi
  1494. initDebStructure
  1495. make DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  1496. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/lzmadec"
  1497. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/lzmainfo"
  1498. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/xz"
  1499. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/xzdec"
  1500. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/liblzma.5.dylib"
  1501. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/local/lib"
  1502. ln -s /usr/lib/liblzma.5.dylib "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/local/lib/liblzma.5.dylib"
  1503. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1504. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1505. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1506. #echo "Installed-Size: 396" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1507. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1508. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1509. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1510. echo "Depends: grep, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1511. echo "Description: XZ Utils are the successor to LZMA Utils" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1512. echo "Name: XZ Utils" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1513. echo "Homepage: http://tukaani.org/xz/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1514. #Build the doc deb
  1515. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  1516. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1517. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  1518. #Build the dev deb
  1519. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  1520. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  1521. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1522. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1523. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/liblzma.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1524. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1525. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1526. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1527. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1528. dpkg -b deb
  1529. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1530. dpkg -b deb-doc
  1531. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1532. dpkg -b deb-dev
  1533. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1534. createListFile
  1535. cd "$BUILD_ROOT"
  1536. }
  1537. #Download bzip2
  1538. downloadBZip2() {
  1539. if [ ! -e bzip2-1.0.6.tar.gz ]; then
  1540. echo "Downloading bzip2-1.0.6.tar.gz"
  1541. curl -LO http://bzip.org/1.0.6/bzip2-1.0.6.tar.gz
  1542. checkSHA256 bzip2-1.0.6.tar.gz a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd
  1543. else
  1544. echo "Using bzip2-1.0.6.tar.gz"
  1545. fi
  1546. sudo rm -rf bzip2-1.0.6
  1547. tar xzvf bzip2-1.0.6.tar.gz
  1548. WORKING_DIR="bzip2-1.0.6"
  1549. PKG_NAME="bzip2"
  1550. PKG_VERSION="1.0.6-1"
  1551. cd "$WORKING_DIR"
  1552. }
  1553. patchBZip2() {
  1554. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1555. #fix up our makefile...
  1556. sed -i -- 's|CC=gcc|CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang|' Makefile
  1557. sed -i -- 's|AR=ar|AR=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar|' Makefile
  1558. sed -i -- 's|RANLIB=ranlib|RANLIB=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib|' Makefile
  1559. sed -i -- "s|LDFLAGS=|LDFLAGS=$MIN_VERSION -isysroot \"$SDK_PATH\" -arch $ARCH|" Makefile
  1560. sed -i -- "s|CFLAGS=|CFLAGS=$MIN_VERSION -isysroot \"$SDK_PATH\" -arch $ARCH |" Makefile
  1561. sed -i -- 's|all:\(.*\) test$|all: \1|' Makefile
  1562. sed -i -- 's|ln -s -f \$(PREFIX)/bin/|ln -s -f |g' Makefile
  1563. fi
  1564. }
  1565. #bzip2
  1566. buildBZip2() {
  1567. downloadBZip2
  1568. patchBZip2
  1569. make -j8 install PREFIX="$SKEL_PREFIX/$ROOT_PREFIX"
  1570. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/bunzip2"
  1571. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/bzcat"
  1572. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/bzip2"
  1573. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/bzip2recover"
  1574. initDebStructure
  1575. make -j8 install PREFIX="$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1576. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/bunzip2"
  1577. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/bzcat"
  1578. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/bzip2"
  1579. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/bzip2recover"
  1580. export COPYFILE_DISABLE
  1581. export COPY_EXTENDED_ATTRIBUTES_DISABLE
  1582. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1583. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1584. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1585. #echo "Installed-Size: 148" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1586. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1587. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1588. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1589. echo "Depends: grep, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1590. echo "Description: compression that's slightly better than gzip" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1591. echo "Homepage: http://www.bzip.org/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1592. #Build the doc deb
  1593. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  1594. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1595. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  1596. #Build the dev deb
  1597. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  1598. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1599. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1600. #FIXME: Make a $PKG_NAME-staticlibs.deb
  1601. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1602. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib"
  1603. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1604. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1605. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1606. dpkg -b deb
  1607. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1608. dpkg -b deb-doc
  1609. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1610. dpkg -b deb-dev
  1611. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1612. createListFile
  1613. cd "$BUILD_ROOT"
  1614. }
  1615. #Download lz4
  1616. downloadLZ4() {
  1617. if [ ! -e lz4-v1.7.5.tar.gz ]; then
  1618. #echo "Cloning lz4.git"
  1619. #git clone https://github.com/lz4/lz4.git
  1620. #Master = v1.7.5
  1621. curl -LO https://github.com/lz4/lz4/archive/v1.7.5.tar.gz
  1622. mv v1.7.5.tar.gz lz4-v1.7.5.tar.gz
  1623. checkSHA256 lz4-v1.7.5.tar.gz 0190cacd63022ccb86f44fa5041dc6c3804407ad61550ca21c382827319e7e7e
  1624. else
  1625. echo "Using existing lz4"
  1626. fi
  1627. sudo rm -rf lz4-1.7.5/
  1628. tar xzvf lz4-v1.7.5.tar.gz
  1629. WORKING_DIR="lz4-1.7.5/contrib/cmake_unofficial/"
  1630. PKG_NAME="lz4"
  1631. PKG_VERSION="1.7.5-1"
  1632. cd "$WORKING_DIR"
  1633. rm -rf build
  1634. mkdir build
  1635. cd build
  1636. WORKING_DIR="$WORKING_DIR/build"
  1637. }
  1638. #lz4
  1639. buildLZ4() {
  1640. downloadLZ4
  1641. initDebStructure
  1642. cmake -j8 -DCMAKE_INSTALL_NAME_DIR="/$ROOT_PREFIX/lib" -DCMAKE_OSX_SYSROOT="$SDK_PATH/" -DCMAKE_C_FLAGS="-arch $ARCH" -DCMAKE_INSTALL_PREFIX="/$ROOT_PREFIX" ..
  1643. make -j8
  1644. make -j8 DESTDIR="$SKEL_PREFIX" install
  1645. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/lz4"
  1646. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/lz4c"
  1647. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/liblz4.1.7.5.dylib"
  1648. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/" install
  1649. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/lz4"
  1650. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/lz4c"
  1651. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/liblz4.1.7.5.dylib"
  1652. export COPYFILE_DISABLE
  1653. export COPY_EXTENDED_ATTRIBUTES_DISABLE
  1654. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1655. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1656. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1657. #echo "Installed-Size: 396" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1658. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1659. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1660. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1661. echo "Description: Extremely Fast Compression algorithm" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1662. echo "Name: lz4" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1663. echo "Homepage: http://www.lz4.org" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1664. #Build the doc deb
  1665. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  1666. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1667. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1668. #Build the dev deb
  1669. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  1670. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  1671. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1672. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1673. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1674. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1675. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1676. dpkg -b deb
  1677. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1678. dpkg -b deb-doc
  1679. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1680. dpkg -b deb-dev
  1681. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1682. createListFile
  1683. cd "$BUILD_ROOT"
  1684. }
  1685. #Download openssl
  1686. downloadOpenSSL() {
  1687. if [ ! -d openssl ]; then
  1688. git clone -b OpenSSL_1_1_0-stable https://github.com/openssl/openssl.git
  1689. else
  1690. echo "Using existing openssl repo"
  1691. fi
  1692. WORKING_DIR="openssl"
  1693. PKG_NAME="openssl"
  1694. PKG_VERSION="1.1.0-1"
  1695. cd "$WORKING_DIR"
  1696. }
  1697. patchOpenSSL() {
  1698. #if [ "$PLATFORM" == "AppleTVOS" ]; then
  1699. sed -i -- "s|-arch $ARCH -mios-version-min=7.0.0|-arch $ARCH $MIN_VERSION|" Configurations/10-main.conf
  1700. #fi
  1701. }
  1702. #openssl
  1703. buildOpenSSL() {
  1704. downloadOpenSSL
  1705. patchOpenSSL
  1706. export PLATFORM="$PLATFORM"
  1707. export BUILD_TOOLS="`xcode-select --print-path`"
  1708. export CC="clang -fembed-bitcode"
  1709. export CROSS_COMPILE="`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/"
  1710. export CROSS_TOP="`xcode-select --print-path`/Platforms/$PLATFORM.platform/Developer"
  1711. export CROSS_SDK="`echo $SDK_PATH | sed 's/.*\///g'`"
  1712. #export PATH="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:$PATH"
  1713. ./Configure ios64-cross no-shared no-dso no-hw no-engine --prefix="/$ROOT_PREFIX"
  1714. #make
  1715. make DESTDIR="$SKEL_PREFIX" install
  1716. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/openssl"
  1717. initDebStructure
  1718. make DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  1719. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/openssl"
  1720. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1721. echo "Priority: standard" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1722. echo "Section: Security" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1723. #echo "Installed-Size: 6164" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1724. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1725. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1726. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1727. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1728. echo "Description: SSL library and cryptographic tools" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1729. echo "Name: OpenSSL" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1730. echo "Homepage: https://www.openssl.org" >> deb/DEBIAN/control
  1731. #Build the doc deb
  1732. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  1733. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1734. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  1735. #Build the dev deb
  1736. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  1737. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1738. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1739. #mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1740. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1741. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1742. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1743. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1744. dpkg -b deb
  1745. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1746. dpkg -b deb-doc
  1747. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1748. dpkg -b deb-dev
  1749. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1750. createListFile
  1751. cd "$BUILD_ROOT"
  1752. }
  1753. #Download Curl
  1754. downloadCurl() {
  1755. if [ ! -e curl-7.50.1.tar.gz ]; then
  1756. echo "Downloading curl-7.50.1.tar.gz"
  1757. curl -LO https://curl.haxx.se/download/curl-7.50.1.tar.gz
  1758. checkSHA256 curl-7.50.1.tar.gz 3e392cf600822b817be82d9080b377fcbab70538d5a8bf525a1cd66e157b99ea
  1759. else
  1760. echo "Using curl-7.50.1.tar.gz"
  1761. fi
  1762. sudo rm -rf curl-7.50.1
  1763. echo "Unpacking curl"
  1764. tar xzvf "curl-7.50.1.tar.gz"
  1765. WORKING_DIR="curl-7.50.1"
  1766. PKG_NAME="curl"
  1767. PKG_VERSION="7.50.1-1"
  1768. cd "$WORKING_DIR"
  1769. }
  1770. patchCurl() {
  1771. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1772. #(Forcibly) Remove that dirty clock_gettime
  1773. #TODO: Determine if this is the best way
  1774. sed -i -- 's|#undef HAVE_CLOCK_GETTIME_MONOTONIC||' lib/curl_config.h.in
  1775. fi
  1776. }
  1777. #curl
  1778. buildCurl() {
  1779. downloadCurl
  1780. patchCurl
  1781. export PLATFORM="$PLATFORM"
  1782. export BUILD_TOOLS="`xcode-select --print-path`"
  1783. export CC="clang"
  1784. export CROSS_COMPILE="`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/"
  1785. export CROSS_TOP="`xcode-select --print-path`/Platforms/$PLATFORM.platform/Developer"
  1786. export CROSS_SDK="`echo $SDK_PATH | sed 's/.*\///g'`"
  1787. export CFLAGS="-arch $ARCH -pipe -Os -gdwarf-2 -isysroot $SDK_PATH $MIN_VERSION -fembed-bitcode -I$SKEL_PREFIX/$ROOT_PREFIX/include/ "
  1788. export LDFLAGS="-arch $ARCH -isysroot $SDK_PATH -L${SKEL_PREFIX}/$ROOT_PREFIX/lib"
  1789. ./configure --prefix="/$ROOT_PREFIX" --host="arm-apple-darwin" --with-zlib="$SKEL_PREFIX/$ROOT_PREFIX/lib" -with-random=/dev/urandom --disable-ntlm-wb --with-ssl="$SKEL_PREFIX/$ROOT_PREFIX/lib"
  1790. make -j8 DESTDIR="$SKEL_PREFIX" install
  1791. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/curl"
  1792. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libcurl.4.dylib"
  1793. make clean
  1794. initDebStructure
  1795. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/" install
  1796. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/curl"
  1797. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libcurl.4.dylib"
  1798. #Get rid of cross-compile artifacts
  1799. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libcurl.la"
  1800. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/curl-config"
  1801. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libcurl.la--"
  1802. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/curl-config--"
  1803. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1804. echo "Priority: standard" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1805. echo "Section: Networking" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1806. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1807. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1808. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1809. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1810. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1811. echo "Depends: openssl" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1812. echo "Description: flexible multi-protocol file transfers" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1813. echo "Name: cURL" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1814. echo "Homepage: http://curl.haxx.se/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1815. #Build the doc deb
  1816. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  1817. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  1818. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  1819. #Build the dev deb
  1820. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  1821. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin"
  1822. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  1823. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share"
  1824. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/curl-config" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin/"
  1825. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1826. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1827. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libcurl.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1828. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/aclocal" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  1829. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share"
  1830. #FIXME
  1831. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1832. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1833. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1834. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1835. dpkg -b deb
  1836. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1837. dpkg -b deb-doc
  1838. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1839. dpkg -b deb-dev
  1840. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1841. createListFile
  1842. cd "$BUILD_ROOT"
  1843. }
  1844. #Download berkeleydb
  1845. downloadBerkeleyDB() {
  1846. if [ ! -e db-6.2.23.tar.gz ]; then
  1847. echo "Downlading db-6.2.23.tar.gz"
  1848. curl -LO http://download.oracle.com/berkeley-db/db-6.2.23.tar.gz
  1849. checkSHA256 db-6.2.23.tar.gz 47612c8991aa9ac2f6be721267c8d3cdccf5ac83105df8e50809daea24e95dc7
  1850. else
  1851. echo "Using existing db-6.2.23"
  1852. fi
  1853. sudo rm -rf db-6.2.23
  1854. tar xzvf db-6.2.23.tar.gz
  1855. WORKING_DIR="db-6.2.23/build_unix/"
  1856. PKG_NAME="berkeleydb"
  1857. PKG_VERSION="6.2.23-1"
  1858. cd "$WORKING_DIR"
  1859. }
  1860. patchBerkeleyDB() {
  1861. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1862. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' ../dist/config.hin
  1863. if [ "$PKG_VERSION" == "6.2.23-1" ]; then
  1864. cat ../lang/sql/sqlite/src/shell.c | head -n 14 > shell.patched.c
  1865. echo "#include <stdint.h>" >> shell.patched.c
  1866. echo "#include <stdio.h>" >> shell.patched.c
  1867. echo "#include <stdlib.h>" >> shell.patched.c
  1868. echo "#include <spawn.h>" >> shell.patched.c
  1869. echo "#include <sys/wait.h>" >> shell.patched.c
  1870. echo "#include <sys/stat.h>" >> shell.patched.c
  1871. echo "" >> shell.patched.c
  1872. echo "extern char **environ;" >> shell.patched.c
  1873. echo "" >> shell.patched.c
  1874. cat ../lang/sql/sqlite/src/shell.c | tail -n 4847 | head -n 2622 >> shell.patched.c
  1875. fixSystem "shell.patched.c"
  1876. cat ../lang/sql/sqlite/src/shell.c | tail -n 2226 | sed 's/system(zCmd)/RunCmd(zCmd)/g' >> shell.patched.c
  1877. cp shell.patched.c ../lang/sql/sqlite/src/shell.c
  1878. fi
  1879. fi
  1880. }
  1881. #berkeleydb
  1882. buildBerkeleyDB() {
  1883. downloadBerkeleyDB
  1884. patchBerkeleyDB
  1885. #Not sure which all we need...
  1886. export PLATFORM="$PLATFORM" #TODO: Maybe necessary? Need to test.
  1887. export BUILD_TOOLS="`xcode-select --print-path`"
  1888. export CC="clang"
  1889. export CROSS_COMPILE="`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/"
  1890. export CROSS_TOP="`xcode-select --print-path`/Platforms/$PLATFORM.platform/Developer"
  1891. export CROSS_SDK="`echo $SDK_PATH | sed 's/.*\///g'`"
  1892. export CFLAGS="-arch $ARCH -pipe -Os -gdwarf-2 -isysroot $SDK_PATH $MIN_VERSION"
  1893. export CXXFLAGS="-arch $ARCH -pipe -Os -gdwarf-2 -isysroot $SDK_PATH $MIN_VERSION"
  1894. export LDFLAGS="-arch $ARCH -isysroot $SDK_PATH" # -L${SKEL_PREFIX}/lib"
  1895. #Only builds with arm-apple-darwin, not aarch64
  1896. ../dist/configure --disable-debug --disable-test --disable-atomicsupport --enable-cxx--enable-compact185 --enable-sql --enable-sql_codegen --enable-dbm --enable-slt --disable-java --host=arm-apple-darwin --prefix="/$ROOT_PREFIX"
  1897. make DESTDIR="$SKEL_PREFIX" install
  1898. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_archive"
  1899. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_checkpoint"
  1900. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_deadlock"
  1901. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_dump"
  1902. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_hotbackup"
  1903. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_load"
  1904. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_log_verify"
  1905. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_printlog"
  1906. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_recover"
  1907. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_replicate"
  1908. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_sql_codegen"
  1909. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_stat"
  1910. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_tuner"
  1911. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_upgrade"
  1912. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_verify"
  1913. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dbsql"
  1914. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libdb_sql-6.2.dylib"
  1915. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libdb-6.2.dylib"
  1916. initDebStructure
  1917. make DESTDIR="$BUILD_ROOT/db-6.2.23/build_unix/deb/" install
  1918. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_archive"
  1919. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_checkpoint"
  1920. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_deadlock"
  1921. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_dump"
  1922. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_hotbackup"
  1923. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_load"
  1924. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_log_verify"
  1925. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_printlog"
  1926. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_recover"
  1927. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_replicate"
  1928. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_sql_codegen"
  1929. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_stat"
  1930. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_tuner"
  1931. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_upgrade"
  1932. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_verify"
  1933. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/dbsql"
  1934. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdb_sql-6.2.dylib"
  1935. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdb-6.2.dylib"
  1936. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1937. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1938. echo "Section: Data_Storage" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1939. #echo "Installed-Size: 1644" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1940. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1941. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1942. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1943. echo "Description: Oracle's embeddable database engine" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1944. echo "Name: Berkeley DB" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1945. echo "Homepage: http://www.oracle.com/technology/products/berkeley-db/index.html" >> deb/DEBIAN/control
  1946. #Build the doc deb
  1947. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  1948. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1949. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/docs" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  1950. #Build the dev deb
  1951. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  1952. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  1953. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1954. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdb-6.2.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1955. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdb_sql-6.2.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1956. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1957. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1958. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1959. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1960. dpkg -b deb
  1961. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1962. dpkg -b deb-doc
  1963. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1964. dpkg -b deb-dev
  1965. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1966. createListFile
  1967. cd "$BUILD_ROOT"
  1968. }
  1969. #Download tar
  1970. downloadTar() {
  1971. if [ ! -e tar-1.30.tar.xz ]; then
  1972. echo "Downloading tar-1.30.tar.xz"
  1973. curl -LO http://ftp.gnu.org/gnu/tar/tar-1.30.tar.xz
  1974. checkSHA256 tar-1.30.tar.xz f1bf92dbb1e1ab27911a861ea8dde8208ee774866c46c0bb6ead41f4d1f4d2d3
  1975. else
  1976. echo "Using existing tar"
  1977. fi
  1978. sudo rm -rf tar-1.30
  1979. tar xJvf tar-1.30.tar.xz
  1980. WORKING_DIR="tar-1.30"
  1981. PKG_NAME="tar"
  1982. PKG_VERSION="1.30-1"
  1983. cd "$WORKING_DIR"
  1984. }
  1985. patchTar() {
  1986. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1987. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' config.h.in
  1988. fi
  1989. }
  1990. #tar
  1991. buildTar() {
  1992. downloadTar
  1993. patchTar
  1994. if [ "$ARCH" == "arm64" ]; then
  1995. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=aarch64-apple-darwin
  1996. else
  1997. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=arm-apple-darwin
  1998. fi
  1999. make -j8 DESTDIR="$SKEL_PREFIX" install
  2000. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/tar"
  2001. initDebStructure
  2002. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  2003. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/tar"
  2004. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2005. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2006. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2007. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2008. echo "Depends: bzip2, xz" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2009. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2010. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2011. echo "Homepage: http://www.gnu.org/software/tar/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2012. echo "Description: tool for making tape archives" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2013. echo "Name: Tape Archive" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2014. echo "Tag: purpose::console, role::hacker" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2015. #Build the doc deb
  2016. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  2017. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2018. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2019. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  2020. #Build the dev deb
  2021. #No files
  2022. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2023. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2024. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2025. dpkg -b deb
  2026. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2027. dpkg -b deb-doc
  2028. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2029. createListFile
  2030. cd "$BUILD_ROOT"
  2031. }
  2032. #Download dpkg
  2033. downloadDpkg() {
  2034. if [ ! -d dpkg ]; then
  2035. echo "Downlading dpkg"
  2036. git clone https://git.nito.tv/NitoTV/dpkg.git
  2037. else
  2038. echo "Using existing dpkg"
  2039. fi
  2040. WORKING_DIR="dpkg"
  2041. PKG_NAME="dpkg"
  2042. PKG_VERSION="1.18.23-1" #FIXME
  2043. cd "$WORKING_DIR"
  2044. }
  2045. patchDpkg() {
  2046. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2047. sed -i -- "s|#define ARCHITECTURE \"darwin-arm\"|#define ARCHITECTURE \"$PLATFORM_LOWER-$ARCH\"|" config.h
  2048. sed -i -- 's|gtar|tar|' config.h
  2049. fi
  2050. }
  2051. #dpkg
  2052. buildDpkg() {
  2053. downloadDpkg
  2054. local dont_die_here=$(./autogen.sh)
  2055. if [ "$ARCH" == "arm64" ]; then
  2056. LZMA_LIBS="$SKEL_PREFIX/$ROOT_PREFIX/lib/liblzma.dylib" CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CXX=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" CPPFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --disable-start-stop-daemon --host=aarch64-apple-darwin PERL_LIBDIR='$(prefix)/lib/' --disable-dselect --localstatedir="/var/" --sysconfdir="/etc"
  2057. else
  2058. LZMA_LIBS="$SKEL_PREFIX/$ROOT_PREFIX/lib/liblzma.dylib" CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CXX=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" CPPFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --disable-start-stop-daemon --host=arm-apple-darwin PERL_LIBDIR='$(prefix)/lib/' --disable-dselect --localstatedir="/var/" --sysconfdir="/etc"
  2059. fi
  2060. patchDpkg #Must be after configure for now. I'll deal with this later
  2061. make -j8 DESTDIR="$SKEL_PREFIX" install
  2062. #lzma conflicts with built in libraries when running in certian conditions.
  2063. #we make -j8 a symlink our version of lzma in the xz build process
  2064. #here we change dpkg-deb to look for this version instead
  2065. #if we do not do this, apt-get/dpkg* will fail from our setuid tool
  2066. install_name_tool -change /usr/lib/liblzma.5.dylib /usr/local/lib/liblzma.5.dylib "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-deb"
  2067. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg"
  2068. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-deb"
  2069. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-divert"
  2070. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-query"
  2071. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-split"
  2072. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-trigger"
  2073. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-statoverride"
  2074. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/update-alternatives"
  2075. echo "appletvos-arm64" >> "$SKEL_PREFIX/var/lib/dpkg/arch"
  2076. echo "darwin-arm64" >> "$SKEL_PREFIX/var/lib/dpkg/arch"
  2077. initDebStructure
  2078. make -j8 install DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/"
  2079. install_name_tool -change /usr/lib/liblzma.5.dylib /usr/local/lib/liblzma.5.dylib "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-deb"
  2080. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg"
  2081. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-deb"
  2082. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-divert"
  2083. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-query"
  2084. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-split"
  2085. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-trigger"
  2086. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-statoverride"
  2087. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/update-alternatives"
  2088. echo "appletvos-arm64" >> "$BUILD_ROOT/dpkg/deb/var/lib/dpkg/arch"
  2089. echo "darwin-arm64" >> "$BUILD_ROOT/dpkg/deb/var/lib/dpkg/arch"
  2090. #Get rid of cross-compile artifacts
  2091. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdpkg.la"
  2092. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig/libdpkg.pc"
  2093. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdpkg.la--"
  2094. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig/libdpkg.pc--"
  2095. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2096. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2097. echo "Section: Packaging" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2098. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2099. #echo "Depends: bash, bzip2, coreutils-bin, diffutils, findutils, gzip, lzma, ncurses, tar" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2100. echo "Depends: bzip2, coreutils, diffutils, findutils, xz, tar" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2101. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2102. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2103. echo "Description: package maintainance tools from Debian" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2104. echo "Name: Debian Packager" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2105. echo "Homepage: http://wiki.debian.org/Teams/Dpkg" >> deb/DEBIAN/control
  2106. #Build the doc deb
  2107. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  2108. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  2109. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2110. #Build the dev deb
  2111. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  2112. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2113. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2114. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdpkg.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2115. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2116. #FIXME
  2117. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2118. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2119. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/etc"
  2120. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/var"
  2121. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2122. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2123. dpkg -b deb
  2124. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2125. dpkg -b deb-doc
  2126. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2127. dpkg -b deb-dev
  2128. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2129. createListFile
  2130. cd "$BUILD_ROOT"
  2131. }
  2132. buildDPKGAndDependencies() {
  2133. notifyProgress "Building zlib"
  2134. buildZLib
  2135. notifyProgress "Building xz"
  2136. buildXZ
  2137. notifyProgress "Building bzip2"
  2138. buildBZip2
  2139. notifyProgress "Building lz4"
  2140. buildLZ4
  2141. notifyProgress "Building openSSL"
  2142. buildOpenSSL
  2143. notifyProgress "Building curl"
  2144. buildCurl
  2145. notifyProgress "Building BerkeleyDB"
  2146. buildBerkeleyDB
  2147. notifyProgress "Building tar"
  2148. buildTar
  2149. notifyProgress "Building dpkg"
  2150. buildDpkg
  2151. }
  2152. #====================
  2153. #APT and Dependencies
  2154. #--------------------
  2155. #Download libgpg-error
  2156. downloadGpgError() {
  2157. if [ ! -e libgpg-error-1.27.tar.bz2 ]; then
  2158. echo "Downloading libgpg-error-1.27.tar.bz2"
  2159. curl -LO https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.27.tar.bz2
  2160. curl -LO https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.27.tar.bz2.sig
  2161. checkPGPSig libgpg-error-1.27.tar.bz2.sig libgpg-error-1.27.tar.bz2
  2162. else
  2163. echo "Using existing libgpg-error"
  2164. fi
  2165. sudo rm -rf libgpg-error-1.27
  2166. tar xjvf libgpg-error-1.27.tar.bz2
  2167. WORKING_DIR="libgpg-error-1.27"
  2168. PKG_NAME="libgpg-error"
  2169. PKG_VERSION="1.27-1"
  2170. cd "$WORKING_DIR"
  2171. }
  2172. patchGpgError() {
  2173. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2174. echo ""
  2175. #sed -i -- 's|assert (!"lock ABI version");|//assert (!"lock ABI version");|' config.h
  2176. #sed -i -- 's|assert (!"lock ABI version");|//assert (!"lock ABI version");|' config.h
  2177. fi
  2178. }
  2179. #libgpg-error
  2180. buildGpgError() {
  2181. downloadGpgError
  2182. if [ "$ARCH" == "arm64" ]; then
  2183. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" CPPFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix=/$ROOT_PREFIX --host=aarch64-apple-darwin --disable-tests --enable-threads=posix
  2184. else
  2185. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" CPPFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix=/$ROOT_PREFIX --host=arm-apple-darwin --disable-tests --enable-threads=posix
  2186. fi
  2187. make -j8 DESTDIR="$SKEL_PREFIX" install
  2188. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libgpg-error.0.dylib"
  2189. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpg-error"
  2190. initDebStructure
  2191. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  2192. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgpg-error.0.dylib"
  2193. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpg-error"
  2194. #Get rid of cross-compile artifacts
  2195. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgpg-error.la"
  2196. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgpg-error.la--"
  2197. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2198. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2199. echo "Section: Security" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2200. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2201. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2202. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2203. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2204. echo "Description: GnuPG's error management library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2205. echo "Name: GnuPG Errors" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2206. echo "Homepage: https://www.gnupg.org/related_software/libgpg-error/index.en.html" >> deb/DEBIAN/control
  2207. #Build the doc deb
  2208. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  2209. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  2210. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/info" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2211. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2212. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/libgpg-error" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2213. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  2214. #Build the dev deb
  2215. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  2216. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share"
  2217. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin"
  2218. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2219. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpg-error-config" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin/"
  2220. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/aclocal" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  2221. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/common-lisp" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  2222. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2223. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgpg-error.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2224. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share"
  2225. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2226. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2227. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2228. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2229. dpkg -b deb
  2230. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2231. dpkg -b deb-doc
  2232. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2233. dpkg -b deb-dev
  2234. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2235. createListFile
  2236. cd "$BUILD_ROOT"
  2237. }
  2238. #Download gcrypt
  2239. downloadGcrypt() {
  2240. if [ ! -e libgcrypt-1.8.2.tar.bz2 ]; then
  2241. echo "Downloading libgcrypt-1.8.2.tar.bz2"
  2242. curl -LO https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.2.tar.bz2
  2243. curl -LO https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.2.tar.bz2.sig
  2244. checkPGPSig libgcrypt-1.8.2.tar.bz2.sig libgcrypt-1.8.2.tar.bz2
  2245. else
  2246. echo "Using existing gcrypt"
  2247. fi
  2248. sudo rm -rf libgcrypt-1.8.2
  2249. tar xjvf libgcrypt-1.8.2.tar.bz2
  2250. WORKING_DIR="libgcrypt-1.8.2"
  2251. PKG_NAME="libgcrypt"
  2252. PKG_VERSION="1.8.2-1"
  2253. cd "$WORKING_DIR"
  2254. }
  2255. patchGcrypt() {
  2256. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2257. if [ "$PKG_VERSION" == "1.8.2-1" ]; then
  2258. cat tests/random.c | head -n 39 > random.patched.c
  2259. echo "#include <stdint.h>" >> random.patched.c
  2260. echo "#include <stdio.h>" >> random.patched.c
  2261. echo "#include <stdlib.h>" >> random.patched.c
  2262. echo "#include <spawn.h>" >> random.patched.c
  2263. echo "#include <sys/wait.h>" >> random.patched.c
  2264. echo "#include <sys/stat.h>" >> random.patched.c
  2265. echo "" >> random.patched.c
  2266. echo "extern char **environ;" >> random.patched.c
  2267. echo "" >> random.patched.c
  2268. fixSystem "random.patched.c"
  2269. cat tests/random.c | tail -n 727 | sed 's/system (cmdline)/RunCmd(cmdline)/g' >> random.patched.c
  2270. cp random.patched.c tests/random.c
  2271. fi
  2272. fi
  2273. }
  2274. #gcrypt
  2275. buildGcrypt() {
  2276. downloadGcrypt
  2277. patchGcrypt
  2278. #TODO: Doesn't like aarch64-apple-darwin, but may build with it with minor changes.
  2279. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX/" --host=arm-apple-darwin --with-libgpg-error-prefix="$SKEL_PREFIX/$ROOT_PREFIX/"
  2280. make -j8 DESTDIR="$SKEL_PREFIX" install
  2281. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dumpsexp"
  2282. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/hmac256"
  2283. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/mpicalc"
  2284. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libgcrypt.20.dylib"
  2285. #make clean
  2286. initDebStructure
  2287. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  2288. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/dumpsexp"
  2289. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/hmac256"
  2290. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/mpicalc"
  2291. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgcrypt.20.dylib"
  2292. #Get rid of cross-compile artifacts
  2293. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgcrypt.la"
  2294. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgcrypt.la--"
  2295. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2296. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2297. echo "Section: Security" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2298. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2299. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2300. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2301. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2302. echo "Depends: libgpg-error" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2303. echo "Description: LGPL cryptographic algorithm library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2304. echo "Name: GNU Cryptography" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2305. echo "Homepage: https://www.gnupg.org/related_software/libgcrypt/" >> deb/DEBIAN/control
  2306. #Build the doc deb
  2307. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  2308. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  2309. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/info" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2310. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2311. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  2312. #Build the dev deb
  2313. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  2314. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share"
  2315. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin"
  2316. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2317. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/libgcrypt-config" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin/"
  2318. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/aclocal" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  2319. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2320. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgcrypt.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2321. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share"
  2322. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2323. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2324. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2325. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2326. dpkg -b deb
  2327. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2328. dpkg -b deb-doc
  2329. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2330. dpkg -b deb-dev
  2331. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2332. createListFile
  2333. cd "$BUILD_ROOT"
  2334. }
  2335. #Download libkbsa
  2336. downloadKSBA() {
  2337. if [ ! -e libksba-1.3.5.tar.bz2 ]; then
  2338. echo "Downloading libksba-1.3.5.tar.bz2"
  2339. curl -LO https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2
  2340. curl -LO https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2.sig
  2341. checkPGPSig libksba-1.3.5.tar.bz2.sig libksba-1.3.5.tar.bz2
  2342. else
  2343. echo "Using existing libksba"
  2344. fi
  2345. sudo rm -rf libksba-1.3.5
  2346. tar xjvf libksba-1.3.5.tar.bz2
  2347. WORKING_DIR="libksba-1.3.5"
  2348. PKG_NAME="libksba"
  2349. PKG_VERSION="1.3.5-1"
  2350. cd "$WORKING_DIR"
  2351. }
  2352. #libkbsa
  2353. buildKSBA() {
  2354. downloadKSBA
  2355. if [ "$ARCH" == "arm64" ]; then
  2356. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX/" --host=aarch64-apple-darwin --with-libgpg-error-prefix="$SKEL_PREFIX/$ROOT_PREFIX"
  2357. else
  2358. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX/" --host=arm-apple-darwin --with-libgpg-error-prefix="$SKEL_PREFIX/$ROOT_PREFIX"
  2359. fi
  2360. make -j8 DESTDIR="$SKEL_PREFIX" install
  2361. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libksba.8.dylib"
  2362. initDebStructure
  2363. make -j8 DESTDIR="$BUILD_ROOT/libksba-1.3.5/deb" install
  2364. codesign "deb/$ROOT_PREFIX/lib/libksba.8.dylib"
  2365. #Get rid of cross-compile artifacts
  2366. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libksba.la"
  2367. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libksba.la--"
  2368. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2369. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2370. echo "Section: Security" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2371. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2372. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2373. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2374. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2375. #echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2376. echo "Depends: libgpg-error" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2377. echo "Description: GnuPG's certification management library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2378. echo "Name: KSBA" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2379. echo "Homepage: https://www.gnupg.org/related_software/libksba/" >> deb/DEBIAN/control
  2380. #Build the doc deb
  2381. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  2382. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  2383. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/info" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2384. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  2385. #Build the dev deb
  2386. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  2387. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share"
  2388. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2389. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2390. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2391. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/aclocal" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  2392. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libksba.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2393. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share"
  2394. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2395. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2396. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2397. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2398. dpkg -b deb
  2399. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2400. dpkg -b deb-doc
  2401. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2402. dpkg -b deb-dev
  2403. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2404. createListFile
  2405. cd "$BUILD_ROOT"
  2406. }
  2407. #Download npth
  2408. downloadNpth() {
  2409. if [ ! -e npth-1.5.tar.bz2 ]; then
  2410. echo "Downloading npth-1.5.tar.bz2"
  2411. curl -LO https://www.gnupg.org/ftp/gcrypt/npth/npth-1.5.tar.bz2
  2412. curl -LO https://www.gnupg.org/ftp/gcrypt/npth/npth-1.5.tar.bz2.sig
  2413. checkPGPSig npth-1.5.tar.bz2.sig npth-1.5.tar.bz2
  2414. else
  2415. echo "Using existing npth"
  2416. fi
  2417. sudo rm -rf npth-1.5
  2418. tar xjvf npth-1.5.tar.bz2
  2419. WORKING_DIR="npth-1.5"
  2420. PKG_NAME="libnpth"
  2421. PKG_VERSION="1.5-1"
  2422. cd "$WORKING_DIR"
  2423. }
  2424. patchNpth() {
  2425. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2426. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' config.h.in
  2427. if [ "$PKG_VERSION" == "1.5-1" ]; then
  2428. cat src/npth.c | head -n 19 > npth.patched.c
  2429. echo "#include <stdint.h>" >> npth.patched.c
  2430. echo "#include <stdio.h>" >> npth.patched.c
  2431. echo "#include <stdlib.h>" >> npth.patched.c
  2432. echo "#include <spawn.h>" >> npth.patched.c
  2433. echo "#include <sys/wait.h>" >> npth.patched.c
  2434. echo "" >> npth.patched.c
  2435. echo "extern char **environ;" >> npth.patched.c
  2436. echo "" >> npth.patched.c
  2437. cat src/npth.c | tail -n 757 | head -n 537 >> npth.patched.c
  2438. fixSystem "npth.patched.c"
  2439. cat src/npth.c | tail -n 220 | sed 's/system(cmd)/RunCmd(cmd)/g' >> npth.patched.c
  2440. cp npth.patched.c src/npth.c
  2441. fi
  2442. fi
  2443. }
  2444. #npth
  2445. buildNpth() {
  2446. downloadNpth
  2447. patchNpth
  2448. if [ "$ARCH" == "arm64" ]; then
  2449. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX/" --host=aarch64-apple-darwin
  2450. else
  2451. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX/" --host=arm-apple-darwin
  2452. fi
  2453. make -j8 DESTDIR="$SKEL_PREFIX" install
  2454. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libnpth.0.dylib"
  2455. initDebStructure
  2456. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  2457. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libnpth.0.dylib"
  2458. #Get rid of cross-compile artifacts
  2459. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libnpth.la"
  2460. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libnpth.la--"
  2461. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2462. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2463. echo "Section: Development" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2464. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2465. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2466. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2467. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2468. #echo "Depends: grep, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2469. echo "Description: portable threading library used by X" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2470. echo "Name: The New GNU Portable Threads Library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2471. echo "Homepage: https://www.gnupg.org/software/npth" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2472. #Build the doc deb
  2473. #No files
  2474. #Build the dev deb
  2475. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  2476. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2477. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2478. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2479. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2480. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libnpth.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2481. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2482. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2483. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2484. dpkg -b deb
  2485. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2486. dpkg -b deb-dev
  2487. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2488. createListFile
  2489. cd "$BUILD_ROOT"
  2490. }
  2491. #Download libassuan
  2492. downloadAssuan() {
  2493. if [ ! -e libassuan-2.5.1.tar.bz2 ]; then
  2494. echo "Downloading libassuan-2.5.1.tar.bz2"
  2495. curl -LO https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.1.tar.bz2
  2496. curl -LO https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.1.tar.bz2.sig
  2497. checkPGPSig libassuan-2.5.1.tar.bz2.sig libassuan-2.5.1.tar.bz2
  2498. else
  2499. echo "Using existing libassuan"
  2500. fi
  2501. sudo rm -rf libassuan-2.5.1
  2502. tar xjvf libassuan-2.5.1.tar.bz2
  2503. WORKING_DIR="libassuan-2.5.1"
  2504. PKG_NAME="libassuan"
  2505. PKG_VERSION="2.5.1-1"
  2506. cd "$WORKING_DIR"
  2507. }
  2508. #libassuan
  2509. buildAssuan() {
  2510. downloadAssuan
  2511. if [ "$ARCH" == "arm64" ]; then
  2512. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX/" --host=aarch64-apple-darwin --with-gpg-error-prefix="$SKEL_PREFIX/$ROOT_PREFIX/"
  2513. else
  2514. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX/" --host=arm-apple-darwin --with-gpg-error-prefix="$SKEL_PREFIX/$ROOT_PREFIX/"
  2515. fi
  2516. make -j8 DESTDIR="$SKEL_PREFIX" install
  2517. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libassuan.0.dylib"
  2518. #Get rid of cross-compile artifacts
  2519. sed -i -- "s|$SKEL_PREFIX||g" "$SKEL_PREFIX/$ROOT_PREFIX/lib/libassuan.la"
  2520. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/lib/libassuan.la--"
  2521. initDebStructure
  2522. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  2523. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libassuan.0.dylib"
  2524. #Get rid of cross-compile artifacts
  2525. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libassuan.la"
  2526. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libassuan.la--"
  2527. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2528. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2529. echo "Section: Development" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2530. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2531. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2532. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2533. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2534. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2535. echo "Depends: gnupth" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2536. echo "Description: GnuPG's inter-process communication" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2537. echo "Name: Assuan" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2538. echo "Homepage: https://www.gnupg.org/related_software/libassuan/index.en.html" >> deb/DEBIAN/control
  2539. #Build the doc deb
  2540. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  2541. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  2542. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/info" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2543. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  2544. #Build the dev deb
  2545. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  2546. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share"
  2547. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2548. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2549. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2550. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/aclocal" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  2551. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libassuan.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2552. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share"
  2553. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2554. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2555. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2556. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2557. dpkg -b deb
  2558. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2559. dpkg -b deb-doc
  2560. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2561. dpkg -b deb-dev
  2562. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2563. createListFile
  2564. cd "$BUILD_ROOT"
  2565. }
  2566. #Download ntbtls
  2567. downloadNtbtls() {
  2568. if [ ! -e ntbtls-0.1.2.tar.bz2 ]; then
  2569. echo "Downloading ntbtls-0.1.2.tar.bz2"
  2570. curl -LO https://www.gnupg.org/ftp/gcrypt/ntbtls/ntbtls-0.1.2.tar.bz2
  2571. curl -LO https://www.gnupg.org/ftp/gcrypt/ntbtls/ntbtls-0.1.2.tar.bz2.sig
  2572. checkPGPSig ntbtls-0.1.2.tar.bz2.sig ntbtls-0.1.2.tar.bz2
  2573. else
  2574. echo "Using existing ntbtls"
  2575. fi
  2576. sudo rm -rf ntbtls-0.1.2
  2577. tar xjvf ntbtls-0.1.2.tar.bz2
  2578. WORKING_DIR="ntbtls-0.1.2"
  2579. PKG_NAME="libntbtls"
  2580. PKG_VERSION="0.1.2-1"
  2581. cd "$WORKING_DIR"
  2582. }
  2583. patchNtbtls() {
  2584. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2585. # this is required because prior dependencies write /$ROOT_PREFIX/lib/libgpg-error.la as a dependency in the .la file
  2586. sed -i -- "s|/$ROOT_PREFIX/lib/libgpg-error.la|$SKEL_PREFIX/$ROOT_PREFIX/lib/libgpg-error.la|g" "$SKEL_PREFIX/$ROOT_PREFIX/lib/libgcrypt.la"
  2587. sed -i -- "s|/$ROOT_PREFIX/lib/libgpg-error.la|$SKEL_PREFIX/$ROOT_PREFIX/lib/libgpg-error.la|g" "$SKEL_PREFIX/$ROOT_PREFIX/lib/libksba.la"
  2588. rm -f "$SKEL_PREFIX/$ROOT_PREFIX/lib/libgcrypt.la--"
  2589. rm -f "$SKEL_PREFIX/$ROOT_PREFIX/lib/libksba.la--"
  2590. fi
  2591. }
  2592. #ntbtls
  2593. buildNtbtls() {
  2594. downloadNtbtls
  2595. patchNtbtls
  2596. if [ "$ARCH" == "arm64" ]; then
  2597. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=aarch64-apple-darwin --with-libgpg-error-prefix="$SKEL_PREFIX/$ROOT_PREFIX" --with-libgcrypt-prefix="$SKEL_PREFIX/$ROOT_PREFIX" --with-ksba-prefix="$SKEL_PREFIX/$ROOT_PREFIX"
  2598. else
  2599. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX" --host=arm-apple-darwin --with-libgpg-error-prefix="$SKEL_PREFIX/$ROOT_PREFIX" --with-libgcrypt-prefix="$SKEL_PREFIX/$ROOT_PREFIX" --with-ksba-prefix="$SKEL_PREFIX/$ROOT_PREFIX"
  2600. fi
  2601. make -j8 DESTDIR="$SKEL_PREFIX" install
  2602. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libntbtls.0.dylib"
  2603. initDebStructure
  2604. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/" install
  2605. codesign "deb/$ROOT_PREFIX/lib/libntbtls.0.dylib"
  2606. #Get rid of cross-compile artifacts
  2607. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libntbtls.la"
  2608. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libntbtls.la--"
  2609. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2610. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2611. echo "Section: Security" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2612. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2613. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2614. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2615. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2616. echo "Depends: gcrypt, libksba" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2617. echo "Description: a tiny TLS 1.2 only implementation designed to be used with Libgcrypt and LibKSBA" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2618. echo "Name: The Not Too Bad TLS Library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2619. echo "Homepage: https://www.gnupg.org/related_software/ntbtls/index.en.html" >> deb/DEBIAN/control
  2620. #Build the doc deb
  2621. #No files
  2622. #Build the dev deb
  2623. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  2624. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2625. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2626. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2627. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2628. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libntbtls.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2629. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2630. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2631. dpkg -b deb
  2632. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2633. dpkg -b deb-dev
  2634. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2635. createListFile
  2636. cd "$BUILD_ROOT"
  2637. }
  2638. #Download gpg
  2639. downloadGpg() {
  2640. if [ ! -e gnupg-2.2.3.tar.bz2 ]; then
  2641. echo "Downloading gnupg-2.2.3.tar.bz2"
  2642. curl -LO https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.3.tar.bz2
  2643. curl -LO https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.3.tar.bz2.sig
  2644. checkPGPSig gnupg-2.2.3.tar.bz2.sig gnupg-2.2.3.tar.bz2
  2645. else
  2646. echo "Using existing gpg"
  2647. fi
  2648. sudo rm -rf gnupg-2.2.3
  2649. tar xjvf gnupg-2.2.3.tar.bz2
  2650. WORKING_DIR="gnupg-2.2.3"
  2651. PKG_NAME="gnupg"
  2652. PKG_VERSION="2.2.3-1"
  2653. cd "$WORKING_DIR"
  2654. }
  2655. patchGpg() {
  2656. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2657. if [ "$PKG_VERSION" == "2.2.3-1" ]; then
  2658. cat "g10/exec.c" | head -n 54 > "exec.patched.c"
  2659. echo "#include <stdint.h>" >> "exec.patched.c"
  2660. echo "#include <stdio.h>" >> "exec.patched.c"
  2661. echo "#include <stdlib.h>" >> "exec.patched.c"
  2662. echo "#include <spawn.h>" >> "exec.patched.c"
  2663. echo "#include <sys/wait.h>" >> "exec.patched.c"
  2664. echo "" >> "exec.patched.c"
  2665. echo "extern char **environ;" >> "exec.patched.c"
  2666. echo "" >> "exec.patched.c"
  2667. cat "g10/exec.c" | head -n 111 | tail -n 57 >> "exec.patched.c"
  2668. fixSystem "exec.patched.c"
  2669. cat "g10/exec.c" | tail -n 524 | sed 's/=system(info->command)/=RunCmd(info->command)/g' >> "exec.patched.c"
  2670. cp "exec.patched.c" "g10/exec.c"
  2671. fi
  2672. fi
  2673. }
  2674. #gpg
  2675. buildGpg() {
  2676. downloadGpg
  2677. patchGpg
  2678. if [ "$ARCH" == "arm64" ]; then
  2679. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX/" --host=aarch64-apple-darwin --with-libgpg-error-prefix="$SKEL_PREFIX/$ROOT_PREFIX/" --with-libgcrypt-prefix="$SKEL_PREFIX/$ROOT_PREFIX/" --with-libassuan-prefix="$SKEL_PREFIX/$ROOT_PREFIX/" --with-ksba-prefix="$SKEL_PREFIX/$ROOT_PREFIX/" --with-npth-prefix="$SKEL_PREFIX/$ROOT_PREFIX/" --with-ntbtls-prefix="$SKEL_PREFIX/$ROOT_PREFIX/"
  2680. else
  2681. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix="/$ROOT_PREFIX/" --host=arm-apple-darwin --with-libgpg-error-prefix="$SKEL_PREFIX/$ROOT_PREFIX/" --with-libgcrypt-prefix="$SKEL_PREFIX/$ROOT_PREFIX/" --with-libassuan-prefix="$SKEL_PREFIX/$ROOT_PREFIX/" --with-ksba-prefix="$SKEL_PREFIX/$ROOT_PREFIX/" --with-npth-prefix="$SKEL_PREFIX/$ROOT_PREFIX/" --with-ntbtls-prefix="$SKEL_PREFIX/$ROOT_PREFIX/"
  2682. fi
  2683. make -j8 DESTDIR="$SKEL_PREFIX" install
  2684. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dirmngr"
  2685. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dirmngr-client"
  2686. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpg"
  2687. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpg-agent"
  2688. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpg-connect-agent"
  2689. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpgconf"
  2690. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpgparsemail"
  2691. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpgscm"
  2692. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpgsm"
  2693. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpgtar"
  2694. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpgv"
  2695. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/kbxutil"
  2696. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/watchgnupg"
  2697. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/gpg-check-pattern"
  2698. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/gpg-preset-passphrase"
  2699. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/gpg-protect-tool"
  2700. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/gpg-wks-client"
  2701. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/scdaemon"
  2702. initDebStructure
  2703. make -j8 install DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/"
  2704. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/dirmngr"
  2705. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/dirmngr-client"
  2706. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpg"
  2707. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpg-agent"
  2708. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpg-connect-agent"
  2709. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpgconf"
  2710. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpgparsemail"
  2711. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpgscm"
  2712. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpgsm"
  2713. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpgtar"
  2714. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpgv"
  2715. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/kbxutil"
  2716. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/watchgnupg"
  2717. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/gpg-check-pattern"
  2718. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/gpg-preset-passphrase"
  2719. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/gpg-protect-tool"
  2720. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/gpg-wks-client"
  2721. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/scdaemon"
  2722. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2723. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2724. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2725. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2726. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2727. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2728. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2729. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2730. echo "Depends: gcrypt, gnupth, libassuan, libksba, gnutbtls" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2731. echo "Description: newer encryption compatible with OpenPGP" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2732. echo "Name: GNU Privacy Guard" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2733. echo "Homepage: http://www.gnupg.org/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2734. #Build the doc deb
  2735. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-doc|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-doc/DEBIAN/control"
  2736. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2737. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  2738. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  2739. #Build the dev deb
  2740. #No files
  2741. #rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/info"
  2742. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2743. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2744. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2745. dpkg -b deb
  2746. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2747. dpkg -b deb-doc
  2748. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2749. createListFile
  2750. cd "$BUILD_ROOT"
  2751. }
  2752. #Download apt
  2753. downloadApt() {
  2754. if [ ! -d apt ]; then
  2755. echo "Downlading apt"
  2756. git clone https://git.nito.tv/NitoTV/apt.git
  2757. else
  2758. echo "Using existing apt"
  2759. fi
  2760. WORKING_DIR="apt"
  2761. PKG_NAME="apt7"
  2762. PKG_VERSION="0.7.25.3-1"
  2763. cd "$WORKING_DIR"
  2764. sudo rm -rf build
  2765. mkdir build
  2766. cd build
  2767. WORKING_DIR="$WORKING_DIR/build"
  2768. }
  2769. patchAPT() {
  2770. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2771. sed -i -- '/^INCLUDE_DIRECTORIES/d' ../CMakeLists.txt
  2772. sed -i -- '/^LINK_DIRECTORIES/d' ../CMakeLists.txt
  2773. cat ../CMakeLists.txt | head -n 15 > newCmakeLists.txt
  2774. echo "INCLUDE_DIRECTORIES($SKEL_PREFIX/$ROOT_PREFIX/include)" >> newCmakeLists.txt
  2775. echo "LINK_DIRECTORIES($SKEL_PREFIX/$ROOT_PREFIX/lib)" >> newCmakeLists.txt
  2776. echo "" >> newCmakeLists.txt
  2777. cat ../CMakeLists.txt | tail -n 217 >> newCmakeLists.txt
  2778. mv newCmakeLists.txt ../CmakeLists.txt
  2779. #sed -i -- "s|/Users/jaywalker/RnD/ATV/packages/test/skel/|$SKEL_PREFIX/|g" ../CMakeLists.txt
  2780. fi
  2781. }
  2782. #apt
  2783. buildAPT() {
  2784. downloadApt
  2785. patchAPT
  2786. cmake -j8 -DCMAKE_LOCALSTATEDIR="/private/var" -DCMAKE_INSTALL_NAME_DIR="/$ROOT_PREFIX/lib" -DCMAKE_INSTALL_RPATH="/$ROOT_PREFIX/" -DCMAKE_OSX_SYSROOT="$SDK_PATH" -DCMAKE_CXX_FLAGS="-arch $ARCH" -DCMAKE_C_FLAGS="-arch $ARCH" -DCMAKE_INSTALL_PREFIX="/$ROOT_PREFIX/" -DCMAKE_SHARED_LINKER_FLAGS="-lresolv -L$SKEL_PREFIX/$ROOT_PREFIX/lib/" -DCURL_INCLUDE_DIR="$SKEL_PREFIX/$ROOT_PREFIX/include" -DCURL_LIBRARIES="$SKEL_PREFIX/$ROOT_PREFIX/lib/libcurl.4.dylib" -DLZ4_INCLUDE_DIRS="$SKEL_PREFIX/$ROOT_PREFIX/include/" -DLZ4_LIBRARIES="$SKEL_PREFIX/$ROOT_PREFIX/lib/liblz4.dylib" -DLZMA_INCLUDE_DIRS="$SKEL_PREFIX/$ROOT_PREFIX/include/" -DLZMA_LIBRARIES="$SKEL_PREFIX/$ROOT_PREFIX/lib/liblzma.dylib" -DCURRENT_VENDOR=debian -DUSE_NLS=0 -DWITH_DOC=0 -DBERKELEY_DB_INCLUDE_DIRS="$SKEL_PREFIX/$ROOT_PREFIX/include" -DBERKELEY_DB_LIBRARIES="$SKEL_PREFIX/$ROOT_PREFIX/lib/libdb.dylib" -DCMAKE_FIND_ROOT_PATH="$SKEL_PREFIX" ..
  2787. #FIXME: Use our platform-arch vars
  2788. sed -i -- 's|#define COMMON_ARCH "darwin-amd64"|#define COMMON_ARCH "darwin-arm64"|' include/config.h
  2789. make -j8 DESTDIR="$SKEL_PREFIX" install
  2790. #lzma conflicts with built in libraries we make -j8 an extra copy of our version of lzma in the xz build process
  2791. #here we change libapt-pkg*.dylib to look for this version instead
  2792. #if we do not do this, apt-get will fail from our helper tool
  2793. install_name_tool -change /usr/lib/liblzma.5.dylib /usr/local/lib/liblzma.5.dylib $SKEL_PREFIX/$ROOT_PREFIX/lib/libapt-pkg.5.0.1.dylib
  2794. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt"
  2795. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-cache"
  2796. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-cdrom"
  2797. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-config"
  2798. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-ftparchive"
  2799. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-get"
  2800. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-mark"
  2801. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-sortpkgs"
  2802. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libapt-inst.2.0.0.dylib"
  2803. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libapt-pkg.5.0.1.dylib"
  2804. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libapt-private.0.0.0.dylib"
  2805. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/apt-helper"
  2806. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/cdrom"
  2807. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/copy"
  2808. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/file"
  2809. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/ftp"
  2810. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/gpgv"
  2811. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/http"
  2812. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/https"
  2813. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/mirror"
  2814. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/rred"
  2815. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/rsh"
  2816. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/store"
  2817. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/planners/apt"
  2818. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/solvers/apt"
  2819. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/solvers/dump"
  2820. initDebStructure
  2821. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  2822. #lzma conflicts with built in libraries we make -j8 an extra copy of our version of lzma in the xz build process
  2823. #here we change libapt-pkg*.dylib to look for this version instead
  2824. #if we do not do this, apt-get will fail from our helper tool
  2825. install_name_tool -change /usr/lib/liblzma.5.dylib /usr/local/lib/liblzma.5.dylib deb/$ROOT_PREFIX/lib/libapt-pkg.5.0.1.dylib
  2826. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt"
  2827. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-cache"
  2828. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-cdrom"
  2829. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-config"
  2830. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-ftparchive"
  2831. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-get"
  2832. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-mark"
  2833. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-sortpkgs"
  2834. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libapt-inst.2.0.0.dylib"
  2835. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libapt-pkg.5.0.1.dylib"
  2836. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libapt-private.0.0.0.dylib"
  2837. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/apt-helper"
  2838. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/cdrom"
  2839. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/copy"
  2840. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/file"
  2841. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/ftp"
  2842. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/gpgv"
  2843. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/http"
  2844. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/https"
  2845. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/mirror"
  2846. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/rred"
  2847. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/rsh"
  2848. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/store"
  2849. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/planners/apt"
  2850. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/solvers/apt"
  2851. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/solvers/dump"
  2852. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2853. echo "Priority: standard" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2854. echo "Section: Packaging" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2855. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2856. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2857. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2858. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2859. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2860. echo "Depends: sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2861. echo "Description: the advanced packaging tool from Debian" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2862. echo "Name: APT 0.7 Strict" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2863. echo "Homepage: https://wiki.debian.org/Apt" >> deb/DEBIAN/control
  2864. #Build the dev deb
  2865. cat "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control" | sed "s|^Package: $PKG_NAME|Package: $PKG_NAME-dev|" | sed 's|^Priority: .*|Priority: optional|' | sed "s|^Depends: .*|Depends: $PKG_NAME|" | sed '/^Pre-Depends: /d' | sed 's|^Section: .*|Section: Development|' >> "$BUILD_ROOT/$WORKING_DIR/deb-dev/DEBIAN/control"
  2866. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2867. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2868. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2869. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/etc"
  2870. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2871. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/var"
  2872. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2873. dpkg -b deb
  2874. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2875. dpkg -b deb-dev
  2876. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2877. createListFile
  2878. cd "$BUILD_ROOT"
  2879. }
  2880. buildAPTAndDependencies() {
  2881. notifyProgress "Building gpg-error"
  2882. buildGpgError
  2883. notifyProgress "Building gcrypt"
  2884. buildGcrypt
  2885. notifyProgress "Building KSBA"
  2886. buildKSBA
  2887. notifyProgress "Building npth"
  2888. buildNpth
  2889. notifyProgress "Building Assuan"
  2890. buildAssuan
  2891. notifyProgress "Building ntbtls"
  2892. buildNtbtls
  2893. notifyProgress "Building gpg"
  2894. buildGpg
  2895. notifyProgress "Building apt"
  2896. buildAPT
  2897. }
  2898. #===============
  2899. #Dead Packages
  2900. #---------------
  2901. downloadGnuTLS() {
  2902. #http://gnu.mirrors.pair.com/gnutls/gnutls-3.1.5.tar.xz
  2903. if [ ! -e gnutls-3.1.5.tar.xz ]; then
  2904. echo "Downloading gnutls-3.1.5.tar.xz"
  2905. curl -LO http://gnu.mirrors.pair.com/gnutls/gnutls-3.1.5.tar.xz
  2906. curl -LO http://gnu.mirrors.pair.com/gnutls/gnutls-3.1.5.tar.xz.sig
  2907. checkPGPSig gnutls-3.1.5.tar.xz.sig gnutls-3.1.5.tar.xz
  2908. else
  2909. echo "Using existing gnutls"
  2910. fi
  2911. rm -rf gnutls-3.1.5
  2912. tar xJvf gnutls-3.1.5.tar.xz
  2913. }
  2914. buildGnuTLS() {
  2915. pthname="gnutls-3.1.5"
  2916. downloadGnuTLS
  2917. cd $pthname
  2918. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix=/$ROOT_PREFIX/ --host=arm-apple-darwin
  2919. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' config.h.in
  2920. make clean
  2921. make -j8 DESTDIR="$SKEL_PREFIX" install
  2922. make clean
  2923. mkdir deb
  2924. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix=/$ROOT_PREFIX/ --host=arm-apple-darwin
  2925. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' config.h.in
  2926. make -j8 DESTDIR="$BUILD_ROOT/$pthname/deb" install
  2927. mkdir -p deb/DEBIAN
  2928. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2929. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2930. echo "Section: Development" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2931. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2932. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2933. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2934. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2935. #echo "Depends: grep, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2936. echo "Description: portable threading library used by X" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2937. echo "Name: The New GNU Portable Threads Library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2938. echo "Homepage: https://www.gnupg.org/software/npth" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2939. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2940. dpkg -b deb
  2941. mv deb.deb "$BUILD_ROOT/gnutls-3.5.1-1_${PLATFORM_LOWER}-$ARCH.deb"
  2942. dpkg -b deb-doc
  2943. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2944. dpkg -b deb-dev
  2945. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2946. cd ..
  2947. }
  2948. downloadGzip() {
  2949. if [ ! -e gzip-1.8.tar.xz]; then
  2950. echo "Downloading gzip-1.8.tar.xz"
  2951. curl -LO http://mirror.keystealth.org/gnu/gzip/gzip-1.8.tar.xz
  2952. curl -LO http://mirror.keystealth.org/gnu/gzip/gzip-1.8.tar.xz.sig
  2953. checkPGPSig gzip-1.8.tar.xz.sig gzip-1.8.tar.xz
  2954. else
  2955. echo "Using existing gzip"
  2956. fi
  2957. rm -rf gzip-1.8
  2958. tar xJvf gzip-1.8.tar.xz
  2959. }
  2960. buildGzip() {
  2961. downloadGzip
  2962. cd gzip-1.8
  2963. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix=/$ROOT_PREFIX/ --host=arm-apple-darwin
  2964. make -j8 DESTDIR=$SKEL_PREFIX install
  2965. initDebStructure
  2966. CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS="-isysroot $SDK_PATH -I$SKEL_PREFIX/$ROOT_PREFIX/include/ -arch $ARCH" LDFLAGS="-isysroot $SDK_PATH -L$SKEL_PREFIX/$ROOT_PREFIX/lib/ -arch $ARCH" ./configure --prefix=/$ROOT_PREFIX --host=arm-apple-darwin
  2967. make -j8 DESTDIR=$BUILD_ROOT/gzip-1.8/deb install
  2968. mkdir -p deb/DEBIAN
  2969. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2970. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2971. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2972. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2973. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2974. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2975. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2976. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2977. #echo "Depends: grep, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2978. echo "Description: the standard Unix compression algorithm" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2979. #echo "Name: Diff Utilities" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2980. echo "Homepage: http://www.gzip.org/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2981. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/cmp"
  2982. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/diff"
  2983. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/diff3"
  2984. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sdiff"
  2985. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2986. dpkg -b deb
  2987. mv deb.deb "$BUILD_ROOT/gzip-1.8-1_${PLATFORM_LOWER}-$ARCH.deb"
  2988. createListFile
  2989. cd "$BUILD_ROOT"
  2990. }
  2991. ######################################################################################
  2992. # can download and repackage substrate (mostly, still may need a modified extrainst_ script)
  2993. installSubstrate() {
  2994. if [ ! -e mobilesubstrate_0.9.6301_iphoneos-arm.deb ]; then
  2995. curl -LO http://apt.saurik.com/debs/com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb
  2996. checkSHA256 com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb 86515cb9f6832247dbeae8427b996099dc8759bb1ef1d719c293123f2f531ee1
  2997. curl -LO http://apt.saurik.com/debs/mobilesubstrate_0.9.6301_iphoneos-arm.deb
  2998. checkSHA256 mobilesubstrate_0.9.6301_iphoneos-arm.deb 8dc91a066f088632409fecf65613831b8d6802e3b799f2dc87563c3ea2ed06ca
  2999. fi
  3000. initDebStructure
  3001. dpkg-deb -e mobilesubstrate_0.9.6301_iphoneos-arm.deb deb/DEBIAN
  3002. dpkg-deb -x mobilesubstrate_0.9.6301_iphoneos-arm.deb deb
  3003. sed -i -- "s|iphoneos-arm|${PLATFORM_LOWER}-$ARCH|" deb/DEBIAN/control
  3004. createListFile mobilesubstrate
  3005. dpkg -b deb
  3006. mv deb.deb "mobilesubstrate_0.9.6301_${PLATFORM_LOWER}-$ARCH.deb"
  3007. dpkg-deb -e com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb deb/DEBIAN
  3008. initDebStructure
  3009. dpkg-deb -x com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb deb
  3010. sed -i -- "s|iphoneos-arm|${PLATFORM_LOWER}-$ARCH|" deb/DEBIAN/control
  3011. createListFile com.saurik.substrate.safemode
  3012. dpkg -b deb
  3013. mv deb.deb "com.saurik.substrate.safemode_0.9.6001_${PLATFORM_LOWER}-$ARCH.deb"
  3014. rm mobilesubstrate_0.9.6301_iphoneos-arm.deb com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb
  3015. dpkg-deb -x "com.saurik.substrate.safemode_0.9.6001_${PLATFORM_LOWER}-$ARCH.deb" "$SKEL_PREFIX/"
  3016. dpkg-deb -x "mobilesubstrate_0.9.6301_${PLATFORM_LOWER}-$ARCH.deb" "$SKEL_PREFIX/"
  3017. #dpkg-deb -x com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb
  3018. }
  3019. #main functions
  3020. #main
  3021. #Entry Point
  3022. echo "Cleaning the slate"
  3023. rm -rf skel extra_pkg
  3024. mkdir -p skel/etc
  3025. mkdir extra_pkg
  3026. # Ensure our SDK has all the required "extras" installed/setup
  3027. prepSDK
  3028. #Begin Building
  3029. #DO NOT BUILD THE 11 UTILS IN UNTIL YOU ARE BUILDING EXPLICITLY FOR 11+
  3030. #/bin/bash exists on 9 and 10 and if overwritten without unthether will likely brick.
  3031. if [ "$BUILD_BASH" == "true" ]; then
  3032. buildBashAndFriends
  3033. fi
  3034. buildBasicUtils
  3035. buildDPKGAndDependencies
  3036. buildAPTAndDependencies
  3037. #installSubstrate
  3038. #rm -rf deb
  3039. #mkdir -p deb/DEBIAN
  3040. #dpkg-deb -x nitoTVLatest.deb deb
  3041. #dpkg-deb -e nitoTVLatest.deb deb/DEBIAN
  3042. #createListFile "com.nito.nitoTV4"
  3043. #dpkg-deb -x nitoTVLatest.deb "$SKEL_PREFIX"
  3044. createStatusFile
  3045. #clean out frivolous stuff to slim skel down to a reasonable size
  3046. find "$SKEL_PREFIX" -type f -name .DS_Store -delete
  3047. mkdir -p "$SKEL_PREFIX/private"
  3048. mv "$SKEL_PREFIX/etc" "$SKEL_PREFIX/private/"
  3049. mv "$SKEL_PREFIX/var" "$SKEL_PREFIX/private/"
  3050. #clean out symbolic links that you don't want to overwrite
  3051. unlink "$SKEL_PREFIX/$ROOT_PREFIX/lib/liblzma.dylib"
  3052. unlink "$SKEL_PREFIX/$ROOT_PREFIX/lib/libz.1.dylib"
  3053. unlink "$SKEL_PREFIX/$ROOT_PREFIX/lib/libz.dylib"
  3054. rm "$SKEL_PREFIX/$ROOT_PREFIX/lib/libz.1.2.11.dylib"
  3055. # Get rid of the docs
  3056. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/docs"
  3057. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/doc"
  3058. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/info"
  3059. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/man"
  3060. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/man"
  3061. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/gnupg" #TODO: See if the keys in this folder are needed
  3062. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/readline"
  3063. # Get rid of dev stuff
  3064. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/include"
  3065. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/aclocal"
  3066. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/pkgconfig"
  3067. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/common-lisp"
  3068. # remove all the static and libtool libraries from the bootstrap, they take up a LOT of space
  3069. cd "$SKEL_PREFIX/$ROOT_PREFIX/lib"
  3070. rm *.a
  3071. rm *.la
  3072. rmdir "$SKEL_PREFIX/$ROOT_PREFIX/var"
  3073. #Get rid of non-skel packages which were needed to compile
  3074. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpg-error-config"
  3075. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/libgcrypt-config"
  3076. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/lib/pkgconfig"
  3077. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/curl-config"
  3078. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/ncurses6-config"
  3079. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/npth-config"
  3080. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/ntbtls-config"
  3081. # for getting permissions right, try to mimic them as closely as possible to the default ones
  3082. # Still need to do this for debs, but oh well. We just won't use the yet :P
  3083. sudo chown -R root:wheel "$SKEL_PREFIX/$ROOT_PREFIX"
  3084. sudo chown root:admin "$SKEL_PREFIX/private"
  3085. #sudo chown root:admin "$SKEL_PREFIX/Applications"
  3086. #sudo chown -R root:wheel "$SKEL_PREFIX/Library"
  3087. sudo chown -R root:wheel "$SKEL_PREFIX/private/etc"
  3088. sudo chown -R root:wheel "$SKEL_PREFIX/private/var"
  3089. #sudo chmod 6755 "$SKEL_PREFIX/usr/bin/nitoHelper"
  3090. #sudo chmod 6755 "$SKEL_PREFIX/usr/bin/nitoUpdate"
  3091. rm -rf skel.tgz
  3092. cd "$SKEL_PREFIX"
  3093. #sudo tar cpz -P --exclude .DS_Store -f ../skel.tgz Applications usr private Library
  3094. sudo tar cpz -P --exclude .DS_Store -f ../skel.tgz usr private
  3095. cd "$BUILD_ROOT"
  3096. #reset trap
  3097. trap - INT TERM EXIT
  3098. ls *.deb
  3099. echo "Done"