the_memo.sh 177 KB

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