From 371efb59c74868691aab0d1a5a22acf7707065f5 Mon Sep 17 00:00:00 2001 From: Alex Grintsvayg Date: Mon, 10 Apr 2017 15:10:52 -0400 Subject: [PATCH 1/4] build daemon separately in teamcity --- .appveyor.yml | 34 ++++- .gitignore | 6 +- build/build.ps1 | 24 ++++ build/build.sh | 61 +++++++++ build/cli.onefile.spec | 59 ++++++++ build/cli.py | 7 + build/daemon.onefile.spec | 78 +++++++++++ build/daemon.py | 4 + .../gmpy-1.17-cp27-none-win32.whl | Bin build/icons/128x128.png | Bin 0 -> 7552 bytes build/icons/256x256.png | Bin 0 -> 18944 bytes build/icons/32x32.png | Bin 0 -> 1248 bytes build/icons/48x48.png | Bin 0 -> 2675 bytes build/icons/96x96.png | Bin 0 -> 6294 bytes build/icons/lbry128.ico | Bin 0 -> 99678 bytes build/icons/lbry16.ico | Bin 0 -> 1150 bytes build/icons/lbry256.ico | Bin 0 -> 370070 bytes build/icons/lbry32.ico | Bin 0 -> 5430 bytes build/icons/lbry48.ico | Bin 0 -> 15086 bytes build/icons/lbry96.ico | Bin 0 -> 32038 bytes build/miniupnpc-1.9.tar.gz | Bin 0 -> 71648 bytes build/prebuild.sh | 81 +++++++++++ build/release_on_tag.py | 128 ++++++++++++++++++ build/requirements.txt | 13 ++ build/requirements_base.txt | 1 + build/set_build.py | 29 ++++ build/set_version.py | 52 +++++++ build/zip_daemon.py | 29 ++++ setup.py | 4 +- 29 files changed, 602 insertions(+), 8 deletions(-) create mode 100644 build/build.ps1 create mode 100755 build/build.sh create mode 100644 build/cli.onefile.spec create mode 100644 build/cli.py create mode 100644 build/daemon.onefile.spec create mode 100644 build/daemon.py rename {packaging/windows/libs => build}/gmpy-1.17-cp27-none-win32.whl (100%) create mode 100644 build/icons/128x128.png create mode 100644 build/icons/256x256.png create mode 100644 build/icons/32x32.png create mode 100644 build/icons/48x48.png create mode 100644 build/icons/96x96.png create mode 100644 build/icons/lbry128.ico create mode 100644 build/icons/lbry16.ico create mode 100644 build/icons/lbry256.ico create mode 100644 build/icons/lbry32.ico create mode 100644 build/icons/lbry48.ico create mode 100644 build/icons/lbry96.ico create mode 100644 build/miniupnpc-1.9.tar.gz create mode 100755 build/prebuild.sh create mode 100644 build/release_on_tag.py create mode 100644 build/requirements.txt create mode 100644 build/requirements_base.txt create mode 100644 build/set_build.py create mode 100644 build/set_version.py create mode 100644 build/zip_daemon.py diff --git a/.appveyor.yml b/.appveyor.yml index 54dd0cdcd..acd3fadb0 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -1,13 +1,37 @@ version: 1.0.{build} +environment: + GH_TOKEN: + secure: LiI5jyuHUw6XbH4kC3gP1HX4P/v4rwD/gCNtaFhQu2AvJz1/1wALkp5ECnIxRyS +# key_pass: +# secure: u6DydPcdrUJlxGL9uc7yQRYG8+5rY6aAEE9nfCSzFyNzZlX9NniOp8Uh5ZKQqX7bGEngLI6ipbLfiJvn0XFnhbn2iTkOuMqOXVJVOehvwlQ= +# pfx_key: +# secure: 1mwqyRy7hDqDjDK+TIAoaXyXzpNgwruFNA6TPkinUcVM7A+NLD33RQLnfnwVy+R5ovD2pUfhQ6+N0Fqebv6tZh436LIEsock+6IOdpgFwrg= -notifications: - - provider: Slack - incoming_webhook: - secure: LuxwG5OZnnA//gmSXzCKu8/FRqYjCgGfVFqajSsGHeQ1HQNp7rYNhQpsO8/3PK63xKJj3wzt86DJekf9q9Q5OcHa9AHXUQbEveX0psd7elw= +# +#notifications: +# - provider: Slack +# incoming_webhook: +# secure: LuxwG5OZnnA//gmSXzCKu8/FRqYjCgGfVFqajSsGHeQ1HQNp7rYNhQpsO8/3PK63xKJj3wzt86DJekf9q9Q5OcHa9AHXUQbEveX0psd7elw= clone_folder: c:\projects\lbry build_script: - - echo "Not currently building on appveyor" +- cd C:\projects\lbry\build\ +- python set_version.py +- python set_build.py +- ps: .\build.ps1 +- python zip_daemon.py +- python release_on_tag.py +- dir .\build +- dir .\dist + + +artifacts: +- path: build\dist\*.zip + name: lbrynet-daemon +#- path: build/exe.win32-2.7/ +# name: lbry-portable +#- path: packaging/windows/lbry-win32-app/LBRY-URI.reg +# name: LBRY-URI diff --git a/.gitignore b/.gitignore index 74027cd71..e3d0a36f1 100644 --- a/.gitignore +++ b/.gitignore @@ -9,8 +9,10 @@ *.prof .#* -/build -/dist +/build/build +/build/dist +/bulid/requirements_base.txt + /lbrynet.egg-info /docs_build /lbry-venv diff --git a/build/build.ps1 b/build/build.ps1 new file mode 100644 index 000000000..07aeeaaf6 --- /dev/null +++ b/build/build.ps1 @@ -0,0 +1,24 @@ +$env:Path += ";C:\MinGW\bin\" + +$env:Path += ";C:\Program Files (x86)\Windows Kits\10\bin\x86\" +gcc --version +mingw32-make --version + +# build/install miniupnpc manually +tar zxf miniupnpc-1.9.tar.gz +cd miniupnpc-1.9 +mingw32-make.exe -f Makefile.mingw +python.exe setupmingw32.py build --compiler=mingw32 +python.exe setupmingw32.py install +cd ..\ +Remove-Item -Recurse -Force miniupnpc-1.9 + +# copy requirements from lbry, but remove gmpy and miniupnpc (installed manually) +Get-Content ..\requirements.txt | Select-String -Pattern 'gmpy|miniupnpc' -NotMatch | Out-File requirements_base.txt +# add in gmpy wheel +Add-Content requirements.txt "./gmpy-1.17-cp27-none-win32.whl" + +pip.exe install -r requirements.txt + +pyinstaller -y daemon.onefile.spec +pyinstaller -y cli.onefile.spec \ No newline at end of file diff --git a/build/build.sh b/build/build.sh new file mode 100755 index 000000000..75247ae4d --- /dev/null +++ b/build/build.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -euo pipefail +set -x + +ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )" +cd "$ROOT" +BUILD_DIR="$ROOT/build" + +FULL_BUILD="${FULL_BUILD:-false}" +if [ -n "${TEAMCITY_VERSION:-}" -o -n "${APPVEYOR:-}" ]; then + FULL_BUILD="true" +fi + +[ -d "$BUILD_DIR/bulid" ] && rm -rf "$BUILD_DIR/build" +[ -d "$BUILD_DIR/dist" ] && rm -rf "$BUILD_DIR/dist" + +if [ "$FULL_BUILD" == "true" ]; then + # install dependencies + $BUILD_DIR/prebuild.sh + + VENV="$BUILD_DIR/venv" + if [ -d "$VENV" ]; then + rm -rf "$VENV" + fi + virtualenv "$VENV" + set +u + source "$VENV/bin/activate" + set -u +fi + + +cp "$ROOT/requirements.txt" "$BUILD_DIR/requirements_base.txt" +( + cd "$BUILD_DIR" + pip install -r requirements.txt +) + +if [ "$FULL_BUILD" == "true" ]; then + python "$BUILD_DIR/set_version.py" + python "$BUILD_DIR/set_build.py" +fi + +( + cd "$BUILD_DIR" + pyinstaller -y daemon.onefile.spec + pyinstaller -y cli.onefile.spec +) + +python "$BUILD_DIR/zip_daemon.py" + +if [ "$FULL_BUILD" == "true" ]; then + # electron-build has a publish feature, but I had a hard time getting + # it to reliably work and it also seemed difficult to configure. Not proud of + # this, but it seemed better to write my own. + python "$BUILD_DIR/release_on_tag.py" + + deactivate +fi + +echo 'Build complete.' diff --git a/build/cli.onefile.spec b/build/cli.onefile.spec new file mode 100644 index 000000000..43ada14b7 --- /dev/null +++ b/build/cli.onefile.spec @@ -0,0 +1,59 @@ +# -*- mode: python -*- +import platform +import os + + +dir = 'build'; +cwd = os.getcwd() +if os.path.basename(cwd) != dir: + raise Exception('pyinstaller build needs to be run from the ' + dir + ' directory') +repo_base = os.path.abspath(os.path.join(cwd, '..')) + + +system = platform.system() +if system == 'Darwin': + icns = os.path.join(repo_base, 'build', 'icon.icns') +elif system == 'Linux': + icns = os.path.join(repo_base, 'build', 'icons', '256x256.png') +elif system == 'Windows': + icns = os.path.join(repo_base, 'build', 'icons', 'lbry256.ico') +else: + print 'Warning: System {} has no icons'.format(system) + icns = None + +block_cipher = None + + +a = Analysis( + ['cli.py'], + pathex=[cwd], + binaries=None, + datas=[], + hiddenimports=[], + hookspath=[], + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher +) + +pyz = PYZ( + a.pure, + a.zipped_data, + cipher=block_cipher +) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + name='lbrynet-cli', + debug=False, + strip=False, + upx=True, + console=True, + icon=icns +) diff --git a/build/cli.py b/build/cli.py new file mode 100644 index 000000000..075c13b7f --- /dev/null +++ b/build/cli.py @@ -0,0 +1,7 @@ +from lbrynet.lbrynet_daemon import DaemonCLI +import logging + +logging.basicConfig() + +if __name__ == '__main__': + DaemonCLI.main() diff --git a/build/daemon.onefile.spec b/build/daemon.onefile.spec new file mode 100644 index 000000000..80e9e7226 --- /dev/null +++ b/build/daemon.onefile.spec @@ -0,0 +1,78 @@ +# -*- mode: python -*- +import platform +import os + +import lbryum + + +dir = 'build'; +cwd = os.getcwd() +if os.path.basename(cwd) != dir: + raise Exception('pyinstaller build needs to be run from the ' + dir + ' directory') +repo_base = os.path.abspath(os.path.join(cwd, '..')) + + +system = platform.system() +if system == 'Darwin': + icns = os.path.join(repo_base, 'build', 'icon.icns') +elif system == 'Linux': + icns = os.path.join(repo_base, 'build', 'icons', '256x256.png') +elif system == 'Windows': + icns = os.path.join(repo_base, 'build', 'icons', 'lbry256.ico') +else: + print 'Warning: System {} has no icons'.format(system) + icns = None + + +block_cipher = None + + +languages = ( + 'chinese_simplified.txt', 'japanese.txt', 'spanish.txt', + 'english.txt', 'portuguese.txt' +) + + +datas = [ + ( + os.path.join(os.path.dirname(lbryum.__file__), 'wordlist', language), + 'lbryum/wordlist' + ) + for language in languages +] + + +a = Analysis( + ['daemon.py'], + pathex=[cwd], + binaries=None, + datas=datas, + hiddenimports=[], + hookspath=[], + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher +) + + +pyz = PYZ( + a.pure, a.zipped_data, + cipher=block_cipher +) + + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + name='lbrynet-daemon', + debug=False, + strip=False, + upx=True, + console=True, + icon=icns +) diff --git a/build/daemon.py b/build/daemon.py new file mode 100644 index 000000000..2ed0360ab --- /dev/null +++ b/build/daemon.py @@ -0,0 +1,4 @@ +from lbrynet.lbrynet_daemon import DaemonControl + +if __name__ == '__main__': + DaemonControl.start() diff --git a/packaging/windows/libs/gmpy-1.17-cp27-none-win32.whl b/build/gmpy-1.17-cp27-none-win32.whl similarity index 100% rename from packaging/windows/libs/gmpy-1.17-cp27-none-win32.whl rename to build/gmpy-1.17-cp27-none-win32.whl diff --git a/build/icons/128x128.png b/build/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..de083fcbc27e14cb4fc928101880faccb682e651 GIT binary patch literal 7552 zcmaJ`WmFVzxCfDzMi7)(dI>>5LVBfBx>G{B8+M5$C6ttIP&%Yrx;vJTknUU>?)>kE z`|+MVvomMT?z?l|eV$)E5ucQ0@Ng(`P*70txeI#PPeSp5k8tLK1gIymtjsBK zQ~!gAs=W8dCVU~HxANdHIk3X6B#ULS=+*h6+Mw}ohKF+))IEf7t{~yNnmkPgR*%WF z0+=RV?d@dT&W%C@ccmlj#w@tr;tqVj8BREv5@qvQ;$a6ZsC%YmL5^9xv)ISjgo!YB_Hj4_ z_eGjOi1Aov&(ze^T5uXW88ych7Jr;$E(^}l(NQrcc*uPHJ9h#0AtIQMrX_abi$?3r zQpLe@3>;87sfAFE4iSnIrXK3z^nyj2qGGJ^pQc!`-o8a#nck*c7OXXCoh%a{ce}Ah zg$Q=Nnk11sWS(qMY2@_s)L9xn7WfI&osuj2T-89jE#XYp z1pg#QZ*dF>?Md)Hms4sD=`?X->4+Lu{9ATKHt|_nwaI*7@ey`;>z-7qKQ^l(iuP#^ zSUJ%?*E~QhL%%*(-$Y105z9#$&KdX}5>6r&ft4GMyVCZ15xs>#V7eJ*)IR$2=c~56 zQ<*607|og)%RIM;IK|jk3K?_8Q!NgIW%}&8^?|jEq8K12ZQXZR9d@QjGF7 zz;k+m`ss!|G%8Eh#fH^^6;i8Lrr~`HChL(rz0Ql>+W)I%e-n-v(#mFuEGFoDd|~-D z1o*4Q!lC|#6IjM**aU;gw2=$_$!f^wNzX9)Ahqwz1~rg=wKOU!d6uw$T^J2F-5H7si_0kwWEIA;<+^U8sK>L4 z*fiZ{-CfFQOsAgU7~j-sxR{g5IV7O1c$oY@X+ORYG%Pkb?3GN2RgJslG3Ku=%)d2 zhx(&1wBW$Vn4=!ET5iu9`6P$=@Z@Cj7_v*GVdLX+(|Ei79Hylv%z5=SS*gLuFCMG( zrnD&@o?nLlUWOv^3oWCy)7||+o;S@9tnWtSl7v^PJKkk?bAgTGRJBN70_YH&qNc%_ z2c3YR&-V5r>IG$sZraZY`d^>Q-$5>l37{c=)+6k$Z@oxfi^fR1 z|7DL8jfyW);ju#CAfdkDaj2-Nl3Xbx!iK--azuQ`FEZ*g+%r&LVB+I~l()3$!|&do z6(ryVqKj+R)_t9`r-hE_&0tpho;6|C(VNM#^qB5nLd@vi;jZ7T@1tGc-B{NFr6sIZ z_#)WHgSk>y-O7+n{27-Pmh-w%1TBvGi6A$Ln!GoTmulHzh1D3hi2(zQiSgG5eReIj zL^e%x(`nMoVx8~np=@*IMDHC@vG3XeB+%Edjtq*e=l>YwJJG1brrorH3&#SDl7aDP z3(`>(HENDtN`bf?n9@8CXBRX&3t507iFG(!P+M}|TzJ1u#$h_v_TcsEMJm0PD(MRh zG*kbeUF!MK0x7w2&b2KxkT|uwG42n{X^q;{cF~UhUlXaWc{4TzMrEnpQgD*hC1VHJMl%V7le@f4{2mLsVILtUYWG$ zrIpN;^Vpq{#$?=MJHC{O2H@8KQLRYzKFFum=8WrK??@WEQFCBf7Bq6e{Lju>;Pfj( zU{xb3A;LG)s4!z=E6MrveT}A^Iy5kj_zu#$P4&otVOpofY2?GYc7-Zl;Wsrib<$gp zBgrpgN2z)1rXK;gDZTmfdcXddmV+Km1&>arR7>~;#)rBu$}4X(SoE8I^Uxij{DBja z;|8O|qTU5s&1~HUuTWX|Eh&~8G;e*ne%3!cx)r@Q6M;vg(9_3y(jGZn$_{kmKy`GQ zT%$WKXP&Ad{k$CjOA}|Uy>Pcf#hyND*I9q})uNVE@eSAM3e*MEzcIJ+a;-fL^SgeR zhoBj61^I}uFih1vnKOyJ(49(^U@g(xZ86;jODY&6^S{H*0vk?*9Ut83Uq<~NH$ww+ zVpeJX>>(;hGT6@+1#H1gOZ{p2!l>4QttR=cjKqhf@|O@NHj#|cGW~ZTyM7T&`$tZb zzHRJby{0HzIheJB6F4%6j`7l_t@GrYsIYe9S%y*@Iiv+T_q@NWg?PhmrcT?|ck2&2 zgr3Q1_sn8OaLKaf^h=|Rjxa~6RTfk)x$^6LjiXowwy*QOgD|(^@(9xBYQlG`FGJqbH2J-jTMCVJBDT zuCG9!YxTgI)eIzEp_2^~B8EQb;h~PRg==ZGg17&$r4=LAEp2QbvA*>+9lwx7O?-pE ziA-Q$sf-Y0(=u`5U)|pKTAVVgn&hbD=((J708T_bR0+uP2t^;}PA(7)IM@rto>Z7!$tCf13m8E{Ai5r`88V4G;Ueq*I(l z-Ex^E>2(3jOSf)WX>|;Zk|qfIqfLtL$`a1SBB`~RHaXhBh6&vkN(Y3-JiZfwzEj}0>ju!s-Qiu@$i?yB zL{Mj|8}Q7NJlwDNta0w}sd^WOhH|Vl1!o_0-24>+DncZhZjwR*USH|8nMi~#60G4p8pgUW@gCL0ifh$ zp{Ma+A~>(Qu%2l3Smt_Fg4glB{A~uL`_~H0YUf(6cpDE+Xr87h{G@1M))&3mV^z|y z^rv#kllB_q;BS{xB?KFn`2W+#44Db|7|IiugGroj+jqQ^31o|+}QW#7sJGC+V%dy)K2 z6ZBo9%fP_f+9WrkEmh&d!_h5!`Ep5K!RpVj?!n`_@%7EEfZGmBWKdBN^V&zq?zn+a zhEhNljRL>gi&SpA!6$95hjOUm{Pks?a;M0@U2x1Px1bV7;R?X32a z$1=Xx#~wS9F7lB>D^&F?OaLwuxHjmuI(b_u4n$0-ITb;>yBTLA;$bm}HvSzPk^XN!f&*uYCm2(Rs_oa}S3d>ngdrF*q z*drQtbow`6VFdxVxEn9;D&em{ClnE3mx=|4k1s>;Ge)ot>I`I8XiPpLF z)Ykp>uGcCkvBnONfZ8- zB9OUV@l!N<3;DhCCF{9%IUxA_=k54LzG%fG6nEnovG=Fa>XcUcmJd6rDW0xQ|3#%z zDosYGy?Oy_CkH)es!2&U^2%%ocgifjmTVIV11t%{!4oA+ti734>rys_`(U~HbX4pK zUxNhl!%z={a%maS;>&OOwXwr!o#Z7e;cL;*G5*p5`zZpV)$v#q!Bgy%loUzD*gWXI zIG^20#DHDfaga(|3gk<-*9QVh$Y2?7*q?g6GB0n+2nwOpG6k|tg=;l=EqjD~Fkj%C z`=g&-HRQYlA!l(4OqXJv{Qm=cd2m3A6r?s#{G3o(%UXe*K`)WZ}I09pG(N1 zsCYZ9iCL_!A2;NHnp#~dkeoTl1Gb}&#y?@_U7pv!#Jy?ziBNWR59QwktNYtSIT?$` z>32_rkR=a~dyi-7f-F~! zo39Te{LU&`Q~NfREP1*<-i{ZkkHhfB{)s(7fRyC~dG^Qd9gnCTONL%;%X!H%oN)gv z6uvAS0Pwvv={zc@ipq%MJYO0fCnu*5raR!c$!FXSuOjVgA{h7is?C>umX?;^-_WI01Z>!tjL*?M`$C{Fd zpPwJn30_d2qvm*3;nG)O7vR726)L`CtFbv+Iz zMJh8=E&R0woHm3)l`^9S%(Z5?0WoF8CN^?_{jb*Lk)=^=RHw}lYhqS)RNU9weI!>A z`C9K`LMzE}0q8gVRO{h`Jl=c-W}rm3^p!sB!4B&V*;jr?w8uHFZ|?qT64fF_PgBaV zZJxb2p1rKIp9)^_@9Y2d4&XdjS*_+O-G2o(im&-YnQ36cu#$||0|1EhbRNfSNj?7-@lMPAda9`FT2zvP8vBiUmCXw8lJOSWz z2@d_qB3GH2)sXuyaFzDk$i^XU=hN6B{HvAo7_J&bP1kz&KVoN~ShV2%iTN1DDl}d^sbdpz!!NPYrL%=;wU4gB?ePVBHSMZ^XpNW2@fv z0)rMm-CCEQvuDRWteWAkX+~Xd6iwWD7!yzC1&~x9@*4|*t_I*u+&1jfv!Vc}RrQWN z8+kA7$v#{w<57-_ampVfPeoDA;Tc)XT>huTaq*5eh48B5baXz)-toV!EUF#qXdTIz zZ6H1O{ez@%oRl>3y(#d!EMti~b>^9Gxg(h=wnT!t@?Dujk=P!y7QUeF z**jGsuJ*>Dj3ked({le&Ae548a_;)|nF&B9z%x+%tsr1Tdxn#VB@;u~>_h|@AFD6N ztA1BkJ##ButgL$PX}jNEYnNzRNSniJp2ZCffCXVIbwcM-6~dBOAm*7U8di!fP|?Z1 z`^1ur+4*?2ID2lQ`BLylpQ~IyB1On|uT7lKpUnjCADlH+GJ$MHGC*uC7<1}ixxQB8 zM%U%+7G^Zh+Afa0+F^1aqpZm_(z5A`JhbX8p1Joy8jLO&PNi8DZ2BH^3p6mRXn37i zZvevX+yz(5_WQh9)p&uutu!3|C9&ZFSBDY)>M~n?kX&FSKS4ShlZ(tteo9=(58gPW z<+MI+{p|jMx79l`f!F#|R%fRORS5qI`GJU6xLl28d_sCuSf?|`e=gVPmsXa=Dm`AE+;#xGbXQm1B<})VL}R7pP$)aft1NZejPxk@!SxxP6yp`Ok*j1 zzgD1AOD$El@Y`COce%ziwcoX9!;NeHqaPxOzpXGmPkgo(NBAr5`IIqJAc}>mR$CnD zuk|;d(!Y5)eI9Q)wmE!ro@(pryJ6p&>d3|CMhir8td)17&U?JUeJUG3UR8_==9Btw zh|n#g;!cL=hO)y67jPHDYoU_}xW6Wf@q0p3JtuboqLnb$qYNk<$R3znb_iKT9_K|? zie@Z7Z%ng@KFnzs=jqBvj97lwk)`p$6jWL|i6dOMie#a7yL3vv$C7~xDBIoBK}B52 zJUu<5i5O&uWQ&|z>#=Cw492T0Eh7(sa3SIc^_6k%haiMm4zw(F_zlfkDXATtkZw;x z_ev@iK^EjjHhPrN`*WW)+6gnuN?WU3k0u$Vl_R#gf2pSq zyrTiDhXTo~S4rU(DE6cHPr`M~NYuz~bGLdZ{4=u(H;|aN2|*#XkO-<>iWJ^b^)yp| zAN9kKMRIyTFQq6XRoM*9E@gb|n-GsoxY#A#C`~dYCR9*%3M~*It$WM;yg^&+&%o4^ z>1?%ypX-Lu$U+wiFrb6`7d&cw;BU&YNhU_ii*$&12G}D`?PH4&y%0C zsZjFqh4Q_xsX5wqSWXpCI52RbcbG71yG0T{wzW}aN>%D{Xs{T^0Lf`dXe|(@`T6^W zQ}KsNyYGK7yrnxyZRKU7{rYwFYbi#5EX|sq8QsJ=S>@Ggy{CW7+Y06it1x5~F4a%I zNQ?5-uz2;j+Ij5O1|r%DtsQygn3$#~NYc_-?Xo8cg;mlEL+9BSX|#jugcm zLES#obfiMJeP_xV$K2Jinnas0ojB&qE^O*$KGqJJvU6EG`9k&{xE JEQgo`{SV{^)71a~ literal 0 HcmV?d00001 diff --git a/build/icons/256x256.png b/build/icons/256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..6599574065ccfcc176cdd5e8726ca783f85f7097 GIT binary patch literal 18944 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

