the_memo.sh 174 KB

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