Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dev-lang/nasm: sync with the upstream #2110

Merged
merged 4 commits into from
Jul 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/portage-stable-packages-list
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ dev-debug/strace
dev-lang/duktape
dev-lang/go-bootstrap
dev-lang/lua
dev-lang/nasm
dev-lang/perl
dev-lang/python
dev-lang/python-exec
Expand Down
1 change: 1 addition & 0 deletions changelog/security/2024-07-08-nasm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- nasm ([CVE-2019-6290](https://nvd.nist.gov/vuln/detail/CVE-2019-6290), [CVE-2019-6291](https://nvd.nist.gov/vuln/detail/CVE-2019-6291), [CVE-2019-8343](https://nvd.nist.gov/vuln/detail/CVE-2019-8343), [CVE-2020-21528](https://nvd.nist.gov/vuln/detail/CVE-2020-21528), [CVE-2021-33450](https://nvd.nist.gov/vuln/detail/CVE-2021-33450), [CVE-2021-33452](https://nvd.nist.gov/vuln/detail/CVE-2021-33452), [CVE-2022-44368](https://nvd.nist.gov/vuln/detail/CVE-2022-44368), [CVE-2022-44369](https://nvd.nist.gov/vuln/detail/CVE-2022-44369), [CVE-2022-44370](https://nvd.nist.gov/vuln/detail/CVE-2022-44370))
1 change: 1 addition & 0 deletions changelog/updates/2024-07-08-nasm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- SDK: nasm ([2.16.01](https://github.com/netwide-assembler/nasm/releases/tag/nasm-2.16.01))
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@

# Needed by arm64-native SDK.
=dev-embedded/u-boot-tools-2021.04_rc2 ~arm64
=dev-lang/nasm-2.15.05 ~arm64

# Keep versions on both arches in sync.
=dev-lang/python-3.11.9 ~amd64
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
DIST nasm-2.15.05.tar.xz 995732 BLAKE2B a41434965c2125577b762d907a0a3c251c75d9f9beac230fba4099182c7f7beb08c6d2c05c2432b0dc8ba829f24077f44c3096faea9bd0a533250e6dbbfaef35 SHA512 512f90a2584f1c5811429274b97c64a2cedf37b9fdeffb1bcd0ea64afd9ecc19a2d7877ca8f1e05393aa324153fc9f39ea51dacbf8d25a7d5a2d7728c925dba7
DIST nasm-2.16.01.tar.xz 1017732 BLAKE2B 0f7e96648e3db6fa4a8e10a89885f61cab7d79af25adbcc9d4706b3af61206c3cae024b7f873d636f5c1b2cb34ce5e7fbecc16af9b59086e9a1f49fb37c59670 SHA512 51fccb5639ce019d9c423c0f279750ffbd74c64cd41dd3b185d1aa1a1aaed79c5d3cd8d4bebbc13ee249a375ed27457ea2abde1a4dbb24d354598fffd1254833
DIST nasm-2.16.02.tar.xz 1044824 BLAKE2B daa3585e9aef3c388e3b577a52453b31aaa7f13942e621c21bbe6ec744ff30bf2692e853dda193b30006989cb10e40dcc1cf0107176e31fd5ee096baad28c7a1 SHA512 9ccafb4cd9064fb21f6551309d35ba7461de8da138b1239d76c2ea0c070a1a767f1019d5d705088375d625cfb73eebbfd9dfa3588107793b95354d89dcfd22c3
DIST nasm-2.16.03.tar.xz 1032388 BLAKE2B 742cbf330341fde9f778d8ca13e8c06199f48796d47028ac973d39e3d9e434450cdfebe89f6ab248d372bdaeb0c88a25eb7153a39b66fc05e770523d4c9e11e9 SHA512 0c706e41a9c33e1ac3bad5056e8bf8cbcd51785b551a6e34ce7d0d723df8eaab8603a033e89b3dcda1004b558f9e9ef3196691500f10d8201bf47a323a516f84
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
From 5a2d629501d57301fe1d85fe6b2576e318f523d1 Mon Sep 17 00:00:00 2001
From: "H. Peter Anvin" <hpa@zytor.com>
Date: Sun, 19 Feb 2023 21:26:15 -0800
Subject: [PATCH] autoconf: a much of macro fixes... not sure how this ever
worked?

Exposed a bunch of problems with the autoconf m4 macro
library. Hopefulyy fix it, and tidy it up in the process.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
--- /dev/null
+++ b/autoconf/m4/pa_add_cppflags.m4
@@ -0,0 +1,9 @@
+dnl --------------------------------------------------------------------------
+dnl PA_ADD_CPPFLAGS(variable, flag [,actual_flag [,success [,failure]]]])
+dnl
+dnl Attempt to add the given option to xFLAGS, if it doesn't break
+dnl compilation. If the option to be tested is different than the
+dnl option that should actually be added, add the option to be
+dnl actually added as a second argument.
+dnl --------------------------------------------------------------------------
+AC_DEFUN([PA_ADD_CPPFLAGS], [PA_ADD_FLAGS(CPPFLAGS, [$1], [$2], [$3], [$4])])
--- a/autoconf/m4/pa_add_flags.m4
+++ b/autoconf/m4/pa_add_flags.m4
@@ -1,23 +1,39 @@
dnl --------------------------------------------------------------------------
-dnl PA_ADD_FLAGS(variable, flag [,actual_flag [,success [,failure]]])
+dnl PA_ADD_FLAGS(flagvar, flags)
dnl
-dnl Attempt to add the given option to CPPFLAGS, if it doesn't break
-dnl compilation. If the option to be tested is different than the
-dnl option that should actually be added, add the option to be
-dnl actually added as a second argument.
+dnl Add [flags] to the variable [flagvar] if and only if it is accepted
+dnl by all languages affected by [flagvar], if those languages have
+dnl been previously seen in the script.
dnl --------------------------------------------------------------------------
AC_DEFUN([PA_ADD_FLAGS],
-[AC_MSG_CHECKING([if $CC accepts $2])
- pa_add_flags__old_flags="$$1"
- $1="$$1 $2"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
- [printf("Hello, World!\n");])],
- [AC_MSG_RESULT([yes])
- $1="$pa_add_flags__old_flags ifelse([$3],[],[$2],[$3])"
- AC_DEFINE(PA_SYM([$1_],[$2]), 1,
- [Define to 1 if compiled with the `$2' compiler flag])
+[
+ AS_VAR_PUSHDEF([old], [_$0_$1_orig])
+ AS_VAR_PUSHDEF([ok], [_$0_$1_ok])
+ AS_VAR_PUSHDEF([flags], [$1])
+
+ AS_VAR_COPY([old], [flags])
+ AS_VAR_SET([flags], ["$flags $2"])
+ AS_VAR_SET([ok], [yes])
+
+ PA_LANG_FOREACH(PA_FLAGS_LANGLIST($1),
+ [AS_VAR_IF([ok], [yes],
+ [AC_MSG_CHECKING([if $]_AC_CC[ accepts $2])
+ PA_BUILD_IFELSE([],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])
+ AS_VAR_SET([ok], [no])])])
+ ])
+
+ AS_VAR_IF([ok], [yes],
+ [m4_ifnblank([$3],[AS_VAR_SET([flags], ["$old $3"])])
+ m4_foreach_w([_pa_add_flags_flag], [m4_ifblank([$3],[$2],[$3])],
+ [AC_DEFINE(PA_SYM([$1_]_pa_add_flags_flag), 1,
+ [Define to 1 if compiled with the ]_pa_add_flags_flag[ compiler flag])])
$4],
- [AC_MSG_RESULT([no])
- $1="$pa_add_flags__old_flags"
- $5])])
+ [AS_VAR_SET([flags], ["$old"])
+ $5])
+
+ AS_VAR_POPDEF([flags])
+ AS_VAR_POPDEF([ok])
+ AS_VAR_POPDEF([old])
+])
--- /dev/null
+++ b/autoconf/m4/pa_build_ifelse.m4
@@ -0,0 +1,16 @@
+dnl --------------------------------------------------------------------------
+dnl PA_BUILD_IFELSE(input [,success [,failure]])
+dnl
+dnl Same as AC_LINK_IFELSE for languages where linking is applicable,
+dnl otherwise AC_COMPILE_IFELSE.
+dnl
+dnl If the first argument is empty, use _AC_LANG_IO_PROGRAM.
+dnl --------------------------------------------------------------------------
+m4_defun([_PA_BUILD_IFELSE],
+[m4_case(_AC_LANG,
+ [Erlang], [AC_COMPILE_IFELSE($@)],
+ [AC_LINK_IFELSE($@)])])
+
+AC_DEFUN([PA_BUILD_IFELSE],
+[_PA_BUILD_IFELSE([m4_ifblank([$1],[AC_LANG_SOURCE(_AC_LANG_IO_PROGRAM)],
+ [$1])],[$2],[$3])])
--- /dev/null
+++ b/autoconf/m4/pa_flags_langlist.m4
@@ -0,0 +1,19 @@
+dnl --------------------------------------------------------------------------
+dnl PA_FLAGS_LANGLIST(flagvar)
+dnl
+dnl Return a list of languages affected by the variable flagvar.
+dnl If flagvar is unknown, assume it affects the current language.
+dnl --------------------------------------------------------------------------
+AC_DEFUN([PA_FLAGS_LANGLIST],
+[m4_dquote(m4_case([$1],
+ [CPPFLAGS], [[C],[C++],[Objective C],[Objective C++]],
+ [CFLAGS], [[C]],
+ [CXXFLAGS], [[C++]],
+ [FFLAGS], [[Fortran 77]],
+ [FCFLAGS], [[Fortran]],
+ [ERLCFLAGS], [[Erlang]],
+ [OBJCFLAGS], [[Objective C]],
+ [OBJCXXFLAGS], [[Objective C++]],
+ [GOFLAGS], [[Go]],
+ [LDFLAGS], [[C],[C++],[Fortran 77],[Fortran],[Objective C],[Objective C++],[Go]],
+ m4_dquote(_AC_LANG)))])
--- /dev/null
+++ b/autoconf/m4/pa_lang_foreach.m4
@@ -0,0 +1,15 @@
+dnl --------------------------------------------------------------------------
+dnl PA_LANG_FOREACH(subset, body)
+dnl
+dnl Expand [body] for each language encountered in the configure script also
+dnl present in [subset], or all if [subset] is empty
+dnl --------------------------------------------------------------------------
+AC_DEFUN([_PA_LANG_DO],dnl
+[AC_LANG([$2])dnl
+$1])
+
+AC_DEFUN([PA_LANG_FOREACH],dnl
+[m4_pushdef([_pa_lang_foreach_current],[_AC_LANG])dnl
+m4_map_args([m4_curry([_PA_LANG_DO],[$2])],m4_unquote(PA_LANG_SEEN_LIST($1)))dnl
+AC_LANG(_pa_lang_foreach_current)dnl
+m4_popdef([_pa_lang_foreach_current])])
--- /dev/null
+++ b/autoconf/m4/pa_lang_seen_list.m4
@@ -0,0 +1,20 @@
+dnl --------------------------------------------------------------------------
+dnl PA_LANG_SEEN_LIST(subset)
+dnl
+dnl List of the language lang has been used in the configuration
+dnl script so far, possibly subset by [subset].
+dnl
+dnl This relies on overriding _AC_LANG_SET(from, to),
+dnl the internal implementation of _AC_LANG.
+dnl --------------------------------------------------------------------------
+m4_ifndef([_PA_LANG_SET],
+[m4_rename([_AC_LANG_SET], [_PA_LANG_SET])dnl
+m4_defun([_AC_LANG_SET], [m4_set_add([_PA_LANG_SEEN_SET],[$2])dnl
+_PA_LANG_SET($@)])])
+
+AC_DEFUN([PA_LANG_SEEN_LIST],
+[m4_set_delete([_pa_lang_seen_subset])dnl
+m4_pushdef([_pa_lang_seen_subset_list],m4_ifnblank([$1],[$1],m4_dquote(m4_set_list([_PA_LANG_SEEN_SET]))))dnl
+m4_set_add_all([_pa_lang_seen_subset],_pa_lang_seen_subset_list)dnl
+m4_cdr(m4_set_intersection([_pa_lang_seen_subset],[_PA_LANG_SEEN_SET]))dnl
+m4_popdef([_pa_lang_seen_subset_list])])
--- a/configure.ac
+++ b/configure.ac
@@ -12,9 +12,6 @@ dnl start; this is used to generate config/unconfig.h.
AH_BOTTOM([
/* Begin unconfig.h */])

-dnl Save initial CFLAGS, to see if -g -O2 came from configure or not
-pa_init_cflags="$CFLAGS"
-
dnl This prevents us from running Wine and thinking we are not
dnl cross-compiling when in fact we are; running Wine here is at
dnl the best very slow and doesn't buy us a single thing at all.
@@ -27,35 +24,29 @@ AC_CANONICAL_HOST
dnl Enable any available C extensions
AC_PROG_CC
AC_USE_SYSTEM_EXTENSIONS
-AC_SYS_LARGEFILE
-PA_ADD_CFLAGS([-std=c17], [], [],
-[PA_ADD_CFLAGS([-std=c11], [], [],
- [PA_ADD_CFLAGS([-std=c99])])])
-
-dnl If the user did not specify a CFLAGS default, change default
-dnl to -O0 for debugging
-PA_ARG_DISABLED([optimization],
- [compile without optimization (-O0) to help debugging],
- [pa_no_optimize=true])
+PA_ADD_CPPFLAGS([-std=c17], [], [],
+[PA_ADD_CPPFLAGS([-std=c11], [], [],
+ [PA_ADD_CPPFLAGS([-std=c99])])])

-dnl Other programs
-pa_no_optimize=false
-
-dnl Compile and link with dwarf debug
+dnl Compile and link with gdb debug extensions
PA_ARG_ENABLED([gdb],
- [disable optimization and compile with extra debug information for GDB debugger],
- [PA_ADD_CFLAGS([-ggdb3])
- pa_no_optimize=true])
+ [compile with extra debug information for GDB debugger],
+ [PA_ADD_CFLAGS([-ggdb3])])

-AS_IF([$pa_no_optimize],
- [PA_ADD_CFLAGS([-O0])
- PA_ADD_CFLAGS([-fno-omit-frame-pointer])])
+dnl Disable optimization
+PA_ARG_DISABLED([optimization],
+ [compile without optimization (-O0) to help debugging],
+ [PA_ADD_CFLAGS([-O0])
+ PA_ADD_CFLAGS([-fno-omit-frame-pointer])])

dnl Profiling
PA_ARG_ENABLED([profiling],
[compile with profiling (-pg option)],
[PA_ADD_CFLAGS([-pg])])

+dnl Large files
+AC_SYS_LARGEFILE
+
dnl Abort on panic
PA_ARG_ENABLED([panic-abort],
[call abort() on panic to trap in the debugger],
@@ -104,10 +95,10 @@ AC_PROG_MAKE_SET
AC_PROG_INSTALL
AC_PROG_MKDIR_P

-AC_CHECK_PROGS(NROFF, nroff, false)
-AC_CHECK_PROGS(ASCIIDOC, asciidoc, false)
-AC_CHECK_PROGS(XMLTO, xmlto, false)
-AC_CHECK_PROGS(XZ, xz, false)
+AC_CHECK_PROGS([NROFF], nroff, false)
+AC_CHECK_PROGS([ASCIIDOC], asciidoc, false)
+AC_CHECK_PROGS([XMLTO], xmlto, false)
+AC_CHECK_PROGS([XZ], xz, false)

dnl Check for progs needed for manpage generation
MANPAGES=manpages
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- a/Makefile.in 2024-04-05 07:51:48.394437050 -0000
+++ b/Makefile.in 2024-04-05 07:52:38.731388961 -0000
@@ -214,7 +214,7 @@
INSDEP = x86/insns.dat x86/insns.pl x86/insns-iflags.ph x86/iflags.ph

config/unconfig.h: config/config.h.in
- $(RUNPERL) $(tools)/unconfig.pl \
+ $(RUNPERL) $(top_srcdir)/autoconf/unconfig.pl \
'$(srcdir)' config/config.h.in config/unconfig.h

x86/iflag.c: $(INSDEP)

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit autotools

DESCRIPTION="groovy little assembler"
HOMEPAGE="https://www.nasm.us/"
SRC_URI="https://www.nasm.us/pub/nasm/releasebuilds/${PV/_}/${P/_}.tar.xz"
S="${WORKDIR}"/${P/_}

LICENSE="BSD-2"
SLOT="0"
KEYWORDS="amd64 arm64 ~ia64 ~loong ppc64 ~riscv x86 ~amd64-linux ~x86-linux"
IUSE="doc"

QA_CONFIG_IMPL_DECL_SKIP=(
_BitScanReverse
_BitScanReverse64
__cpu_to_le16
__cpu_to_le32
__cpu_to_le64
_byteswap_uint64
_byteswap_ulong
_byteswap_ushort
cpu_to_le16
cpu_to_le32
cpu_to_le64
)

# [fonts note] doc/psfonts.ph defines ordered list of font preference.
# Currently 'media-fonts/source-pro' is most preferred and is able to
# satisfy all 6 font flavours: tilt, chapter, head, etc.
BDEPEND="
dev-lang/perl
doc? (
app-text/ghostscript-gpl
dev-perl/Font-TTF
dev-perl/Sort-Versions
media-fonts/source-code-pro
media-fonts/source-sans:3
virtual/perl-File-Spec
)
"

PATCHES=(
"${FILESDIR}"/${PN}-2.15-bsd-cp-doc.patch
"${FILESDIR}"/${PN}-2.16-autoconf-macro-fixes.patch
)

src_prepare() {
default

# https://bugs.gentoo.org/870214
# During the split of media-fonts/source-pro, the source-sans files
# were renamed. Currently depend on media-fonts/source-sans:3 which works
# with this sed.
sed -i 's/SourceSansPro/SourceSans3/g' doc/psfonts.ph || die

AT_M4DIR="${S}/autoconf/m4" eautoreconf
}

src_compile() {
default
use doc && emake doc
}

src_install() {
default
emake DESTDIR="${D}" install $(usex doc install_doc '')
}
Loading
Loading