the_memo.sh 173 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606
  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. cd "$BUILD_ROOT"
  1326. }
  1327. #Download uikittools
  1328. downloadUIKitTools() {
  1329. if [ ! -d uikittools ]; then
  1330. echo "Fetching uikittools"
  1331. git clone git://git.saurik.com/uikittools.git
  1332. else
  1333. echo "Using existing uikittools"
  1334. fi
  1335. WORKING_DIR="uikittools"
  1336. PKG_NAME="uikittools"
  1337. PKG_VERSION="1.1.12-1"
  1338. cd "$WORKING_DIR"
  1339. git checkout tags/v1.1.12
  1340. }
  1341. #uikittools
  1342. #Notes:
  1343. # This only builds a striped down version of the one on iOS
  1344. # If you're building for a non-appletv platform, you may need to fix things here.
  1345. buildUIKitTools() {
  1346. downloadUIKitTools
  1347. "$CLANGPLUS_PATH" -arch "$ARCH" -isysroot"$SDK_PATH" -Os -Werror -framework CoreFoundation -framework Foundation "$MIN_VERSION" -o cfversion cfversion.mm
  1348. "$CLANGPLUS_PATH" -arch "$ARCH" -isysroot"$SDK_PATH" -Os -Werror -framework CoreFoundation -framework Foundation "$MIN_VERSION" -o gssc gssc.mm
  1349. "$CLANGPLUS_PATH" -arch "$ARCH" -isysroot"$SDK_PATH" -Os -Werror -framework CoreFoundation -framework Foundation -framework UIKit "$MIN_VERSION" -o uiduid uiduid.mm
  1350. codesign "$BUILD_ROOT/$WORKING_DIR/cfversion"
  1351. codesign "$BUILD_ROOT/$WORKING_DIR/gssc"
  1352. codesign "$BUILD_ROOT/$WORKING_DIR/uiduid"
  1353. cp gssc cfversion uiduid "$SKEL_PREFIX/$ROOT_PREFIX/bin/"
  1354. initDebStructure
  1355. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/"
  1356. cp gssc cfversion uiduid "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/"
  1357. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1358. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1359. echo "Section: Utilities" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1360. echo "Maintainer: $MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1361. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1362. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1363. echo "Description: UIKit/GraphicsServices command line access" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1364. echo "Name: UIKit Tools" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1365. echo "Author: Jay Freeman (saurik) <saurik@saurik.com>" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1366. echo "Depiction: http://cydia.saurik.com/info/uikittools/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1367. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1368. echo "Pre-Depends: cy+model.appletv" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1369. echo "Depends: coreutils, firmware (>= 9.0)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1370. else
  1371. #FIXME: If you're building for some other platform, you should address this.
  1372. echo "Depends: coreutils" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1373. fi
  1374. echo "Tag: purpose::console, role::hacker" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1375. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete #Not that there are any...
  1376. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1377. dpkg -b deb
  1378. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1379. cd "$BUILD_ROOT"
  1380. }
  1381. buildBasicUtils() {
  1382. notifyProgress "Building sed"
  1383. buildSed
  1384. notifyProgress "Building grep"
  1385. buildGrep
  1386. notifyProgress "Building coreutils"
  1387. buildCoreutils
  1388. notifyProgress "Building findutils"
  1389. buildFindUtils
  1390. notifyProgress "Building diffutils"
  1391. buildDiffUtils
  1392. notifyProgress "Building DarwinTools"
  1393. buildDarwinTools
  1394. notifyProgress "Building UIKitTools"
  1395. buildUIKitTools
  1396. }
  1397. #=====================
  1398. #DPKG and Dependencies
  1399. #---------------------
  1400. #Download zlib
  1401. downloadZLib() {
  1402. #Download zlib
  1403. if [ ! -d zlib ]; then
  1404. echo "Downloading zlib git"
  1405. git clone https://github.com/madler/zlib.git
  1406. else
  1407. echo "Using existing zlib"
  1408. fi
  1409. WORKING_DIR="zlib"
  1410. PKG_NAME="zlib"
  1411. PKG_VERSION="1.2.11-1"
  1412. cd "$WORKING_DIR"
  1413. git checkout tags/v1.2.11
  1414. sudo rm -rf build
  1415. mkdir build
  1416. cd build
  1417. WORKING_DIR="$WORKING_DIR/build"
  1418. }
  1419. #zlib
  1420. buildZLib() {
  1421. downloadZLib
  1422. cmake -j8 -DCMAKE_INSTALL_NAME_DIR="/$ROOT_PREFIX/lib" -DCMAKE_OSX_SYSROOT="$SDK_PATH/" -DCMAKE_C_FLAGS="-arch $ARCH" -DCMAKE_INSTALL_PREFIX="/$ROOT_PREFIX" ..
  1423. #make
  1424. make -j8 DESTDIR="$SKEL_PREFIX" install
  1425. initDebStructure
  1426. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/" install
  1427. export COPYFILE_DISABLE
  1428. export COPY_EXTENDED_ATTRIBUTES_DISABLE
  1429. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1430. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1431. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1432. #echo "Installed-Size: 396" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1433. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1434. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1435. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1436. echo "Description: Massively spiffy yet delicately unobtrusive compression library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1437. echo "Name: zlib" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1438. echo "Homepage: http://zlib.net/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1439. #Build the doc deb
  1440. 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"
  1441. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  1442. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  1443. #Build the dev deb
  1444. 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"
  1445. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share"
  1446. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1447. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  1448. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share"
  1449. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1450. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1451. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1452. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1453. dpkg -b deb
  1454. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1455. dpkg -b deb-doc
  1456. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1457. dpkg -b deb-dev
  1458. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1459. createListFile
  1460. cd "$BUILD_ROOT"
  1461. }
  1462. #Download xz
  1463. downloadXZ() {
  1464. if [ ! -e xz-5.2.3.tar.gz ]; then
  1465. echo "Downloading xz-5.2.3.tar.gz"
  1466. curl -LO http://tukaani.org/xz/xz-5.2.3.tar.gz
  1467. curl -LO http://tukaani.org/xz/xz-5.2.3.tar.gz.sig
  1468. checkPGPSig xz-5.2.3.tar.gz.sig xz-5.2.3.tar.gz
  1469. else
  1470. echo "Using xz-5.2.3.tar.gz"
  1471. fi
  1472. sudo rm -rf xz-5.2.3
  1473. tar xzvf xz-5.2.3.tar.gz
  1474. WORKING_DIR="xz-5.2.3"
  1475. PKG_NAME="xz"
  1476. PKG_VERSION="5.2.3-1"
  1477. cd "$WORKING_DIR"
  1478. }
  1479. patchXZ() {
  1480. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1481. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' config.h.in
  1482. fi
  1483. }
  1484. #xz
  1485. buildXZ() {
  1486. downloadXZ
  1487. patchXZ
  1488. if [ "$ARCH" == "arm64" ]; then
  1489. ./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
  1490. else
  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=arm-apple-darwin
  1492. fi
  1493. make DESTDIR="$SKEL_PREFIX" install
  1494. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/lzmadec"
  1495. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/lzmainfo"
  1496. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/xz"
  1497. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/xzdec"
  1498. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/liblzma.5.dylib"
  1499. if [ ! -e "$SKEL_PREFIX/$ROOT_PREFIX/local/lib/liblzma.5.dylib" ]; then
  1500. mkdir -p "$SKEL_PREFIX/$ROOT_PREFIX/local/lib"
  1501. #cp "$SKEL_PREFIX/$ROOT_PREFIX/lib/liblzma.5.dylib" "$SKEL_PREFIX/$ROOT_PREFIX/local/lib/liblzma.5.dylib"
  1502. ln -s /usr/lib/liblzma.5.dylib "$SKEL_PREFIX/$ROOT_PREFIX/local/lib/liblzma.5.dylib"
  1503. fi
  1504. initDebStructure
  1505. make DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  1506. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/lzmadec"
  1507. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/lzmainfo"
  1508. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/xz"
  1509. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/xzdec"
  1510. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/liblzma.5.dylib"
  1511. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/local/lib"
  1512. ln -s /usr/lib/liblzma.5.dylib "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/local/lib/liblzma.5.dylib"
  1513. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1514. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1515. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1516. #echo "Installed-Size: 396" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1517. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1518. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1519. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1520. echo "Depends: grep, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1521. echo "Description: XZ Utils are the successor to LZMA Utils" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1522. echo "Name: XZ Utils" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1523. echo "Homepage: http://tukaani.org/xz/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1524. #Build the doc deb
  1525. 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"
  1526. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1527. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  1528. #Build the dev deb
  1529. 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"
  1530. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  1531. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1532. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1533. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/liblzma.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1534. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1535. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1536. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1537. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1538. dpkg -b deb
  1539. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1540. dpkg -b deb-doc
  1541. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1542. dpkg -b deb-dev
  1543. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1544. createListFile
  1545. cd "$BUILD_ROOT"
  1546. }
  1547. #Download bzip2
  1548. downloadBZip2() {
  1549. if [ ! -e bzip2-1.0.6.tar.gz ]; then
  1550. echo "Downloading bzip2-1.0.6.tar.gz"
  1551. curl -LO http://bzip.org/1.0.6/bzip2-1.0.6.tar.gz
  1552. checkSHA256 bzip2-1.0.6.tar.gz a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd
  1553. else
  1554. echo "Using bzip2-1.0.6.tar.gz"
  1555. fi
  1556. sudo rm -rf bzip2-1.0.6
  1557. tar xzvf bzip2-1.0.6.tar.gz
  1558. WORKING_DIR="bzip2-1.0.6"
  1559. PKG_NAME="bzip2"
  1560. PKG_VERSION="1.0.6-1"
  1561. cd "$WORKING_DIR"
  1562. }
  1563. patchBZip2() {
  1564. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1565. #fix up our makefile...
  1566. sed -i -- 's|CC=gcc|CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang|' Makefile
  1567. sed -i -- 's|AR=ar|AR=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar|' Makefile
  1568. sed -i -- 's|RANLIB=ranlib|RANLIB=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib|' Makefile
  1569. sed -i -- "s|LDFLAGS=|LDFLAGS=$MIN_VERSION -isysroot \"$SDK_PATH\" -arch $ARCH|" Makefile
  1570. sed -i -- "s|CFLAGS=|CFLAGS=$MIN_VERSION -isysroot \"$SDK_PATH\" -arch $ARCH |" Makefile
  1571. sed -i -- 's|all:\(.*\) test$|all: \1|' Makefile
  1572. sed -i -- 's|ln -s -f \$(PREFIX)/bin/|ln -s -f |g' Makefile
  1573. fi
  1574. }
  1575. #bzip2
  1576. buildBZip2() {
  1577. downloadBZip2
  1578. patchBZip2
  1579. make -j8 install PREFIX="$SKEL_PREFIX/$ROOT_PREFIX"
  1580. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/bunzip2"
  1581. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/bzcat"
  1582. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/bzip2"
  1583. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/bzip2recover"
  1584. initDebStructure
  1585. make -j8 install PREFIX="$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1586. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/bunzip2"
  1587. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/bzcat"
  1588. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/bzip2"
  1589. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/bzip2recover"
  1590. export COPYFILE_DISABLE
  1591. export COPY_EXTENDED_ATTRIBUTES_DISABLE
  1592. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1593. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1594. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1595. #echo "Installed-Size: 148" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1596. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1597. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1598. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1599. echo "Depends: grep, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1600. echo "Description: compression that's slightly better than gzip" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1601. echo "Homepage: http://www.bzip.org/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1602. #Build the doc deb
  1603. 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"
  1604. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1605. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  1606. #Build the dev deb
  1607. 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"
  1608. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1609. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1610. #FIXME: Make a $PKG_NAME-staticlibs.deb
  1611. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1612. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib"
  1613. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1614. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1615. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1616. dpkg -b deb
  1617. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1618. dpkg -b deb-doc
  1619. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1620. dpkg -b deb-dev
  1621. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1622. createListFile
  1623. cd "$BUILD_ROOT"
  1624. }
  1625. #Download lz4
  1626. downloadLZ4() {
  1627. if [ ! -e lz4-v1.7.5.tar.gz ]; then
  1628. #echo "Cloning lz4.git"
  1629. #git clone https://github.com/lz4/lz4.git
  1630. #Master = v1.7.5
  1631. curl -LO https://github.com/lz4/lz4/archive/v1.7.5.tar.gz
  1632. mv v1.7.5.tar.gz lz4-v1.7.5.tar.gz
  1633. checkSHA256 lz4-v1.7.5.tar.gz 0190cacd63022ccb86f44fa5041dc6c3804407ad61550ca21c382827319e7e7e
  1634. else
  1635. echo "Using existing lz4"
  1636. fi
  1637. sudo rm -rf lz4-1.7.5/
  1638. tar xzvf lz4-v1.7.5.tar.gz
  1639. WORKING_DIR="lz4-1.7.5/contrib/cmake_unofficial/"
  1640. PKG_NAME="lz4"
  1641. PKG_VERSION="1.7.5-1"
  1642. cd "$WORKING_DIR"
  1643. rm -rf build
  1644. mkdir build
  1645. cd build
  1646. WORKING_DIR="$WORKING_DIR/build"
  1647. }
  1648. #lz4
  1649. buildLZ4() {
  1650. downloadLZ4
  1651. initDebStructure
  1652. cmake -j8 -DCMAKE_INSTALL_NAME_DIR="/$ROOT_PREFIX/lib" -DCMAKE_OSX_SYSROOT="$SDK_PATH/" -DCMAKE_C_FLAGS="-arch $ARCH" -DCMAKE_INSTALL_PREFIX="/$ROOT_PREFIX" ..
  1653. make -j8
  1654. make -j8 DESTDIR="$SKEL_PREFIX" install
  1655. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/lz4"
  1656. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/lz4c"
  1657. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/liblz4.1.7.5.dylib"
  1658. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/" install
  1659. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/lz4"
  1660. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/lz4c"
  1661. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/liblz4.1.7.5.dylib"
  1662. export COPYFILE_DISABLE
  1663. export COPY_EXTENDED_ATTRIBUTES_DISABLE
  1664. echo "Package: $PKG_NAME" > "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1665. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1666. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1667. #echo "Installed-Size: 396" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1668. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1669. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1670. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1671. echo "Description: Extremely Fast Compression algorithm" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1672. echo "Name: lz4" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1673. echo "Homepage: http://www.lz4.org" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1674. #Build the doc deb
  1675. 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"
  1676. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1677. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1678. #Build the dev deb
  1679. 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"
  1680. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  1681. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1682. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1683. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1684. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1685. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1686. dpkg -b deb
  1687. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1688. dpkg -b deb-doc
  1689. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1690. dpkg -b deb-dev
  1691. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1692. createListFile
  1693. cd "$BUILD_ROOT"
  1694. }
  1695. #Download openssl
  1696. downloadOpenSSL() {
  1697. if [ ! -d openssl ]; then
  1698. git clone -b OpenSSL_1_1_0-stable https://github.com/openssl/openssl.git
  1699. else
  1700. echo "Using existing openssl repo"
  1701. fi
  1702. WORKING_DIR="openssl"
  1703. PKG_NAME="openssl"
  1704. PKG_VERSION="1.1.0-1"
  1705. cd "$WORKING_DIR"
  1706. }
  1707. patchOpenSSL() {
  1708. #if [ "$PLATFORM" == "AppleTVOS" ]; then
  1709. sed -i -- "s|-arch $ARCH -mios-version-min=7.0.0|-arch $ARCH $MIN_VERSION|" Configurations/10-main.conf
  1710. #fi
  1711. }
  1712. #openssl
  1713. buildOpenSSL() {
  1714. downloadOpenSSL
  1715. patchOpenSSL
  1716. export PLATFORM="$PLATFORM"
  1717. export BUILD_TOOLS="`xcode-select --print-path`"
  1718. export CC="clang -fembed-bitcode"
  1719. export CROSS_COMPILE="`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/"
  1720. export CROSS_TOP="`xcode-select --print-path`/Platforms/$PLATFORM.platform/Developer"
  1721. export CROSS_SDK="`echo $SDK_PATH | sed 's/.*\///g'`"
  1722. #export PATH="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:$PATH"
  1723. ./Configure ios64-cross no-shared no-dso no-hw no-engine --prefix="/$ROOT_PREFIX"
  1724. #make
  1725. make DESTDIR="$SKEL_PREFIX" install
  1726. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/openssl"
  1727. initDebStructure
  1728. make DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  1729. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/openssl"
  1730. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1731. echo "Priority: standard" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1732. echo "Section: Security" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1733. #echo "Installed-Size: 6164" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1734. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1735. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1736. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1737. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1738. echo "Description: SSL library and cryptographic tools" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1739. echo "Name: OpenSSL" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1740. echo "Homepage: https://www.openssl.org" >> deb/DEBIAN/control
  1741. #Build the doc deb
  1742. 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"
  1743. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1744. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  1745. #Build the dev deb
  1746. 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"
  1747. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1748. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1749. #mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1750. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1751. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1752. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1753. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1754. dpkg -b deb
  1755. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1756. dpkg -b deb-doc
  1757. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1758. dpkg -b deb-dev
  1759. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1760. createListFile
  1761. cd "$BUILD_ROOT"
  1762. }
  1763. #Download Curl
  1764. downloadCurl() {
  1765. if [ ! -e curl-7.50.1.tar.gz ]; then
  1766. echo "Downloading curl-7.50.1.tar.gz"
  1767. curl -LO https://curl.haxx.se/download/curl-7.50.1.tar.gz
  1768. checkSHA256 curl-7.50.1.tar.gz 3e392cf600822b817be82d9080b377fcbab70538d5a8bf525a1cd66e157b99ea
  1769. else
  1770. echo "Using curl-7.50.1.tar.gz"
  1771. fi
  1772. sudo rm -rf curl-7.50.1
  1773. echo "Unpacking curl"
  1774. tar xzvf "curl-7.50.1.tar.gz"
  1775. WORKING_DIR="curl-7.50.1"
  1776. PKG_NAME="curl"
  1777. PKG_VERSION="7.50.1-1"
  1778. cd "$WORKING_DIR"
  1779. }
  1780. patchCurl() {
  1781. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1782. #(Forcibly) Remove that dirty clock_gettime
  1783. #TODO: Determine if this is the best way
  1784. sed -i -- 's|#undef HAVE_CLOCK_GETTIME_MONOTONIC||' lib/curl_config.h.in
  1785. fi
  1786. }
  1787. #curl
  1788. buildCurl() {
  1789. downloadCurl
  1790. patchCurl
  1791. export PLATFORM="$PLATFORM"
  1792. export BUILD_TOOLS="`xcode-select --print-path`"
  1793. export CC="clang"
  1794. export CROSS_COMPILE="`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/"
  1795. export CROSS_TOP="`xcode-select --print-path`/Platforms/$PLATFORM.platform/Developer"
  1796. export CROSS_SDK="`echo $SDK_PATH | sed 's/.*\///g'`"
  1797. export CFLAGS="-arch $ARCH -pipe -Os -gdwarf-2 -isysroot $SDK_PATH $MIN_VERSION -fembed-bitcode -I$SKEL_PREFIX/$ROOT_PREFIX/include/ "
  1798. export LDFLAGS="-arch $ARCH -isysroot $SDK_PATH -L${SKEL_PREFIX}/$ROOT_PREFIX/lib"
  1799. ./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"
  1800. make -j8 DESTDIR="$SKEL_PREFIX" install
  1801. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/curl"
  1802. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libcurl.4.dylib"
  1803. make clean
  1804. initDebStructure
  1805. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/" install
  1806. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/curl"
  1807. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libcurl.4.dylib"
  1808. #Get rid of cross-compile artifacts
  1809. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libcurl.la"
  1810. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/curl-config"
  1811. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libcurl.la--"
  1812. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/curl-config--"
  1813. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1814. echo "Priority: standard" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1815. echo "Section: Networking" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1816. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1817. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1818. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1819. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1820. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1821. echo "Depends: openssl" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1822. echo "Description: flexible multi-protocol file transfers" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1823. echo "Name: cURL" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1824. echo "Homepage: http://curl.haxx.se/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1825. #Build the doc deb
  1826. 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"
  1827. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  1828. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  1829. #Build the dev deb
  1830. 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"
  1831. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin"
  1832. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  1833. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share"
  1834. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/curl-config" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin/"
  1835. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1836. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1837. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libcurl.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1838. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/aclocal" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  1839. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share"
  1840. #FIXME
  1841. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1842. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1843. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1844. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1845. dpkg -b deb
  1846. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1847. dpkg -b deb-doc
  1848. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1849. dpkg -b deb-dev
  1850. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1851. createListFile
  1852. cd "$BUILD_ROOT"
  1853. }
  1854. #Download berkeleydb
  1855. downloadBerkeleyDB() {
  1856. if [ ! -e db-6.2.23.tar.gz ]; then
  1857. echo "Downlading db-6.2.23.tar.gz"
  1858. curl -LO http://download.oracle.com/berkeley-db/db-6.2.23.tar.gz
  1859. checkSHA256 db-6.2.23.tar.gz 47612c8991aa9ac2f6be721267c8d3cdccf5ac83105df8e50809daea24e95dc7
  1860. else
  1861. echo "Using existing db-6.2.23"
  1862. fi
  1863. sudo rm -rf db-6.2.23
  1864. tar xzvf db-6.2.23.tar.gz
  1865. WORKING_DIR="db-6.2.23/build_unix/"
  1866. PKG_NAME="berkeleydb"
  1867. PKG_VERSION="6.2.23-1"
  1868. cd "$WORKING_DIR"
  1869. }
  1870. patchBerkeleyDB() {
  1871. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1872. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' ../dist/config.hin
  1873. if [ "$PKG_VERSION" == "6.2.23-1" ]; then
  1874. cat ../lang/sql/sqlite/src/shell.c | head -n 14 > shell.patched.c
  1875. echo "#include <stdint.h>" >> shell.patched.c
  1876. echo "#include <stdio.h>" >> shell.patched.c
  1877. echo "#include <stdlib.h>" >> shell.patched.c
  1878. echo "#include <spawn.h>" >> shell.patched.c
  1879. echo "#include <sys/wait.h>" >> shell.patched.c
  1880. echo "#include <sys/stat.h>" >> shell.patched.c
  1881. echo "" >> shell.patched.c
  1882. echo "extern char **environ;" >> shell.patched.c
  1883. echo "" >> shell.patched.c
  1884. cat ../lang/sql/sqlite/src/shell.c | tail -n 4847 | head -n 2622 >> shell.patched.c
  1885. fixSystem "shell.patched.c"
  1886. cat ../lang/sql/sqlite/src/shell.c | tail -n 2226 | sed 's/system(zCmd)/RunCmd(zCmd)/g' >> shell.patched.c
  1887. cp shell.patched.c ../lang/sql/sqlite/src/shell.c
  1888. fi
  1889. fi
  1890. }
  1891. #berkeleydb
  1892. buildBerkeleyDB() {
  1893. downloadBerkeleyDB
  1894. patchBerkeleyDB
  1895. #Not sure which all we need...
  1896. export PLATFORM="$PLATFORM" #TODO: Maybe necessary? Need to test.
  1897. export BUILD_TOOLS="`xcode-select --print-path`"
  1898. export CC="clang"
  1899. export CROSS_COMPILE="`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/"
  1900. export CROSS_TOP="`xcode-select --print-path`/Platforms/$PLATFORM.platform/Developer"
  1901. export CROSS_SDK="`echo $SDK_PATH | sed 's/.*\///g'`"
  1902. export CFLAGS="-arch $ARCH -pipe -Os -gdwarf-2 -isysroot $SDK_PATH $MIN_VERSION"
  1903. export CXXFLAGS="-arch $ARCH -pipe -Os -gdwarf-2 -isysroot $SDK_PATH $MIN_VERSION"
  1904. export LDFLAGS="-arch $ARCH -isysroot $SDK_PATH" # -L${SKEL_PREFIX}/lib"
  1905. #Only builds with arm-apple-darwin, not aarch64
  1906. ../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"
  1907. make DESTDIR="$SKEL_PREFIX" install
  1908. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_archive"
  1909. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_checkpoint"
  1910. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_deadlock"
  1911. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_dump"
  1912. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_hotbackup"
  1913. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_load"
  1914. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_log_verify"
  1915. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_printlog"
  1916. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_recover"
  1917. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_replicate"
  1918. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_sql_codegen"
  1919. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_stat"
  1920. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_tuner"
  1921. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_upgrade"
  1922. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/db_verify"
  1923. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dbsql"
  1924. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libdb_sql-6.2.dylib"
  1925. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libdb-6.2.dylib"
  1926. initDebStructure
  1927. make DESTDIR="$BUILD_ROOT/db-6.2.23/build_unix/deb/" install
  1928. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_archive"
  1929. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_checkpoint"
  1930. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_deadlock"
  1931. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_dump"
  1932. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_hotbackup"
  1933. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_load"
  1934. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_log_verify"
  1935. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_printlog"
  1936. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_recover"
  1937. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_replicate"
  1938. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_sql_codegen"
  1939. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_stat"
  1940. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_tuner"
  1941. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_upgrade"
  1942. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/db_verify"
  1943. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/dbsql"
  1944. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdb_sql-6.2.dylib"
  1945. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdb-6.2.dylib"
  1946. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1947. echo "Priority: important" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1948. echo "Section: Data_Storage" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1949. #echo "Installed-Size: 1644" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1950. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1951. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1952. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1953. echo "Description: Oracle's embeddable database engine" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1954. echo "Name: Berkeley DB" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  1955. echo "Homepage: http://www.oracle.com/technology/products/berkeley-db/index.html" >> deb/DEBIAN/control
  1956. #Build the doc deb
  1957. 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"
  1958. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1959. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/docs" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  1960. #Build the dev deb
  1961. 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"
  1962. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  1963. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  1964. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdb-6.2.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1965. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdb_sql-6.2.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  1966. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  1967. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  1968. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  1969. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  1970. dpkg -b deb
  1971. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1972. dpkg -b deb-doc
  1973. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1974. dpkg -b deb-dev
  1975. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  1976. createListFile
  1977. cd "$BUILD_ROOT"
  1978. }
  1979. #Download tar
  1980. downloadTar() {
  1981. if [ ! -e tar-1.30.tar.xz ]; then
  1982. echo "Downloading tar-1.30.tar.xz"
  1983. curl -LO http://ftp.gnu.org/gnu/tar/tar-1.30.tar.xz
  1984. checkSHA256 tar-1.30.tar.xz f1bf92dbb1e1ab27911a861ea8dde8208ee774866c46c0bb6ead41f4d1f4d2d3
  1985. else
  1986. echo "Using existing tar"
  1987. fi
  1988. sudo rm -rf tar-1.30
  1989. tar xJvf tar-1.30.tar.xz
  1990. WORKING_DIR="tar-1.30"
  1991. PKG_NAME="tar"
  1992. PKG_VERSION="1.30-1"
  1993. cd "$WORKING_DIR"
  1994. }
  1995. patchTar() {
  1996. if [ "$PLATFORM" == "AppleTVOS" ]; then
  1997. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' config.h.in
  1998. fi
  1999. }
  2000. #tar
  2001. buildTar() {
  2002. downloadTar
  2003. patchTar
  2004. if [ "$ARCH" == "arm64" ]; then
  2005. 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
  2006. else
  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=arm-apple-darwin
  2008. fi
  2009. make -j8 DESTDIR="$SKEL_PREFIX" install
  2010. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/tar"
  2011. initDebStructure
  2012. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  2013. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/tar"
  2014. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2015. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2016. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2017. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2018. echo "Depends: bzip2, xz" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2019. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2020. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2021. echo "Homepage: http://www.gnu.org/software/tar/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2022. echo "Description: tool for making tape archives" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2023. echo "Name: Tape Archive" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2024. echo "Tag: purpose::console, role::hacker" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2025. #Build the doc deb
  2026. 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"
  2027. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2028. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2029. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  2030. #Build the dev deb
  2031. #No files
  2032. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2033. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2034. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2035. dpkg -b deb
  2036. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2037. dpkg -b deb-doc
  2038. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2039. createListFile
  2040. cd "$BUILD_ROOT"
  2041. }
  2042. #Download dpkg
  2043. downloadDpkg() {
  2044. if [ ! -d dpkg ]; then
  2045. echo "Downlading dpkg"
  2046. git clone https://git.nito.tv/NitoTV/dpkg.git
  2047. else
  2048. echo "Using existing dpkg"
  2049. fi
  2050. WORKING_DIR="dpkg"
  2051. PKG_NAME="dpkg"
  2052. PKG_VERSION="1.18.23-1" #FIXME
  2053. cd "$WORKING_DIR"
  2054. }
  2055. patchDpkg() {
  2056. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2057. sed -i -- "s|#define ARCHITECTURE \"darwin-arm\"|#define ARCHITECTURE \"$PLATFORM_LOWER-$ARCH\"|" config.h
  2058. sed -i -- 's|gtar|tar|' config.h
  2059. fi
  2060. }
  2061. #dpkg
  2062. buildDpkg() {
  2063. downloadDpkg
  2064. local dont_die_here=$(./autogen.sh)
  2065. if [ "$ARCH" == "arm64" ]; then
  2066. 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"
  2067. else
  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=arm-apple-darwin PERL_LIBDIR='$(prefix)/lib/' --disable-dselect --localstatedir="/var/" --sysconfdir="/etc"
  2069. fi
  2070. patchDpkg #Must be after configure for now. I'll deal with this later
  2071. make -j8 DESTDIR="$SKEL_PREFIX" install
  2072. #lzma conflicts with built in libraries when running in certian conditions.
  2073. #we make -j8 a symlink our version of lzma in the xz build process
  2074. #here we change dpkg-deb to look for this version instead
  2075. #if we do not do this, apt-get/dpkg* will fail from our setuid tool
  2076. install_name_tool -change /usr/lib/liblzma.5.dylib /usr/local/lib/liblzma.5.dylib "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-deb"
  2077. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg"
  2078. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-deb"
  2079. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-divert"
  2080. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-query"
  2081. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-split"
  2082. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-trigger"
  2083. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dpkg-statoverride"
  2084. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/update-alternatives"
  2085. echo "appletvos-arm64" >> "$SKEL_PREFIX/var/lib/dpkg/arch"
  2086. echo "darwin-arm64" >> "$SKEL_PREFIX/var/lib/dpkg/arch"
  2087. initDebStructure
  2088. make -j8 install DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/"
  2089. install_name_tool -change /usr/lib/liblzma.5.dylib /usr/local/lib/liblzma.5.dylib "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-deb"
  2090. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg"
  2091. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-deb"
  2092. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-divert"
  2093. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-query"
  2094. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-split"
  2095. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-trigger"
  2096. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/dpkg-statoverride"
  2097. codesign "$BUILD_ROOT/dpkg/deb/$ROOT_PREFIX/bin/update-alternatives"
  2098. echo "appletvos-arm64" >> "$BUILD_ROOT/dpkg/deb/var/lib/dpkg/arch"
  2099. echo "darwin-arm64" >> "$BUILD_ROOT/dpkg/deb/var/lib/dpkg/arch"
  2100. #Get rid of cross-compile artifacts
  2101. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdpkg.la"
  2102. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig/libdpkg.pc"
  2103. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdpkg.la--"
  2104. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig/libdpkg.pc--"
  2105. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2106. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2107. echo "Section: Packaging" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2108. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2109. #echo "Depends: bash, bzip2, coreutils-bin, diffutils, findutils, gzip, lzma, ncurses, tar" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2110. echo "Depends: bzip2, coreutils, diffutils, findutils, xz, tar" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2111. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2112. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2113. echo "Description: package maintainance tools from Debian" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2114. echo "Name: Debian Packager" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2115. echo "Homepage: http://wiki.debian.org/Teams/Dpkg" >> deb/DEBIAN/control
  2116. #Build the doc deb
  2117. 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"
  2118. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  2119. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2120. #Build the dev deb
  2121. 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"
  2122. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2123. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2124. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libdpkg.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2125. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/pkgconfig" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2126. #FIXME
  2127. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2128. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2129. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/etc"
  2130. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/var"
  2131. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2132. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2133. dpkg -b deb
  2134. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2135. dpkg -b deb-doc
  2136. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2137. dpkg -b deb-dev
  2138. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2139. createListFile
  2140. cd "$BUILD_ROOT"
  2141. }
  2142. buildDPKGAndDependencies() {
  2143. notifyProgress "Building zlib"
  2144. buildZLib
  2145. notifyProgress "Building xz"
  2146. buildXZ
  2147. notifyProgress "Building bzip2"
  2148. buildBZip2
  2149. notifyProgress "Building lz4"
  2150. buildLZ4
  2151. notifyProgress "Building openSSL"
  2152. buildOpenSSL
  2153. notifyProgress "Building curl"
  2154. buildCurl
  2155. notifyProgress "Building BerkeleyDB"
  2156. buildBerkeleyDB
  2157. notifyProgress "Building tar"
  2158. buildTar
  2159. notifyProgress "Building dpkg"
  2160. buildDpkg
  2161. }
  2162. #====================
  2163. #APT and Dependencies
  2164. #--------------------
  2165. #Download libgpg-error
  2166. downloadGpgError() {
  2167. if [ ! -e libgpg-error-1.27.tar.bz2 ]; then
  2168. echo "Downloading libgpg-error-1.27.tar.bz2"
  2169. curl -LO https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.27.tar.bz2
  2170. curl -LO https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.27.tar.bz2.sig
  2171. checkPGPSig libgpg-error-1.27.tar.bz2.sig libgpg-error-1.27.tar.bz2
  2172. else
  2173. echo "Using existing libgpg-error"
  2174. fi
  2175. sudo rm -rf libgpg-error-1.27
  2176. tar xjvf libgpg-error-1.27.tar.bz2
  2177. WORKING_DIR="libgpg-error-1.27"
  2178. PKG_NAME="libgpg-error"
  2179. PKG_VERSION="1.27-1"
  2180. cd "$WORKING_DIR"
  2181. }
  2182. patchGpgError() {
  2183. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2184. echo ""
  2185. #sed -i -- 's|assert (!"lock ABI version");|//assert (!"lock ABI version");|' config.h
  2186. #sed -i -- 's|assert (!"lock ABI version");|//assert (!"lock ABI version");|' config.h
  2187. fi
  2188. }
  2189. #libgpg-error
  2190. buildGpgError() {
  2191. downloadGpgError
  2192. if [ "$ARCH" == "arm64" ]; then
  2193. 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
  2194. else
  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=arm-apple-darwin --disable-tests --enable-threads=posix
  2196. fi
  2197. make -j8 DESTDIR="$SKEL_PREFIX" install
  2198. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libgpg-error.0.dylib"
  2199. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpg-error"
  2200. initDebStructure
  2201. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  2202. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgpg-error.0.dylib"
  2203. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpg-error"
  2204. #Get rid of cross-compile artifacts
  2205. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgpg-error.la"
  2206. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgpg-error.la--"
  2207. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2208. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2209. echo "Section: Security" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2210. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2211. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2212. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2213. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2214. echo "Description: GnuPG's error management library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2215. echo "Name: GnuPG Errors" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2216. echo "Homepage: https://www.gnupg.org/related_software/libgpg-error/index.en.html" >> deb/DEBIAN/control
  2217. #Build the doc deb
  2218. 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"
  2219. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  2220. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/info" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2221. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2222. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/libgpg-error" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2223. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  2224. #Build the dev deb
  2225. 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"
  2226. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share"
  2227. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin"
  2228. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2229. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpg-error-config" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin/"
  2230. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/aclocal" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  2231. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/common-lisp" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  2232. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2233. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgpg-error.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2234. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share"
  2235. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2236. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2237. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2238. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2239. dpkg -b deb
  2240. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2241. dpkg -b deb-doc
  2242. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2243. dpkg -b deb-dev
  2244. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2245. createListFile
  2246. cd "$BUILD_ROOT"
  2247. }
  2248. #Download gcrypt
  2249. downloadGcrypt() {
  2250. if [ ! -e libgcrypt-1.8.2.tar.bz2 ]; then
  2251. echo "Downloading libgcrypt-1.8.2.tar.bz2"
  2252. curl -LO https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.2.tar.bz2
  2253. curl -LO https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.2.tar.bz2.sig
  2254. checkPGPSig libgcrypt-1.8.2.tar.bz2.sig libgcrypt-1.8.2.tar.bz2
  2255. else
  2256. echo "Using existing gcrypt"
  2257. fi
  2258. sudo rm -rf libgcrypt-1.8.2
  2259. tar xjvf libgcrypt-1.8.2.tar.bz2
  2260. WORKING_DIR="libgcrypt-1.8.2"
  2261. PKG_NAME="libgcrypt"
  2262. PKG_VERSION="1.8.2-1"
  2263. cd "$WORKING_DIR"
  2264. }
  2265. patchGcrypt() {
  2266. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2267. if [ "$PKG_VERSION" == "1.8.2-1" ]; then
  2268. cat tests/random.c | head -n 39 > random.patched.c
  2269. echo "#include <stdint.h>" >> random.patched.c
  2270. echo "#include <stdio.h>" >> random.patched.c
  2271. echo "#include <stdlib.h>" >> random.patched.c
  2272. echo "#include <spawn.h>" >> random.patched.c
  2273. echo "#include <sys/wait.h>" >> random.patched.c
  2274. echo "#include <sys/stat.h>" >> random.patched.c
  2275. echo "" >> random.patched.c
  2276. echo "extern char **environ;" >> random.patched.c
  2277. echo "" >> random.patched.c
  2278. fixSystem "random.patched.c"
  2279. cat tests/random.c | tail -n 727 | sed 's/system (cmdline)/RunCmd(cmdline)/g' >> random.patched.c
  2280. cp random.patched.c tests/random.c
  2281. fi
  2282. fi
  2283. }
  2284. #gcrypt
  2285. buildGcrypt() {
  2286. downloadGcrypt
  2287. patchGcrypt
  2288. #TODO: Doesn't like aarch64-apple-darwin, but may build with it with minor changes.
  2289. 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/"
  2290. make -j8 DESTDIR="$SKEL_PREFIX" install
  2291. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dumpsexp"
  2292. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/hmac256"
  2293. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/mpicalc"
  2294. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libgcrypt.20.dylib"
  2295. #make clean
  2296. initDebStructure
  2297. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  2298. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/dumpsexp"
  2299. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/hmac256"
  2300. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/mpicalc"
  2301. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgcrypt.20.dylib"
  2302. #Get rid of cross-compile artifacts
  2303. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgcrypt.la"
  2304. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgcrypt.la--"
  2305. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2306. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2307. echo "Section: Security" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2308. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2309. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2310. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2311. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2312. echo "Depends: libgpg-error" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2313. echo "Description: LGPL cryptographic algorithm library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2314. echo "Name: GNU Cryptography" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2315. echo "Homepage: https://www.gnupg.org/related_software/libgcrypt/" >> deb/DEBIAN/control
  2316. #Build the doc deb
  2317. 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"
  2318. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  2319. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/info" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2320. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/man" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2321. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  2322. #Build the dev deb
  2323. 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"
  2324. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share"
  2325. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin"
  2326. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2327. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/libgcrypt-config" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/bin/"
  2328. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/aclocal" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  2329. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2330. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libgcrypt.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2331. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share"
  2332. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2333. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2334. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2335. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2336. dpkg -b deb
  2337. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2338. dpkg -b deb-doc
  2339. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2340. dpkg -b deb-dev
  2341. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2342. createListFile
  2343. cd "$BUILD_ROOT"
  2344. }
  2345. #Download libkbsa
  2346. downloadKSBA() {
  2347. if [ ! -e libksba-1.3.5.tar.bz2 ]; then
  2348. echo "Downloading libksba-1.3.5.tar.bz2"
  2349. curl -LO https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2
  2350. curl -LO https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2.sig
  2351. checkPGPSig libksba-1.3.5.tar.bz2.sig libksba-1.3.5.tar.bz2
  2352. else
  2353. echo "Using existing libksba"
  2354. fi
  2355. sudo rm -rf libksba-1.3.5
  2356. tar xjvf libksba-1.3.5.tar.bz2
  2357. WORKING_DIR="libksba-1.3.5"
  2358. PKG_NAME="libksba"
  2359. PKG_VERSION="1.3.5-1"
  2360. cd "$WORKING_DIR"
  2361. }
  2362. #libkbsa
  2363. buildKSBA() {
  2364. downloadKSBA
  2365. if [ "$ARCH" == "arm64" ]; then
  2366. 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"
  2367. else
  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=arm-apple-darwin --with-libgpg-error-prefix="$SKEL_PREFIX/$ROOT_PREFIX"
  2369. fi
  2370. make -j8 DESTDIR="$SKEL_PREFIX" install
  2371. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libksba.8.dylib"
  2372. initDebStructure
  2373. make -j8 DESTDIR="$BUILD_ROOT/libksba-1.3.5/deb" install
  2374. codesign "deb/$ROOT_PREFIX/lib/libksba.8.dylib"
  2375. #Get rid of cross-compile artifacts
  2376. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libksba.la"
  2377. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libksba.la--"
  2378. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2379. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2380. echo "Section: Security" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2381. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2382. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2383. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2384. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2385. #echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2386. echo "Depends: libgpg-error" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2387. echo "Description: GnuPG's certification management library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2388. echo "Name: KSBA" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2389. echo "Homepage: https://www.gnupg.org/related_software/libksba/" >> deb/DEBIAN/control
  2390. #Build the doc deb
  2391. 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"
  2392. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  2393. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/info" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2394. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  2395. #Build the dev deb
  2396. 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"
  2397. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share"
  2398. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2399. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2400. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2401. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/aclocal" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  2402. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libksba.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2403. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share"
  2404. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2405. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2406. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2407. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2408. dpkg -b deb
  2409. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2410. dpkg -b deb-doc
  2411. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2412. dpkg -b deb-dev
  2413. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2414. createListFile
  2415. cd "$BUILD_ROOT"
  2416. }
  2417. #Download npth
  2418. downloadNpth() {
  2419. if [ ! -e npth-1.5.tar.bz2 ]; then
  2420. echo "Downloading npth-1.5.tar.bz2"
  2421. curl -LO https://www.gnupg.org/ftp/gcrypt/npth/npth-1.5.tar.bz2
  2422. curl -LO https://www.gnupg.org/ftp/gcrypt/npth/npth-1.5.tar.bz2.sig
  2423. checkPGPSig npth-1.5.tar.bz2.sig npth-1.5.tar.bz2
  2424. else
  2425. echo "Using existing npth"
  2426. fi
  2427. sudo rm -rf npth-1.5
  2428. tar xjvf npth-1.5.tar.bz2
  2429. WORKING_DIR="npth-1.5"
  2430. PKG_NAME="libnpth"
  2431. PKG_VERSION="1.5-1"
  2432. cd "$WORKING_DIR"
  2433. }
  2434. patchNpth() {
  2435. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2436. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' config.h.in
  2437. if [ "$PKG_VERSION" == "1.5-1" ]; then
  2438. cat src/npth.c | head -n 19 > npth.patched.c
  2439. echo "#include <stdint.h>" >> npth.patched.c
  2440. echo "#include <stdio.h>" >> npth.patched.c
  2441. echo "#include <stdlib.h>" >> npth.patched.c
  2442. echo "#include <spawn.h>" >> npth.patched.c
  2443. echo "#include <sys/wait.h>" >> npth.patched.c
  2444. echo "" >> npth.patched.c
  2445. echo "extern char **environ;" >> npth.patched.c
  2446. echo "" >> npth.patched.c
  2447. cat src/npth.c | tail -n 757 | head -n 537 >> npth.patched.c
  2448. fixSystem "npth.patched.c"
  2449. cat src/npth.c | tail -n 220 | sed 's/system(cmd)/RunCmd(cmd)/g' >> npth.patched.c
  2450. cp npth.patched.c src/npth.c
  2451. fi
  2452. fi
  2453. }
  2454. #npth
  2455. buildNpth() {
  2456. downloadNpth
  2457. patchNpth
  2458. if [ "$ARCH" == "arm64" ]; then
  2459. 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
  2460. else
  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=arm-apple-darwin
  2462. fi
  2463. make -j8 DESTDIR="$SKEL_PREFIX" install
  2464. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libnpth.0.dylib"
  2465. initDebStructure
  2466. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  2467. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libnpth.0.dylib"
  2468. #Get rid of cross-compile artifacts
  2469. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libnpth.la"
  2470. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libnpth.la--"
  2471. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2472. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2473. echo "Section: Development" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2474. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2475. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2476. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2477. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2478. #echo "Depends: grep, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2479. echo "Description: portable threading library used by X" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2480. echo "Name: The New GNU Portable Threads Library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2481. echo "Homepage: https://www.gnupg.org/software/npth" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2482. #Build the doc deb
  2483. #No files
  2484. #Build the dev deb
  2485. 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"
  2486. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2487. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2488. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2489. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2490. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libnpth.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2491. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2492. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2493. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2494. dpkg -b deb
  2495. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2496. dpkg -b deb-dev
  2497. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2498. createListFile
  2499. cd "$BUILD_ROOT"
  2500. }
  2501. #Download libassuan
  2502. downloadAssuan() {
  2503. if [ ! -e libassuan-2.5.1.tar.bz2 ]; then
  2504. echo "Downloading libassuan-2.5.1.tar.bz2"
  2505. curl -LO https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.1.tar.bz2
  2506. curl -LO https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.1.tar.bz2.sig
  2507. checkPGPSig libassuan-2.5.1.tar.bz2.sig libassuan-2.5.1.tar.bz2
  2508. else
  2509. echo "Using existing libassuan"
  2510. fi
  2511. sudo rm -rf libassuan-2.5.1
  2512. tar xjvf libassuan-2.5.1.tar.bz2
  2513. WORKING_DIR="libassuan-2.5.1"
  2514. PKG_NAME="libassuan"
  2515. PKG_VERSION="2.5.1-1"
  2516. cd "$WORKING_DIR"
  2517. }
  2518. #libassuan
  2519. buildAssuan() {
  2520. downloadAssuan
  2521. if [ "$ARCH" == "arm64" ]; then
  2522. 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/"
  2523. else
  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=arm-apple-darwin --with-gpg-error-prefix="$SKEL_PREFIX/$ROOT_PREFIX/"
  2525. fi
  2526. make -j8 DESTDIR="$SKEL_PREFIX" install
  2527. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libassuan.0.dylib"
  2528. #Get rid of cross-compile artifacts
  2529. sed -i -- "s|$SKEL_PREFIX||g" "$SKEL_PREFIX/$ROOT_PREFIX/lib/libassuan.la"
  2530. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/lib/libassuan.la--"
  2531. initDebStructure
  2532. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  2533. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libassuan.0.dylib"
  2534. #Get rid of cross-compile artifacts
  2535. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libassuan.la"
  2536. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libassuan.la--"
  2537. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2538. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2539. echo "Section: Development" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2540. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2541. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2542. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2543. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2544. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2545. echo "Depends: libnpth" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2546. echo "Description: GnuPG's inter-process communication" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2547. echo "Name: Assuan" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2548. echo "Homepage: https://www.gnupg.org/related_software/libassuan/index.en.html" >> deb/DEBIAN/control
  2549. #Build the doc deb
  2550. 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"
  2551. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share"
  2552. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/info" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/"
  2553. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  2554. #Build the dev deb
  2555. 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"
  2556. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share"
  2557. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2558. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2559. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2560. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/aclocal" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/share/"
  2561. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libassuan.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2562. rmdir "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share"
  2563. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2564. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2565. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2566. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2567. dpkg -b deb
  2568. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2569. dpkg -b deb-doc
  2570. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2571. dpkg -b deb-dev
  2572. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2573. createListFile
  2574. cd "$BUILD_ROOT"
  2575. }
  2576. #Download ntbtls
  2577. downloadNtbtls() {
  2578. if [ ! -e ntbtls-0.1.2.tar.bz2 ]; then
  2579. echo "Downloading ntbtls-0.1.2.tar.bz2"
  2580. curl -LO https://www.gnupg.org/ftp/gcrypt/ntbtls/ntbtls-0.1.2.tar.bz2
  2581. curl -LO https://www.gnupg.org/ftp/gcrypt/ntbtls/ntbtls-0.1.2.tar.bz2.sig
  2582. checkPGPSig ntbtls-0.1.2.tar.bz2.sig ntbtls-0.1.2.tar.bz2
  2583. else
  2584. echo "Using existing ntbtls"
  2585. fi
  2586. sudo rm -rf ntbtls-0.1.2
  2587. tar xjvf ntbtls-0.1.2.tar.bz2
  2588. WORKING_DIR="ntbtls-0.1.2"
  2589. PKG_NAME="libntbtls"
  2590. PKG_VERSION="0.1.2-1"
  2591. cd "$WORKING_DIR"
  2592. }
  2593. patchNtbtls() {
  2594. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2595. # this is required because prior dependencies write /$ROOT_PREFIX/lib/libgpg-error.la as a dependency in the .la file
  2596. 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"
  2597. 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"
  2598. rm -f "$SKEL_PREFIX/$ROOT_PREFIX/lib/libgcrypt.la--"
  2599. rm -f "$SKEL_PREFIX/$ROOT_PREFIX/lib/libksba.la--"
  2600. fi
  2601. }
  2602. #ntbtls
  2603. buildNtbtls() {
  2604. downloadNtbtls
  2605. patchNtbtls
  2606. if [ "$ARCH" == "arm64" ]; then
  2607. 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"
  2608. else
  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=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"
  2610. fi
  2611. make -j8 DESTDIR="$SKEL_PREFIX" install
  2612. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libntbtls.0.dylib"
  2613. initDebStructure
  2614. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/" install
  2615. codesign "deb/$ROOT_PREFIX/lib/libntbtls.0.dylib"
  2616. #Get rid of cross-compile artifacts
  2617. sed -i -- "s|$SKEL_PREFIX||g" "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libntbtls.la"
  2618. rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libntbtls.la--"
  2619. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2620. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2621. echo "Section: Security" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2622. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2623. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2624. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2625. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2626. echo "Depends: libgcrypt, libksba" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2627. echo "Description: a tiny TLS 1.2 only implementation designed to be used with Libgcrypt and LibKSBA" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2628. echo "Name: The Not Too Bad TLS Library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2629. echo "Homepage: https://www.gnupg.org/related_software/ntbtls/index.en.html" >> deb/DEBIAN/control
  2630. #Build the doc deb
  2631. #No files
  2632. #Build the dev deb
  2633. 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"
  2634. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib"
  2635. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2636. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2637. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2638. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libntbtls.la" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/lib/"
  2639. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2640. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2641. dpkg -b deb
  2642. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2643. dpkg -b deb-dev
  2644. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2645. createListFile
  2646. cd "$BUILD_ROOT"
  2647. }
  2648. #Download gpg
  2649. downloadGpg() {
  2650. if [ ! -e gnupg-2.2.3.tar.bz2 ]; then
  2651. echo "Downloading gnupg-2.2.3.tar.bz2"
  2652. curl -LO https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.3.tar.bz2
  2653. curl -LO https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.3.tar.bz2.sig
  2654. checkPGPSig gnupg-2.2.3.tar.bz2.sig gnupg-2.2.3.tar.bz2
  2655. else
  2656. echo "Using existing gpg"
  2657. fi
  2658. sudo rm -rf gnupg-2.2.3
  2659. tar xjvf gnupg-2.2.3.tar.bz2
  2660. WORKING_DIR="gnupg-2.2.3"
  2661. PKG_NAME="gnupg"
  2662. PKG_VERSION="2.2.3-1"
  2663. cd "$WORKING_DIR"
  2664. }
  2665. patchGpg() {
  2666. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2667. if [ "$PKG_VERSION" == "2.2.3-1" ]; then
  2668. cat "g10/exec.c" | head -n 54 > "exec.patched.c"
  2669. echo "#include <stdint.h>" >> "exec.patched.c"
  2670. echo "#include <stdio.h>" >> "exec.patched.c"
  2671. echo "#include <stdlib.h>" >> "exec.patched.c"
  2672. echo "#include <spawn.h>" >> "exec.patched.c"
  2673. echo "#include <sys/wait.h>" >> "exec.patched.c"
  2674. echo "" >> "exec.patched.c"
  2675. echo "extern char **environ;" >> "exec.patched.c"
  2676. echo "" >> "exec.patched.c"
  2677. cat "g10/exec.c" | head -n 111 | tail -n 57 >> "exec.patched.c"
  2678. fixSystem "exec.patched.c"
  2679. cat "g10/exec.c" | tail -n 524 | sed 's/=system(info->command)/=RunCmd(info->command)/g' >> "exec.patched.c"
  2680. cp "exec.patched.c" "g10/exec.c"
  2681. fi
  2682. fi
  2683. }
  2684. #gpg
  2685. buildGpg() {
  2686. downloadGpg
  2687. patchGpg
  2688. if [ "$ARCH" == "arm64" ]; then
  2689. 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/"
  2690. else
  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=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/"
  2692. fi
  2693. make -j8 DESTDIR="$SKEL_PREFIX" install
  2694. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dirmngr"
  2695. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/dirmngr-client"
  2696. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpg"
  2697. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpg-agent"
  2698. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpg-connect-agent"
  2699. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpgconf"
  2700. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpgparsemail"
  2701. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpgscm"
  2702. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpgsm"
  2703. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpgtar"
  2704. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpgv"
  2705. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/kbxutil"
  2706. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/watchgnupg"
  2707. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/gpg-check-pattern"
  2708. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/gpg-preset-passphrase"
  2709. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/gpg-protect-tool"
  2710. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/gpg-wks-client"
  2711. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/scdaemon"
  2712. initDebStructure
  2713. make -j8 install DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb/"
  2714. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/dirmngr"
  2715. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/dirmngr-client"
  2716. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpg"
  2717. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpg-agent"
  2718. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpg-connect-agent"
  2719. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpgconf"
  2720. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpgparsemail"
  2721. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpgscm"
  2722. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpgsm"
  2723. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpgtar"
  2724. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/gpgv"
  2725. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/kbxutil"
  2726. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/watchgnupg"
  2727. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/gpg-check-pattern"
  2728. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/gpg-preset-passphrase"
  2729. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/gpg-protect-tool"
  2730. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/gpg-wks-client"
  2731. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/scdaemon"
  2732. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2733. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2734. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2735. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2736. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2737. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2738. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2739. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2740. echo "Depends: libgcrypt, libnpth, libassuan, libksba, libntbtls" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2741. echo "Description: newer encryption compatible with OpenPGP" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2742. echo "Name: GNU Privacy Guard" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2743. echo "Homepage: http://www.gnupg.org/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2744. #Build the doc deb
  2745. 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"
  2746. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2747. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share" "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/"
  2748. rm "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX/share/info/dir"
  2749. #Build the dev deb
  2750. #No files
  2751. #rm -rf "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/share/info"
  2752. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2753. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2754. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-doc/$ROOT_PREFIX"
  2755. dpkg -b deb
  2756. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2757. dpkg -b deb-doc
  2758. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2759. createListFile
  2760. cd "$BUILD_ROOT"
  2761. }
  2762. #Download apt
  2763. downloadApt() {
  2764. if [ ! -d apt ]; then
  2765. echo "Downlading apt"
  2766. git clone https://git.nito.tv/NitoTV/apt.git
  2767. else
  2768. echo "Using existing apt"
  2769. fi
  2770. WORKING_DIR="apt"
  2771. PKG_NAME="apt7"
  2772. PKG_VERSION="0.7.25.3-1"
  2773. cd "$WORKING_DIR"
  2774. sudo rm -rf build
  2775. mkdir build
  2776. cd build
  2777. WORKING_DIR="$WORKING_DIR/build"
  2778. }
  2779. patchAPT() {
  2780. if [ "$PLATFORM" == "AppleTVOS" ]; then
  2781. sed -i -- '/^INCLUDE_DIRECTORIES/d' ../CMakeLists.txt
  2782. sed -i -- '/^LINK_DIRECTORIES/d' ../CMakeLists.txt
  2783. cat ../CMakeLists.txt | head -n 15 > newCmakeLists.txt
  2784. echo "INCLUDE_DIRECTORIES($SKEL_PREFIX/$ROOT_PREFIX/include)" >> newCmakeLists.txt
  2785. echo "LINK_DIRECTORIES($SKEL_PREFIX/$ROOT_PREFIX/lib)" >> newCmakeLists.txt
  2786. echo "" >> newCmakeLists.txt
  2787. cat ../CMakeLists.txt | tail -n 217 >> newCmakeLists.txt
  2788. mv newCmakeLists.txt ../CmakeLists.txt
  2789. #sed -i -- "s|/Users/jaywalker/RnD/ATV/packages/test/skel/|$SKEL_PREFIX/|g" ../CMakeLists.txt
  2790. fi
  2791. }
  2792. #apt
  2793. buildAPT() {
  2794. downloadApt
  2795. patchAPT
  2796. 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" ..
  2797. sed -i -- "s|#define COMMON_ARCH \"darwin-amd64\"|#define COMMON_ARCH \"$PLATFORM_LOWER-$ARCH\"|" include/config.h
  2798. make -j8 DESTDIR="$SKEL_PREFIX" install
  2799. #lzma conflicts with built in libraries we make -j8 an extra copy of our version of lzma in the xz build process
  2800. #here we change libapt-pkg*.dylib to look for this version instead
  2801. #if we do not do this, apt-get will fail from our helper tool
  2802. 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
  2803. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt"
  2804. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-cache"
  2805. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-cdrom"
  2806. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-config"
  2807. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-ftparchive"
  2808. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-get"
  2809. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-mark"
  2810. codesign "$SKEL_PREFIX/$ROOT_PREFIX/bin/apt-sortpkgs"
  2811. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libapt-inst.2.0.0.dylib"
  2812. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libapt-pkg.5.0.1.dylib"
  2813. codesign "$SKEL_PREFIX/$ROOT_PREFIX/lib/libapt-private.0.0.0.dylib"
  2814. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/apt-helper"
  2815. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/cdrom"
  2816. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/copy"
  2817. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/file"
  2818. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/ftp"
  2819. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/gpgv"
  2820. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/http"
  2821. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/https"
  2822. #codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/mirror"
  2823. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/rred"
  2824. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/rsh"
  2825. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/methods/store"
  2826. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/planners/apt"
  2827. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/solvers/apt"
  2828. codesign "$SKEL_PREFIX/$ROOT_PREFIX/libexec/apt/solvers/dump"
  2829. initDebStructure
  2830. make -j8 DESTDIR="$BUILD_ROOT/$WORKING_DIR/deb" install
  2831. #lzma conflicts with built in libraries we make -j8 an extra copy of our version of lzma in the xz build process
  2832. #here we change libapt-pkg*.dylib to look for this version instead
  2833. #if we do not do this, apt-get will fail from our helper tool
  2834. 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
  2835. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt"
  2836. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-cache"
  2837. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-cdrom"
  2838. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-config"
  2839. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-ftparchive"
  2840. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-get"
  2841. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-mark"
  2842. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/apt-sortpkgs"
  2843. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libapt-inst.2.0.0.dylib"
  2844. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libapt-pkg.5.0.1.dylib"
  2845. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/lib/libapt-private.0.0.0.dylib"
  2846. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/apt-helper"
  2847. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/cdrom"
  2848. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/copy"
  2849. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/file"
  2850. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/ftp"
  2851. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/gpgv"
  2852. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/http"
  2853. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/https"
  2854. #codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/mirror"
  2855. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/rred"
  2856. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/rsh"
  2857. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/methods/store"
  2858. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/planners/apt"
  2859. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/solvers/apt"
  2860. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/libexec/apt/solvers/dump"
  2861. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2862. echo "Priority: standard" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2863. echo "Section: Packaging" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2864. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2865. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2866. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2867. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2868. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2869. echo "Depends: sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2870. echo "Description: the advanced packaging tool from Debian" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2871. echo "Name: APT 0.7 Strict" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2872. echo "Homepage: https://wiki.debian.org/Apt" >> deb/DEBIAN/control
  2873. #Build the dev deb
  2874. 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"
  2875. mkdir -p "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2876. mv "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/include" "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX/"
  2877. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2878. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/etc"
  2879. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX"
  2880. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb/var"
  2881. sudo chown -R root:wheel "$BUILD_ROOT/$WORKING_DIR/deb-dev/$ROOT_PREFIX"
  2882. dpkg -b deb
  2883. mv deb.deb "$BUILD_ROOT/${PKG_NAME}_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2884. dpkg -b deb-dev
  2885. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2886. createListFile
  2887. cd "$BUILD_ROOT"
  2888. }
  2889. buildAPTAndDependencies() {
  2890. notifyProgress "Building gpg-error"
  2891. buildGpgError
  2892. notifyProgress "Building gcrypt"
  2893. buildGcrypt
  2894. notifyProgress "Building KSBA"
  2895. buildKSBA
  2896. notifyProgress "Building npth"
  2897. buildNpth
  2898. notifyProgress "Building Assuan"
  2899. buildAssuan
  2900. notifyProgress "Building ntbtls"
  2901. buildNtbtls
  2902. notifyProgress "Building gpg"
  2903. buildGpg
  2904. notifyProgress "Building apt"
  2905. buildAPT
  2906. }
  2907. #===============
  2908. #Dead Packages
  2909. #---------------
  2910. downloadGnuTLS() {
  2911. #http://gnu.mirrors.pair.com/gnutls/gnutls-3.1.5.tar.xz
  2912. if [ ! -e gnutls-3.1.5.tar.xz ]; then
  2913. echo "Downloading gnutls-3.1.5.tar.xz"
  2914. curl -LO http://gnu.mirrors.pair.com/gnutls/gnutls-3.1.5.tar.xz
  2915. curl -LO http://gnu.mirrors.pair.com/gnutls/gnutls-3.1.5.tar.xz.sig
  2916. checkPGPSig gnutls-3.1.5.tar.xz.sig gnutls-3.1.5.tar.xz
  2917. else
  2918. echo "Using existing gnutls"
  2919. fi
  2920. rm -rf gnutls-3.1.5
  2921. tar xJvf gnutls-3.1.5.tar.xz
  2922. }
  2923. buildGnuTLS() {
  2924. pthname="gnutls-3.1.5"
  2925. downloadGnuTLS
  2926. cd $pthname
  2927. 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
  2928. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' config.h.in
  2929. make clean
  2930. make -j8 DESTDIR="$SKEL_PREFIX" install
  2931. make clean
  2932. mkdir deb
  2933. 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
  2934. sed -i -- 's|#undef HAVE_CLOCK_GETTIME||' config.h.in
  2935. make -j8 DESTDIR="$BUILD_ROOT/$pthname/deb" install
  2936. mkdir -p deb/DEBIAN
  2937. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2938. echo "Priority: optional" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2939. echo "Section: Development" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2940. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2941. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2942. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2943. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2944. #echo "Depends: grep, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2945. echo "Description: portable threading library used by X" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2946. echo "Name: The New GNU Portable Threads Library" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2947. echo "Homepage: https://www.gnupg.org/software/npth" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2948. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2949. dpkg -b deb
  2950. mv deb.deb "$BUILD_ROOT/gnutls-3.5.1-1_${PLATFORM_LOWER}-$ARCH.deb"
  2951. dpkg -b deb-doc
  2952. mv deb-doc.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-doc_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2953. dpkg -b deb-dev
  2954. mv deb-dev.deb "$BUILD_ROOT/extra_pkg/${PKG_NAME}-dev_${PKG_VERSION}_${PLATFORM_LOWER}-$ARCH.deb"
  2955. cd ..
  2956. }
  2957. downloadGzip() {
  2958. if [ ! -e gzip-1.8.tar.xz]; then
  2959. echo "Downloading gzip-1.8.tar.xz"
  2960. curl -LO http://mirror.keystealth.org/gnu/gzip/gzip-1.8.tar.xz
  2961. curl -LO http://mirror.keystealth.org/gnu/gzip/gzip-1.8.tar.xz.sig
  2962. checkPGPSig gzip-1.8.tar.xz.sig gzip-1.8.tar.xz
  2963. else
  2964. echo "Using existing gzip"
  2965. fi
  2966. rm -rf gzip-1.8
  2967. tar xJvf gzip-1.8.tar.xz
  2968. }
  2969. buildGzip() {
  2970. downloadGzip
  2971. cd gzip-1.8
  2972. 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
  2973. make -j8 DESTDIR=$SKEL_PREFIX install
  2974. initDebStructure
  2975. 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
  2976. make -j8 DESTDIR=$BUILD_ROOT/gzip-1.8/deb install
  2977. mkdir -p deb/DEBIAN
  2978. echo "Package: $PKG_NAME" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2979. echo "Priority: required" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2980. echo "Section: Archiving" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2981. #echo "Installed-Size: 724" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2982. echo "$MAINTAINER" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2983. echo "Architecture: $PLATFORM_LOWER-$ARCH" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2984. echo "Version: $PKG_VERSION" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2985. echo "Pre-Depends: dpkg (>= 1.14.25-8)" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2986. #echo "Depends: grep, sed" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2987. echo "Description: the standard Unix compression algorithm" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2988. #echo "Name: Diff Utilities" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2989. echo "Homepage: http://www.gzip.org/" >> "$BUILD_ROOT/$WORKING_DIR/deb/DEBIAN/control"
  2990. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/cmp"
  2991. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/diff"
  2992. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/diff3"
  2993. codesign "$BUILD_ROOT/$WORKING_DIR/deb/$ROOT_PREFIX/bin/sdiff"
  2994. find "$BUILD_ROOT/$WORKING_DIR/deb/" -type f -name '*.a' -delete
  2995. dpkg -b deb
  2996. mv deb.deb "$BUILD_ROOT/gzip-1.8-1_${PLATFORM_LOWER}-$ARCH.deb"
  2997. createListFile
  2998. cd "$BUILD_ROOT"
  2999. }
  3000. ######################################################################################
  3001. # can download and repackage substrate (mostly, still may need a modified extrainst_ script)
  3002. installSubstrate() {
  3003. if [ ! -e mobilesubstrate_0.9.6301_iphoneos-arm.deb ]; then
  3004. curl -LO http://apt.saurik.com/debs/com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb
  3005. checkSHA256 com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb 86515cb9f6832247dbeae8427b996099dc8759bb1ef1d719c293123f2f531ee1
  3006. #curl -LO http://apt.saurik.com/debs/mobilesubstrate_0.9.6301_iphoneos-arm.deb
  3007. #checkSHA256 mobilesubstrate_0.9.6301_iphoneos-arm.deb 8dc91a066f088632409fecf65613831b8d6802e3b799f2dc87563c3ea2ed06ca
  3008. curl -LO http://nitosoft.com/repo/deb/mobilesubstrate_0.9.6301_appletvos-arm64.deb
  3009. fi
  3010. initDebStructure
  3011. #dpkg-deb -e mobilesubstrate_0.9.6301_iphoneos-arm.deb deb/DEBIAN
  3012. #dpkg-deb -x mobilesubstrate_0.9.6301_iphoneos-arm.deb deb
  3013. #sed -i -- "s|iphoneos-arm|${PLATFORM_LOWER}-$ARCH|" deb/DEBIAN/control
  3014. dpkg-deb -e mobilesubstrate_0.9.6301_appletvos-arm64.deb deb/DEBIAN
  3015. dpkg-deb -x mobilesubstrate_0.9.6301_appletvos-arm64.deb deb
  3016. PKG_NAME="mobilesubstrate"
  3017. PKG_VERSION="0.9.6301"
  3018. createListFile
  3019. #dpkg -b deb
  3020. #mv deb.deb "mobilesubstrate_0.9.6301_${PLATFORM_LOWER}-$ARCH.deb"
  3021. #dpkg-deb -e com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb deb/DEBIAN
  3022. initDebStructure
  3023. dpkg-deb -e com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb deb/DEBIAN
  3024. dpkg-deb -x com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb deb
  3025. sed -i -- "s|iphoneos-arm|${PLATFORM_LOWER}-$ARCH|" deb/DEBIAN/control
  3026. PKG_NAME="com.saurik.substrate.safemode"
  3027. PKG_VERSION="0.9.6001"
  3028. createListFile
  3029. dpkg -b deb
  3030. mv deb.deb "com.saurik.substrate.safemode_0.9.6001_${PLATFORM_LOWER}-$ARCH.deb"
  3031. rm com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb
  3032. dpkg-deb -x "com.saurik.substrate.safemode_0.9.6001_${PLATFORM_LOWER}-$ARCH.deb" "$SKEL_PREFIX/"
  3033. dpkg-deb -x "mobilesubstrate_0.9.6301_${PLATFORM_LOWER}-$ARCH.deb" "$SKEL_PREFIX/"
  3034. #dpkg-deb -x com.saurik.substrate.safemode_0.9.6001_iphoneos-arm.deb
  3035. }
  3036. #main functions
  3037. #main
  3038. #Entry Point
  3039. echo "Cleaning the slate"
  3040. sudo rm -rf skel extra_pkg
  3041. mkdir -p skel/etc
  3042. mkdir extra_pkg
  3043. # Ensure our SDK has all the required "extras" installed/setup
  3044. prepSDK
  3045. #Begin Building
  3046. #DO NOT BUILD THE 11 UTILS IN UNTIL YOU ARE BUILDING EXPLICITLY FOR 11+
  3047. #/bin/bash exists on 9 and 10 and if overwritten without unthether will likely brick.
  3048. if [ "$BUILD_BASH" == "true" ]; then
  3049. buildBashAndFriends
  3050. fi
  3051. buildBasicUtils
  3052. buildDPKGAndDependencies
  3053. buildAPTAndDependencies
  3054. #installSubstrate
  3055. #rm -rf deb
  3056. #mkdir -p deb/DEBIAN
  3057. #dpkg-deb -x nitoTVLatest.deb deb
  3058. #dpkg-deb -e nitoTVLatest.deb deb/DEBIAN
  3059. #createListFile "com.nito.nitoTV4"
  3060. #dpkg-deb -x nitoTVLatest.deb "$SKEL_PREFIX"
  3061. if [ "$NITOTV" == "true" ]; then
  3062. installSubstrate
  3063. mkdir nitotv
  3064. cd nitotv
  3065. WORKING_DIR="nitotv"
  3066. rm -rf deb
  3067. mkdir -p deb/DEBIAN
  3068. dpkg-deb -x nitotv_2.0-26_appletvos-arm64.deb deb
  3069. dpkg-deb -e nitotv_2.0-26_appletvos-arm64.deb deb/DEBIAN
  3070. PKG_NAME="com.nito.nitotv4"
  3071. PKG_VERSION="2.0-26"
  3072. createListFile
  3073. dpkg-deb -x nitotv_2.0-26_appletvos-arm64.deb "$SKEL_PREFIX"
  3074. rm -rf deb
  3075. mkdir -p deb/DEBIAN
  3076. dpkg-deb -x com.nito.tssagent_1.0-appletvos-arm64.deb deb
  3077. dpkg-deb -e com.nito.tssagent_1.0-appletvos-arm64.deb deb/DEBIAN
  3078. PKG_NAME="com.nito.tssagent"
  3079. PKG_VERSION="1.0"
  3080. createListFile
  3081. dpkg-deb -x com.nito.tssagent_1.0-appletvos-arm64.deb "$SKEL_PREFIX"
  3082. rm -rf deb
  3083. mkdir -p deb/DEBIAN
  3084. dpkg-deb -x com.nito.uicache_0.0.1-245_appletvos-arm64.deb deb
  3085. dpkg-deb -e com.nito.uicache_0.0.1-245_appletvos-arm64.deb deb/DEBIAN
  3086. PKG_NAME="com.nito.uicache"
  3087. PKG_VERSION="0.0.1-245"
  3088. createListFile
  3089. dpkg-deb -x com.nito.uicache_0.0.1-245_appletvos-arm64.deb "$SKEL_PREFIX"
  3090. fi
  3091. createStatusFile
  3092. #clean out frivolous stuff to slim skel down to a reasonable size
  3093. find "$SKEL_PREFIX" -type f -name .DS_Store -delete
  3094. mkdir -p "$SKEL_PREFIX/private"
  3095. mv "$SKEL_PREFIX/etc" "$SKEL_PREFIX/private/"
  3096. mv "$SKEL_PREFIX/var" "$SKEL_PREFIX/private/"
  3097. #clean out symbolic links that you don't want to overwrite
  3098. unlink "$SKEL_PREFIX/$ROOT_PREFIX/lib/liblzma.dylib"
  3099. unlink "$SKEL_PREFIX/$ROOT_PREFIX/lib/libz.1.dylib"
  3100. unlink "$SKEL_PREFIX/$ROOT_PREFIX/lib/libz.dylib"
  3101. rm "$SKEL_PREFIX/$ROOT_PREFIX/lib/libz.1.2.11.dylib"
  3102. # Get rid of the docs
  3103. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/docs"
  3104. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/doc"
  3105. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/info"
  3106. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/man"
  3107. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/man"
  3108. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/gnupg" #TODO: See if the keys in this folder are needed
  3109. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/readline"
  3110. # Get rid of dev stuff
  3111. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/include"
  3112. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/aclocal"
  3113. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/pkgconfig"
  3114. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/share/common-lisp"
  3115. # remove all the static and libtool libraries from the bootstrap, they take up a LOT of space
  3116. cd "$SKEL_PREFIX/$ROOT_PREFIX/lib"
  3117. rm *.a
  3118. rm *.la
  3119. rmdir "$SKEL_PREFIX/$ROOT_PREFIX/var"
  3120. #Get rid of non-skel packages which were needed to compile
  3121. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/gpg-error-config"
  3122. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/libgcrypt-config"
  3123. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/lib/pkgconfig"
  3124. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/curl-config"
  3125. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/ncurses6-config"
  3126. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/npth-config"
  3127. rm -rf "$SKEL_PREFIX/$ROOT_PREFIX/bin/ntbtls-config"
  3128. # for getting permissions right, try to mimic them as closely as possible to the default ones
  3129. # Still need to do this for debs, but oh well. We just won't use the yet :P
  3130. sudo chown -R root:wheel "$SKEL_PREFIX/$ROOT_PREFIX"
  3131. sudo chown root:admin "$SKEL_PREFIX/private"
  3132. sudo chown -R root:wheel "$SKEL_PREFIX/private/etc"
  3133. sudo chown -R root:wheel "$SKEL_PREFIX/private/var"
  3134. #sudo chmod 6755 "$SKEL_PREFIX/usr/bin/nitoHelper"
  3135. #sudo chmod 6755 "$SKEL_PREFIX/usr/bin/nitoUpdate"
  3136. rm -rf skel.tgz
  3137. cd "$SKEL_PREFIX"
  3138. if [ "$NITOTV" == "true" ]; then
  3139. sudo chown root:admin "$SKEL_PREFIX/Applications"
  3140. sudo chown -R root:wheel "$SKEL_PREFIX/Library"
  3141. sudo chmod 6755 "$SKEL_PREFIX/usr/libexec/goNito"
  3142. sudo tar cpz -P --exclude .DS_Store -f ../skel.tgz Applications usr private Library
  3143. else
  3144. sudo tar cpz -P --exclude .DS_Store -f ../skel.tgz usr private
  3145. fi
  3146. cd "$BUILD_ROOT"
  3147. #reset trap
  3148. trap - INT TERM EXIT
  3149. ls *.deb
  3150. echo "Done"