From 61c5b13e9d8afbf3a99eadd3b24f0833b3a8ab4a Mon Sep 17 00:00:00 2001 From: zebra-lucky Date: Wed, 3 Dec 2025 05:22:02 +0200 Subject: [PATCH] add start-dn script with testnet4 support --- .github/workflows/build.yml | 9 +++ .gitignore | 1 + .../build-linux/pyinstaller-build/build.sh | 42 +++++++--- .../pyinstaller-build/start-dn.spec | 79 +++++++++++++++++++ 4 files changed, 120 insertions(+), 11 deletions(-) create mode 100644 contrib/build-linux/pyinstaller-build/start-dn.spec diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index df38cc0..217b9c4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -94,3 +94,12 @@ jobs: 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 + - name: Upload start-dn 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-start-dn-${{ github.ref_name}}.tgz + asset_name: joinmarket-clientserver-start-dn-${{ github.ref_name}}.tgz + asset_content_type: application/octet-stream diff --git a/.gitignore b/.gitignore index 83a2dfb..53e208f 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,4 @@ scripts/snicker/candidates.txt .qt_for_python/ cmtdata/ **/build/ +dist/ diff --git a/contrib/build-linux/pyinstaller-build/build.sh b/contrib/build-linux/pyinstaller-build/build.sh index 19e0826..3c90353 100755 --- a/contrib/build-linux/pyinstaller-build/build.sh +++ b/contrib/build-linux/pyinstaller-build/build.sh @@ -49,6 +49,7 @@ git checkout 1.0.20-RELEASE make check sudo make install cd .. +rm -rf libsodium cp contrib/build-linux/pyinstaller-build/joinmarket-clientserver.spec . @@ -67,9 +68,7 @@ ls -l cd .. -rm joinmarket-clientserver.spec - -rm -rf build +rm -rf build joinmarket-clientserver.spec cp contrib/build-linux/pyinstaller-build/joinmarket-clientserver-qt.spec . @@ -88,9 +87,7 @@ ls -l cd .. -rm joinmarket-clientserver-qt.spec - -rm -rf build +rm -rf build joinmarket-clientserver-qt.spec cp contrib/build-linux/pyinstaller-build/joinmarket-clientserver-snicker.spec . @@ -109,9 +106,7 @@ ls -l cd .. -rm joinmarket-clientserver-snicker.spec - -rm -rf build +rm -rf build joinmarket-clientserver-snicker.spec cp contrib/build-linux/pyinstaller-build/joinmarket-clientserver-obwatch.spec . @@ -130,6 +125,31 @@ ls -l cd .. -rm joinmarket-clientserver-obwatch.spec +rm -rf build joinmarket-clientserver-obwatch.spec + +git clone https://github.com/zebra-lucky/joinmarket-custom-scripts + +cd joinmarket-custom-scripts/ + +git checkout add-testnet4 + +cd .. + +cp contrib/build-linux/pyinstaller-build/start-dn.spec . + +pyinstaller -y start-dn.spec + +ls -l dist/joinmarket-clientserver/ + +cd dist + +mv joinmarket-clientserver joinmarket-clientserver-start-dn-${JM_VERSION} + +tar -czvf joinmarket-clientserver-start-dn-${JM_VERSION}.tgz \ + joinmarket-clientserver-start-dn-${JM_VERSION} + +ls -l + +cd .. -rm -rf build +rm -rf build joinmarket-custom-scripts start-dn.spec diff --git a/contrib/build-linux/pyinstaller-build/start-dn.spec b/contrib/build-linux/pyinstaller-build/start-dn.spec new file mode 100644 index 0000000..c4fffcd --- /dev/null +++ b/contrib/build-linux/pyinstaller-build/start-dn.spec @@ -0,0 +1,79 @@ +# -*- 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 = [ + 'joinmarket-custom-scripts/start-dn.py', +] + + +hiddenimports = [ + 'chromalog.mark.helpers', + 'chromalog.mark.helpers.simple', + 'twisted.plugins', +# 'twisted.plugins.autobahn_endpoints', +# 'twisted.plugins.autobahn_twistd', + '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', +)