nasm-2.09 breaks compatibility

Petr Pisar ppisar at redhat.com
Fri Feb 25 13:24:29 UTC 2011


Hello,

I'v just been bitten by nasm-2.09
(https://bugzilla.redhat.com/show_bug.cgi?id=678818) that changed
a derivation of __OUTPUT__FORMAT__ macro derivation from `-f FORMAT'
option (http://www.nasm.us/doc/nasmdocc.html).

If your package uses nasm and conditionalizes some assembly code by

    %ifidn __OUTPUT_FORMAT__,elf
    %endif

statement, resulting binary will not be what you would expect.

Backward nasm and yasm compatible solution is to change the `elf' value
to `elf32' or `elf64' (depending on target architecture) in the macro
test _and_ at the `-f elf' nasm option.

nasm-2.09 has been introduced in Fedora 14 while beeing rawhide.
Following listing of F14 SRPM shows some victims:

$ repoquery --repoid=fedora-source --repoid=updates-source \
  --repoid=updates-testing-source --arch=src --whatrequires 'nasm' 
nasm-0:2.09.03-2.fc14.src
libjpeg-turbo-0:1.0.1-1.fc14.1.src
quake3-0:1.36-7.svn1783.fc14.src
quake3-0:1.36-8.svn1802.fc14.src
syslinux-0:4.02-3.fc14.src
tigervnc-0:1.0.90-0.22.20100813svn4123.fc14.src
tigervnc-0:1.0.90-0.24.20100813svn4123.fc14.src

As you can see SDL is missing there for unknown reason. Maybe
because the nasm BuildRequires is conditionalized by architecture.

-- Petr




More information about the devel mailing list