From 6e08ce2050f31c4654c4998d9e6528f5bbf32cec Mon Sep 17 00:00:00 2001 From: Pavel Minaev Date: Mon, 21 Aug 2023 12:47:19 -0700 Subject: [PATCH] Add GitHub Action workflow to build pydevd_attach_to_process binaries. --- .github/workflows/attach_to_process.yml | 76 +++++++++++++++++++ debugpy.code-workspace | 5 +- .../linux_and_mac/compile_linux.sh | 16 ++-- .../linux_and_mac/compile_mac.sh | 9 +-- .../windows/compile_windows.bat | 3 + 5 files changed, 96 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/attach_to_process.yml diff --git a/.github/workflows/attach_to_process.yml b/.github/workflows/attach_to_process.yml new file mode 100644 index 00000000..721ee47b --- /dev/null +++ b/.github/workflows/attach_to_process.yml @@ -0,0 +1,76 @@ +# Used to build binaries under src/debugpy/_vendored/pydevd/pydevd_attach_to_process +name: attach_to_process + +on: + workflow_dispatch: + push: + +env: + PYDEVD_ATTACH_TO_PROCESS: src/debugpy/_vendored/pydevd/pydevd_attach_to_process + +jobs: + windows-binaries: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v3 + + - name: Clean up old binaries + run: rm ${{ env.PYDEVD_ATTACH_TO_PROCESS }}\* -include *.exe,*.dll,*.pdb + + - name: Compile binaries + shell: cmd + working-directory: ${{ env.PYDEVD_ATTACH_TO_PROCESS }}\windows + run: compile_windows.bat + + - name: Upload binaries + uses: actions/upload-artifact@v3 + with: + name: pydevd_attach_to_process-windows + path: | + ${{ env.PYDEVD_ATTACH_TO_PROCESS }}\*.exe + ${{ env.PYDEVD_ATTACH_TO_PROCESS }}\*.dll + ${{ env.PYDEVD_ATTACH_TO_PROCESS }}\*.pdb + + mac-binaries: + runs-on: macos-latest + + steps: + - uses: actions/checkout@v3 + + - name: Clean up old binaries + run: rm ${{ env.PYDEVD_ATTACH_TO_PROCESS }}/*.so + + - name: Compile binaries + run: bash ${{ env.PYDEVD_ATTACH_TO_PROCESS }}/linux_and_mac/compile_mac.sh + + - name: Upload binaries + uses: actions/upload-artifact@v3 + with: + name: pydevd_attach_to_process-macos + path: ${{ env.PYDEVD_ATTACH_TO_PROCESS }}/*.dylib + + linux-binaries: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Clean up old binaries + run: rm ${{ env.PYDEVD_ATTACH_TO_PROCESS }}/*.so + + - name: Compile 32-bit binaries + uses: docker://quay.io/pypa/manylinux2014_i686 + with: + args: bash ${{ env.PYDEVD_ATTACH_TO_PROCESS }}/linux_and_mac/compile_linux.sh + + - name: Compile 64-bit binaries + uses: docker://quay.io/pypa/manylinux2014_x86_64 + with: + args: bash ${{ env.PYDEVD_ATTACH_TO_PROCESS }}/linux_and_mac/compile_linux.sh + + - name: Upload binaries + uses: actions/upload-artifact@v3 + with: + name: pydevd_attach_to_process-linux + path: ${{ env.PYDEVD_ATTACH_TO_PROCESS }}/*.so diff --git a/debugpy.code-workspace b/debugpy.code-workspace index adb02ad7..0509c5b5 100644 --- a/debugpy.code-workspace +++ b/debugpy.code-workspace @@ -19,6 +19,9 @@ "src/debugpy/_vendored", "src/debugpy/_vendored/pydevd" ], - "editor.defaultFormatter": "ms-python.black-formatter" + "editor.defaultFormatter": "ms-python.black-formatter", + "[yaml]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } } } diff --git a/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh b/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh index 3a1ebc2f..6df8c1fb 100644 --- a/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +++ b/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh @@ -1,9 +1,11 @@ -g++ -m64 -shared -o attach_linux_amd64.so -fPIC -nostartfiles attach.cpp -mv attach_linux_amd64.so ../attach_linux_amd64.so -echo Compiled amd64 +set -e -echo Note: may need "sudo apt-get install libx32gcc-4.8-dev" and "sudo apt-get install libc6-dev-i386" and "sudo apt-get install g++-multilib" to compile 32 bits +ARCH="$(uname -m)" +case $ARCH in + i*86) SUFFIX=x86;; + x86_64*) SUFFIX=amd64;; + *) echo >&2 "unsupported: $ARCH"; exit 1;; +esac -g++ -m32 -shared -o attach_linux_x86.so -fPIC -nostartfiles attach.cpp -mv attach_linux_x86.so ../attach_linux_x86.so -echo Compiled x86 +SRC="$(dirname "$0")/.." +g++ -std=c++11 -shared -fPIC -nostartfiles $SRC/linux_and_mac/attach.cpp -o $SRC/attach_linux_$SUFFIX.so diff --git a/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh b/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh index 5c614fe2..b1930bb4 100644 --- a/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +++ b/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh @@ -1,5 +1,4 @@ -g++ -fPIC -D_REENTRANT -std=c++11 -arch x86_64 -c -o attach_x86_64.o attach.cpp -g++ -dynamiclib -nostartfiles -arch x86_64 -o attach_x86_64.dylib attach_x86_64.o -lc -rm attach_x86_64.o -mv attach_x86_64.dylib ../attach_x86_64.dylib - +set -e +SRC="$(dirname "$0")/.." +g++ -fPIC -D_REENTRANT -std=c++11 -arch x86_64 -c $SRC/linux_and_mac/attach.cpp -o $SRC/attach_x86_64.o +g++ -dynamiclib -nostartfiles -arch x86_64 -lc $SRC/attach_x86_64.o -o $SRC/attach_x86_64.dylib diff --git a/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat b/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat index 0dafd06f..1fb8a227 100644 --- a/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +++ b/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat @@ -1,3 +1,6 @@ +setlocal +@cd /d %~dp0 + @set VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe @echo Using vswhere at %VSWHERE% @for /f "usebackq tokens=*" %%i in (`"%VSWHERE%" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do set VSDIR=%%i