@@ -142,81 +142,21 @@ jobs:
142142 git config --global url."ssh://git@github.com-http-handler/platformatic/http-handler.git".insteadOf "ssh://git@github.com/platformatic/http-handler.git"
143143 git config --global url."ssh://git@github.com-http-rewriter/platformatic/http-rewriter.git".insteadOf "ssh://git@github.com/platformatic/http-rewriter.git"
144144
145- # Build the main binary
146145 ${{ matrix.settings.build }}
147-
148- # Build the WASI module for Linux targets
149- if [ "${{ matrix.settings.target }}" = "x86_64-unknown-linux-gnu" ]; then
150- echo "===== Building fix-python-soname WASI module ====="
151- rustup target add wasm32-wasip1
152- echo "===== Entering fix-python-soname directory ====="
153- cd fix-python-soname
154- pwd
155- ls -la
156- echo "===== Building WASM with cargo ====="
157- cargo build --target wasm32-wasip1 --release || {
158- echo "ERROR: Cargo build failed!"
159- exit 1
160- }
161- echo "===== Checking build output ====="
162- echo "Current cargo environment:"
163- echo "CARGO_TARGET_DIR: ${CARGO_TARGET_DIR:-not set}"
164- echo "PWD: $(pwd)"
165- echo "Listing current directory:"
166- ls -la
167- echo "Finding all files in target directory:"
168- find target -type f 2>/dev/null || echo "No target directory found"
169- echo "Finding all hidden target directories:"
170- find . -name ".target*" -type d 2>/dev/null || echo "No hidden target dirs"
171- echo "Finding target dirs anywhere:"
172- find . -name "target" -type d 2>/dev/null || echo "No target dirs found"
173- echo "Looking for WASM files specifically:"
174- find . -name "*.wasm" -type f 2>/dev/null || echo "No WASM files found"
175- echo "Looking for any files with 'fix-python-soname' in name:"
176- find . -name "*fix-python-soname*" -type f 2>/dev/null || echo "No fix-python-soname files found"
177- echo "Checking if there's a target in parent directory:"
178- ls -la ../target 2>/dev/null || echo "No parent target directory"
179- echo "Checking target structure:"
180- ls -la target/ 2>/dev/null || echo "No target directory"
181- ls -la target/wasm32-wasip1/ 2>/dev/null || echo "No wasm32-wasip1 directory"
182- ls -la target/wasm32-wasip1/release/ 2>/dev/null || echo "No release directory"
183- echo "===== Copying WASM to root ====="
184- # WASM binaries might not have .wasm extension, try both
185- if [ -f "target/wasm32-wasip1/release/fix-python-soname.wasm" ]; then
186- cp target/wasm32-wasip1/release/fix-python-soname.wasm ..
187- echo "Copied .wasm file"
188- elif [ -f "target/wasm32-wasip1/release/fix-python-soname" ]; then
189- cp target/wasm32-wasip1/release/fix-python-soname ../fix-python-soname.wasm
190- echo "Copied binary file as .wasm"
191- else
192- echo "ERROR: No WASM or binary file found"
193- ls -la target/wasm32-wasip1/release/ 2>/dev/null || echo "No release directory"
194- exit 1
195- fi
196- cd ..
197- echo "===== Verifying WASM file in root ====="
198- pwd
199- ls -la fix-python-soname.wasm || {
200- echo "ERROR: WASM file not found after copy"
201- find . -name "*.wasm" -type f
202- exit 1
203- }
204- echo "===== WASM build complete ====="
205- fi
206146 - name : Build
207147 run : ${{ matrix.settings.build }}
208148 if : ${{ !matrix.settings.docker }}
209149 shell : bash
210- - name : List files before upload
150+ - name : build wasm
211151 run : |
212- echo "Files in current directory:"
213- ls -la
214- echo "Looking for WASM files:"
215- find . -name "*.wasm" -type f
216- if : ${{ matrix.settings.target == 'x86_64-unknown-linux-gnu' }}
217- - name : Upload artifact (Linux with WASM)
152+ rustup target add wasm32-wasip1
153+ cd fix-python-soname
154+ cargo build --target wasm32-wasip1 --release
155+ cp target/wasm32-wasip1/release/fix-python-soname.wasm ..
156+ if : contains(matrix.settings.target, 'linux')
157+ shell : bash
158+ - name : Upload artifact
218159 uses : actions/upload-artifact@v4
219- if : ${{ matrix.settings.target == 'x86_64-unknown-linux-gnu' }}
220160 with :
221161 name : bindings-${{ matrix.settings.target }}
222162 path : |
@@ -226,16 +166,6 @@ jobs:
226166 fix-python-soname.wasm
227167 fix-python-soname.js
228168 if-no-files-found : error
229- - name : Upload artifact (non-Linux)
230- uses : actions/upload-artifact@v4
231- if : ${{ matrix.settings.target != 'x86_64-unknown-linux-gnu' }}
232- with :
233- name : bindings-${{ matrix.settings.target }}
234- path : |
235- ${{ env.APP_NAME }}.*.node
236- index.d.ts
237- index.js
238- if-no-files-found : error
239169
240170 test-macOS-windows-binding :
241171 name : Test bindings on ${{ matrix.settings.target }} - node@${{ matrix.node }}
@@ -408,46 +338,13 @@ jobs:
408338 image : ${{ steps.docker.outputs.IMAGE }}
409339 options : -v ${{ steps.docker.outputs.PNPM_STORE_PATH }}:${{ steps.docker.outputs.PNPM_STORE_PATH }} -v ${{ github.workspace }}:${{ github.workspace }} -w ${{ github.workspace }} --platform ${{ steps.docker.outputs.PLATFORM }} -e CI=true -e GITHUB_ACTIONS=true
410340 run : |
341+ # Install Python 3.x
342+ apt-get update -y
343+ apt-get install -y python3 python3-dev patchelf
344+
411345 corepack disable
412346 npm i -gf pnpm
413347 pnpm install --prefer-offline
414-
415- # Check what files we have
416- echo "Current directory contents:"
417- ls -la
418-
419- # Look for WASM files
420- echo "Looking for WASM files:"
421- find . -name "*.wasm" -type f | head -20
422-
423- # Debug: Check Python version and libraries available
424- echo "Checking Python installation..."
425- which python3 || true
426- python3 --version || true
427- echo "Looking for Python libraries..."
428- find /usr/lib -name "libpython*.so*" 2>/dev/null | head -20 || true
429-
430- # Try to download the WASM file if not present
431- if [ ! -f "fix-python-soname.wasm" ]; then
432- echo "WASM file not found locally. Checking if we can get it from artifacts..."
433- # The WASM should have been built during the Linux build
434- # For now, skip the soname fixing if WASM is not available
435- echo "Warning: fix-python-soname.wasm not found, skipping soname fix"
436- else
437- # Fix Python soname if WASI module is available
438- if [ -f "fix-python-soname.js" ]; then
439- echo "Fixing Python soname in .node file..."
440- node fix-python-soname.js || echo "Warning: Failed to fix Python soname"
441- # Check if backup was created
442- if ls *.node.bak 2>/dev/null; then
443- echo "Backup file created, soname fix was attempted"
444- ls -la *.node.bak
445- fi
446- else
447- echo "fix-python-soname.js not found"
448- fi
449- fi
450-
451348 pnpm test
452349
453350 publish :
@@ -478,11 +375,11 @@ jobs:
478375 # Find the WASM and JS files from Linux artifacts
479376 WASM_FILE=$(find artifacts -name "fix-python-soname.wasm" | head -n 1)
480377 JS_FILE=$(find artifacts -name "fix-python-soname.js" | head -n 1)
481-
378+
482379 if [ -n "$WASM_FILE" ] && [ -n "$JS_FILE" ]; then
483380 echo "Found WASM file: $WASM_FILE"
484381 echo "Found JS file: $JS_FILE"
485-
382+
486383 # Copy to all Linux npm directories
487384 for dir in npm/*/; do
488385 if [[ "$dir" == *"linux"* ]]; then
0 commit comments