Skip to content

outaout: fix dangeours truncating memsize to 32bit #389

outaout: fix dangeours truncating memsize to 32bit

outaout: fix dangeours truncating memsize to 32bit #389

Workflow file for this run

name: NASM CI/CD
on:
push:
branches: [ "*" ]
pull_request:
branches: [ "*" ]
jobs:
build:
name: Build and test
runs-on: ubuntu-latest
container:
image: ubuntu:24.04
steps:
- name: Install dependencies
run: |
apt-get update && apt-get install -y automake perl python3 build-essential
- name: Checkout repository
uses: actions/checkout@v6
- name: Prepare build system
run: |
sh autogen.sh
sh configure
- name: Build
run: |
make
./nasm --version
- name: Run travis tests
run: |
make travis
- name: Upload travis.log
if: always()
uses: actions/upload-artifact@v7
with:
name: travis-log
path: travis.log
if-no-files-found: warn
build-msvc:
name: Build with MSVC (Windows)
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up MSVC developer environment
# step-security/msvc-dev-cmd is a StepSecurity-maintained,
# actively updated (Node 24) drop-in replacement for
# ilammy/msvc-dev-cmd@v1, which is Node 20 and has no newer
# release addressing that.
uses: step-security/msvc-dev-cmd@v1
with:
arch: x64
- name: Install NSIS
# Needed to build the Windows installer (nsis/nasm.nsi) via the
# "nsis" nmake target below. Not preinstalled on windows-latest.
# choco updates the machine PATH, but that doesn't propagate to
# the already-running Actions Runner process (and thus not to
# later steps), so add makensis's directory to $GITHUB_PATH
# explicitly.
run: |
choco install nsis --no-progress -y
Get-Item "${env:ProgramFiles(x86)}\NSIS", "$env:ProgramFiles\NSIS" -ErrorAction SilentlyContinue |
Select-Object -First 1 -ExpandProperty FullName |
Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Install Perl CPAN modules for doc build
# doc/genps.pl's font-metrics computation needs Font::TTF, and
# the wider doc toolchain needs a handful of other non-core
# CPAN modules; see doc/perlbreq.src (generated from
# doc/source.src's requirements list by tools/genperlbreq.pl)
# for the authoritative list. windows-latest ships Strawberry
# Perl, which bundles cpanm.
shell: cmd
run: cpanm --notest Font::TTF JSON Sort::Versions Compress::Zlib Win32::TieRegistry
- name: Install Ghostscript and doc-build fonts
# nasmdoc.pdf (packaged into the installer) is built via
# doc/pspdf.pl, which shells out to Ghostscript, and
# doc/genps.pl, which needs the Roboto and Roboto Mono font
# files to compute glyph metrics (see doc/source.src, "Optional
# Build Tools"). Neither is preinstalled on windows-latest.
#
# Font versions match what Fedora's google-roboto-fonts (from
# github.com/google/roboto, release v2.138) and
# google-roboto-mono-fonts (from github.com/googlefonts/RobotoMono)
# packages ship, which is known-good: only Bold/BoldItalic/
# Italic/Regular of Roboto and Bold/Medium/Regular of Roboto
# Mono are actually used by doc/psfonts.ph. Dropping the .ttf
# files straight into %windir%\Fonts is sufficient: findfont.ph
# falls back to scanning that directory directly and identifies
# faces from each file's own name table, no font-registration
# step required.
shell: pwsh
run: |
choco install ghostscript --no-progress -y
$fontsDir = "$env:windir\Fonts"
Invoke-WebRequest -Uri "https://github.com/google/roboto/releases/download/v2.138/roboto-unhinted.zip" -OutFile roboto.zip
Expand-Archive -Path roboto.zip -DestinationPath roboto-unhinted
foreach ($f in "Regular", "Bold", "Italic", "BoldItalic") {
Copy-Item "roboto-unhinted\Roboto-$f.ttf" $fontsDir
}
foreach ($f in "Regular", "Bold", "Medium") {
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/googlefonts/RobotoMono/main/fonts/ttf/RobotoMono-$f.ttf" -OutFile "$fontsDir\RobotoMono-$f.ttf"
}
- name: Build with nmake/cl.exe
shell: cmd
run: |
nmake /f Mkfiles\msvc.mak
- name: Smoke-test the resulting binaries
shell: cmd
run: |
nasm.exe --version
ndisasm.exe --version
echo mov eax, 1 > smoke.asm
echo ret >> smoke.asm
nasm.exe -f bin smoke.asm -o smoke.bin
ndisasm.exe -b 64 smoke.bin
nasm.exe -f win64 smoke.asm -o smoke.obj
- name: Build documentation and NSIS installer
shell: cmd
run: |
nmake /f Mkfiles\msvc.mak docs
nmake /f Mkfiles\msvc.mak nsis
- name: Upload installer artifact
uses: actions/upload-artifact@v7
with:
name: nasm-windows-installer
path: nasm-*-installer-*.exe
if-no-files-found: error