diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 705b220..1b9bafa 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -65,21 +65,21 @@ jobs: name: wheels-${{ matrix.os }} path: wheelhouse/*.whl -# publish: -# if: contains(github.ref, '-beta') == false -# needs: [build_wheels] -# runs-on: ubuntu-latest -# steps: -# - name: Install Twine -# run: pip install twine + publish: + if: contains(github.ref, '-beta') == false + needs: [build_wheels] + runs-on: ubuntu-latest + steps: + - name: Install Twine + run: pip install twine -# - uses: actions/download-artifact@v4 -# with: -# path: wheelhouse + - uses: actions/download-artifact@v4 + with: + path: wheelhouse -# - name: Publish to PyPI -# env: -# TWINE_USERNAME: __token__ -# TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} -# -# run: python -m twine upload wheelhouse/* \ No newline at end of file + - name: Publish to PyPI + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} + + run: python -m twine upload wheelhouse/* diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 41a47f1..9a56d12 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,11 +30,6 @@ jobs: name: musl-object-files path: /object_files/musl_objects_*.*o - - uses: actions/upload-artifact@v4 - with: - name: cross-runner - path: build/runner/coparun-* - build-ubuntu: needs: [build_stencils] runs-on: ubuntu-latest @@ -52,11 +47,6 @@ jobs: name: stencil-object-files path: src/copapy/obj - #- uses: actions/download-artifact@v4 - # with: - # name: cross-runner - # path: build/runner - - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: @@ -65,46 +55,23 @@ jobs: - name: Install Python dependencies run: python -m pip install -e .[dev] - #- name: Install ARM binutils and qemu - # if: strategy.job-index == 0 - # run: | - # echo "set man-db/auto-update false" | sudo debconf-communicate - # sudo dpkg-reconfigure man-db - # sudo apt-get update - # sudo apt-get install --no-install-recommends --no-install-suggests binutils-aarch64-linux-gnu qemu-user gcc-aarch64-linux-gnu libc6-dev-arm64-cross - - name: Compile coparun run: | mkdir -p build/runner gcc -O3 -DENABLE_BASIC_LOGGING -o build/runner/coparun src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c - # aarch64-linux-gnu-gcc -O3 -static -DENABLE_BASIC_LOGGING src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o build/runner/coparun-aarch64 - name: Generate debug asm files if: strategy.job-index == 0 run: | set -e set -v - python tools/make_example.py + bash tools/create_asm.sh - echo "- Patch code..." - build/runner/coparun build/runner/test.copapy build/runner/test.copapy.bin - #qemu-aarch64 build/runner/coparun-aarch64 build/runner/test-arm64.copapy build/runner/test-arm64.copapy.bin + echo '

example

' >> $GITHUB_STEP_SUMMARY + python tools/clean_asm.py build/asm/example.asm >> $GITHUB_STEP_SUMMARY - objdump -D -b binary -m i386:x86-64 --adjust-vma=0x1000 build/runner/test.copapy.bin > build/runner/test.copapy.asm - echo '

test.copapy.asm

' >> $GITHUB_STEP_SUMMARY - python tools/clean_asm.py build/runner/test.copapy.asm >> $GITHUB_STEP_SUMMARY - - #aarch64-linux-gnu-objdump -D -b binary -m aarch64 --adjust-vma=0x1000 build/runner/test-arm64.copapy.bin > build/runner/test-arm64.copapy.asm - #echo '

test-arm64.copapy.asm

' >> $GITHUB_STEP_SUMMARY - #python tools/clean_asm.py build/runner/test-arm64.copapy.asm >> $GITHUB_STEP_SUMMARY - - objdump -d -x src/copapy/obj/stencils_x86_64_O3.o > build/runner/stencils_x86_64_O3.asm - echo '

stencils_x86_64_O3.asm

' >> $GITHUB_STEP_SUMMARY - python tools/clean_asm.py build/runner/stencils_x86_64_O3.asm >> $GITHUB_STEP_SUMMARY - - #aarch64-linux-gnu-objdump -d -x src/copapy/obj/stencils_arm64_O3.o > build/runner/stencils_arm64_O3.asm - #echo '

stencils_arm64_O3.asm

' >> $GITHUB_STEP_SUMMARY - #python tools/clean_asm.py build/runner/stencils_arm64_O3.asm >> $GITHUB_STEP_SUMMARY + echo '

stencils_x86_64_O3.o

' >> $GITHUB_STEP_SUMMARY + python tools/clean_asm.py build/asm/stencils.asm >> $GITHUB_STEP_SUMMARY - name: Run tests with pytest run: pytest @@ -142,7 +109,8 @@ jobs: mkdir -p build/runner && \ gcc -O3 -DENABLE_LOGGING -o build/runner/coparun src/coparun/runmem.c \ src/coparun/coparun.c src/coparun/mem_man.c && \ - pytest" + pytest && \ + bash tools/create_asm.sh" - uses: actions/upload-artifact@v4 with: @@ -170,7 +138,8 @@ jobs: mkdir -p build/runner && \ gcc -O3 -DENABLE_LOGGING -o build/runner/coparun src/coparun/runmem.c \ src/coparun/coparun.c src/coparun/mem_man.c && \ - pytest" + pytest && \ + bash tools/create_asm.sh" - uses: actions/upload-artifact@v4 with: @@ -219,12 +188,6 @@ jobs: - name: Run tests with pytest run: pytest - - name: Type checking with mypy - run: mypy - - #- name: Lint code with flake8 - # run: flake8 - - uses: actions/upload-artifact@v4 if: strategy.job-index == 0 with: @@ -234,7 +197,7 @@ jobs: release-stencils: needs: [build_stencils, build-ubuntu, build-windows, build-arm64, build-armv7] runs-on: ubuntu-latest - if: github.event_name == 'push' + if: github.ref == 'refs/heads/main' && github.event_name == 'push' permissions: contents: write steps: @@ -262,7 +225,6 @@ jobs: mkdir -p release cp tmp/stencil-object-files/* release/ cp tmp/musl-object-files/* release/ - cp tmp/cross-runner/coparun-* release/ cp tmp/runner-linux/coparun release/ cp tmp/runner-linux-arm64/coparun release/coparun-aarch64 cp tmp/runner-linux-armv7/coparun release/coparun-armv7 diff --git a/tools/create_asm.sh b/tools/create_asm.sh new file mode 100644 index 0000000..3cbbd81 --- /dev/null +++ b/tools/create_asm.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e +set -v + +mkdir -p build/runner + +arch=$(python3 -c "import copapy; print(copapy._stencils.detect_process_arch())") + +# Disassemble stencil object file +objdump -d -x src/copapy/obj/stencils_${arch}_O3.o > build/runner/stencils.asm + +# Create example code disassembly +python3 tools/make_example.py +build/runner/coparun build/runner/test.copapy build/runner/test.copapy.bin + +if [ $(arch) = 'x86-64' ]; then + arch="i386:x86-64" +fi + +objdump -D -b binary -m $arch --adjust-vma=0x10000 build/runner/test.copapy.bin > build/runner/example.asm + +rm build/runner/test.copapy.bin diff --git a/tools/crosscompile.sh b/tools/crosscompile.sh index 67a118c..32efa2c 100644 --- a/tools/crosscompile.sh +++ b/tools/crosscompile.sh @@ -58,10 +58,3 @@ arm-none-eabi-ld -r $STMP /object_files/musl_objects_armv7.o $LIBGCC -o $DEST/st # RISCV 64 Bit #riscv64-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_riscv64_$OPT.o - - -# -------------- Cross compile runner -------------- -mkdir -p build/runner - -# Aarch64 -aarch64-linux-gnu-gcc-13 -static -O3 -DENABLE_LOGGING -o build/runner/coparun-aarch64 src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c