diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a0b14cf..df38cc0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -67,3 +67,30 @@ jobs: asset_path: dist/joinmarket-clientserver-${{ github.ref_name}}.tgz asset_name: joinmarket-clientserver-${{ github.ref_name}}.tgz asset_content_type: application/octet-stream + - name: Upload Qt Asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create_release.outputs.upload_url }} + asset_path: dist/joinmarket-clientserver-qt-${{ github.ref_name}}.tgz + asset_name: joinmarket-clientserver-qt-${{ github.ref_name}}.tgz + asset_content_type: application/octet-stream + - name: Upload Snicker Asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create_release.outputs.upload_url }} + asset_path: dist/joinmarket-clientserver-snicker-${{ github.ref_name}}.tgz + asset_name: joinmarket-clientserver-snicker-${{ github.ref_name}}.tgz + asset_content_type: application/octet-stream + - name: Upload ObWatch Asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create_release.outputs.upload_url }} + asset_path: dist/joinmarket-clientserver-obwatch-${{ github.ref_name}}.tgz + asset_name: joinmarket-clientserver-obwatch-${{ github.ref_name}}.tgz + asset_content_type: application/octet-stream diff --git a/contrib/build-linux/pyinstaller-build/build.sh b/contrib/build-linux/pyinstaller-build/build.sh index 46460bd..19e0826 100755 --- a/contrib/build-linux/pyinstaller-build/build.sh +++ b/contrib/build-linux/pyinstaller-build/build.sh @@ -2,7 +2,9 @@ set -e -PROJECT_ROOT="$(dirname "$(readlink -e "$0")")/../../.." +export JM_VERSION="${JM_VERSION:-0.1-testbuild}" + +PROJECT_ROOT=$(realpath "$(dirname "$(readlink -e "$0")")/../../..") VENVPATH=$PROJECT_ROOT/jmvenv JM_ROOT=$PROJECT_ROOT @@ -56,11 +58,78 @@ ls -l dist/joinmarket-clientserver/ cd dist -export JM_VERSION="${JM_VERSION}" - mv joinmarket-clientserver joinmarket-clientserver-${JM_VERSION} tar -czvf joinmarket-clientserver-${JM_VERSION}.tgz \ joinmarket-clientserver-${JM_VERSION} ls -l + +cd .. + +rm joinmarket-clientserver.spec + +rm -rf build + +cp contrib/build-linux/pyinstaller-build/joinmarket-clientserver-qt.spec . + +pyinstaller -y joinmarket-clientserver-qt.spec + +ls -l dist/joinmarket-clientserver/ + +cd dist + +mv joinmarket-clientserver joinmarket-clientserver-qt-${JM_VERSION} + +tar -czvf joinmarket-clientserver-qt-${JM_VERSION}.tgz \ + joinmarket-clientserver-qt-${JM_VERSION} + +ls -l + +cd .. + +rm joinmarket-clientserver-qt.spec + +rm -rf build + +cp contrib/build-linux/pyinstaller-build/joinmarket-clientserver-snicker.spec . + +pyinstaller -y joinmarket-clientserver-snicker.spec + +ls -l dist/joinmarket-clientserver/ + +cd dist + +mv joinmarket-clientserver joinmarket-clientserver-snicker-${JM_VERSION} + +tar -czvf joinmarket-clientserver-snicker-${JM_VERSION}.tgz \ + joinmarket-clientserver-snicker-${JM_VERSION} + +ls -l + +cd .. + +rm joinmarket-clientserver-snicker.spec + +rm -rf build + +cp contrib/build-linux/pyinstaller-build/joinmarket-clientserver-obwatch.spec . + +pyinstaller -y joinmarket-clientserver-obwatch.spec + +ls -l dist/joinmarket-clientserver/ + +cd dist + +mv joinmarket-clientserver joinmarket-clientserver-obwatch-${JM_VERSION} + +tar -czvf joinmarket-clientserver-obwatch-${JM_VERSION}.tgz \ + joinmarket-clientserver-obwatch-${JM_VERSION} + +ls -l + +cd .. + +rm joinmarket-clientserver-obwatch.spec + +rm -rf build diff --git a/contrib/build-linux/pyinstaller-build/joinmarket-clientserver-obwatch.spec b/contrib/build-linux/pyinstaller-build/joinmarket-clientserver-obwatch.spec new file mode 100644 index 0000000..1f45fde --- /dev/null +++ b/contrib/build-linux/pyinstaller-build/joinmarket-clientserver-obwatch.spec @@ -0,0 +1,84 @@ +# -*- mode: python; coding: utf-8 -*- + +import itertools +import os +from pathlib import Path + + +PROJECT_ROOT = os.path.abspath('.') + + +binaries = [] +binaries += [(f'{PROJECT_ROOT}/jmvenv/lib/lib*', '.')] + + +datas = [] +datas += [(f'{PROJECT_ROOT}/jmvenv/lib/python3.12/site-packages/' + f'twisted/plugins/dropin.cache','twisted/plugins')] +datas += [(f'{PROJECT_ROOT}/jmvenv/lib/python3.12/site-packages/' + f'twisted/plugins/__init__.py', 'twisted/plugins')] +datas += [(f'{PROJECT_ROOT}/jmvenv/lib/python3.12/site-packages/' + f'twisted/plugins/txtorcon_endpoint_parser.py', 'twisted/plugins')] +datas += [(f'{PROJECT_ROOT}/scripts/obwatch/orderbook.html', '.')] +datas += [(f'{PROJECT_ROOT}/scripts/obwatch/vendor/bootstrap.min.css', + 'vendor')] +datas += [(f'{PROJECT_ROOT}/scripts/obwatch/vendor/jquery-3.5.1.slim.min.js', + 'vendor')] +datas += [(f'{PROJECT_ROOT}/scripts/obwatch/vendor/sorttable.js', + 'vendor')] + + +scripts = [ + 'scripts/obwatch/ob-watcher.py', +] + + +hiddenimports = [ + 'chromalog.mark.helpers', + 'chromalog.mark.helpers.simple', + 'twisted.plugins', + 'twisted.plugins.txtorcon_endpoint_parser', +] + + +a = {} +pyz = {} +exe = {} + + +for s in scripts: + a[s] = Analysis( + [s], + pathex=[], + binaries=binaries, + datas=datas, + hiddenimports=hiddenimports, + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, + optimize=0, + ) + + pyz[s] = PYZ(a[s].pure) + + exe[s] = EXE( + pyz[s], a[s].scripts, [], + name=Path(s).stem, + exclude_binaries=True, debug=False, bootloader_ignore_signals=False, + strip=False, upx=True, console=True, disable_windowed_traceback=False, + argv_emulation=False, target_arch=None, codesign_identity=None, + entitlements_file=None, + ) + + +coll = COLLECT( + *list(exe.values()), + list(set(itertools.chain.from_iterable(b.binaries for b in a.values()))), + list(set(itertools.chain.from_iterable(d.datas for d in a.values()))), + strip=False, + upx=True, + upx_exclude=[], + name='joinmarket-clientserver', +) diff --git a/contrib/build-linux/pyinstaller-build/joinmarket-clientserver-qt.spec b/contrib/build-linux/pyinstaller-build/joinmarket-clientserver-qt.spec new file mode 100644 index 0000000..f77dae2 --- /dev/null +++ b/contrib/build-linux/pyinstaller-build/joinmarket-clientserver-qt.spec @@ -0,0 +1,77 @@ +# -*- mode: python; coding: utf-8 -*- + +import itertools +import os +from pathlib import Path + + +PROJECT_ROOT = os.path.abspath('.') + + +binaries = [] +binaries += [(f'{PROJECT_ROOT}/jmvenv/lib/lib*', '.')] + + +datas = [] +datas += [(f'{PROJECT_ROOT}/jmvenv/lib/python3.12/site-packages/' + f'twisted/plugins/dropin.cache','twisted/plugins')] +datas += [(f'{PROJECT_ROOT}/jmvenv/lib/python3.12/site-packages/' + f'twisted/plugins/__init__.py', 'twisted/plugins')] +datas += [(f'{PROJECT_ROOT}/jmvenv/lib/python3.12/site-packages/' + f'twisted/plugins/txtorcon_endpoint_parser.py', 'twisted/plugins')] + + +scripts = [ + 'scripts/joinmarket-qt.py', +] + + +hiddenimports = [ + 'chromalog.mark.helpers', + 'chromalog.mark.helpers.simple', + 'twisted.plugins', + 'twisted.plugins.txtorcon_endpoint_parser', +] + + +a = {} +pyz = {} +exe = {} + + +for s in scripts: + a[s] = Analysis( + [s], + pathex=[], + binaries=binaries, + datas=datas, + hiddenimports=hiddenimports, + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, + optimize=0, + ) + + pyz[s] = PYZ(a[s].pure) + + exe[s] = EXE( + pyz[s], a[s].scripts, [], + name=Path(s).stem, + exclude_binaries=True, debug=False, bootloader_ignore_signals=False, + strip=False, upx=True, console=True, disable_windowed_traceback=False, + argv_emulation=False, target_arch=None, codesign_identity=None, + entitlements_file=None, + ) + + +coll = COLLECT( + *list(exe.values()), + list(set(itertools.chain.from_iterable(b.binaries for b in a.values()))), + list(set(itertools.chain.from_iterable(d.datas for d in a.values()))), + strip=False, + upx=True, + upx_exclude=[], + name='joinmarket-clientserver', +) diff --git a/contrib/build-linux/pyinstaller-build/joinmarket-clientserver-snicker.spec b/contrib/build-linux/pyinstaller-build/joinmarket-clientserver-snicker.spec new file mode 100644 index 0000000..1a05fb0 --- /dev/null +++ b/contrib/build-linux/pyinstaller-build/joinmarket-clientserver-snicker.spec @@ -0,0 +1,82 @@ +# -*- mode: python; coding: utf-8 -*- + +import itertools +import os +from pathlib import Path + + +PROJECT_ROOT = os.path.abspath('.') + + +binaries = [] +binaries += [(f'{PROJECT_ROOT}/jmvenv/lib/lib*', '.')] + + +datas = [] +datas += [(f'{PROJECT_ROOT}/jmvenv/lib/python3.12/site-packages/' + f'twisted/plugins/dropin.cache','twisted/plugins')] +datas += [(f'{PROJECT_ROOT}/jmvenv/lib/python3.12/site-packages/' + f'twisted/plugins/__init__.py', 'twisted/plugins')] +datas += [(f'{PROJECT_ROOT}/jmvenv/lib/python3.12/site-packages/' + f'twisted/plugins/txtorcon_endpoint_parser.py', 'twisted/plugins')] + + +scripts = [ + 'scripts/snicker/create-snicker-proposal.py', + 'scripts/snicker/receive-snicker.py', + 'scripts/snicker/snicker-finder.py', + 'scripts/snicker/snicker-recovery.py', + 'scripts/snicker/snicker-seed-tx.py', + 'scripts/snicker/snicker-server.py', +] + + +hiddenimports = [ + 'chromalog.mark.helpers', + 'chromalog.mark.helpers.simple', + 'twisted.plugins', + 'twisted.plugins.txtorcon_endpoint_parser', +] + + +a = {} +pyz = {} +exe = {} + + +for s in scripts: + a[s] = Analysis( + [s], + pathex=[], + binaries=binaries, + datas=datas, + hiddenimports=hiddenimports, + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, + optimize=0, + ) + + pyz[s] = PYZ(a[s].pure) + + exe[s] = EXE( + pyz[s], a[s].scripts, [], + name=Path(s).stem, + exclude_binaries=True, debug=False, bootloader_ignore_signals=False, + strip=False, upx=True, console=True, disable_windowed_traceback=False, + argv_emulation=False, target_arch=None, codesign_identity=None, + entitlements_file=None, + ) + + +coll = COLLECT( + *list(exe.values()), + list(set(itertools.chain.from_iterable(b.binaries for b in a.values()))), + list(set(itertools.chain.from_iterable(d.datas for d in a.values()))), + strip=False, + upx=True, + upx_exclude=[], + name='joinmarket-clientserver', +) diff --git a/contrib/build-linux/pyinstaller-build/joinmarket-clientserver.spec b/contrib/build-linux/pyinstaller-build/joinmarket-clientserver.spec index c1ed18d..25d835b 100644 --- a/contrib/build-linux/pyinstaller-build/joinmarket-clientserver.spec +++ b/contrib/build-linux/pyinstaller-build/joinmarket-clientserver.spec @@ -28,7 +28,6 @@ scripts = [ 'scripts/genwallet.py', 'scripts/jmwalletd.py', 'scripts/joinmarketd.py', - 'scripts/joinmarket-qt.py', 'scripts/receive-payjoin.py', 'scripts/sendpayment.py', 'scripts/sendtomany.py',