From f51f8f72f8dc5c6bfdaa05ea8b76f511b25efa24 Mon Sep 17 00:00:00 2001 From: Sami Khan <98742866+samiamjidkhan@users.noreply.github.com> Date: Mon, 4 Aug 2025 03:18:31 +0500 Subject: [PATCH] app launches python modules --- .DS_Store | Bin 8196 -> 10244 bytes .github/workflows/build-macos-app.yml | 84 ++++++------------ app/.DS_Store | Bin 0 -> 6148 bytes app/exov2/.DS_Store | Bin 6148 -> 6148 bytes app/exov2/exov2.xcodeproj/project.pbxproj | 12 +-- .../UserInterfaceState.xcuserstate | Bin 33984 -> 34780 bytes .../xcshareddata/xcschemes/exov2.xcscheme | 6 +- 7 files changed, 38 insertions(+), 64 deletions(-) create mode 100644 app/.DS_Store diff --git a/.DS_Store b/.DS_Store index 1ad06f76caa4306fe6078e5faff1c289853ed8a2..7a04f4bd3b1a81b8e448d574b6527ad8d5c08949 100644 GIT binary patch literal 10244 zcmeHMU2GIp6h3EKV1`n9%kQvQU8&)(i!RU~`Cs}cH0F18Aa=G(=;fJQ)9?F+S;&dhWfml`hDGnBv3SYC*{pLG!_TB{mY%iFr0pb9lQst7(qRVv(@8|WJqJ%9oNh0|}-gP|pkkqcRjv68a zA_O7?A_O7?A_V>q2vE-EMXixCx<&{@2t)`>Ai%#5ajIOVLOCX-_;k=kYyn7CQ?n>^ z&-e|=cqmh$9FvlIsGxKuDP1w#VxV-V_IPNQ3gwuT(j73|d|)^;hC37#v(xx-VGfv* zGP*_xLiJC0vHc*Kyo^d!^|a|T)ER1x`at@yS4sy)Q1IK0{C=+Wd7hIg-y4~|wpAKt^Ex~? zFl^V#3kTb@$mGC)?V4Vx-7C1JFMQLoL)BDmnCYXVYuZ{8@zrfD#}o0o;`u7eq zR`9JomSY5V(dsk;%O7TSJ}tH<>$$u0R*@DtkoBCxh)X^7S;NT|$k^KIIBEM4%O4D^ zV*$S#^1Xb}Aq)p?^5t#AY!3JD%>}mS`g^UsPg2v)&6*#(qjCAFHEkQWcJ=HUubo}T z>b1Gr5Mks7_Cedq?=$?Y<(js8sJ~>J!Qp|T?b{j0>T`_|OJirX@!GoCY{5cZA1q|- zqXj#7m^G@Z7;3TJpdB#j8FzUmAIwzQJ7iCj#PtS!KkwXcS*x|^1I2JrY=>;TS6i z(zoaj@|kxUe$bnexSWM4b=4f%(SywzJG8ifzlO|9ZpP&;?(GVQ<{`87zh7mSRC=ejTeOL~gtla`+L&4?*&_gKOeLi@uYyuMxh;YOY=&+a zqHuAc1kb=pI0dKSRd^fTgAd>$d;*`sXK)F=gm2(m_zu2@U*Qk<6A=}x!G);fB3y#Y za5=8TCTzxaxE?p+ChW$YxC?u6H||3NGiaiPE|%~Zj^d;EB))(z;!F54p20WpO+1J1 z;zj%jKgMzV3ctoH_yhikKjF^`D5%U->J(i*y;2U4fyt{;R*-(<00}<CkS}J5keD-f-u&BnoV0F8O>jz*u*|!w*(@kLiTHxT;*D2uZ=51$QB1q7p&VD0 z@zzh=w~nctz-&fnediLDxX-4A>e6MT?qJiU8f!|Z6lY8ksuoMG)+m}-Rj4+#kcv{# z)~(klu2^-bZr(!bSq4Il#X34^pbJdBdCs1J*WfKU4<8a|FB4m@z%TGS0?tH+3j|LW zV*@S?nVP^BY{fQW>jvz^E@JC8+>UAN!+snf#%3@}j6H}R=I|)`Sir~daU8=Z@C2U3 zQ}`@ChtCs-Pva~2dIdALPi7{*e`97=q_Ju+DQ)=>-0GyYHrY%`tGV?ilh(v~q7)US zs3=8U9S%`K3V-ND2??hm6_BhptsPe+?#-tQ3bP>n#B*k$&Df~EoIaO{Oo{EV3RM<8q hrEn)3;ZAaj{tSrr{{;WPJ+q4T|Nrr!^)1=|{{@V~AyohX literal 8196 zcmeHMTWl3Y7@lui=VNH1A}rmNCXD3#m_|;wnk>i+n{=B26VpkUz_f_`^BJ%TfEoE39Kh zj6jS)j6jS)j6jUQjer21*&^|4ocppjE@K2@1a3+M#QPyhS;$l*N2Ls39aMx@0FvSg z5GJbYqCzqm$y6jqrKBE8kgg=9E21j~q&w-8kzFd1qf$zDhUoHv=*fs~CQkrqiWNPo?fj#qt7nUq&tTL+jIRMtKgH&=(BuU+_t>u?k-rOzc=qW z#Ua+1VwlgRK2Nn}!o+ zHIpU{_3ZSyiQASoG_ARNQ^(ewyU)*w@$8*hKj<8`+_71uw{Sk- z4`vHi=Lqqu?6HIMaL-6DTsE6_;1whwNu!hVelb{^Y0^0Q{Mvc@QSe3aY?SjRm*`3$X|dXu%q+MH)M>6T8rfZXCctWRS%nco@b}_&AP- zaSEsLD4xV~cpfj{MZAu)coT2o9ejq*@ddubxA+M^;}=}S-}ncY6jhn6EK%-ImMQhh za-~^Wr?kqME9Gbzm`FS&P3^Jhr)Y`3-YG|~7A=W;w`kjLh-kSmUBpNA>^U`a7u79W zv3l+L)EI>%>B>AC&)<-;6NnyCHr(aOT%$-b7HA6-dx_K5vC9!8BdQ!)8eAabrl zE7oHJHe(C6Vmnc_8$IYnKL(J8MMNEhjRFD`QNn|Gi0FD6j}Td(!qa#L&*BVT#w&Og zuZ6UI7w=6X;`WI|#K+@_Sn4Xcj^`dGU75HO&EwW}L7+m8QY-HNo3H)-|GGRY9wbH} zM&QOo0F@nG9pb0JwcfVkuAQWOKV^}G-KdnI3l+jd=)>zc$+15Ssh*7bQjr{$l6olp X?;ir_cVPL4ZhZd7=YL4To3Qv7`S}~V diff --git a/.github/workflows/build-macos-app.yml b/.github/workflows/build-macos-app.yml index 3e3d6555..9ac1448d 100644 --- a/.github/workflows/build-macos-app.yml +++ b/.github/workflows/build-macos-app.yml @@ -6,7 +6,7 @@ on: - 'v*' # Trigger on version tags branches: - main # Also build on main branch for testing - - app-staging # Add app-staging for testing + - python-modules # Add app-staging for testing pull_request: branches: - staging # Test builds on PRs to staging @@ -41,18 +41,12 @@ jobs: uv python install uv sync --locked --all-extras - - name: Install Python Bindings - run: | - uv pip install dist/exo_pyo3_bindings-*.whl - - name: Verify Python Environment run: | - uv run python -c "import exo_pyo3_bindings; print('Python bindings installed successfully')" uv run python -c "import master.main; print('Master module available')" uv run python -c "import worker.main; print('Worker module available')" - name: Prepare Code Signing Keychain - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') env: MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} @@ -79,35 +73,23 @@ jobs: cd app/exov2 sudo xcode-select -s /Applications/Xcode.app/Contents/Developer - if [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" == refs/tags/v* ]]; then - # Release build with code signing - security unlock-keychain -p "$MACOS_CERTIFICATE_PASSWORD" exov2.keychain - SIGNING_IDENTITY=$(security find-identity -v -p codesigning | awk -F '"' '{print $2}') - - xcodebuild clean build \ - -project exov2.xcodeproj \ - -scheme exov2 \ - -configuration Release \ - -derivedDataPath build \ - CODE_SIGNING_IDENTITY="$SIGNING_IDENTITY" \ - PROVISIONING_PROFILE_SPECIFIER="Exo Provisioning Profile" \ - CODE_SIGN_INJECT_BASE_ENTITLEMENTS=YES \ - OTHER_CODE_SIGN_FLAGS="--timestamp" - else - # Debug build without code signing for testing - xcodebuild clean build \ - -project exov2.xcodeproj \ - -scheme exov2 \ - -configuration Debug \ - -derivedDataPath build \ - CODE_SIGN_IDENTITY="" \ - CODE_SIGNING_REQUIRED=NO - fi + # Release build with code signing + security unlock-keychain -p "$MACOS_CERTIFICATE_PASSWORD" exov2.keychain + SIGNING_IDENTITY=$(security find-identity -v -p codesigning | awk -F '"' '{print $2}') + + xcodebuild clean build \ + -project exov2.xcodeproj \ + -scheme exov2 \ + -configuration Release \ + -derivedDataPath build \ + CODE_SIGNING_IDENTITY="$SIGNING_IDENTITY" \ + PROVISIONING_PROFILE_SPECIFIER="Exo Provisioning Profile" \ + CODE_SIGN_INJECT_BASE_ENTITLEMENTS=YES \ + OTHER_CODE_SIGN_FLAGS="--timestamp" - mv build/Build/Products/*/exov2.app ../../ + mv build/Build/Products/*/EXO.app ../../ - - name: Sign and Create DMG (Release only) - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + - name: Sign, Notarize, and Create DMG env: APPLE_NOTARIZATION_USERNAME: ${{ secrets.APPLE_NOTARIZATION_USERNAME }} APPLE_NOTARIZATION_PASSWORD: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }} @@ -119,21 +101,21 @@ jobs: # Sign the app /usr/bin/codesign --deep --force --timestamp --options runtime \ - --sign "$SIGNING_IDENTITY" exov2.app + --sign "$SIGNING_IDENTITY" EXO.app # Verify the signing - codesign -dvv exov2.app + codesign -dvv EXO.app # Create DMG mkdir -p tmp/dmg-contents - cp -r ./exov2.app tmp/dmg-contents/ + cp -r ./EXO.app tmp/dmg-contents/ ln -s /Applications tmp/dmg-contents/Applications - VERSION=$(git describe --tags --abbrev=0 | sed 's/^v//') + DMG_NAME="exo.dmg" # Create and sign DMG - hdiutil create -volname "Exo" -srcfolder tmp/dmg-contents -ov -format UDZO exov2-${VERSION}.dmg + hdiutil create -volname "Exo" -srcfolder tmp/dmg-contents -ov -format UDZO "$DMG_NAME" /usr/bin/codesign --deep --force --timestamp --options runtime \ - --sign "$SIGNING_IDENTITY" exov2-${VERSION}.dmg + --sign "$SIGNING_IDENTITY" "$DMG_NAME" # Setup notarization credentials (optional - comment out if no notarization secrets) if [[ -n "$APPLE_NOTARIZATION_USERNAME" ]]; then @@ -146,24 +128,14 @@ jobs: xcrun notarytool submit --wait \ --team-id "$APPLE_NOTARIZATION_TEAM" \ --keychain-profile notary_pass \ - exov2-${VERSION}.dmg + "$DMG_NAME" # Staple the notarization - xcrun stapler staple exov2-${VERSION}.dmg + xcrun stapler staple "$DMG_NAME" fi - - name: Create DMG (Debug builds) - if: github.event_name != 'push' || !startsWith(github.ref, 'refs/tags/v') - run: | - mkdir -p tmp/dmg-contents - cp -r ./exov2.app tmp/dmg-contents/ - ln -s /Applications tmp/dmg-contents/Applications - VERSION=$(git rev-parse --short HEAD) - - hdiutil create -volname "Exo Debug" -srcfolder tmp/dmg-contents -ov -format UDZO exov2-debug-${VERSION}.dmg - - name: Cleanup Keychain - if: always() && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + if: always() run: | security default-keychain -s login.keychain security delete-keychain exov2.keychain @@ -171,11 +143,11 @@ jobs: - name: Upload DMG file uses: actions/upload-artifact@v4 with: - name: exov2-dmg - path: exov2*.dmg + name: exo-dmg + path: exo.dmg - name: Upload App Bundle uses: actions/upload-artifact@v4 with: name: exov2-app - path: exov2.app/ \ No newline at end of file + path: EXO.app/ \ No newline at end of file diff --git a/app/.DS_Store b/app/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7a8425e4928eb7052a88e052eeb00514f3b3362f GIT binary patch literal 6148 zcmeHKOH0E*5Z>*>ZYe?!iXIod7VJZX;w8lT2aM=Jr6we3FlI~BTA>tj)j#Av@%K2h zyMY$#Rm9G~?l(J+-OLBs2V;!8)3C!>lQAZsA#zmK2%6WrN;Vjg>p8l?EE@%h3f4^X zH%<8MRTi;Vrq~Nx{{D|(l*HMj-TvgIa;3Ue6E)Egciy9#c@uv!&0K$cgQH8OlAzH2 z;3|%0!{*MJN+*7tMq`~2hY^I_UdL&uX0Dp1VWx9E;}CUGA2#>q^IpHxlE?i;OV0b< zc1s@hP8N&0*gZHry%;_vJdJaQmh%eKV=-a%O^=*1hSiAo>9T4WTFgv0!-4b0b<~125^6n&=4Jqxk0^kK!?|7^j8p3K*zTPqO|B(%ngDEgqu`A zlgjNAgPU})OB?4{%nh1!#`VfDk6pQVyl}lb*rg6<+%ZT!F+dEgGEg?dCZ7N2@XM@y zN-+Qc literal 0 HcmV?d00001 diff --git a/app/exov2/.DS_Store b/app/exov2/.DS_Store index 31bdd03380300e0306e73c3b434af8c3be94bbaa..facf32c27b8d7363b7dc8d3cb09b7ba074c321b7 100644 GIT binary patch delta 70 zcmZoMXffDe!^rfgW3nBi9>-Dk-NzXfjynQ5DncnPNjdpR3=9k$tDVGLpu$R%&oJ^b UF$!#c$f(9Pv4L$fJI7ys01QeMA^-pY delta 70 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 Yn+JBE<%0PC)u?~O0p0Jtug${$0%hk7PXGV_ delta 15596 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 t9}N#09yk2e*rPF|QQ0`TaaLnX @@ -69,7 +69,7 @@ @@ -93,7 +93,7 @@