U2Ho%8h$Z1A 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 O6N9I#pUXO@geCykjvm1P literal 0 HcmV?d00001 diff --git a/build/icons/32x32.png b/build/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..ece10998cc9454bdd9887ccffbf558d1a3abbcf2 GIT binary patch literal 1248 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 literal 0 HcmV?d00001 diff --git a/build/icons/96x96.png b/build/icons/96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..195c31ea73890c636c4d9b0d8fb87eaf5a8489db GIT binary patch literal 6294 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 OON_B+2;mV!vA+Qcgj3Q0 literal 0 HcmV?d00001 diff --git a/build/icons/lbry256.ico b/build/icons/lbry256.ico new file mode 100644 index 0000000000000000000000000000000000000000..f8a33ff7c9cec5d5d5b3268a5a587574527d4a60 GIT binary patch literal 370070 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


T-wOEr(M638+YE^*X;bB*|`7P^uMpGwe2Py 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 HG4THb(T5N= literal 0 HcmV?d00001 diff --git a/build/icons/lbry32.ico b/build/icons/lbry32.ico new file mode 100644 index 0000000000000000000000000000000000000000..6a6219b501c6755fa1e530cbeec4becef701ca89 GIT binary patch literal 5430 zcmeHLdr-}J6u)-YnEhjC7_+mpkJK*fHS9xrB9XLFE3{*YC2!MYBT3Rr6GcQ+^z`VV zO@v*NM=U*TVk@&Wsjf|t9;j4QK6}nLKizKY>dNa6XXf1R<2--g@A-bu`Cgf>@E!pA^WU~I;(`p^>qxsD=H;{(R!qeTvuS{l4^U46A+gpg;$tSz>=T7F=)zwB& zzjr5n{E+w@PoMguV&#hY*t07bPRr+l$24!NLWht$k#e|vrQopW*)fyV&5n8X-Y` zc=)gp7c&3EisiO&TW!Z=@6a9oD8F5Xogo{sHDE0&EAQ}p2guF6DApo9?KHCfIuCoh z8Av;Ssw#T#4zeF9baxO^n&7pFjR}R9yMwSv84EdAmsS_l-4?a(?&OJ5A;D}V*^cfg!=jih#`Mhtz3vRsmZ0p!Acb4*X;78%tGFC zik+tlYHIEyA}j!|E=!P}mU@E-iwL_b$x3>9(06*r#e}tZy8nvc?Y{7ETZ&8B83n{Y z`x!EltYSMrF28;(CnxIy$xK&6PEp4z@5^LBSCH=+Eka{L>7MZvcN0x0z}x!$@BC_a zeqMRJskz?0h@bEOY(gJ3WxMh%oNuBCaW*v>PLvZ$OaJ9z6`?s{S9GhA)g;}Cgq*W5 z&Dt1-dRmw>Ya+FpbT_VJ62lR~j|f%iQirBVx(*S7av-dy7-59I7UdmR+`CuJ)8x-l z{9yVWEX=hP?^b6bsbfc(SCiy9hv0Z}5~f;>z(|9y;J;xFYHIHBbUWbu~7iYiMqNPBDDeAJb8kbyA9;>0?eLi zj!}kv5fvFI5%@cL5UR2}i0I;bj~tH2Bnv$l8TP~0Eo)K#;DMw^v`x)T2oDXw*wF(; z49uJ{9z})u?RX9zh$i|VOr1OuIe%v{t%YzNA^X7jP2)+Q$KrdF4#vWAf)0#E^h40L zb!cp;CsG@5jls2s@u>coU^Wc<6LyQ5!f}}`^mR1gx86n6Dv|`}YR-@P!!<;H_wPZ`^?U?w;SvjZgu=e=u+MPi3cJ<@b+t9v?C&A=lJ|r6<#`Z7{`0w9 zywDouj_ix+V$A-(EZ~}Zy^phqPiLz8YiUoFKrHSo8#9Wpc4t2Z^u(6S*UmjG^yNPRbD@%PzsbpVj`Hn(vPL{a4_?&d++)2uw)s|6? z_HATD`C40gsz0@=v9}O_YwQz!o`0Fe69#M!P*n5tLsJi`;x5_gdAKpuhH&{ U`uk4q^~FY~*IMDPfH%_p4<`lk$N&HU literal 0 HcmV?d00001 diff --git a/build/icons/lbry48.ico b/build/icons/lbry48.ico new file mode 100644 index 0000000000000000000000000000000000000000..95c0947fae6093fed4743f97f14f0ffed281c65b GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/build/icons/lbry96.ico b/build/icons/lbry96.ico new file mode 100644 index 0000000000000000000000000000000000000000..25572bc9cb7cb9e8d5517467aa29357b82fc60a1 GIT binary patch literal 32038 zcmeI52ar`o*2jl(EsL@&cgwP@t*tG!EI&oo6=humA4*0*at6s6L?nsioCPFH29YEZ z$C022BSFbI4jExUBuN}#=>-l^=%ah0d``M_dDvw7+6)52Q{d}RQs5@^)MLn;d zWbu?RhyAN>lr9*IF*)u-%y}mn?e;6ai;3^jskxc{ z`B>BGrHH*cCR=S()e zd$uu$4(?m6JYMqVbL-a4j?0!Vu;~^poMjRcZkVG-51PRPyO_Rx+M8}&TAIU$512D& zPMQ9FJD6!xMkQRia(PH%Vq$;g^MrnzFK16SHxm-fp+o!4fc_tw5yShK)2C1BwK1x{ z89Jo9nJ{jMxpwWU`RT`4)3HMn)4l5l(Aayz_@U&~6T zmNC(DFLdeD!o(+jML{FOua|&HL z@Acv9*RSpiZUi6h@5#!SU~9HOb;u&^uPnzU9U)aA$dCqkKXTXq%ri2XdEeAqWhl0 zhqH<1XI0iX$>@aT%NCkmJ=&Q4`*#^Vi&Oa(vyg_DRK|48MF~rnEHL%zylaXV`L}6U zzpN=%_(d~j)Btn&@^32M%++^KXCfWUX|rzKx|JC7^;}b@R!Lj#&`-MCxrG9kE}3sC zS9r@*t6b2m`0i^ST@?+TbMe$GlTCj~OzWqcw)IU&NJw0?V5WJmdNEU?SROOt)7~cjl%3be*TTgM z=g}XG`oujlyLW9h%^FuSC5ydmrc54TG+*#;n(!aOl<0U(@24l+xM3E~pJ8fLD`H9( zf5nU%(Kj&P>%E2Z=YKVmCJZxWO8wUqDVWbzIN z>IHg9DJi<(vAJJPb?qAXZq>>qrbgAmrc(L*=9`$W z7>|K>8`iHjb;Y-|*Ozmqn5|oWGUGq{g!jz9InXHzzV*C8|M9}9Qzs01M+x<1jjBbY z`^}JEb;J8fl6&cHwtX0nty|SL2M_KGyhmsJeClZ1r$r0BXlc20@d9)fb>*Xb0Vhu$ zH^YW>7r(z``ESv}nbI8-0(qr&L!Y3-As@y|H}vXE=&H~M&Y1ogSw#nzKY8M(mTwq$ z(qU68F64XKpY#>W{jaH6t*BZ3!?%`>d0&05aWT?-I<%)9Q+(&j|9(Y`&5QBv9aA9- zxXXu(mBE9$SpGyeJf*e`f*Ch&CTPr7w*BlGvq7I_?C17v8%?7IlT{9?RaJ1ED? zLdIZU=976}P1l%x-O5;aHnV}gL`N@O@>R>9%Kwtk$$*!2ztTHq8M}=6%mnoN_H7%O zn$?SvZJ>PJJK5Mw_vf_!FtsJS%9VcIjytsv-=`Z69N2BwCd?1anaoq-Jr+`~T<`S> zJ)eY3oHA*ImH#c8RW#lrQu5NOZE?>Lhst@N}r`E&vbsD zSLx=c%xGO32(zo)?5JC$jO^i|93E4^J-NkBfyuP4Fkq*U?KBwDIYuIUludjT>7Q(o z`4N8pbMZ5Z_((t2)Af%qhd&@Xp?jk+k$sile!Hk!3)}Skm($_tM^WKPY}uw6kfHjqXQ%31pu>+Kq{Q}7(S3HBGiJ(Z*^ zVz3LQrRf5eOJ#$3+ zq<&y+RbCj5hV(p7!Y8yNHX6pH;}iILi|mGXYlq-F>{-|~$pafAHb?A$epsaIvzbtj z0H0jGe926fy@EBmKpBQCb5S)0=Q}oX|Tyn)LyZNw!kOY)klx)ALzeYHHw?q zRZHFbtGZ!bPy3~%-IMSMWw6(bz1r~!{jYshS5C4k``t0JFJkj04Tw$Y$91cceanMA zd$t>FI7JFdR*9#2Xph`u3&dDZSeRNJ*kfudJR{VcqxP1q)X|OH!0x+y*S4^Ha^uD| zGk@N6_0jJ#s6o9lrb(lUwhqW7{1dRl1;g#zw+(&-W&G`gy?o{uxD7Gr-iOwc9Y(;GQU2ogD z40~_sQm@*2&?aAe{+aB!x0B?hX!}%;%IIx_k9#EgRGp%D5nWTu2>cyXt0X|3LP6d?NgH zg!N+_-+-%$_yL+Fzj! zxwcsR9}3tr!0zXC5!#D!epI$o0e0p`xpD0uOh0yRY`xg?D65FDL%W6sJ8DJ&+VDGZ z?a{hb9sGroWy_uidj!z#aPYv+?z@)UgrXmL!h@mt!nXB(eo88AmO*Fh)! z!Tv5bc>o^3&uZJ&4R*h3@uJz%r^X~1|DotVb?UgUde0VA@=-(0Ace0&uHg*wcoYhGe(eW ze*Owdl6^lZA3r=dzVTlR(p_4J8sz6Bs6yvL*1YQutb}b_*PF(Y zKhy)+Id1GASDd4tI-n;V;syQ?=;l_|YOFJ_`u8DteNTY4ohrXcXkvfH4_^AI19L$K zA^TzY3rbIa%kmUH7eRWuKa1?Spx@v>k_!FQ0n8i^mAogVzidu7h0cNm5ENhQHW0Mr8(67WBP{mwH@D!7tXf(?9`)tnK#TF=`rDSJ<_BF*q265 z;v>X*hVj}+Iy62o=yQHpsVnP%P_(A>>@}sK&UOvbtH+0?nCd_o&6`xQdIj&&1L%fx zW={&}wB-4L>=@AP2iiMUSXP)4jj6qRNa-2hmuT~i8`jvhA$`HT&p2Vc+%4c|jgPf= zo!7EOb*mft*EhG67nOKP2tTJr-`&1{QhCh~`fWR7{Np>fY;T3k^5vKi!UJna{MH=Z zh2G9(eYLi4+u-Fz6zZ3ScS}=xzGHkJ5lZjfZ`!u5>z5O`ZsUgKt-Qqt^tA8%fnHnxk72sH^>=2Jo0)k$A=;)1rMBGk>apka zjP_eBHMHxyVt=vV9#DOHqW)fdcu1}cSg!(FX2^TPhq^! z+|vH^@#BYW3>kb$o!!)X#g7F40b;v&V1n*n6J~^-Y)dP?eO9y%5ylDG<1km`(>Y<> zP`gLz^Yy@P{DOSa{%eRg!@dan3_iPfUh5BseO7sqoIJ=2+wI?k*;bb{l$BH8<`WJS z+RZff)Ue@C5uaBok1wmwP7c4b@5VW5eCiy`knbpGOs%h>?CB+oziiLw9n%>-_NVgv!`J0q0{f6~p#9t=ZCl>#Wg9rEO?0;LO z@%bXd5A16%Na{Dnc$zD`mu=w2cX!cYfp|;AWx`L$`KCZW{m4E8XD&I1ni|k9iYX*N z$*QJ=(vk;$PWZNNly9qNulA(!VoW?C%r;&KHNNp>88xDx{-1i%v4?oHNJ@n#(C=c zbxYg6cKuzoasflU7viWWoue(}6`2N~69?pzL0xrj;!?=(c*r>&{Dkqlqb%l3{3E({ zYT;tG@ENjayRe?heo)tpv_rD-jo-)qeY?y^#Zn^{f};Z;O3vsnTrk7Vb1FAQAWjKq z8Su-c9&WsFPJ=w)hj4%o$FLzi{AW5|P}+Z4zX-+zed5NL>OV($pfga9w6;Tjr5PuT z6Iyv5ub3u7)JJvwzB;bIiP3>C-tpr{^l8d~Z+7geWv13E6M84Mn|6cW1Y0-$j0-tl{BQ+o%3}-r+^BukTUUKfBm+HEC(~s8YomerntJ4#v z=}Zp30pS4pzK)(7i0MRH+H%l<&SsB%G#xJ}{a#^pA#GuG6MvrVJ#9leOOosgeM=PM3I9IM9yngd&!K9qgRVxP)fn{}2~v$v5+o#Sd~cc(25kP~1m@FCG2tMmH%XFv z_zKzJ;|2Lu$oGgigUmIaxj#u7er#O7#(X5-bM#ABCUOZM`s?zyrq1|}x6%0H42ymv zaBB$z_2(QyzSo})q({CJ^8_AF4Tz<_7i6;7)w36ePCs`JBy?=Yn4}^{+uz%|K>9` zE&P8yg?SkoC=-8|Xsy}st+F!BKR@Bu$h>wpZ5OIOJYyUa!-e*wPtgN8Qx+S$EXB5D zd~#Na^DC|&iWKzuv9Z2@FFa!k*+3iEGd8aNBZv3pQCL8?A*NQ-#ucqElPib0k+h7< zP-nx!W*FuLefo{&81i*xa5j(_XF==aBsrinaP|N>>(aR~MH_7RX|?;Fx$;qdc>6z8 z{gJ7hGeoE5oSz%t*@HDHm;aElSG|}bA;b1<2D>HhjFHd@!&=D zF2DX5FFr0#`jqO=nW$MaC)l&E&R30k6MJgR=mCcKVJXEq3rAmCo-^Mvm$I&OZ4X}{ z_c+@S3Vboq@+7G{?SNeHoG+R}+LY=a7q?gQq3>)I={W<;n&-lW-`DV=%Fl{toPppB zAu`6b1M&5s=j6}F17jQeLmQnN;{0r*`sKw3CF~js-o*mlSm;snzl@FG{v$bGjw+7^raId|@?jV*js^8bK%lyf?qfo5L& z)}Eh843L;o{n4*E|K&N~9Y}XCZ_u4qe!s*tZB)t5{rFv@L*YZZL-D3Oay}fHtR2yX zlJI}04o%f|zsnV5pGT(*m)AXe4zFWVcCsE`V7-VBeM)Of5j;41Hs8~8G_zIFCk>VkFw|eyfTyT?^j@c zA1FQ6?KdzcxMwZn2XFoVu4k-`;R$P#;tVtEH#eqOTQJwIU;hK2{2}1lwJY{4N8<(+ zY(1DSv8DRKTYtv~PwL%h^|5USyUx~{tiC^XGW>*maUJy+&!;vQ3X;%QKS&XV{cWc~Hd z@xlYTXD>Eji1|seBCs{NGjp7IY@_^kDrRS9talt?8MzV7jn^v~* zgZ%lYR)5+dr!b$|Aci#P0B6*uHim`PAIKEO6mu_%Hb87@xh1bty3j z_&*|94Lf&ivbIVWW5D${>mBwCun~B4U}SnDA^Ki$z0&$SukwI@Xiq~75Y7OjXFvme zz#0qxj+E>aq)iJTi?MC6cha+aD^t*K_oO`bp*R~yEOQT_)37hnLHM{Zt@TXld-Cfj zj2Bw@2VK}pgZJ~%C7?Z{z}`tu>9-Z^IXd5-I&%^-o%6)!rQa!5vMXk%ZfdGr`kV2a zQe86g?rG&cO?Xad0b5DZ{rp#K91Ha5w8SY#-ojg)@n$T$`4@RZ8?er!%{_o!H&%7V zuJ^DoBlSv4T5M>ggmxdnx1Yby^tSu?zB8GO3v7?k(R1|K-2r2mm@4l77LZ4Q{QqNP z((k|<4DU5{hY233R6lKc^7G)2oFSfAi@I? X9*FQjganC#}To0c^h|Jko}9^riFy-r<#ZlEs| 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 WmY?Nk`B{DvKmQ-4%LQ5hcm)7Bewf+- literal 0 HcmV?d00001 diff --git a/build/prebuild.sh b/build/prebuild.sh new file mode 100755 index 000000000..3f6e7a2b3 --- /dev/null +++ b/build/prebuild.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +set -euo pipefail +set -x + + +LINUX=false +OSX=false + +if [ "$(uname)" == "Darwin" ]; then + OSX=true +elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then + LINUX=true +else + echo "Platform detection failed" + exit 1 +fi + + +SUDO='' +if $LINUX && (( $EUID != 0 )); then + SUDO='sudo' +fi + +cmd_exists() { + command -v "$1" >/dev/null 2>&1 + return $? +} + +set +eu +GITUSERNAME=$(git config --global --get user.name) +if [ -z "$GITUSERNAME" ]; then + git config --global user.name "$(whoami)" +fi +GITEMAIL=$(git config --global --get user.email) +if [ -z "$GITEMAIL" ]; then + git config --global user.email "$(whoami)@lbry.io" +fi +set -eu + + +if $LINUX; then + INSTALL="$SUDO apt-get install --no-install-recommends -y" + $INSTALL build-essential libssl-dev libffi-dev libgmp3-dev python2.7-dev +elif $OSX && ! cmd_exists brew ; then + /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" +fi + + +if ! cmd_exists python; then + if $LINUX; then + $INSTALL python2.7 + elif $OSX; then + brew install python + fi +fi + +PYTHON_VERSION=$(python -c 'import sys; print(".".join(map(str, sys.version_info[:2])))') +if [ "$PYTHON_VERSION" != "2.7" ]; then + echo "Python 2.7 required" + exit 1 +fi + +if ! cmd_exists pip; then + if $LINUX; then + $INSTALL python-pip + $SUDO pip install --upgrade pip + else + echo "Pip required" + exit 1 + fi +fi + +if $LINUX && [ "$(pip list --format=columns | grep setuptools | wc -l)" -ge 1 ]; then + #$INSTALL python-setuptools + $SUDO pip install setuptools +fi + +if ! cmd_exists virtualenv; then + $SUDO pip install virtualenv +fi diff --git a/build/release_on_tag.py b/build/release_on_tag.py new file mode 100644 index 000000000..fa8537f8d --- /dev/null +++ b/build/release_on_tag.py @@ -0,0 +1,128 @@ +import glob +import json +import os +import subprocess +import sys + +import github +import requests +import uritemplate + + +def main(): + this_dir = os.path.dirname(os.path.realpath(__file__)) + try: + current_tag = subprocess.check_output( + ['git', 'describe', '--exact-match', 'HEAD']).strip() + except subprocess.CalledProcessError: + print 'Stopping as we are not currently on a tag' + return + + if 'GH_TOKEN' not in os.environ: + print 'Must set GH_TOKEN in order to publish assets to a release' + return + + gh_token = os.environ['GH_TOKEN'] + auth = github.Github(gh_token) + repo = auth.get_repo('lbryio/lbry') + + if not check_repo_has_tag(repo, current_tag): + print 'Tag {} is not in repo {}'.format(current_tag, repo) + # TODO: maybe this should be an error + return + + daemon_zip = glob.glob(this_dir + '/dist/*.zip')[0] + release = get_release(repo, current_tag) + upload_asset(release, daemon_zip, gh_token) + + +def check_repo_has_tag(repo, target_tag): + tags = repo.get_tags().get_page(0) + for tag in tags: + if tag.name == target_tag: + return True + return False + + +def get_release(current_repo, current_tag): + for release in current_repo.get_releases(): + if release.tag_name == current_tag: + return release + raise Exception('No release for {} was found'.format(current_tag)) + + +def upload_asset(release, asset_to_upload, token): + basename = os.path.basename(asset_to_upload) + if is_asset_already_uploaded(release, basename): + return + count = 0 + while count < 10: + try: + return _upload_asset(release, asset_to_upload, token, _requests_uploader) + except Exception: + print 'Failed uploading on attempt {}'.format(count + 1) + count += 1 + + +def _upload_asset(release, asset_to_upload, token, uploader): + basename = os.path.basename(asset_to_upload) + upload_uri = uritemplate.expand(release.upload_url, {'name': basename}) + output = uploader(upload_uri, asset_to_upload, token) + if 'errors' in output: + raise Exception(output) + else: + print 'Successfully uploaded to {}'.format(output['browser_download_url']) + + +# requests doesn't work on windows / linux / osx. +def _requests_uploader(upload_uri, asset_to_upload, token): + print 'Using requests to upload {} to {}'.format(asset_to_upload, upload_uri) + with open(asset_to_upload, 'rb') as f: + response = requests.post(upload_uri, data=f, auth=('', token)) + return response.json() + + +# curl -H "Content-Type: application/json" -X POST -d '{"username":"xyz","password":"xyz"}' http://localhost:3000/api/login + + +def _curl_uploader(upload_uri, asset_to_upload, token): + # using requests.post fails miserably with SSL EPIPE errors. I spent + # half a day trying to debug before deciding to switch to curl. + # + # TODO: actually set the content type + print 'Using curl to upload {} to {}'.format(asset_to_upload, upload_uri) + cmd = [ + 'curl', + '-sS', + '-X', 'POST', + '-u', ':{}'.format(os.environ['GH_TOKEN']), + '--header', 'Content-Type: application/octet-stream', + '--data-binary', '@-', + upload_uri + ] + # '-d', '{"some_key": "some_value"}', + print 'Calling curl:' + print cmd + print + with open(asset_to_upload, 'rb') as fp: + p = subprocess.Popen(cmd, stdin=fp, stderr=subprocess.PIPE, stdout=subprocess.PIPE) + stdout, stderr = p.communicate() + print 'curl return code:', p.returncode + if stderr: + print 'stderr output from curl:' + print stderr + print 'stdout from curl:' + print stdout + return json.loads(stdout) + + +def is_asset_already_uploaded(release, basename): + for asset in release.raw_data['assets']: + if asset['name'] == basename: + print 'File {} has already been uploaded to {}'.format(basename, release.tag_name) + return True + return False + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/build/requirements.txt b/build/requirements.txt new file mode 100644 index 000000000..43275963b --- /dev/null +++ b/build/requirements.txt @@ -0,0 +1,13 @@ +# install daemon requirements (copied from root, with possible modifications. see build.sh, build.ps1) +-r requirements_base.txt + +# install daemon itself. make sure you run `pip install` from this dir. this is how you do relative file paths with pip +file:../. + +# install other build requirements +PyInstaller==3.2.1 +requests[security]==2.13.0 +GitPython==2.1.1 +PyGithub==1.32 +uritemplate==3.0.0 +git+https://github.com/lbryio/bumpversion.git diff --git a/build/requirements_base.txt b/build/requirements_base.txt new file mode 100644 index 000000000..c942e551b --- /dev/null +++ b/build/requirements_base.txt @@ -0,0 +1 @@ +THIS FILE GETS FILLED IN BY BUILD SCRIPT AND INCLUDED IN requirements.txt diff --git a/build/set_build.py b/build/set_build.py new file mode 100644 index 000000000..bd508345e --- /dev/null +++ b/build/set_build.py @@ -0,0 +1,29 @@ +"""Set the build version to be 'dev', 'qa', 'rc', 'release'""" + +import os.path +import re +import subprocess +import sys + + +def main(): + build = get_build() + root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + with open(os.path.join(root_dir, 'lbrynet', 'build_type.py'), 'w') as f: + f.write('BUILD = "{}"'.format(build)) + + +def get_build(): + try: + tag = subprocess.check_output(['git', 'describe', '--exact-match']).strip() + if re.match('v\d+\.\d+\.\d+rc\d+', tag): + return 'rc' + else: + return 'release' + except subprocess.CalledProcessError: + # if the build doesn't have a tag + return 'qa' + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/build/set_version.py b/build/set_version.py new file mode 100644 index 000000000..a2b69fb9a --- /dev/null +++ b/build/set_version.py @@ -0,0 +1,52 @@ +"""Set the package version to the output of `git describe`""" + +import argparse +import os.path +import re +import subprocess +import sys + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--version', help="defaults to the output of `git describe`") + args = parser.parse_args() + if args.version: + version = args.version + else: + tag = subprocess.check_output(['git', 'describe']).strip() + try: + version = get_version_from_tag(tag) + except InvalidVersionTag: + # this should be an error but its easier to handle here + # than in the calling scripts. + print 'Tag cannot be converted to a version. Exiting.' + return + set_version(version) + + +class InvalidVersionTag(Exception): + pass + + +def get_version_from_tag(tag): + match = re.match('v([\d.]+)', tag) + if match: + return match.group(1) + else: + raise InvalidVersionTag('Failed to parse version from tag {}'.format(tag)) + + +def set_version(version): + root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + with open(os.path.join(root_dir, 'lbrynet', '__init__.py'), 'w') as fp: + fp.write(LBRYNET_TEMPLATE.format(version=version)) + + +LBRYNET_TEMPLATE = """ +__version__ = "{version}" +version = tuple(__version__.split('.')) +""" + +if __name__ == '__main__': + sys.exit(main()) diff --git a/build/zip_daemon.py b/build/zip_daemon.py new file mode 100644 index 000000000..ef3f5e222 --- /dev/null +++ b/build/zip_daemon.py @@ -0,0 +1,29 @@ +import os +import platform +import subprocess +import sys +import zipfile + + +def main(): + this_dir = os.path.dirname(os.path.realpath(__file__)) + tag = subprocess.check_output(['git', 'describe']).strip() + zipfilename = 'lbrynet-daemon-{}-{}.zip'.format(tag, get_system_label()) + full_filename = os.path.join(this_dir, 'dist', zipfilename) + executables = ['lbrynet-daemon', 'lbrynet-cli'] + ext = '.exe' if platform.system() == 'Windows' else '' + with zipfile.ZipFile(full_filename, 'w') as myzip: + for executable in executables: + myzip.write(os.path.join(this_dir, 'dist', executable + ext), executable + ext) + + +def get_system_label(): + system = platform.system() + if system == 'Darwin': + return 'macos' + else: + return system.lower() + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/setup.py b/setup.py index c16604770..921c5e6e3 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,9 @@ from setuptools import setup, find_packages # dependencies of the lbrynet library. requirements.txt includes # dependencies of dependencies and specific versions that we know # all work together. -# See https://packaging.python.org/requirements/ for more details. +# +# See https://packaging.python.org/requirements/ and +# https://caremad.io/posts/2013/07/setup-vs-requirement/ for more details. requires = [ 'Twisted', 'appdirs', From 55d47b9f19871a910a37c2fe6531be989f441bde Mon Sep 17 00:00:00 2001 From: Alex Grintsvayg Date: Mon, 10 Apr 2017 18:44:51 -0400 Subject: [PATCH 2/4] lbryum is in requirements now --- .appveyor.yml | 6 ------ .travis.yml | 1 - 2 files changed, 7 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index acd3fadb0..3992780a5 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -24,14 +24,8 @@ build_script: - ps: .\build.ps1 - python zip_daemon.py - python release_on_tag.py -- dir .\build -- dir .\dist artifacts: - path: build\dist\*.zip name: lbrynet-daemon -#- path: build/exe.win32-2.7/ -# name: lbry-portable -#- path: packaging/windows/lbry-win32-app/LBRY-URI.reg -# name: LBRY-URI diff --git a/.travis.yml b/.travis.yml index 8dd7d86ef..fb8b86cbe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,7 +33,6 @@ before_install: install: - pip install -U pip - pip install -r requirements.txt - - pip install git+https://github.com/lbryio/lbryum.git - pip install . script: From 7f7a6a619f087f25a4172410be3f0ed814eaacec Mon Sep 17 00:00:00 2001 From: Alex Grintsvayg Date: Mon, 10 Apr 2017 21:42:33 -0400 Subject: [PATCH 3/4] tests for windows, simplify pylint --- .appveyor.yml | 13 ++++-- .pylintrc | 59 ++++++++++++++++++++++++++- .travis.yml | 4 +- build/build.ps1 | 16 +++++--- build/set_build.py | 2 +- lbrynet/core/client/BlobRequester.py | 10 ++--- lbrynet/core/client/DHTPeerFinder.py | 3 -- lbrynet/lbrynet_daemon/auth/server.py | 3 -- run_pylint.sh | 15 ------- run_tests.sh | 12 ------ 10 files changed, 85 insertions(+), 52 deletions(-) delete mode 100755 run_pylint.sh delete mode 100755 run_tests.sh diff --git a/.appveyor.yml b/.appveyor.yml index 3992780a5..b8131bfb7 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -17,13 +17,18 @@ environment: clone_folder: c:\projects\lbry +test_script: +- cd C:\projects\lbry\ +- pip install cython +- pip install mock pylint unqlite +- pylint lbrynet +- python -m twisted.trial tests # avoids having to set PYTHONPATH=. (see https://twistedmatrix.com/trac/ticket/9035) +#- rvm use 2.3.1 && gem install danger --version '~> 4.0' && danger + + build_script: - cd C:\projects\lbry\build\ -- python set_version.py -- python set_build.py - ps: .\build.ps1 -- python zip_daemon.py -- python release_on_tag.py artifacts: diff --git a/.pylintrc b/.pylintrc index 9af4993e0..760cc5fb1 100644 --- a/.pylintrc +++ b/.pylintrc @@ -65,7 +65,61 @@ confidence= # --enable=similarities". If you want to run only the classes checker, but have # no Warning level messages displayed, use"--disable=all --enable=classes # --disable=W" -disable=import-star-module-level,old-octal-literal,oct-method,print-statement,unpacking-in-except,parameter-unpacking,backtick,old-raise-syntax,old-ne-operator,long-suffix,dict-view-method,dict-iter-method,metaclass-assignment,next-method-called,raising-string,indexing-exception,raw_input-builtin,long-builtin,file-builtin,execfile-builtin,coerce-builtin,cmp-builtin,buffer-builtin,basestring-builtin,apply-builtin,filter-builtin-not-iterating,using-cmp-argument,useless-suppression,range-builtin-not-iterating,suppressed-message,no-absolute-import,old-division,cmp-method,reload-builtin,zip-builtin-not-iterating,intern-builtin,unichr-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,input-builtin,round-builtin,hex-method,nonzero-method,map-builtin-not-iterating +disable= + anomalous-backslash-in-string, + arguments-differ, + attribute-defined-outside-init, + bad-continuation, + bare-except, + broad-except, + cell-var-from-loop, + consider-iterating-dictionary, + cyclic-import, + dangerous-default-value, + duplicate-code, + exec-used, + fixme, + global-statement, + inherit-non-class, + invalid-name, + locally-disabled, + logging-not-lazy, + missing-docstring, + multiple-imports, + no-init, + no-member, + no-self-use, + old-style-class, + pointless-string-statement, + protected-access, + redefined-builtin, + redefined-outer-name, + redefined-variable-type, + relative-import, + signature-differs, + singleton-comparison, + super-init-not-called, + too-few-public-methods, + too-many-arguments, + too-many-branches, + too-many-instance-attributes, + too-many-lines, + too-many-locals, + too-many-nested-blocks, + too-many-public-methods, + too-many-return-statements, + too-many-statements, + trailing-newlines, + undefined-loop-variable, + ungrouped-imports, + unidiomatic-typecheck, + unnecessary-lambda, + unused-argument, + unused-variable, + useless-else-on-loop, + wildcard-import, + wrong-import-order, + wrong-import-position [REPORTS] @@ -294,7 +348,8 @@ ignore-mixin-members=yes # (useful for modules/projects where namespaces are manipulated during runtime # and thus existing member attributes cannot be deduced by static analysis. It # supports qualified module names, as well as Unix pattern matching. -ignored-modules=twisted.internet.reactor,leveldb +ignored-modules=twisted.internet.reactor,leveldb,distutils +# Ignoring distutils because: https://github.com/PyCQA/pylint/issues/73 # List of classes names for which member attributes should not be checked # (useful for classes with attributes dynamically set). This supports can work diff --git a/.travis.yml b/.travis.yml index fb8b86cbe..b788bcd03 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,6 +38,6 @@ install: script: - pip install cython - pip install mock pylint unqlite - - ./run_pylint.sh - - ./run_tests.sh + - pylint lbrynet + - PYTHONPATH=. trial tests - rvm use 2.3.1 && gem install danger --version '~> 4.0' && danger diff --git a/build/build.ps1 b/build/build.ps1 index 07aeeaaf6..8ea59e29d 100644 --- a/build/build.ps1 +++ b/build/build.ps1 @@ -7,9 +7,9 @@ mingw32-make --version # build/install miniupnpc manually tar zxf miniupnpc-1.9.tar.gz cd miniupnpc-1.9 -mingw32-make.exe -f Makefile.mingw -python.exe setupmingw32.py build --compiler=mingw32 -python.exe setupmingw32.py install +mingw32-make -f Makefile.mingw +python setupmingw32.py build --compiler=mingw32 +python setupmingw32.py install cd ..\ Remove-Item -Recurse -Force miniupnpc-1.9 @@ -18,7 +18,13 @@ Get-Content ..\requirements.txt | Select-String -Pattern 'gmpy|miniupnpc' -NotMa # add in gmpy wheel Add-Content requirements.txt "./gmpy-1.17-cp27-none-win32.whl" -pip.exe install -r requirements.txt +pip install -r requirements.txt + +python set_version.py +python set_build.py pyinstaller -y daemon.onefile.spec -pyinstaller -y cli.onefile.spec \ No newline at end of file +pyinstaller -y cli.onefile.spec + +python zip_daemon.py +python release_on_tag.py \ No newline at end of file diff --git a/build/set_build.py b/build/set_build.py index bd508345e..39fe12d09 100644 --- a/build/set_build.py +++ b/build/set_build.py @@ -10,7 +10,7 @@ def main(): build = get_build() root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) with open(os.path.join(root_dir, 'lbrynet', 'build_type.py'), 'w') as f: - f.write('BUILD = "{}"'.format(build)) + f.write("BUILD = '{}'\n".format(build)) def get_build(): diff --git a/lbrynet/core/client/BlobRequester.py b/lbrynet/core/client/BlobRequester.py index 14a707fc3..5d392240b 100644 --- a/lbrynet/core/client/BlobRequester.py +++ b/lbrynet/core/client/BlobRequester.py @@ -239,9 +239,9 @@ class RequestHelper(object): def _handle_incoming_blob(response_dict, peer, request): - if not request.response_identifier in response_dict: + if request.response_identifier not in response_dict: return InvalidResponseError("response identifier not in response") - if not type(response_dict[request.response_identifier]) == dict: + if type(response_dict[request.response_identifier]) != dict: return InvalidResponseError("response not a dict. got %s" % type(response_dict[request.response_identifier])) response = response_dict[request.response_identifier] @@ -255,14 +255,14 @@ def _handle_incoming_blob(response_dict, peer, request): return InvalidResponseError("Got an unknown error from the peer: %s" % (response['error'],)) else: - if not 'blob_hash' in response: + if 'blob_hash' not in response: return InvalidResponseError("Missing the required field 'blob_hash'") if not response['blob_hash'] == request.request_dict['requested_blob']: return InvalidResponseError( "Incoming blob does not match expected. Incoming: %s. Expected: %s" % (response['blob_hash'], request.request_dict['requested_blob']) ) - if not 'length' in response: + if 'length' not in response: return InvalidResponseError("Missing the required field 'length'") if not request.blob.set_length(response['length']): return InvalidResponseError("Could not set the length of the blob") @@ -358,7 +358,7 @@ class AvailabilityRequest(RequestHelper): class PriceRequest(RequestHelper): """Ask a peer if a certain price is acceptable""" def can_make_request(self): - if len(self.available_blobs) and not self.protocol in self.protocol_prices: + if len(self.available_blobs) and self.protocol not in self.protocol_prices: return self.get_rate() is not None return False diff --git a/lbrynet/core/client/DHTPeerFinder.py b/lbrynet/core/client/DHTPeerFinder.py index 19b3ac39a..b7202368b 100644 --- a/lbrynet/core/client/DHTPeerFinder.py +++ b/lbrynet/core/client/DHTPeerFinder.py @@ -21,9 +21,6 @@ class DHTPeerFinder(object): self.next_manage_call = None def run_manage_loop(self): - - from twisted.internet import reactor - self._manage_peers() self.next_manage_call = reactor.callLater(60, self.run_manage_loop) diff --git a/lbrynet/lbrynet_daemon/auth/server.py b/lbrynet/lbrynet_daemon/auth/server.py index 267791da1..684b1224c 100644 --- a/lbrynet/lbrynet_daemon/auth/server.py +++ b/lbrynet/lbrynet_daemon/auth/server.py @@ -414,9 +414,6 @@ class AuthJSONRPCServer(AuthorizedBase): return True allowed_server, allowed_port = self.get_server_port(allowed_origin) return (allowed_server, allowed_port) == (server, port) - return ( - server == conf.settings['api_host'] and - port == conf.settings['api_port']) def get_server_port(self, origin): parsed = urlparse.urlparse(origin) diff --git a/run_pylint.sh b/run_pylint.sh deleted file mode 100755 index c54cf0a44..000000000 --- a/run_pylint.sh +++ /dev/null @@ -1,15 +0,0 @@ -#! /bin/bash - -set -eu - -# Ignoring distutils because: https://github.com/PyCQA/pylint/issues/73 -# TODO: as code quality improves, make pylint be more strict -pylint -E --disable=inherit-non-class --disable=no-member \ - --ignored-modules=distutils \ - --enable=unused-import \ - --enable=bad-whitespace \ - --enable=line-too-long \ - --enable=trailing-whitespace \ - --enable=missing-final-newline \ - --enable=mixed-indentation \ - lbrynet $@ diff --git a/run_tests.sh b/run_tests.sh deleted file mode 100755 index c98eae7b2..000000000 --- a/run_tests.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -set -o xtrace - -if [ -z "$@" ]; then - TESTS=tests -else - TESTS="$@" -fi - -find -iname "*.pyc" -delete -PYTHONPATH=. trial $TESTS From 28cccd7574b7766dcc65f4a96b3e5c10d9f9aae0 Mon Sep 17 00:00:00 2001 From: Alex Grintsvayg Date: Tue, 11 Apr 2017 15:10:24 -0400 Subject: [PATCH 4/4] one less pylint exception --- .pylintrc | 1 - build/release_on_tag.py | 2 +- lbrynet/lbrynet_daemon/Daemon.py | 2 +- lbrynet/winhelpers/knownpaths.py | 4 ++-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.pylintrc b/.pylintrc index 760cc5fb1..fed2983f9 100644 --- a/.pylintrc +++ b/.pylintrc @@ -89,7 +89,6 @@ disable= no-init, no-member, no-self-use, - old-style-class, pointless-string-statement, protected-access, redefined-builtin, diff --git a/build/release_on_tag.py b/build/release_on_tag.py index fa8537f8d..d1585c2d6 100644 --- a/build/release_on_tag.py +++ b/build/release_on_tag.py @@ -58,7 +58,7 @@ def upload_asset(release, asset_to_upload, token): count = 0 while count < 10: try: - return _upload_asset(release, asset_to_upload, token, _requests_uploader) + return _upload_asset(release, asset_to_upload, token, _curl_uploader) except Exception: print 'Failed uploading on attempt {}'.format(count + 1) count += 1 diff --git a/lbrynet/lbrynet_daemon/Daemon.py b/lbrynet/lbrynet_daemon/Daemon.py index d858c95ba..90f449a6f 100644 --- a/lbrynet/lbrynet_daemon/Daemon.py +++ b/lbrynet/lbrynet_daemon/Daemon.py @@ -106,7 +106,7 @@ class IterableContainer(object): return False -class Checker: +class Checker(object): """The looping calls the daemon runs""" INTERNET_CONNECTION = 'internet_connection_checker' VERSION = 'version_checker' diff --git a/lbrynet/winhelpers/knownpaths.py b/lbrynet/winhelpers/knownpaths.py index 04deb4288..3a1e8ddc9 100644 --- a/lbrynet/winhelpers/knownpaths.py +++ b/lbrynet/winhelpers/knownpaths.py @@ -20,7 +20,7 @@ class GUID(ctypes.Structure): # http://msdn.microsoft.com/en-us/library/windows/desktop/dd378457.aspx -class FOLDERID: +class FOLDERID(object): # pylint: disable=bad-whitespace AccountPictures = UUID('{008ca0b1-55b4-4c56-b8a8-4de4b299d3be}') AdminTools = UUID('{724EF170-A42D-4FEF-9F26-B60E846FBA4F}') @@ -119,7 +119,7 @@ class FOLDERID: # http://msdn.microsoft.com/en-us/library/windows/desktop/bb762188.aspx -class UserHandle: +class UserHandle(object): current = wintypes.HANDLE(0) common = wintypes.HANDLE(-1)