the_memo.sh 183 KB

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