Условия для EL/SUSE, влияющие на все распределения
У меня есть файл спецификаций для FFmpeg, который нацелен на EL, Fedora, Mageia и SUSE. Из-за версий NASM, доступных для более старых дистрибутивов EL/SUSE, мой файл спецификаций должен выборочно отключать ASM для дистрибутивов, у которых нет новой доступной версии NASM.
./configure --prefix="%_prefix" --libdir="%_libdir" --shlibdir="%_libdir" --incdir="%_includedir/ffmpeg" --extra-cflags="%optflags" --optflags="%optflags" --enable-pic --disable-stripping --enable-shared --disable-static --enable-runtime-cpudetect \
%if 0%{?el5}%{?el6} || 0%{?suse_version} < 1315
--disable-yasm /
%endif
--disable-programs --disable-avdevice --disable-avformat --disable-swresample --disable-swscale --disable-postproc --disable-avfilter
проблема в том, что ASM отключается на каждом дистрибутиве, включая версии SUSE, более новые, чем 1315. Как сделать так, чтобы условия влияли только на те дистрибутивы, для которых они предназначены?
2 ответа
Решение
./configure --prefix="%_prefix" --libdir="%_libdir" --shlibdir="%_libdir" --incdir="%_includedir/ffmpeg" --extra-cflags="%optflags" --optflags="%optflags" --enable-pic --disable-stripping --enable-shared --disable-static --enable-runtime-cpudetect \
%if 0%{?el5}%{?el6} || 0%{?suse_version} && (0%{?suse_version} == 0 || 0%{?suse_version} < 1315)
--disable-yasm \
%endif
--disable-programs --disable-avdevice --disable-avformat --disable-swresample --disable-swscale --disable-postproc --disable-avfilter
IIRC, он делает простое сравнение строк, а не числовые, а строку 0 < 1
всегда верно.
Попробуйте защитить это с:
%{?suse_version}0 < 13150
или же
0%{?suse_version} < 01315
вместо.