the_memo.sh 173 KB

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