diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index cba3eb88..41855878 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -61,6 +61,8 @@ jobs: - {os: ubuntu-24.04, shell: bash, bin: tform} # To maximize compatibility, we build executables on the oldest # platforms available. + - {os: ubuntu-24.04-arm, shell: bash, bin: form} + - {os: ubuntu-24.04-arm, shell: bash, bin: tform} - {os: macos-13, shell: bash, bin: form} - {os: macos-13, shell: bash, bin: tform} # The macos-14 runner image is based on the arm64 architecture. @@ -79,7 +81,9 @@ jobs: uses: awalsh128/cache-apt-pkgs-action@v1 with: packages: libmpfr-dev libzstd-dev - version: 1.0 + # We need to handle a bug that may cause cache key conflicts. + # See: https://github.com/awalsh128/cache-apt-pkgs-action/pull/150 + version: ${{ runner.arch }}-1.0 - name: Install dependencies (Windows) if: runner.os == 'Windows' @@ -371,13 +375,19 @@ jobs: rm -rf $pkgname fi } - make_tar_gz x86_64-linux '*-ubuntu-*/*form' + make_tar_gz x86_64-linux '*-ubuntu-24.04/*form' + make_tar_gz arm64-linux '*-ubuntu-24.04-arm/*form' make_tar_gz x86_64-osx '*-macos-13/*form' make_tar_gz arm64-osx '*-macos-14/*form' - make_zip x86_64-windows '*-windows-*/*form.exe' + make_zip x86_64-windows '*-windows-2019/*form.exe' - - name: Print distributions - run: ls -l dist + - name: Summarize files for distribution + run: | + echo "Number of files: $(ls -1 dist | wc -l)" >> $GITHUB_STEP_SUMMARY + echo '' >> $GITHUB_STEP_SUMMARY + echo '| File Name | Size (bytes) |' >> $GITHUB_STEP_SUMMARY + echo '| --- | ---: |' >> $GITHUB_STEP_SUMMARY + ls -l dist | tail -n +2 | awk '{ printf "| %s | %s |\n", $9, $5 }' >> $GITHUB_STEP_SUMMARY # Upload the distributions as an artifact, regardless of whether # the commit has a versioning tag. This makes checking and debugging easy. diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6bccd3d2..a3af5517 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -39,7 +39,9 @@ jobs: uses: awalsh128/cache-apt-pkgs-action@v1 with: packages: libmpfr-dev libzstd-dev - version: 1.0 + # We need to handle a bug that may cause cache key conflicts. + # See: https://github.com/awalsh128/cache-apt-pkgs-action/pull/150 + version: ${{ runner.arch }}-1.0 - name: Install MPI if necessary if: matrix.bin == 'parform' || matrix.bin == 'parvorm' @@ -136,7 +138,9 @@ jobs: uses: awalsh128/cache-apt-pkgs-action@v1 with: packages: libmpfr-dev libzstd-dev valgrind - version: 1.0 + # We need to handle a bug that may cause cache key conflicts. + # See: https://github.com/awalsh128/cache-apt-pkgs-action/pull/150 + version: ${{ runner.arch }}-1.0 - name: Configure run: | @@ -180,7 +184,9 @@ jobs: uses: awalsh128/cache-apt-pkgs-action@v1 with: packages: lcov libmpfr-dev libzstd-dev - version: 1.0 + # We need to handle a bug that may cause cache key conflicts. + # See: https://github.com/awalsh128/cache-apt-pkgs-action/pull/150 + version: ${{ runner.arch }}-1.0 - name: Configure run: | diff --git a/sources/reken.c b/sources/reken.c index fe9d9490..1afa6f17 100644 --- a/sources/reken.c +++ b/sources/reken.c @@ -3729,7 +3729,7 @@ WORD Moebius(PHEAD WORD nn) { WORD i,n = nn, x; LONG newsize; - char *newtable, mu; + SBYTE *newtable, mu; #if ( BITSINWORD == 32 ) if ( AR.notfirstprime == 0 ) StartPrimeList(BHEAD0); #endif @@ -3742,7 +3742,7 @@ WORD Moebius(PHEAD WORD nn) if ( AR.moebiustablesize <= 0 ) { newsize = (LONG)nn + 20; } else { newsize = (LONG)nn*2; } if ( newsize > MAXPOSITIVE ) newsize = MAXPOSITIVE; - newtable = (char *)Malloc1(newsize*sizeof(char),"Moebius"); + newtable = (SBYTE *)Malloc1(newsize*sizeof(SBYTE),"Moebius"); for ( i = 0; i < AR.moebiustablesize; i++ ) newtable[i] = AR.moebiustable[i]; for ( ; i < newsize; i++ ) newtable[i] = 2; if ( AR.moebiustablesize > 0 ) M_free(AR.moebiustable,"Moebius"); diff --git a/sources/structs.h b/sources/structs.h index 90808f58..98adafb0 100644 --- a/sources/structs.h +++ b/sources/structs.h @@ -2037,7 +2037,7 @@ struct R_const { WORD *CompressPointer; /* (R) */ COMPAREDUMMY CompareRoutine; ULONG *wranfia; - char *moebiustable; + SBYTE *moebiustable; LONG OldTime; /* (R) Zero time. Needed in timer. */ LONG InInBuf; /* (R) Characters in input buffer. Scratch files. */