From fd39635fc5c0b7c39959d94e8dcdbebb94498e00 Mon Sep 17 00:00:00 2001 From: Leroy Hopson Date: Tue, 13 Oct 2020 15:20:40 +0700 Subject: [PATCH] Update build script --- .dockerignore | 3 ++ .gitmodules | 2 - CHANGELOG.md | 2 + README.md | 28 +++++----- .../native/bin/x11/libgodotxtermnative.so | Bin 79479048 -> 79479064 bytes addons/godot_xterm/native/build.sh | 49 +++++++++++------- addons/godot_xterm/native/shell.nix | 11 ++++ docker-compose.yml | 4 +- dockerfiles/archlinux | 6 ++- dockerfiles/ubuntu | 8 ++- 10 files changed, 70 insertions(+), 43 deletions(-) create mode 100644 .dockerignore create mode 100644 addons/godot_xterm/native/shell.nix diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b50f0bc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +addons/godot_xterm/native/external/* +addons/godot_xterm/native/bin/**/* +addons/godot_xterm/native/.sconsign*.dblite diff --git a/.gitmodules b/.gitmodules index 9af9d15..892bf69 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,5 +4,3 @@ [submodule "addons/godot_xterm/libtsm"] path = addons/godot_xterm/native/external/libtsm url = https://github.com/Aetf/libtsm -[submodule "godot-cpp/"] - url = https://github.com/godotengine/godot-cpp diff --git a/CHANGELOG.md b/CHANGELOG.md index f0f3eb0..a64e17a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Changed +- Updated build script (`addons/godot_xterm/native/build.sh`). Git submodules will now be initialized if they haven't already. Moved nix-shell related stuff to a seperate shell.nix file so the same build command can be used on all Linux based OSes. ## [1.0.0] - 2020-10-05 ### Added diff --git a/README.md b/README.md index 78f2a21..530d596 100644 --- a/README.md +++ b/README.md @@ -17,38 +17,34 @@ Terminal emulator for Godot using GDNative and [libtsm](https://github.com/Aetf/ ### All Operating Systems -**Important**: The main dependencies of this project are included as git submodules. -You can install them in this repo after cloning with: -``` -git submodule update --init --recursive -``` -In addition to these, you will need some other dependencies including: +You will need at least these dependencies in order to build this plugin: +- Git (for git submodules) - a C++ compiler (e.g. gcc) - ar (part of GNU Binutils) - CMake - Python - SCons -### Operating System Specific +### Linux #### NixOS -On NixOS you can simply run the [build.sh] script in the `addons/godot_xterm/native` directory: +You can simply run the [build.sh] script in the `addons/godot_xterm/native` directory: ``` -cd addons/godot_xterm/native -./build.sh +addons/godot_xterm/native/build.sh ``` All dependencies will be pulled in by nix-shell and the build steps will run. #### Arch Linux and Ubuntu -See the [Arch Linux Dockerfile](dockerfiles/archlinux) and [Ubuntu Dockerfile](dockerfiles/ubuntu) for a list of packages that need to be installed. Once installed, run the [build.sh] script from the `addons/godot_xterm/native` directory: +See the [Arch Linux Dockerfile](dockerfiles/archlinux) and [Ubuntu Dockerfile](dockerfiles/ubuntu) for a list of packages that need to be installed. Once installed, run the [build.sh] script in the `addons/godot_xterm/native` directory: ``` -cd addons/godot_xterm/native -bash ./build.sh +addons/godot_xterm/native/build.sh ``` -Make sure you use `bash` to run the script as the default interpreter is set to nix-shell. -#### Other -Other operating systems will probably be similar to the above. When in doubt check the documentation in the submodule repos, the [build.sh] script, and the [SConstruct] file. +#### Other Linux Distributions +Will probably be similar to the above. When in doubt check the documentation in the submodule repos, the [build.sh] script, and the [SConstruct] file. + +### Other Operating Systems +This plugin is not currently supported for other operating systems (e.g. MacOS, Windows). If you manage to build it on one of these platforms, please submit a PR for this readme. ## Usage diff --git a/addons/godot_xterm/native/bin/x11/libgodotxtermnative.so b/addons/godot_xterm/native/bin/x11/libgodotxtermnative.so index 1dcc20e0ef6e62c4371e3345e33bef19229c471a..a17dbf3cdfca56910de1517e42a39770c19aef81 100755 GIT binary patch delta 19711 zcmaic2Urxz^Y(Su5+x&|NEXC30D9^v1~6wqF<=HWDp@cf!GLQ38_%#N957-)z%(jK zgJ(E1-Wkq}IScA}p82cZUC#B+-~aP@<^?y*^h|eGz4cZV^JcyFT!BYsJ+fk^GEGU+ zlr&8VX-Y+!(jZM~n5HyJQyQl!P12O6Y07G8O0zVjd79E9O=+2?v`SN2rzvgHl(uQg z>S;>5G-Zu6rG1*RW}32An$jUnSvyVXn5J|}Q#z+9UDA}UX-c;=rF)vPPMXpqP3f7Y zted9vN>kQLQ{tuTrzsnxDI2CK8>K0|)094GO5ZeP<1}THH06(J%BE?`W_y&)uN#vh zm7z&C4?j?aVx6H{@(%EneLe-m?WGg`R=e3;cag5I`9w_A zp*~xURKM?PC;z^yea=`IX+Wfxbqz!3(IhQhu|kbNC zlBz0==#EDZxiq5Zb6SKub%}f^mv=eY6v7Fw9A`~Sh!lOMDVVA1 zt?wz){Dm#8*|EIYKVZ4E=Z-3d*T;e#2~VR!59}ZX#v=@{$;-o(>C>pAH*&eLh@xN!4K~ zT@q9Qk4DM?k4DX348MG&QrkB~ktCfI0!l5Z7{6JD=Pg zA~Ey9;JLP?4ar?TBFsdZ;cW-jJoCUp5=2zWkrQO)$cZ*nU`;bnw_Cj}frrM&ffd5&ZFe~}t#|6JDRLY(ava)9+ z4W}7B)CGgbB}<0_t5FZ`yWk~QQ&qVfDVNJp>Pb*B0OXk+3SJnnZ9^7PzHLZ49o9@f zIwIzB6L=5?>cX`>y|kJ$ zcvz<#cw~_ADUKfcG?@->CO6(N2mp}#E(x&rs~Gy8F(bg zHy$T%bOD(vnAi^dWt~H$RV%rqW9nfa_-Lk(3MV!v-jdbiTGU7#WOKc%)a~t1u#x;9 z1XEk}A)D*Ds&nzF^11k#imA}oLBUIX)5ts`2Q*pfNmR2dXUelHXT6vRE$eDem8AK; zr<6Rf2F;bM?kI_g6dnVL);u7hIj$3)a#uQ9e9c2}Kw zkRhLWu*ftKHZ4?0**DA-&Z@t|7#^AO-(ib=T0`7U1z+4L6CWHe?{O7833uIaf}A0$ z4eJ)m8`k|?8VB=>6_Q)+f#4}szS%-UxZkV;q&1bLhWGmrsW{1*{3tzt98Arn$FmF- zjU?AkufSaO%wdWA%wcJ_9LPGY&~7f-r`i5_3MqA40ePZwJ-k$QJ-lrD7%;o6ki-ZQ zr1WD}#AdB$Kd_a`{~m;sWYNDa=~P^|AK)&YS%0}av%Y#%G|a!F$O^g)-s+&!*+weI z)oR&s^@^3t;O(obHK4*Zfa_q@;7KsxGhRJ0gnCIOExwRIsep7Mo;>>a1h@y1&#cX) zyR`Py1TaxWtzRWatzYdp9Uhw-Xa~&8Eq|v(Ar-V~4#C{JG>$kERYILLazdS~t)b+V z%56@T>^5iZ#WgUpp@CGYJPTebS2sy^b<6&;l?+$8p3atCPv`W@gH2rw*y8$KfiJG# z4I-w<_bS&{`p`f7r~_7So1*IFwn6UYw(+O&5Hi$&FMhF~;$CZ+zEN(OzNuRbc!V2p zaq>q7stDLDM?mh}^^hKCAQuiEw~I;*Unf!$k5`C+lwItiu*I2ZN~)`U zW6NEnfroD#OT4g>MsfM)PB@b!6dtC+`EjQ3u zVHH|o+4k@ue2w|5*IG&IzieO#HiIuF=Jz<6szy~S=K-9jT|BssO}0bR4sT*gZ*z+ZD! zZ2bY5tuK1B9{zAO@uD8mr$KihSDkuwqOmIYP>CFTsC4~g$mngTaX(DBAM`n8oTUiIqhOL2baqeBIgeQof4pki zzAo5<#btPv3+D|rro?Mm&{-oX^G;jZRlDJ(PxyPTRCe?Z?ZgYlJ)!6!8oex&8@)W= zbte3E15YSy1Q#|UjLe<<+uq5)uSkR|&kUu4zh8lqYG1|g^1g}-?uFov-bi?Nd3xf9 zX4*OLLzbs}@RLGYWRPa+sFV+8Qnd|5ppx3)8hD~Qy6K{Pbkn8AqhNuVQI(M}y)3($ z{sG%ymc5b2$7ua@zde7*{q|hx%;1ijkyLO$n0ly6J6@GbJ6;=j21YkA(szm~bc%A2 z&5iogps+0ts%nKdqtY$k17N`;?*)@2A`Nelg7hpg^M;(5d9z>=?CNGDEw-;s6ZoO< z$@H5~cOa_zBhayI{{uBPk`+yvl(~jpWhLRT_cL+*4YGzvrra8{C(D8$8G? zA!}5nPanvoPan3P30HG;&j^jEltxwCqaMlIqaHWh0v+?~{s*p>{5u;x`S_#)LXrH+X{W|*g zin&?P>$Z`0CF3goHH@g#S(UOn>*bhfF!P1x!wJYVM_Ln}dLy2qH!7(0N-n7NdhO{5kIRhY#aIn3g(*hC1iGS(VuE(~>RP#tA|$w%2+>j{uw+gMtB+zZL| zr+07h_*?$;?p?S7djDiBxfUislH{0TsIZap@%JLtt}pN8U0>e!PK42&jWugfg=-Mk z;YTt7jszL&Qv&H~osYy*N-cUza#f`dKFXyJKAoNqH-{VRwqbI@XPl`o^~M7aH|7CI zFn8i&?lB4mQ}*upe9GTFUqIcP@yj&{k($7&$;Mo;v-7X$w-rD763D@3bm9WdTfDOVc2bVcKZp=Bb>+s37n!;HbKvIg zFQ8pho)>07ZZ?6Q%Zw#SI!!eDmmOScK={F>hNQU)>^B+f+>eHXGvRr7rlT<#tbz|a zjrC2oh88gQ4aS7KZ!jUB*OOk%t*a^FZe6R9{;^4C#kz%E;VKCZ7d0IZ(~Ky@1n6E#I3qW zsc36L^z9B4c88Z8y-TB7@L#`JlT|HXw2_HkVDS(0DbjEr6DbvxU@f~of6$*W`&KrD z+qbeM4%5KV*5qF-5*g(DNFoVSZXx%M``m%3cd+?>ENY)E;Zggllj)OSnX`#@y$lNC z@}QuSCN25W;WfyNCS)kHUR;B4>&5m2-oov6Cf}RozQ5GMSq9&pCfb!Qh+IDfD}P%H zN#k1w;x`uJ2WZBn4L2~eJI}MSMx4K zo4lfd>h-O6*{BP;MA$Ol2wJ~`YN%C1LevhZhO~@_=_FYXi0iHAK*X2jT`*mqbjup~? zftr)o6AqRO2RoSTo%|aHPtos3(msR<%E?_nH6x26No|&oP5!`H(GCR|hE0I!F@@IuSGJpvMz1my!*Y&`iV9gIRZIL3npu zP%ook%M5&4BD!QEy5vLR{K$suByUkrD^eVUG5>P7xWQBy-9>~65df8dHY6h&dKH-J z2@9H-RXsd!M_nd`v?W{$@h8bY)5|5ATXdFoAYV6CqZ=|}y`TCM-ur0)G1)u+Snz;XO{RqpB?@V}hd>7I$ z9!zbksd3Dn%<*X#!X2M>C6D9ataCN#Y^fPdlCCdsMBf>G*o@|~zM^wcHXyMl;R6zTk!|7R0;BhP z5l-*-Ci6GYy`hqIP=8VnpLi`rpyWESFNR8~=kJ0&?u7I}+zIJH#6N~)vQ)evPyN(~ zctt>$DViJ8kCN*XHZ-Cy;X@;W$$-hU{T$6Grs()L%X%10c-F&yBz8O*$*k~_+$v}Q znH>#JS5?zQI-eEnN~?R6UukupdQIm={vpJ~mv-FvpS!7|lf#;En{9*0Z%v?EK{YLL zV%2UABD~to!DQ@FIC-*~PQzezHw_`Y?xvw+NiID4qnaMAHc|T@myP(grj({o7T#wV z;o*IT6U&vf-@R|{00$pT)a&{CB_l}r5lF1SOCn8lW*tGkx;6=*3u4{9+ury$IreH2arNP@_-i$VFJ;iIym3JX)fZaPn{xoNsHU zGmu%heR$Th31rO?7}8HW8Vq6bXI;b)MqO#1GJwC>^b?>Z^N=SJ?jcVi@)(#q9KZin zc+ij7HB>|Ay*?JXD73NQNFuj2%|lTl>2x#dCrv!G5GnGrYIy_MI=2YI*SSTKy^Bc& z8?-Bu@Ikwx$dzAV$y75zW}R5y8PT}PXT*@M>*4ThGkt}R35Achb&Vr+)<7?2rgcnA z1nd~KU!YT(^FFU9llDGz;7TcHPdw?t%TZP3Ka+zz8~@vUGik^!4^1Ha^3W-yFqo|2 z^9!aB)7NnGFkyKQL@ zkpk2P=tZ3Fx1}8jdn2J{^hTOb=FWf%OU$*#eUVZoA^cqP&J;OIN{}TgH_X>%0m=7u zSx8oq1+4M@g@iZWpHBXo4i~oJ_{F2nZkmCXtLY+gZyfxz*IZ`;B<9lC}o@tj!KKqc_jGzbsXs!;de$dnx5|cq=zF_GZveAcxGv6a?aBh!ek-U9W*-`V| zdU{4311}AoM>E)9pF~bI0oOnaeO7;xu=omz@c4>sGJPD`&ngGxU=CowI$|6_e;zHp z#Q)-8^z;ZO^avCs){|P3$Z)o$@dm=TG~P%W?|?*=h0guHzqOI@_qR5YU0JYsrN#eH z+U%?RygGZ`DnIso=4Qg5&&(wUr$YB!JQb2aEuS95+uSTAxN^#W$`n$oZ`)kz#~y#q zCH(Q{EySgW_SmC0)K*jy#?6AaMe>_OSeN3hgm)?4Mp7oxk`gZN$=HAi^@W%D?9L%|ScTBkD^OGaJb{iL#Vhf@7rzbO z8k{T^OL0$xB;K4NSUrlJc_9I`J1h8HjLhXTCs#+o^(mHXU#`JmRFj5a-lIwg_a0SB zmQRP%b1n6!kBRBSIXp~~et~MsEVT|x6Oc(g64j{2JiTl~wehSi8?o*e!bhw-LK;km zHR~)jnyz*?vBQo>2|w(3j4a9^Z&;tL#|ZDU^*Gra1J4dwek1g=T<2d2&viaQew{@o zv6!3_gvaEZB$ZQO>P1VTWqGpswN4Q}zt(ADJD2okSr}mQEa?nMUj+BwTIvjVH}A8A zck@0+tkdXg!gKPUkS_|Y1(JjXy3IQ6KSy|{{bi)u6GMJBv~Asejp zH9j6zc$*ydp=)+X;%PXq-O?8Zsk7HE)@H!e5z=B4x#y|fV=*{>F9{Z(Sg#-WNyZ-~ zYR;nX-^QTe{vC2J4lW$9VmVQ%z;mKzfMb_%=Z(KiBP{jOL)?&;9ue0_>Up^jjgrLf(d7V9^(c1Z7a35V~t}f2tp-# zrv3d@e=9EiC3gD4u-VF&*^DUOlVLj zMEyznMFHtcWvQ2I!8(k?hPgj<2dDUoKT~9SaeW# zeqG93@Ng!0IFfOoJtl+YDQgiMB}tzx{zk!Aq(XC9`>jBE`>hHZ8Uc+j;aD*9=EY9i z8&H1Q-jH4>CTf;*$&m7#OGdQUaauj3r(j`bMcGhFqY**nrR zv2<>ZbQ|CF5yn1{iCC3iU*JR+YypE^Hvh>i^ZY0m`nU;vIArtxwTVBq=Lep+(lb8L z_*a`M!}?Ful+%LS4sxd`Plf+xBTR8Hs5j&s!lNw_}h~g#bb?ES!WIl62 zGQeFdJZZ~$Q1_|!^#9U0m!GdIPCxNY)wF3!C)xmOZ{&r`&!`?%MnLKhwi-w8EH(OM zr!bLHFn%*)YbMvDe9dGf{bM_AU?zp3UZRr~*jl&xl&^JbKpnS&pS`V~8Al6#h0LLR z$HtDrs6N7k-jBKo{c^4Wd^u_p(*rdOX8}wIA4sB6#Ci2Kvz7jbTX#TP@pH zqpEDmI*0mD-Z|8lzIqMU!)&zz7ZXYps$5Oz^F`DvQZqCc85N_YD0@9P4dX?})?}FD%+n{=%XyjrpBg{=vj^=V5pJ>2ERM zbqR9Vq|Nrz6@nC^oDv4MwrZgVkD(FVtG!iMCk+XKGZ}Y(+^E zEHM!*VZ_vh=By$;Sj_n@__)t^rK{${@+Q@*qRx_G-Eh?o>rPD)U|ZYjnvgI_BZIQY z3*FJSTdAK&r(2))XeZ1P?sio6^nDXjFB5eFCM4k>mzQ zy))ctV|63Cd4SZ=?*cJlLm~qy9}*cvr{qANi0Ybo{nr+;>d{whk?bkezdCK}Z}XZg zHK{LJt)yVuXgv9a?ZDI)-*LYm^;`~*mRFaYG2~5>1cUXIO7Qnw=9<(Wa|uZU=)w#z z-%?#0DC(s&dHZf5bbAx>oK@hh@ruMjGP_x?v%%ptg@bqW|Orhf{oL z$6u1VY}Us?l+XG&nAS;w;4}Dfjk98BJvIP8>#-4L{KRkU8A`YO1QV}R*RGXsbcFv&*fdbX3kt5Pe3dDcp~k(1a^+F)8<^6YQ`kWRWl;!$UmTW zEWV0sMw^&sZv7)Eck3TTryhcNv+eYip>JxxSUH(1>_&$;2llID~#V6_!#( zwgOg|8AEwtW-JYx0BNi3{^hW`jEAUAcG{#V6JiU>>hZK?ER5Qzedzy5Cah_}JKIm8 zm{GrV$nL9#UyOctA(h^%bHV0&Pv*LfGxEF+eWp;}q0dz6pAC=B+5I<3u1O1eGOt%t zDffCcjrLs#3Ad}Bg68ftPa#(-9~=(G>`d}>%FiSx(k(Gy`NB@dhp>w>k&VQZR%k$lUzdYX^vRm?jc4;&iU+$>=(!XrUqm;RLP1G-HXnDFMc)E$mH?V8@ zb1A=;ucE<8WGnMQ-G%!!noo<0;6-!|eYHbBhgmufP9@gRxt)LNbLRl?~%BIR?7jKmo+qugQ-wA<0{8h zG;;ws5PL11*JPTo^k&x_%1&=tg>-kzYT7^z^)2kR>IoC-2}&qgv~UUhRoh+{ns&XI zMOoL2Yboz~QKG5tFsQ%1E@h_4+Ulyh3N}T6uBwZP$T2_ZeKw7Q!D06Qww>0LHHglk zyg~Fj8W{tfC)sNR%LM6ccPv$t+SJNNM{x@kN`C9kdb)o#Im}ijZ=if-@x*E#~x)M@=1pOLg9Z{?vId9XuE6 zHmRwZIZQxo*h~3`4KlTy1y1d1{?~3x!ftnE3%vGGzQAigRUD^^!7LL?&UogF1Jr#o zu(98KjolqtMETv32dTpuxSdo}CnS6L9-`dCx0tH(z)>$BT3=W6KQtlA`y(cQ zJVv%4cRnt-^RKjSKJ@EVOGBo(NGnc2%}P_;qYlhjWg(SBFChxq|798GA0DnfkNJnp z-dDkZDK7p>x#Hpp+GZ{c9$ZUPa9340$_Ji1Mb8jcJmMtf#UoD9$CF^g*l$0>#Aon> zr|H5-SRadTVjzSwIB0n*!PtG996%%P*8U8-sP<=R`&c-VTuU=+-lDo>A!RP|S@d`E zIhvOMHtDs{Fm}Tzv1oOMqArTEtxdo{!Lvg;L8*eDICO>XAgqsn8RdQa&(mc?p#5^~ zE$d}cQ8LxuxFiy)|48)WruoCQztPla$XQoQ(v+QlB{K)cz>@7%kN80R1FSF?}sPobgF;F!0=e`0#y zt>D?xK}QPMpHJ_j1%CQ~ei;WJJ2+^#t4{ot8ZO-kb){jLh&Gk7F~n-aR`h#F`HFsz zXvQY^y}!fv_V%dePsHA?AF91c9s9$S#1djdCI91h{+Us!SniB#D|EsW4BjR@rN2i& z{YehrY`z%V=i+2z5*+?3Coqwv;1fH%pt)(#ajt{b9;z>WnrEO?DPs^CxBJ`x(s z4qAVrE34BI*<80bl;^trMHeJNz%iV1YG0{0s~@grB>(gRINHcLU(ho@M)qn6W< z@H1rWoT=W^g>kUusrDkytksA2l(+iufv!n{1@9fS!SUy*A1VJl^%I?ZoNl(_x0{&& zCS-&xz+F3hp(`fRYYw_sRla5^vaeZcW{aY~9s}~0nx3_*!mmk=1o$LJ3bP~0Dpt9G z0*NI(zCnvR9D2}kGcx?Z(#s$=flX(wYBV?vI-NyvE|vWO)Z|f#)5p4yn;}<4OGoVYT`^J_yT}Uywwd zqe?8wy^g<|Fwru>XL#3uHu1FYCehY4 zfk#`{g62EnW<~9)ZMpbFEiA7-;Q-m=DSxlIi79$^Wm=>olpwD(aMZ?5JJ&h_-?`Qa zJfh*4rQ=tQz6d#bv84-K-VNv695uE8dF|Cqob#)h0EZHIN`M=nzE{7Y z6$@%JWidX$%VKZskOjhq_;Z{*wr&iw}dcO11f3Rs>HPL?72TvCHz9hpd& z8B0D^ZKxG9dD8^A$(tYH-S4pBt)q+tc^hS-{u+z0o59=&xJaF}?oO9sWul0m7qs~a zrjN$%68$%uRh2zR=St!*|0n7mu=t?`{5T5g+B@m=Rd&OyCGZ<&esC!p!aeW=C_5w| zsqck(L~W0P+V|1N?}c?t1iXBIVJn!O11o%;G+M_0RX?o8eyr|`uzI*SqzzzKK+9H6 zTE$0KKr1AlTs0QZny`%0Ho!AV+d?ZfICpo_kAg6)-8bAH_`cx*fQI{dKPO%7N0Z|L zz?&Rz2lY3=>Pb#o{v^aG8HCCBX?Xlo9ssp@=fris`Pfl-V zopkCXcGkk#y0^X(46MSKKBqHuz&A7S;#fG6AZZKrg>Tap>Z^n9X8coOAY_hz=!6LL3$bjazO zg?z`kH!fsi&kB0?##PZf5S~tl_7|OWy%#L#bRh7c(?KvS0m$9&-B;GMzIb2c1G}Bu z7x?YmU|5<6S?{zD^M7}XiIUDul!;6kPpsD;noonChR&KtQ&rk;Wj-A<%z^9r0}os` z0M1P%otXxxAQY4B`RiL!eb6M7DC)7^;7T z=SIhe3QN1Sle0FY&{iihQJsh-io>w}2sZa|)&&-cbBE)I=Z=83Q$P{wtc#AWd>R4# z%BN7w&wyE!?%LX>Bq?}MXjM0lrZ$Lqp9}-;eR3q6Ne1N%XWdd|qUe|x^cW4DCPE#R zvnFKGwS6&BHO?Dh;nC)UaDJ8ZSDyDz*r4s2Kw+`3VC_Lu$Kt$A9S3#BL6c3|u~&8e z{HH?%yF>PlC2H(x!%f>d6I-V=^$F@B*QS`WlDp%8m)so>7vkaC?yAA!I7b2Qt2raW zfzKH+0eX*v4gA~dXgZ9T=tRLbqlqwaGE|(>&X{DHU4+evnU}nUzKKmW+_g;vbRQ3! zE;;`NXiHuGwN6e(gM&Ht0*ST)*5|=w;C&v%!|9Wl&~(NMbM9O?1#%W(hN-00RJ{3C z)8Jh^q_@Fuh#m-brEnTfcHwkz`W31Nx@ax8)AU4OPSa=LR-2v#&gO7un#=dR;zlsGb{!GTr{AUW}PbVo%5~*SdQ^ijv!t2#8>XOV69<1QnOneyEW`Xkw zYOsTqVS6Yq+b{<%%!5(IE?S*KuUAkbjcb|&B~c)3!rptQ0e|m37cORzQdWjNi@fZ# z3f|6x*lU_0C9r@2^Ki=ym=D$GLAwVoTG@>WnHII$1@PuDS&H=q3jym3(&1PtvpQBU1qLt8e7QUkU&eL3*8>1uEt zNA@uOS`D1PUIBal2DfNeJ1>VzX=e63)epALeVUr{{X-2O0J-NK;{y7v$dJ5(z^V`}$H?`}5W5H79tD)4l zs+Quq1iZ%eZ0H(J(%A@XY2_n2t%G)vWGc(qwGOHAuJsTT3B7)Gt=dEXNdI-CAmoCp zCZO|RwK0_AwU=VCCIiDqt{U6(wRux3uCsl0H=~2Cn+q9{u=BO6o@5!KDV30}qI#LD zsg;o470jhoHT^;X=I_;8U{501%nEF`;e_DK+dqZv@`SPe)6-37Ahk|z zTTCACZ81Bbfec;!+%&FScpsBR%6uqR764De8vl|__)E#ALNIwtdyJ6!V4e+&aj}IA zsZYtLSlR}vx_Q<$RH>s+1FSV3`ms;+FOX*N2-A%J>bls~=bgyCy>wc)cn4Vmrcbx^4iAE-V z%eM%2M$!}OwIgT3jB?ZLgRnQ8>|~`Thw#)U#c($cx)!+!b$gMh_!hn2Y(#1?&VMQg z#XPV(roHaJ;%hDC_z4ppSe2!1pR9~of=wf9%}Q|Lo0Y<}MUe8lTU8|RPg%~e$$W&} zFQD*+=QrH6R#g%;$EIv)r(b|C?Q{h8T>{UyZrYv7L>C*6a6AUXR)K}WUDBvAqUuUV zKu;5C(#|Vbe6^_P81O|!$KlH;_`$-Ri6R25B#0K`x$mG8u-6ByYr5;o!u2Yuw8i04 zWHlS?VQIbK1n|}iPD1$-7}v;M7s;D@oWiCXkJHe8JoZHdVY56BN#$Y7 zW9+!<0%YF@>z}{5RVFg7n0CDcYmZR>n*w|DFENQ~L2 zTOHl1t7`n69ml6uJ{D^(D!7i8QKOJxfbAqztrV?~8K6QW`X~57kEc*C8g7lKBaGMA z!ia7PHhkq%;KNrwgCn!Ra6%nT3~gla-S#Y(apW#*H2(z>vH2Acx(wE*eRs^K2E7zx ze#P)=|7bc)RO;YgE_ekAkuZLB9nCh;C3;zpcdvl=c=sB*FNWFM^#-ZN2BNNOYrA2k zPn+HAP&_Dqy^d-)>fF zxWf-@mdE{OD~S#zYjt$Dy=vwyy+v*-{S7r!;LOE3n!+=0HpTfJ@F~vk!95((%j@VE zh0sKKiRuH?+z5kTX>MDa-KiqAOlaXe%KH;MiGUTK>gWurQ2ax*Idb-S%_sDnYd(W@ z5;|oohc8fM<)FxpAh8PzRSI6HB8mkO)Xa^w!M}>Z+q|KQOVgpCk%xvTRkalcOlnSw zSSbDt1RffrP;`-?nV*N2GrC%%1np{VsF)D}zMVYupW|0suxvA|4)*xB#`l&=1?SvI zcb3$^SizGTm?-Wif!`<(odpWcH&O85d{afmcxVvmp_Q<{%|5GdoKjgVs$ES{T-!{s z{4ji;?xD>(NTPh*lpV*vV}M|;;Ky%RD0|An2uXy;&$<7@VC>XnVxD=~ zYfFV?iFRJ#@Krkz5Is22T5kRk40eHV|8B;HV;O@VQxFui!TeYAU?WLtiUTU4}stp4Ngt zN2iG8&K>90QgBpp6elxZhVt89BkA;We{2!N>SO%woFYdB zpHt+d$VdmNndf)OjqVG2J%xciofSN=r;B1ZvYmFGTKl8xbo^SYpvKN>3l@FIMZu#F zxhfW{Cb`%X4MzQvuBcG#BubfEEH;3h)!qNn~t{fPn%+1Pl@| zSilegLj?>IFkHY00igoI1dJ3gO2B9VV+4#9FiyaD0pS8B2$(2fl7I*SkpiLwL<@)! z5Gx=~z+?gO0ulsZSzNogsRE`6m@XhuzzhLN0+I!!2uKw$Q@|_%vjxl%kS1WR0F{7w z0_F=?AYh?@bO9Lx771ViG6gIa@Uws=0+tF`CSbV$wSW}@Rti`pV6}iX0|P?p>Cr@M}c! zSoo(r1;P#i`2q?A6bjfWV3&a10`>^lD?k>oPr!Zw2NXQ~QxX0_7&vv*Q(Ek@P+>3m ztz`;RsV6_Es9w$T$1#c@@SkT!4ax05vI5JX@O4+xRLa4h{v<%Ut@&9gxs{0jyGmi2 RpMOX>nxDSXZT#u={{WRqL)~QOHRHbdI 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 diff --git a/addons/godot_xterm/native/build.sh b/addons/godot_xterm/native/build.sh index 874527c..baf1c4a 100755 --- a/addons/godot_xterm/native/build.sh +++ b/addons/godot_xterm/native/build.sh @@ -1,28 +1,37 @@ -#! /usr/bin/env nix-shell -#! nix-shell -i bash --pure -p binutils.bintools cmake scons +#!/bin/sh set -e -# Make sure we are in the addons/godot_xterm directory -cd ${BASH_SOURCE%/*} +# Get the absolute path to the directory this script is in. +NATIVE_DIR="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" -# Initialize godot-cpp -if [ ! -d "external/godot-cpp/bin" ] -then - cd external/godot-cpp - scons platform=linux generate_bindings=yes -j12 - cd ../.. +# Run script inside a nix shell if it is available. +if command -v nix-shell && [ $NIX_PATH ] && [ -z $IN_NIX_SHELL ]; then + cd ${NATIVE_DIR} + nix-shell shell.nix --pure --run "./build.sh" + exit fi -# Build libtsm -if [ ! -f "external/libtsm/build/src/tsm/libtsm.a" ] -then - cd external/libtsm - mkdir -p build - cd build - cmake -DBUILD_SHARED_LIBS=n .. - make - cd ../../.. +# Build libtsm. +LIBTSM_DIR=${NATIVE_DIR}/external/libtsm +if [ ! -d "$LIBTSM_DIR" ]; then + cd ${NATIVE_DIR} + git submodule update --init --recursive -- $LIBTSM_DIR fi +cd $LIBTSM_DIR +mkdir -p build +cd build +cmake -DBUILD_SHARED_LIBS=n .. +make -# Build godotxtermnative +# Build godot-cpp. +GODOT_CPP_DIR=${NATIVE_DIR}/external/godot-cpp +if [ ! -d "${GODOT_CPP_DIR}" ]; then + cd ${NATIVE_DIR} + git submodule update --init --recursive -- $GODOT_CPP_DIR +fi +cd $GODOT_CPP_DIR +scons platform=linux generate_bindings=yes -j12 + +# Build godotxtermnative. +cd ${NATIVE_DIR} scons platform=linux diff --git a/addons/godot_xterm/native/shell.nix b/addons/godot_xterm/native/shell.nix new file mode 100644 index 0000000..abcd05d --- /dev/null +++ b/addons/godot_xterm/native/shell.nix @@ -0,0 +1,11 @@ +with (import {}); +mkShell { + buildInputs = with pkgs; [ + binutils.bintools + cmake + git + libxkbcommon + pkg-config + scons + ]; +} diff --git a/docker-compose.yml b/docker-compose.yml index c060d05..ce0fc40 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ services: build: context: . dockerfile: ./dockerfiles/archlinux - command: bash /src/addons/godot_xterm/native/build.sh + command: /src/addons/godot_xterm/native/build.sh build-nixos: build: context: . @@ -14,4 +14,4 @@ services: build: context: . dockerfile: ./dockerfiles/ubuntu - command: bash /src/addons/godot_xterm/native/build.sh + command: /src/addons/godot_xterm/native/build.sh diff --git a/dockerfiles/archlinux b/dockerfiles/archlinux index c6d2d63..9b4b559 100644 --- a/dockerfiles/archlinux +++ b/dockerfiles/archlinux @@ -1,3 +1,7 @@ FROM archlinux:20200908 -RUN pacman -Sy --needed --noconfirm base-devel cmake scons +RUN pacman -Sy --needed --noconfirm \ + base-devel \ + cmake \ + git \ + scons COPY . /src diff --git a/dockerfiles/ubuntu b/dockerfiles/ubuntu index 55e70a0..d48b4cd 100644 --- a/dockerfiles/ubuntu +++ b/dockerfiles/ubuntu @@ -1,4 +1,8 @@ FROM ubuntu:18.04 -RUN apt-get update -y -RUN apt-get install -y build-essential cmake python3 scons +RUN apt-get update && apt-get install -y \ + build-essential \ + cmake \ + git \ + python3 \ + scons COPY . /src