From eb26e71019f13af5a67745a0826a995bb2d0a612 Mon Sep 17 00:00:00 2001 From: Antoine Poinsot Date: Tue, 9 May 2023 11:11:37 +0200 Subject: [PATCH 1/6] contrib: cleanup macOS' Info.plist Based on the doc at https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW5, get rid of some superfluous fields and cleanup the whole file. --- .../Liana.app/Contents/Info.plist | 101 +++++++----------- 1 file changed, 38 insertions(+), 63 deletions(-) diff --git a/contrib/release/macos/dmg_template/Liana.app/Contents/Info.plist b/contrib/release/macos/dmg_template/Liana.app/Contents/Info.plist index fdf5b58b..46f57151 100644 --- a/contrib/release/macos/dmg_template/Liana.app/Contents/Info.plist +++ b/contrib/release/macos/dmg_template/Liana.app/Contents/Info.plist @@ -1,69 +1,44 @@ - - LSMinimumSystemVersion - 10.15.0 - - LSArchitecturePriority - - x86_64 - - - - - - - CFBundlePackageType - APPL - - CFBundleSupportedPlatforms - - MacOSX - - - CFBundleShortVersionString - VERSION_PLACEHOLDER - - CFBundleVersion - VERSION_PLACEHOLDER - - CFBundleSignature - ???? - - CFBundleExecutable - Liana - - CFBundleName - Liana - - LSHasLocalizedDisplayName - - - CFBundleIdentifier - org.wizardsardine.liana - - CFBundleURLTypes - + + - CFBundleTypeRole - Editor - CFBundleURLName - org.wizardsardine.liana - CFBundleURLSchemes - - liana - + CFBundleName + Liana + + CFBundleDisplayName + Liana + + CFBundleIdentifier + com.wizardsardine.liana + + CFBundleVersion + VERSION_PLACEHOLDER + + CFBundleShortVersionString + VERSION_PLACEHOLDER + + CFBundlePackageType + APPL + + CFBundleSignature + ???? + + CFBundleExecutable + Liana + + LSMinimumSystemVersion + 10.15.0 + + CFBundleIconFile + Liana.icns + + NSPrincipalClass + NSApplication + + LSApplicationCategoryType + public.app-category.finance + - - - NSPrincipalClass - NSApplication - - NSHighResolutionCapable - True - - LSApplicationCategoryType - public.app-category.finance - From eade76e3f181c383f376ac27df80bd78e8409754 Mon Sep 17 00:00:00 2001 From: Antoine Poinsot Date: Tue, 9 May 2023 11:13:21 +0200 Subject: [PATCH 2/6] contrib: add the Liana icon to the macOS distribution bundle --- .../Liana.app/Contents/Resources/Liana.icns | Bin 0 -> 21444 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 contrib/release/macos/dmg_template/Liana.app/Contents/Resources/Liana.icns diff --git a/contrib/release/macos/dmg_template/Liana.app/Contents/Resources/Liana.icns b/contrib/release/macos/dmg_template/Liana.app/Contents/Resources/Liana.icns new file mode 100644 index 0000000000000000000000000000000000000000..5fa35a07af69ddc7d02f7fe52b0ab165f97dd1dd GIT binary patch literal 21444 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�n?Fyy{X!L*Ky(t*(=P;Zg+TIuuUQEn{%z$ez;ZyIDzjKq(+<;I|D zSBC;`8o0Adg-u7_cN~wLTb>wP?;qxsp=<3K>Vcy(Kisp9jH?sBa4B_AND;1V^v6F$ zJe~dhN+LBOM_-`|s!lH|G9W{yMfclQs7`x(HaYOC*O5WnTB{Q!18NMs#N6ht3=OsQj7Fh(@2ycB(!<$NUjz#F{mzcgA zjvDtY+xzLbQ}p|eQyz2APIQ4O!SMW=4)`v5F`BN6gu7?7-Iu?k610CvPp(-_7zC>x zuRV^wn=17Z>N72fA|^;(uRQIxx^rw=H(H=CL#}9n#@-f*0K&hY@rWM>RO<)n-(V?rwTe-=x|O+Tom%t8 z%Ymg~`F1S+#SiCa=b0FG#E{^|?D*lAJ^eLTc%A4bS#vbQ^#kc=O-3%a<+$#5GnYmX z2kxh2+pD-*pfKv;RUP1=Dc3sa{|Fzxdb5f>Ix2~2>Go-M#Y^YG9Yx+y(qZ^}hiynD zwqEs~Cz^6Tir_Rcg<$ZyEd{&|`0biInba32R^S54WD;%hm13$*;$4V>p%KT%mNrM! zp+6GW?YLY}+CB52oYD^W=iNsf6DiEI9#|lquU?;t6=@3yT)R3S*BvK@s%4?`Wi>qA z1;kUmnBPKP**7oHH~_dyuI}V?jm5NXkPAE&b)MZTPR~x!?K{2#4b)fu6lN7?tRT|O zr5S%IiZk84p@=n9H*#aUOSYv+KLdtw#u58c8_^Ak(CU#3ZI2PCguUX(7W-;JnH3UT7Nt|{$RMR z%vGifC_-STioeROzrH%lO~{kR?2`!A;V$dBu{Yse>vg|{wpoC|vTY=bv*5Y?MyaUk z$#j&G%R+tUR~fq>WZ!1T=b|QeTdznqJG?npEE^$QbO?lX97)+q%vdaF)hS%pnB4Ni z;2#O~VZ1NnZ@g$${nqM7~Z~9T8UU3BE}Pb3{bld_?l^ZRk`eU$foG z;)N+pTdTmSVXcYy;6ArUtgXJ_-hRU!%K^n~ebgjnGuW6?-HTjP7n}KH)0{FgLScn2 z0i3MUp1xfD@!AK~J&rLD(=4 z9|`}X&$_7`&S|87 zI;qNy%!C_T&$XSA(Onxo2lJ9a!MPs%+>^Odvmqh`7f|~OrmQ*5bz@ST<*NrWR;Dx& z&&<_tIL#;DRO@`QM5l*Z6}cY)fdzz)NSbB?zV|pe=hPeGE*RL3ruh1<%F=QKH$I23 zsM4HJ>`oFH_56IZH>~1*xxvnz?j=p~EJqV3XEJU2vT4?)vG2dV^)}ntQzFT=4XdAE z8O2j<*Ze?voZF_(M-j3j*a$Y02ls)cC6RGt#yw%6z;Q}l1z+aIX++GrA&@>q!WLAI zg7qgVIEXu&@8s2lE^FL?fT)GH4?16Y{5wh^v)voF__#Bu7?}u5Zs2SLf#D zT%&7dU$1rv7<2KD<@uAZJ=+%?U-~Rf1ubD zp|Ws6!>;^ev)o+&U|+O8s5GIac{qrh5PAWt^^0c!izOW?mTF@ z$ZQ+lQ-!r2midXLXi%hPX8NH)1Rf~(=QQa?6_~~LoZiL47krR%VtqS*kHx%Ignow+ zMrfa7HvP#x=j4Gj6uUJ)@tcu=XL8*8Cq)fb;$#-9l@l5D%juGmlB#+R4>uaE_GC7E zRI$IAEY#3M7Wps}``j2mi+cnd5pFInXA%ftzlbCF=VqGpQ=XNFM4*y~ao63+8V~V?Q%L zX%HFd#|f3v`0c1&Hr=Vi!*@Y(+!ko`0Tpx{x7FX*S4oq102quAFDAl3A*YLTB9wwI z?}Q-g*GU?^A#1o-)RsxfQ~!gUoZKq936a?$86X6*vxqJMT;}Ygl-M94d}!D}Dnp(C z5CIaFl70XQYp@dDyv_faw!$XJaq$8>x8vpI?_zJzg(zx048Q(wfy`Xo0D!9Zf55cj zux#T0#k8e1&MUA?B>#hH^^Kzqv`Jq4cUFX8WUIAK$jqKPS8G}0BeHc*BQbvZDOIk7 zf6a4Hu}v_O=&krizlqzAcF}ZinGC*zj7*A!e7Ezd8f zHQ!{9W(M+j&e|`pq-D)ZbZ`zIE&GmUuAV%&cDRms`jxZ8Lyj6?M;SD6UyuVHKq^R$ zP|`eAS4>LUEx}_(`%5QBfgM~i@D{YDDt)P3py3UI7$9iMy+8Qj#G#_9dV(V6O7Hqf-;7stg0HQhJ1#Mv;2|t%e74HsPzp07la?Si>esO z&`|$l8Rjh=+lGblBsw~w$`{TzZ>~^QZ*l<6!QljZsKLWeaO-=8_`j9(ILtbo*fQfp z2Uqu+3b>wgnd5 z9}n$gv(5fwJ_V`5j|fULv;7leStqb)&1j8?B_Nz|CN5O*~ z&EOnHGDGy^1MAAc!!stcMSb>Kg9`V-$!7nuK8M1WTuz_traG{V{YSeDcnMTI2TzWSq-OxNChljRgh> zdnm-bca{)m<=!Dwh@W~z6x2+Q#Tu5{@}xUcsX%{YB@+8~h@<_V;%OsKHoj6=ApO&a449vh^O04K;k=zwi0!89}H>L~xmN-XWyVR$4AP9(~VCaR)s|67PdJUa;D3 zlgg024_ihE*~G44SeLFRx}eS@KjBW->6(TvjNdyAKWhA~F6Brt*{Jo|v&4P-gdN~~}XgxJ#J*CM>y@ZMnTb<_(H+E}yiFtmwq_)9QZR&l3> z242^f?u^>yDG&HRlqD!?lU7LxmcpcW{6>vU?-lGpmZ%4Xjs7RIU3BgY*5+zM#0QM+ zIGlNwIf)c(CYM{};PB-j(;*>v^j5f^$y#;Y9Vk_7A#Oq{3@=^h-Vx^U%AIw*WZ>c8 zym^M!0k!lciwP5dP%rwYJ|CLG%Byh26{I-t^ibZP=T6AgLmR{98v6wAyHM5+(coGL zgD$eOAu@}M)K$#l4kNT)4wz{>qmX`owaC4Jc-AiKRT~XQ4Y&Fc%bH)bROWR09XOgc%7?U`*tWW*^z#wschy`UQWwFl zzc&uzuA}H)n%&7)y^v^#d@0ddmfjRvjZK#s6a0^^e(>KZur+mP=CB($?N!RI0p9wN z{+O3F;n_7VWbBZIA;iRFKeJbius$O{D+N6paN&`cbSef%{vd6|?@&bh^U(C|?7MEA z#c|`T@HjbFeKYdd61eT_#acP%8J&zLVg}ONql2rT*xe^1`(fI1M{i0SYcBsBjLmuS ztZ`w>y|lL%ifSOCzz4oXaxO$Mmo5dML3nF|s-kV3(`%Ha>88rq(iJf?JF8J)?ff8T zYrvPKah5Eoa13GI_)(L8NJLo~Nlv`~M#Wk0xaMoFEHWm1uVl2>1Ksw`pLBm2C(opL zYS-CF@pY-k_Q+u#*On<+$I*hr853lAkChAR*c_?j&-`7#qL14mcVj61keRlF-WpZj z#g1`zDIzgt{A&OrpM*vv4IbqyOR13o#63~4aHE(z_`zsWk+m+bvovE zB)1%yeDLqC3jI^RHPvY^y;v9uRUVwkyNgCG#l=xKz3_Vd{$va&882E6?7h8EJcaMY zJ@p^cM@zlE&k-VEu&K}KWnHTDT1BH3(&J@_rHWV^oK?S_8H)ea_2|td>Gp)*6KBt7 z<}df~Id#3uH=DgJy=@0*o86|q$o44V)l;&Ivqhu2oCJR%Pnn=|>?Y=ZFz(+>F`AH2 zwNXX7wv2X~wWRv`W*ft8`PUw;78f;?-F!um%;R)`z(zKod zOn&KtMc%zhgqivf#HpLJY>Mf)l9-CC*@SV`F>>p28au7lcF{EO_zBZsKlnu3Y*ZV?SdXgsC86(Cj;)>ZR}uo7?Sy; z!+SQVTclB%o4T(9&yV=lq7!qw#t$;J`%FqX|*hxJ4;;htMARGA%<^L!mf|O&ir!8A8%Tl7gw*Qvj z^ZIhV^ka>eJ~sTQ@w*z{R)N-904rA({gbTT&?h^cy$T-Bat-9=5>8FA@7rK|6g{Z8 zeTf`+#Mg2)p>@b`_b0{Fr(Y9-!>}{2eoEK-|9QXW@@nr>NQpkB`H3kTeYIdX@sO3o z@}&-Y72Dy?tzA^l^zMyffkv~0yHIqVb=9<>P_ua_vpP<8@eBWfo5P>;ziUDfbOUXU zsD-BBOoQiu&Mro$W?Ej~t7axoe3;!zjxBjuU$FVSxHW)|yAw{v$Gk;ZHoedGn`+5` z%Ask|*mB$3v(fUGZd*dq<~Qajdn40^HxIkz^lx6p=oBQj9`$7SaJtY%)8JIDel~N> zMgg6>9`~k-j(zcxN9TD6UhIv*yz-y$iy{SkD zr8zyr5ozAW4SN1|6%j>WZ-jUfU7GzeL`22VOcoKvL<5&7a$f%E#g4u({>QSkaL#w) zADVgozgd=C0D$26f3Pg6VEL&2YgxMb_*}v=@%>+xWxb9nl_4p-eS8i!K;@%J@2@$BtUy0LlFCBPCA8eX*sYEKTAsGp^UUB?T=|M$wbG$q% zb&uMwS$k>6m5f!TK8>D@o?p9F*oNFZ-DhuBZl0%fKucko9|jL-I^#t{+{R=!WwG8`Tm>Bw(*hCl@;0TrQC?{BO_{4LAJ3f(j3 z<&%4D*zny}fF9uD>~$_>3Ry;VsdI@XQLg{{T@Y@X7C?Z!*i_`iY}|fKw&;ZUuNSfl z_Yl(J;}SJm?tkR9gOl~&dw{iwbIrvkUx&PEqo}fqW`1f>dJ1@R2;@Dg3$dlrBn=ZF`!^X%(i%%UWoKVz3WNuoxdS#MK;?SDh0(ALbsttlsNiU2aXM>*&!x>jd5Sz;S|t{3hl9cNpq`K&L}a|sA`aT;^HKtC z+`Rk04S$f6xOE2sj@c>%f_v%ENJ3=1-W&t*`)9JZs0rlrD2bcfTV+f#PS>iBFT1*{ zzsa$`CxBRD5Wl8F%G$e7)iFZ9Ar$_?-CGp~c&P@i*0 z_~EtP`FN;7nJq}5S{~PkF3*414l4hhq2Jm%w{kf&-MAiwC?`E4yA`xTreEr<3G5T8 z?NrhVyON&~T_6YkaLAz@f3K-rx}})TQqX(1S^}Gnc<|l&7P{Ng_<9ssPH;-fZ-Vl_ zTOho}IP9dGN&WUA#9=$v2s4(~i=mpjEMM@wFGo7(tX@Q4s^^wTEt|?@^L=-(l8*OR zb1uw*U#r!cilT)cO^MzpK}4)yoQ%vX^V-i$H1K6$Ybx)8Dc6oSI&wTNTbn6d21!v5 zCBg>TH!kUR6Q=IEO3A2RYZ%@Ivj Date: Tue, 9 May 2023 11:30:27 +0200 Subject: [PATCH 3/6] contrib: distribute on macOS using a zip, not a dmg The DMG needs more custom and complicated tooling. Switching to a zip is also more compatible with our upcoming codesigning tooling. No need for a DS_Store anymore. The UX is also neat for the user: once downloaded they can just click on the app. They can still drag it to the application folder. --- .../Liana.app/Contents/Info.plist | 0 .../Liana.app/Contents/PkgInfo | 0 .../Liana.app/Contents/Resources/Liana.icns | Bin .../dmg_template/.background/background.tiff | Bin 18464 -> 0 bytes contrib/release/macos/gen_dstore.py | 51 ------------------ contrib/release/release.sh | 20 +++---- 6 files changed, 6 insertions(+), 65 deletions(-) rename contrib/release/macos/{dmg_template => }/Liana.app/Contents/Info.plist (100%) rename contrib/release/macos/{dmg_template => }/Liana.app/Contents/PkgInfo (100%) rename contrib/release/macos/{dmg_template => }/Liana.app/Contents/Resources/Liana.icns (100%) delete mode 100644 contrib/release/macos/dmg_template/.background/background.tiff delete mode 100644 contrib/release/macos/gen_dstore.py diff --git a/contrib/release/macos/dmg_template/Liana.app/Contents/Info.plist b/contrib/release/macos/Liana.app/Contents/Info.plist similarity index 100% rename from contrib/release/macos/dmg_template/Liana.app/Contents/Info.plist rename to contrib/release/macos/Liana.app/Contents/Info.plist diff --git a/contrib/release/macos/dmg_template/Liana.app/Contents/PkgInfo b/contrib/release/macos/Liana.app/Contents/PkgInfo similarity index 100% rename from contrib/release/macos/dmg_template/Liana.app/Contents/PkgInfo rename to contrib/release/macos/Liana.app/Contents/PkgInfo diff --git a/contrib/release/macos/dmg_template/Liana.app/Contents/Resources/Liana.icns b/contrib/release/macos/Liana.app/Contents/Resources/Liana.icns similarity index 100% rename from contrib/release/macos/dmg_template/Liana.app/Contents/Resources/Liana.icns rename to contrib/release/macos/Liana.app/Contents/Resources/Liana.icns diff --git a/contrib/release/macos/dmg_template/.background/background.tiff b/contrib/release/macos/dmg_template/.background/background.tiff deleted file mode 100644 index 1fb088c8374ac3acd5c4f4eb6ea6b5869723fd2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18464 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 Date: Thu, 11 May 2023 09:22:13 +0200 Subject: [PATCH 4/6] contrib: make the Xcode archive configurable for MacOS builds --- contrib/reproducible/docker/docker-build.sh | 11 +++++++---- contrib/reproducible/docker/macos_cmd.sh | 10 ++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/contrib/reproducible/docker/docker-build.sh b/contrib/reproducible/docker/docker-build.sh index 6c86dc5b..6a47f2c3 100755 --- a/contrib/reproducible/docker/docker-build.sh +++ b/contrib/reproducible/docker/docker-build.sh @@ -5,6 +5,8 @@ set -ex TARGET_DIR="${TARGET_DIR:-"$PWD/deter_build_target"}" XCODE_PATH="${XCODE_PATH:-"$PWD/Xcode_12.2.xip"}" +XCODE_FILENAME="$(basename $XCODE_PATH)" +XCODE_SHASUM="28d352f8c14a43d9b8a082ac6338dc173cb153f964c6e8fb6ba389e5be528bd0" # Build (only) the Liana GUI on Windows. docker build . -t liana_cross_win -f contrib/reproducible/docker/windows.Dockerfile @@ -22,14 +24,14 @@ docker run --rm -ti \ # Sanity check the given MacOS SDK is the expected one. -if ! $(echo "28d352f8c14a43d9b8a082ac6338dc173cb153f964c6e8fb6ba389e5be528bd0 $(basename $XCODE_PATH)" | sha256sum -c --status); then - echo "No or invalid Xcode SDK found. Need an Xcode_12.2.xip. You can configure the path using \$XCODE_PATH."; +if ! $(echo "$XCODE_SHASUM $(basename $XCODE_PATH)" | sha256sum -c --status); then + echo "No or invalid Xcode SDK found. Need an Xcode_X.Y.xip archive whose hash is $XCODE_SHASUM. You can configure the path using \$XCODE_PATH."; exit 1; fi # Build both the Liana daemon and GUI on MacOS. docker build . -t liana_cross_mac -f contrib/reproducible/docker/macos.Dockerfile -docker run --rm -ti \ +docker run -ti \ -v "$TARGET_DIR":/liana/target \ -v "$TARGET_DIR/gui":/liana/gui/target \ -v "$PWD/contrib/reproducible/docker":/liana/docker \ @@ -43,7 +45,8 @@ docker run --rm -ti \ -v "$PWD/gui/ui/Cargo.lock":/liana/gui/ui/Cargo.lock \ -v "$PWD/gui/ui/src":/liana/gui/ui/src \ -v "$PWD/gui/ui/static":/liana/gui/ui/static \ - -v "$XCODE_PATH":/liana/Xcode_12.2.xip \ + -v "$XCODE_PATH":"/liana/$XCODE_FILENAME" \ + -e XCODE_PATH="/liana/$XCODE_FILENAME" \ liana_cross_mac set +ex diff --git a/contrib/reproducible/docker/macos_cmd.sh b/contrib/reproducible/docker/macos_cmd.sh index d5935a11..e35fa7ec 100755 --- a/contrib/reproducible/docker/macos_cmd.sh +++ b/contrib/reproducible/docker/macos_cmd.sh @@ -6,8 +6,10 @@ set -xe -# Build the SDK and the toolchain using osxcross. It is expected to be located at /liana/Xcode_12.2.xip. -# It's not part of the image to be able to share the Xcode_12.2.xip instead of copying it in the Docker context +test -f "$XCODE_PATH" || exit 1 + +# Build the SDK and the toolchain using osxcross. It is expected to be located at $XCODE_PATH +# It's not part of the image to be able to share the $XCODE_PATH instead of copying it in the Docker context # and then to the image. git clone https://github.com/darosior/osxcross -b dependencies_pinning cd osxcross @@ -15,8 +17,8 @@ git checkout 50e86ebca7d14372febd0af8cd098705049161b9 DARLING_DMG_REVISION=241238313a47d3cf6427ac5a75b7a0311a3a4cb4 \ P7ZIP_REVISION=2f60a51ac3aa2507d36df3c4f58f71a3716b1357 \ PBZX_REVISION=2a4d7c3300c826d918def713a24d25c237c8ed53 \ - XAR_REVISION=c2111a9a9cabc50d2b9c604aff41a481ae3f1989 ./tools/gen_sdk_package_pbzx.sh ../Xcode_12.2.xip -mv MacOSX11.0.sdk.tar.xz tarballs/ + XAR_REVISION=c2111a9a9cabc50d2b9c604aff41a481ae3f1989 ./tools/gen_sdk_package_pbzx.sh "$XCODE_PATH" +mv MacOSX* tarballs/ DARLING_DMG_REVISION=241238313a47d3cf6427ac5a75b7a0311a3a4cb4 \ P7ZIP_REVISION=2f60a51ac3aa2507d36df3c4f58f71a3716b1357 \ PBZX_REVISION=2a4d7c3300c826d918def713a24d25c237c8ed53 \ From d387ca19915fc4d4494d6be0268005ec3d4689d5 Mon Sep 17 00:00:00 2001 From: Antoine Poinsot Date: Thu, 11 May 2023 10:54:25 +0200 Subject: [PATCH 5/6] contrib: codesigning for MacOS in the release script --- contrib/release/release.sh | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/contrib/release/release.sh b/contrib/release/release.sh index 2c0c9ba2..179492aa 100755 --- a/contrib/release/release.sh +++ b/contrib/release/release.sh @@ -15,6 +15,11 @@ WINDOWS_DIR_NAME="$LIANA_PREFIX-x86_64-windows-gnu" WINDOWS_ARCHIVE="$WINDOWS_DIR_NAME.zip" MAC_DIR_NAME="$LIANA_PREFIX-x86_64-apple-darwin" MAC_ARCHIVE="$MAC_DIR_NAME.tar.gz" +MAC_CODESIGN="${MAC_CODESIGN:-"0"}" +RCODESIGN_BIN="${RCODESIGN_BIN:-"$PWD/../../macos_codesigning/apple-codesign-0.22.0-x86_64-unknown-linux-musl/rcodesign"}" +CODESIGN_KEY="${CODESIGN_KEY:-"$PWD/../../macos_codesigning/wizardsardine_liana.key"}" +CODESIGN_CERT="${CODESIGN_CERT:-"$PWD/../../macos_codesigning/antoine_devid_liana_codesigning.cer"}" +NOTARY_API_CREDS_FILE="${NOTARY_API_CREDS_FILE:-"$PWD/../../macos_codesigning/encoded_appstore_api_key.json"}" create_dir() { test -d "$1" || mkdir "$1" @@ -59,8 +64,15 @@ TARGET_DIR="$BUILD_DIR" ./contrib/reproducible/docker/docker-build.sh cp -r ../contrib/release/macos/Liana.app ./ sed -i "s/VERSION_PLACEHOLDER/$VERSION/g" ./Liana.app/Contents/Info.plist cp "$BUILD_DIR/gui/x86_64-apple-darwin/release/liana-gui" ./Liana.app/Contents/MacOS/Liana - zip -ry Liana.zip Liana.app - cp ./Liana.zip "$RELEASE_DIR/" + zip -ry Liana-noncodesigned.zip Liana.app + cp ./Liana-noncodesigned.zip "$RELEASE_DIR/" + + if [ "$MAC_CODESIGN" = "1" ]; then + $RCODESIGN_BIN sign --digest sha256 --code-signature-flags runtime --pem-source "$CODESIGN_KEY" --der-source "$CODESIGN_CERT" Liana.app/ + $RCODESIGN_BIN notary-submit --max-wait-seconds 600 --api-key-path "$NOTARY_API_CREDS_FILE" --staple Liana.app + zip -ry Liana.zip Liana.app + cp ./Liana.zip "$RELEASE_DIR/" + fi ) # Finally, sign all the assets From 4471516bec5c8fd478257197dcf17d70989d208f Mon Sep 17 00:00:00 2001 From: Antoine Poinsot Date: Tue, 9 May 2023 11:47:08 +0200 Subject: [PATCH 6/6] contrib: document the macOS distribution and codesigning --- contrib/release/macos/README.md | 84 +++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 contrib/release/macos/README.md diff --git a/contrib/release/macos/README.md b/contrib/release/macos/README.md new file mode 100644 index 00000000..82074e6c --- /dev/null +++ b/contrib/release/macos/README.md @@ -0,0 +1,84 @@ +# MacOS packaging and distribution + +We distribute the application as a zipped [MacOS app bundle](https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW5). + +## Notes on codesigning and notarization + +Running a binary on a Mac that was not both codesigned **and** notarized by Apple is a pain. The +user needs to run it. Get an error message. Go to System preferences > Security > authorize the app. +Then try again, and finally be presented a button to open the app. + +In order to avoid that, we've started distributing codesigned binaries starting from version 1.0. +This is the notes i've taken describing the stepped involved in codesigning the produced macOS +binary on a Linux machine, for posterity. This is not cleaned up. + +### Bulk notes from the codesigning experiment + +Create an account at https://developer.apple.com. + +Pay to get into the developer program. Going the organization way is cumbersome. Go the personal +way. They'll ask for a KYC (gov ID). Wait to be accepted. + +Go to "certificates, ids and profiles". Create a new certificate. Select a Developer ID application +certificate to distribute apps outside of the store. + +(We should look into the installer feature later on. Maybe we could bundle a bitcoind there.) + +They ask for a "Certificate Signing Request (CSR)" that you need to generate on your Mac. I don't +have a Mac. Generate it using OpenSSL: +``` +openssl genrsa -out wizardsardine_liana.key 2048 +openssl req -new -sha256 -key wizardsardine_liana.key -out wizardsardine_liana_codesigning.csr -subj "/emailAddress=antoine@wizardsardine.com, CN=Antoine Poinsot, C=FR" +``` +(Note you have no choice in the size or type of the key here, they expect a RSA(2048) key.) + +For the profile type select "G2 Sub-CA". We are using an Xcode newer than 11.4.1 and the codesigning +tool we use supports the new CA. + +Now you get to be able to download your certificate (I've stored it as +"antoine_devid_liana_codesigning.cer"). Thankfully `rcodesign` supports various certificate format, +so we don't even have to convert it to PEM. + +Download `rcodesign`: +``` +curl -OL https://github.com/indygreg/apple-platform-rs/releases/download/apple-codesign%2F0.22.0/apple-codesign-0.22.0-x86_64-unknown-linux-musl.tar.gz +tar -xzf apple-codesign-0.22.0-x86_64-unknown-linux-musl.tar.gz +./apple-codesign-0.22.0-x86_64-unknown-linux-musl/rcodesign --help +``` + +Sign the packaged application using the `sign` command (mind `--code-signature-flags for the +necessary hardened runtime): +``` +./apple-codesign-0.22.0-x86_64-unknown-linux-musl/rcodesign sign --code-signature-flags runtime --pem-source wizardsardine_liana.key --der-source antoine_devid_liana_codesigning.cer Liana.app +``` +You can see the chain of certificates was applied using the `diff-signatures` command against +another bundle. The best way to verify the signature is by using the `codesign` command on a Mac. + +Finally, we need to notarize the app. Follow the instructions at +https://gregoryszorc.com/docs/apple-codesign/main/apple_codesign_rcodesign.html#notarizing-and-stapling: +- Create an API key from https://appstoreconnect.apple.com/ (and *not* a key from + https://developer.apple.com/account/resources/authkeys) +- Download it and encode it into a JSON file using the `encode-app-store-connect-api-key` command +- Use the `notary-submit` command to request notarization + +``` +./apple-codesign-0.22.0-x86_64-unknown-linux-musl/rcodesign notary-submit --max-wait-seconds 600 --api-key-path ./encoded_appstore_api_key.json --staple Liana.app +``` +According to +https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow#3087732 +this can take up to a hour. I've experienced more. You can see the status of an existing request +using the `notary-log` command. + + +------- + +Resources: +- https://gist.github.com/jcward/d08b33fc3e6c5f90c18437956e5ccc35 +- https://github.com/achow101/signapple +- https://developer.apple.com/library/archive/technotes/tn2206/_index.html#//apple_ref/doc/uid/DTS40007919 +- https://gregoryszorc.com/docs/apple-codesign/main/index.html +- https://www.apple.com/certificateauthority/ +- https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution + +Resources on packaging an application for MacOS: +- https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW5