From d529da172a71c592e11cac988969b624731b68e1 Mon Sep 17 00:00:00 2001 From: Andy Li Date: Sun, 26 Apr 2020 21:29:48 +0800 Subject: [PATCH] Cleanup dependencies (#201) * We don't need to shadow in `lombok` itself. Gradle must be upgraded to at least 4.6 to support `annotationProcessor`, which is a version that still supports Java 7. * `args4j-maven-plugin` is intended to use as a maven plugin. * The requirement for `jaxb-api` was removed in 81cba7d58c0ce8a334204700dca669f2ad8e16ff * We are only using `simple-xml`, don't need the whole `retrofit`+`okhttp`+`okio` chain. * Resolve deprecation warnings in JNA code. --- build.gradle | 19 ++++--- gradle/wrapper/gradle-wrapper.jar | Bin 55627 -> 58694 bytes gradle/wrapper/gradle-wrapper.properties | 6 +-- gradlew | 51 +++++++++++------- gradlew.bat | 21 +++++++- .../client/hardware/gpu/nvidia/Nvidia.java | 2 +- .../client/hardware/gpu/opencl/OpenCL.java | 2 +- src/com/sheepit/client/os/Windows.java | 2 +- .../client/os/windows/Kernel32Lib.java | 4 +- .../sheepit/client/os/windows/WinProcess.java | 2 +- 10 files changed, 71 insertions(+), 38 deletions(-) diff --git a/build.gradle b/build.gradle index eee0cb0..7070c05 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.1' + classpath 'com.github.jengelman.gradle.plugins:shadow:4.0.4' } } apply plugin: 'java' @@ -19,20 +19,23 @@ compileJava { options.compilerArgs << '-XDignore.symbol.file' } +shadowJar { + exclude 'OSGI-OPT/' // args4j garbage +} + repositories { jcenter() mavenCentral() } dependencies { - compile 'org.projectlombok:lombok:1.18.8' - compile 'org.kohsuke.args4j:args4j-maven-plugin:2.0.31' - compile 'net.lingala.zip4j:zip4j:1.3.2' - compile 'net.java.dev.jna:jna-platform:4.0.0' - compile 'net.java.dev.jna:jna:4.0.0' - compile 'javax.xml.bind:jaxb-api:2.3.1' - compile 'com.squareup.retrofit2:converter-simplexml:2.3.0' + compileOnly 'org.projectlombok:lombok:1.18.12' + annotationProcessor 'org.projectlombok:lombok:1.18.12' + compile 'args4j:args4j:2.33' + compile 'net.lingala.zip4j:zip4j:1.3.3' + compile 'net.java.dev.jna:jna-platform:5.0.0' + compile 'org.simpleframework:simple-xml:2.7.1' implementation 'com.formdev:flatlaf:0.30' } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 9ab0a835890a5db3e8ae4f8159e0cee6a2f64f45..490fda8577df6c95960ba7077c43220e5bb2c0d9 100644 GIT binary patch delta 27960 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�&9=cTlc(>U-pSp`j;kVeLQYAE^)&KM0zY z5S;0n0^HhjtA76w93%3dL>^^qkfgmXc!e1x$Q!O!TqKotce%UF5I&m&o7mv>SAd!D z?<;#$@(h#qwcd>%)0j^SOdY(max4MU07%__QK=?5%j;D1sV=;I{WWCYEaN57cnEt~2a1$UIYnob-N~J)bq%B)Ii>z%PJvEb zR+GqU)4RU4B}4e+by^=Qi$yAy04$g{915gtQPi9a2)5&&rT8jRBR}Pr@}p|k?QzvE z>IdOfL7wYKT9qn&iORrhWll7}K|3b?c$EH_>~v|Y9(;!Vbx=wh^~}2CtFw=m`DgXO z=1DJcumn|8@0Yy?Lf0QHci*0}bw1fush%#sW2$N?BRiN2WzD_|{wV}GBfya2A{f1Z z46je51j$!#9 zQTIzE8tfhALb%rnKYS|JYXA&?z*0JQXNkSjYr*t;bkIL)$=Xo zl5eRThSskeuC7V`%^~?Ym(;0?^jRG$Lz>oggL+`M#U7oGi8_-Db8X}G-2y#(e7H^h5oj=<%)z{|w2IJYOy->>9@yTtA5`d;(75EGTGIj#& z`({&aLQ^nrC&yNGtOF0M*63SzaH*7Qwf*neaMZwCLX@5(E=M4LWJ&=b9;GG%rfFc< zkbc%MJ~uOHz#Q+&rzr#3qIpy0iP_a{SlOf)jn$?>7YkpHzFX~w$ukFa?NRz3S30tiS3G0A}yCuvR) zA}Mbb3Xr4m2Y_aQ{oT86k~&=++zi$R9*Hq&ZqmZggf3a4B@=kAU@5R_EV}joT|CzD<_Rvmc}6Ux_t&ZD-As z+)HZoWr|SPUzEZ_wK0OQZDoU{msh!KP z;~cr91kWZ$KlmzE)9;fqa-(4wl3(Yr1?U_>(2m`E(CErCkhL>H)tEmu?K~G?6kT)G zBH_EjM!(%>AE%R~oIx-0n9E8MbUG)d9)?9_6~&u2NE#Clw2>bJ`)W0aOHE zwv}giZ8nObncPBi+Z`-ilF`v}FWz9bVG-R6R0Xy=$x{MC3_TV_$I2a!$`Ei$1jUBP z;0+dU-2!(!_#INgWVMDk(5@>8*}`86B3R7zf6(H#M8@uG@OExCX&Mp$Idd4?@h;vq z1;ORE+XPT>ovU|uV~)+n1JW1#p|YEgVmZ3Tl6p5F@Sg~E)}C@>H+PWu zfZ;r>cBT`lDpeFA6qB4A<@4FssMysz4SWEqkBIZ{Wf`U{S{wO-!Avq2%{beu=SF9` zBfJ|u6QeZ_FAu#6Z+HP0fT&9Q%gWzhf4VJj{2dk0+?#3H=_ZE@X>g=ua!x5Tzl=m? zP!i=1eTUQ8vnqBd!;LrhQ?BIN%6X$wt#u2H2R(+!LLe7vs1018ZQ3S8o=hPfwMY)s zxrRHkIbURx^|}tS!r%dk0ZjK^O;g%E5zE{jV`}XqOgIglbs-JnfV+ia#~3dR8gp+W z&}QfLZC?&+auZQ`nZaxx zZe5EHFBck_%p1i@00O4j2Y2zD{3=jSO`yjeXrRJf$E+8gZsZ4pS+5)CAb=a~CfH=c zWgwIMZLKb08l@f)+vx0x!u2sE+FYXeu^LI;9V%Nb94mEEj8kmiX=C!M9m-d zbg1$5pgrwe9qFN-LHKqUmxY@-Ra`+(h%BPVx6ir&ux&H{DahhB#k(IAZ33XZ#myQK zAAKvhQ@x~a!h*m5@UMpX+ASHc#Wz)t&GrtAre+*Vnz|=*KGSME!)f~9X8Q{0d8P2W zB@bP~@z1pF_fHuxu||Sa1&^zW;w;Y{2=^ukTY}|8xjmu$cF`-m_J4~|b|KjrQqo;h zK2+5P@P&-Em)-_*|1`q;Q3YeoKtQob^7sPbgfE($s$m%H%!F5%D*wmvhVhDEe?ohB zS5#i4@KEUq!?$GrR7bPINOh^iG?!e43{)^V>H-Z!`yoQI?^gTg!ySoGDxPk@VI|Hu;$+EgX1tHV@GwfW?{;FOA+vEbiZk>KT(Iijl%(+P4B;MiC}no&^JitT?iAmdXSl|usXuh+ zTkk!v?i`eeueSxvzSI*DPA^O?w*y9GQ1Guq`20?HuH)O^m$7MN@@7`~qFJD}&+G**pw%glnH$GjQs{=S}wN!fS z$yD?|!AIGPm`z1DsBvpF85dfEtyJY$QQD%zTLz%WWDyM}ju6B)H>R)_kKQb+YZ~dy z!Gz7tET&FR8BJ22tdVH=0xT^^(bzy_7n$X%b#n32^tj=wdT?k%vqXfw#7n_#7ETQ3 zNt>$3lEWd}GH3#cnmS8Hq5)$X*vKMx>KPHjSIC$@v)_{qNiFHjxa&?~kKT->VrSg% zAjmD`SPhwDDiFn|LPguxqia|gDKWxZu?pbDX(@Nd<;#`{f{#m0x3p|gVFG*{WTseY zUA!3WnR2p~0%M+0A?)B=$&5qMqs3FvHpLOeX~ZauBU2xpN)JrP!2uB(kvIyBnQMo#EY66fU!)kA*RQ(hKa`LL5j@D^xREy5d+bE)6NT?TFWgWyaD<9a- zwzNYpx3JTPaIm=!eS)7foER--hm=K?aBPvSK@s857N1;E6Av5A7&TaZ#l_i%EN;nA zcO$JIhz8f`T1;tY#{qBu4TtJmyhXyO7H|J}Y~D?VaanJ71_uB$iDy~W54ck_^HZcU z98@$oy~etQ{I2gPgWI+{Ly7S){KKC0S!}V=oJFT|XxtVeMuN>>Dd?z8XR8DC#-?2z zjI2!gD^>!v0Yk-zZ|w4%QHPc#U!0c+*FJtG51Tq@!P=Kgk_}>$I5Z_ZgT#&3cLXZK z=&app*&SFuwH#m-gAEIL=oG-1ZOO?NoO_Mir%44>S)(Cp zVl>pa1ZDv>59`XEi5#)0+DeX*(%wmn47Z-#9%Qxk3!2#&LFn~7d6P~`ORJ_l%5YM% z5VTS*@1RAbf5H;WReYV0ZQgM$yuZ)2I(#%yzvPaiU>9KMYr+^<3^sr-Hj?$jgmuU8 z*TLmaY-TdgQD#b5)D}-+GT8cP1_c=&)2NJ}H|^8dJp}nHr}*R=#Lh}c2MV*N%xAwH zGmvRkavH-I*i+Ss$(JX>!Kl(n&_Ra%!E;n&3Y0x>*!gVV zr_He_k`PvONZQ9^A~uVA2O*8G)h3$0-9oHYHeY}}`Y6*hvN5}B*EZ}QEwAk*DI+n| z?wfO~Ne|SfneqyYEZmaa^u*|(H;Xs55SF4*9t~pSj5xFjVl2>qaTeb@NwH|V}{w25+{Z67Z z8F#iVqjr{_3dk+D4}&gLpC6_66>A z`+~kf=G(4&0QKcq?2!1|z3hRfBl@||FcvU_crU`eE!=kAokqCgMc6!eRhbFXS`Ks> z*ZRhCH)q|?8h{Ez5|ThJ$a0unKY!)G(VFpPz8L*VN3um^wYiJkyg>s)Qu!k;(m3oe+^@|X z4*bKq>&O{kLyPl_>ray!9@TqETp<2IvT@LOf7qz|hm-Z65WL8|5dQwWs1+Ro6=w;A#+*eJ zpl6ypv0FgE?ZYQLZs4`H6U<~##}urXypC1==q@^gLL1?+XuwyGEM7~DuQzP$HNo!p zLexH&xGqR1L$N@}v8fy9j$S%zmZ-sK40Y@Zy>nJN-eZzNYdd85Yv%<6TCs-b+uGr& zLnklmp`Q#N5INl2wQTQ!9wqd0?S?iDf(Oq{Ub(3Sr1WwfjN}o0CR>zmph~z~ZZvd4 z{O0afsO{aHXt)(Uk%||MM2NS1pRIHb0cq693I;nKW@z(_ZvmEfvfSsJnh%X4yty_w zH#hOo%B^bYeJ7RIG*2`s8gdRc&ux?E<^_31t>b-!8(JC$PClHAKx5L$v1yaV=RY|8 zsGDB|o%edfA3U)XzEoYDtMP@iHglA?$xqzn5yQy^1rz+ZeOIdY#Q#U(fxAa`FLYHG zUoA2TS>+h-@KtW+dZNpD&=PVYTXVLy?LH}$>d=cQ1KbE2o!4nb)1tMvDMgw>1J@-A z)XXVT--b{%?NlFWl|zTb$ur)?t5xR}DyNi1?#-gGFMbkvLR%%<(#*xlgqIlOOw3)+ zva~P<xtum%3x?S_wJHP)S`l%rW^+n9du(Jp%^Qu-{@6W|F(sc;{f;js zl}IP56!{TVYknsMH?t&}1F`8C5pE^R@@2i^9+2 z*D=WAh;-JAZ>{0o_H5RE!XD3S8q_M|#Ph~fRugZwZ<%z&{Br~)dgk5t`o=m(H9t3#=Ec`n`ViJmfdy+_(@RBSnBH;BI=ttAYaRnwz$X_YH8SV3>azb_l$xn(*(*y{4R ztcYqdQ?lD?<&iZ{6&*(&PF+D#!bzayZ8E`oF|}^d29d5hb=8K#D<4(vEygJ}O}_I9 z6~RQdjSk=%$~RT(h(>-m!Ky@`KkZgv|L~&Www+P1!_KJ{^CBf%e52Uln%T6BjDm@C z!80-6&EdCal^^Y(U&36J>oXw4ICWd(L(e{I%9>i(wc{|Tpp*&`lyxb3;q@7^N(`rQ zo_Tds&)Uolo!;mXSk%eo)gQg(qWPdH;5{P|F-Mg!fxVKjPxae`S9;5tMT5>J)nta+ z5X_a1V9K4B4(A$=sFFqqbFD<%jJK7mQMNwpI+3&7+e^|Ogn}m+J(uk|yU4+P-=gbN zN>qV6zYnd~*#zAgP^K50B-h%=-Gk7(CMXQ$;oFz3vxUWs^KVQYQqzB9 z5-o8fEG!*P++C5}aoKQRCwPVz70)jkA9vKBpl${1zo$tba3$AWITUhdDe7d5e4+mA zFmk`@%*x|&Ftl&WF*Y{tyP6kB$u$~_hN9Jy$BZ3$g?Cp+8TJ+>sZZ6Tu-pZ_R~1v3 zv*X7=n*4CAA0*iV#$MN1AM>eTgiy~Qbuh{F>O&YTdeT@SgtOC!4EfF`D?M6%OZgli z`v<9{4DoA9qLTIMp8Rj$md7&*-XjreTOBk_VbiSVgKlcT)wUhK^~cEedaMBw40jHy zs7~-5zHI;a-sxtgL!6Z~I}HB8)>G0B+u5s1{phzEmhF`)GRJor{TD=9y^^aY$l{)T zCRJ*jNN$kw^!iYi?P@DE&Fsu&>7&hbY1L4fx8`W!vhH`spJnirWA=~Z5T?isZRo+3 z)}&N**P*v<0)1=q|WYSd(1wfF~ESu7dvzs(9T*Wo!ZZMh;y(y1+mMhZE zAe}qxCNzV|*eFo^g|nKnlU!zMon{i(YoA5=yGZ~czx1JLHONLkL?7xaD3}7a2F-x@ z#E^tnmcO*|e~_D@AhtS8lLM8=eOf8+vt~EoheLaVtmEWHQU~*H-F=yG#K?0*{|Zx> zQqc%YQ|3ep-om~1SsXqSqq*#n6p~0~9*&NIr|O20X^z4Cfhnjf2qc21CQHJ|v-YrA z566zmMCa4VUAjV;Oj2>)dVisN% zyj#^tnK&(;E3dKQmOz3*Pbv)R&!}S^k6~dq48!HhraC@wJuU^!vWrX5_QB`|Hg;E6 zcGKU-2v!Z`4w*)E1`sn3EtTsl7$!#7$E8432EenQVWq=Uw^m+&@{U_CQ5qpasad(v z4)qba_nte^as>J%-6mLC*5{{6RSOd>=bs(13dM5Ns?We2Xga#ZDR)xkN~<+1Gt zQ6#aOUhs9VeSFud&N^hi0%_N&c=p?q`x5u_KO)x}KFak8N5&>;4A_2>61nww@CmaW zbfeLu#7Lvl*SQb*@YNGo$3P?#+Oi+TMNGQ?+e`mX5|0-)*N)xcDJ9Ji4a~cpa+hb` zGjD6!t3E_x!4(hUjs~sYe@u^5ws(+F9#M*@HRrZ6!0pC-&uRZPTSw$sq2#o`RNu$f z%J=7oPpuda)#F_(K%TPQkqu3R-WTODD?SI+K_=(|%&>In@v1X<)InS`oKym`=5 zHaGl6S1zkV69}zIC&MBB?Ds}8lQi*!Wqj(a4+~<@8!9ce)ZRACdPmxBcsdO@)>|*# zkVOon9utUGn$7{sC-Li~-crPN+3_3k#qj&@HP_V-w>0e=)Fh!2XyM;C1kl1?xYieX zr$kOPC?k6^n!BIgvd1DkE*M>hgwI0hPQ!9+hSOA+jNyUXUJ8>N2e0C+haov~i4`U) zUa(okobS#a!CLoQ=41+7#3@h9BVN^9+(PWUc%7@utTwn z^>10!DK!M)XA(FvVhR;okX-o8s-mzfzcJytP<NfaCVwXSxXaE8p=4vc!i!8#PZ=BP6i7qL-C zmq)DTmfxDc6b=)4l)p>&(&~i@JY}pTlV?yeS|U7k=MA3@6Zf%Q&|+TOmz`1Dn}ToETnMq~i$dqgXL<1$=rHMcu1X4sMo5m`(SgY%@vRp14(}C>5$)9xXGw?LEQcvIU}6-yLrA@rvXr%CWU1C;n?{WZ926vH#%Y@k zi}?!gg=H)wGuFJ@lk8J;R$nrX$2zj6uoNtYcO+@Q`EX+5IGbRhY!o1tl&nCW^yY{l zMoODq){tbaUzY8G*)5DIiLnDBq6g=fhzpEm;p!PEWWP=c+CL*Fs6<9WG6KZa?)|;s zD4~N3+Z-o@#;WOpDW!;h^jeg?-_TfkS2qF95dZwGRQ7aK4I@Maqq2WdW{#;N>Y<)X zvsvbG5fP3w?de~qnTmZ6rFk?kJQMiVj*@p0o6k=#mYBUgpLS=yB4u>d;+qAV8l1Q; zWlHZ(*+fA#J)5L6nR{jPOONFl_b;*_dHjuCH8#a3(758+b_nyf)qt{@N4jhSm(#iI z^316bT^~GnIP5??@5u@+=C{eON7jQIR-69wG-h@RT2J$y(17~jYEVL)+y3GCjM0SY zvBAs=V;GF=6O*^P#@-2atH<5+ePqq{O^QANt~=WkQ+d*d@1;Bb`eY_X|4~(?6V!!q zd#M2a3hGxhq4Ht*9!9SG5e}y$W+Vz~-i?GdJtSI3@lnjP%c9pKTCBnHB718Vk18Fc z(=9Z#-w5EU{~)Kie1jsL=~LH_fzoNtFreWIbM1Ea$>gN^=uvbZ_|8JGnJ3B9@wX!8 z4IF11Gm?$nh#r06`9jnsud@1(zttodly7;j-Az4kq$Fj)SW9!ytcl{lt~z7@7fTar zEt)v&4B>v35XL0xiT`yL-B29KdAECVEuS(!>f=6q?mqN4X+Ubl@kJ8gyuL1Qu8-;8 z9wvrbn^I~Li%!IyGmdaljz4j&|E*9()g%77dZaek4XWK$9FTeLlTpqMaASJcT zF;F>hyfPI-Asl0fdDb2kZ!8nQIEAK7q%KMgl|mJoD3N6gSZLRakZe(!sAp`>2`Rvc zSRf?uQ2PAbd$L^n2huHh?DG@Xfw_+Q6i1_Zz*Z5wVkj-H)ojDxK5_7TM6V}%nI)GVpl=O_0 zLQP57(R3zDaop*P;uYl-8iPX}O<_Zi?}Q#acDxgB!T0#i0k-4Dn^3Hbp|Nj?Zfr%m zRl}mVT2-oOc7$l}m)GOUvevo+eSx&qg7ytuD=%3%y6oH2SuJ+*qwJ$y}wb1SqS0KE;u5JzNmgu$^n8lGPT}ndsuXQGQ1yYp3jt$kGNv|?G|MHO=%iObEMRaQm(lUh02eTR;+Z4gx zbY6(#mmC|=5Z}L@Dsb1bD7fRs^ad3CwzhgoHnMFf{6+TKnYxjv{^&vWUq`j2)YP@5 z4Gtd^BT5#~_Dc1Q-X#^tKwq&h5H&>i?uX`+&$uG3rOo^42^dFhg0{4oPfQ83s8(s* z>Dz)nx=C0DIC857?8D!?`I!3i^#>tsw>)66PPr)_!qaPFG%dKxEg&mMf8%C{h}An? zA!(g?7j2X zO)|A&BI|rW=1aF#4qZ@Hyk)a*zVD~H%=YOeom5~CF+}}^N6vQe1Fvz022VO4%Y=_* zoFDuxGh6LGt)zb(j7hwY`<-sd!8RJb{Q)#~ZFyP#@U#9j?3U5@Zu|i^=jRSWl5%zG zhfX+8p6@tYpqH$yvs%2nR2ti7%{dn<*NmJYYkN^XxQ546liCi=4dyr(m%Nl&Z!z}> zJ1z+8qgs7=#J_^ZUOgK&JRWJ(VSY)rf*+$EdrxUU>ny+MAS=eelGm-;*C)u$P>#DQ z`RR7SeBIQx9f7jySlNR&71kMMWEa};;BFCJna$6op*de9w39Snutn7yFPsjS4#^IAh9Gd`c*{q$a8JNH#tbO#REa!vj z$Yabgc1Sbzko_G(ofyrUxf^~HF2_jYR2JUZfb7*9K!kB!T!0q1H{_g@eY`St+%`H z;7*T{B1fsf0N(%~D$p2o3~Fm_4Pt;u2wW;)WE3o<|6joOrvmZ6MfmTVYl6hcC`3rV z^1uHii2)q&*K36tmN!Vnd<}}INqh~71plc}%*1pJ`=1^$0AsigMcRa6IWhst75}^W zKNX696-6L9{adg2e=~k67XKnR zf#V^M0dXQ81acEH?3pt;ENY7OdeFxFD$29~kG=w3C4zugLIv<*u&8CU>v+$C-j@%6 zW`Kb@5bgiKfYD`B!E~n)I;CuG@su3ETLO4i1p6^qSNJ4n(C>9Tw!j)e0e0e9US)*W zNr%{1oQfp^>}#C~ToAqqJY;}*`J=P{9+m&(nSr5)=p`fJ70Eh)0{?ds?CX`; zZjvhmZt%@N%p%CoUT-H-1Nl!@LhCQc$>Lf*YUSM*Joq{_78yoiX!0ISg!CRb9C2(7d`(ocC2@RXRI*6WD*## z!|A%c1jhO98o=H=z@8w2JxD}&-ZR}UX%68vs3qxHM&d%$2NFhcnd z42tjp9DzR~W-0ZeGzK8J0tCbe2;Kz)jQ%VdEFup`t$sU6+L`RB+TSo+zi5_+($C8_Jx zWA)t=^8nt)bHJDof+0c!*m0i-@Ft?N{I6;I=d}K-tQ!8@{qsj>{Srn)LgM&^2JT3W zuC@ySQfV;iVT7Pqss8ZH01$(~g*X|Tn*$tb*wbO$>t0+b2LT>D1bpO2s6*c33eP@5 za~+SU8grdcVFln>u47;NJj_T3Af3R4IKRPNu58bYP+rI167s;P1YQk)oZm-th%106 zhV|0X{Sl;JXZU^((rf4y2{_dUOB^M?UeT{peMm@b*L^@z_x*>1F!7!)lC8c2a8tlV zkARO2zrxFp5nZ?cYy0!>cxc2GzE2Vz*bt4-5s16Nu2)hL`ws^frZSF(Fh3ZL{~Vit zy}JSwtK<9;9mFM{>sE{MuSkC{08w9WJ>nw5bxuv;KODk8D)NW+Y&HRH@c_OG+}Als z#Fba1YGdj@Nbkhnf{KB`Cjrb7hy$Fl2FR-T5qzba{OK!Q{m*m@)@_Za_wSqiZ_af+ jW%`+O{VMKl|2qRy0iyv!?&r+Li)09V7e)ar64L(xr6?Q{ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 97452b4..ff0aac1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Aug 11 10:36:15 CEST 2019 +#Fri Apr 10 00:43:49 CST 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-all.zip +zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index cccdd3d..2fe81a7 100755 --- a/gradlew +++ b/gradlew @@ -1,5 +1,21 @@ #!/usr/bin/env sh +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + ############################################################################## ## ## Gradle start up script for UN*X @@ -28,7 +44,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -109,8 +125,8 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` JAVACMD=`cygpath --unix "$JAVACMD"` @@ -138,19 +154,19 @@ if $cygwin ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi @@ -159,14 +175,9 @@ save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=$(save "$@") +APP_ARGS=`save "$@"` # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index f955316..62bd9b9 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -13,8 +29,11 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome diff --git a/src/com/sheepit/client/hardware/gpu/nvidia/Nvidia.java b/src/com/sheepit/client/hardware/gpu/nvidia/Nvidia.java index 18f792b..383c22e 100644 --- a/src/com/sheepit/client/hardware/gpu/nvidia/Nvidia.java +++ b/src/com/sheepit/client/hardware/gpu/nvidia/Nvidia.java @@ -22,7 +22,7 @@ public class Nvidia implements GPULister { } CUDA cudalib = null; try { - cudalib = (CUDA) Native.loadLibrary(path, CUDA.class); + cudalib = (CUDA) Native.load(path, CUDA.class); } catch (java.lang.UnsatisfiedLinkError e) { return null; diff --git a/src/com/sheepit/client/hardware/gpu/opencl/OpenCL.java b/src/com/sheepit/client/hardware/gpu/opencl/OpenCL.java index 77cefd6..bd8345b 100644 --- a/src/com/sheepit/client/hardware/gpu/opencl/OpenCL.java +++ b/src/com/sheepit/client/hardware/gpu/opencl/OpenCL.java @@ -40,7 +40,7 @@ public class OpenCL implements GPULister { String path = "OpenCL"; try { - lib = (OpenCLLib) Native.loadLibrary(path, OpenCLLib.class); + lib = (OpenCLLib) Native.load(path, OpenCLLib.class); } catch (java.lang.UnsatisfiedLinkError e) { System.out.println("OpenCL::getGpus failed(A) to load OpenCL lib (path: " + path + ")"); diff --git a/src/com/sheepit/client/os/Windows.java b/src/com/sheepit/client/os/Windows.java index f897ade..16c7433 100644 --- a/src/com/sheepit/client/os/Windows.java +++ b/src/com/sheepit/client/os/Windows.java @@ -127,7 +127,7 @@ public class Windows extends OS { // disable a popup because the renderer might crash (seg fault) Kernel32Lib kernel32lib = null; try { - kernel32lib = (Kernel32Lib) Native.loadLibrary(Kernel32Lib.path, Kernel32Lib.class); + kernel32lib = (Kernel32Lib) Native.load(Kernel32Lib.path, Kernel32Lib.class); kernel32lib.SetErrorMode(Kernel32Lib.SEM_NOGPFAULTERRORBOX); } catch (java.lang.UnsatisfiedLinkError e) { diff --git a/src/com/sheepit/client/os/windows/Kernel32Lib.java b/src/com/sheepit/client/os/windows/Kernel32Lib.java index 51a30d4..81178d4 100644 --- a/src/com/sheepit/client/os/windows/Kernel32Lib.java +++ b/src/com/sheepit/client/os/windows/Kernel32Lib.java @@ -152,8 +152,8 @@ public interface Kernel32Lib extends Library { public char[] szExeFile = new char[WinDef.MAX_PATH]; @Override - protected List getFieldOrder() { - return Arrays.asList(new String[] { "dwSize", "cntUsage", "th32ProcessID", "th32DefaultHeapID", "th32ModuleID", "cntThreads", "th32ParentProcessID", "pcPriClassBase", "dwFlags", "szExeFile" }); + protected List getFieldOrder() { + return Arrays.asList("dwSize", "cntUsage", "th32ProcessID", "th32DefaultHeapID", "th32ModuleID", "cntThreads", "th32ParentProcessID", "pcPriClassBase", "dwFlags", "szExeFile"); } } diff --git a/src/com/sheepit/client/os/windows/WinProcess.java b/src/com/sheepit/client/os/windows/WinProcess.java index 0e7549c..b074eba 100644 --- a/src/com/sheepit/client/os/windows/WinProcess.java +++ b/src/com/sheepit/client/os/windows/WinProcess.java @@ -49,7 +49,7 @@ public class WinProcess { this.pid = -1; this.kernel32lib = null; try { - this.kernel32lib = (Kernel32Lib) Native.loadLibrary(Kernel32Lib.path, Kernel32Lib.class); + this.kernel32lib = (Kernel32Lib) Native.load(Kernel32Lib.path, Kernel32Lib.class); } catch (java.lang.UnsatisfiedLinkError e) { System.out.println("WinProcess::construct " + e);