diff options
author | Kyle Evans <kevans@FreeBSD.org> | 2020-03-12 00:44:44 +0000 |
---|---|---|
committer | Kyle Evans <kevans@FreeBSD.org> | 2020-03-12 00:44:44 +0000 |
commit | ce97c25da2815491268fd18d0c671c4b4ec1a10f (patch) | |
tree | e8439a1fa0e613e0f6e73179283b852ddddac720 | |
parent | 70289c0a6e453594fb636fa75de88f06582abb1c (diff) | |
download | ports-ce97c25da2815491268fd18d0c671c4b4ec1a10f.tar.gz ports-ce97c25da2815491268fd18d0c671c4b4ec1a10f.zip |
MFH: r528258
emulators/virtualbox-ose: use contemporary GCC instead of old llvm
The bug in PR 236616 resulted in virtualbox getting pinned to llvm7. This is
less than ideal, and in-fact has been broken by improvements to
machine/atomic.h
on x86 that require a more modern compiler.
Switch the build to USE_GCC= any. The patches that were previously applied
if COMPILER_TYPE == clang are actually needed by newer GCCs as well, so make
those
standard patches instead, folding the Config.kmk patches together.
We should put some effort into testing llvm10 and working out why llvm
breaks
it, but fixing the build is more important at the moment.
Q/A:
* portlint (pre-existing issues; none in current patch)
* testport (-CURRENT, amd64)
* run testing by madpilot@
PR: 244603
Approved by: koobs (mentor), bapt (mentor)
Approved by: portmgr (blanket: build fix)
Differential Revision: https://reviews.freebsd.org/D23967
Approved by: ports-secteam (blanket: build fix)
Notes
Notes:
svn path=/branches/2020Q1/; revision=528259
-rw-r--r-- | emulators/virtualbox-ose/Makefile | 24 | ||||
-rw-r--r-- | emulators/virtualbox-ose/files/extrapatch-Config.kmk | 27 | ||||
-rw-r--r-- | emulators/virtualbox-ose/files/patch-Config.kmk | 43 | ||||
-rw-r--r-- | emulators/virtualbox-ose/files/patch-src-VBox-Devices-PC-ipxe-Makefile.kmk (renamed from emulators/virtualbox-ose/files/extrapatch-src-VBox-Devices-PC-ipxe-Makefile.kmk) | 0 | ||||
-rw-r--r-- | emulators/virtualbox-ose/files/patch-src-recompiler-Makefile.kmk (renamed from emulators/virtualbox-ose/files/extrapatch-src-recompiler-Makefile.kmk) | 0 |
5 files changed, 41 insertions, 53 deletions
diff --git a/emulators/virtualbox-ose/Makefile b/emulators/virtualbox-ose/Makefile index 1f7e50a1fb3f..8ddf0f9abdbb 100644 --- a/emulators/virtualbox-ose/Makefile +++ b/emulators/virtualbox-ose/Makefile @@ -14,6 +14,7 @@ COMMENT= General-purpose full virtualizer for x86 hardware LICENSE= GPLv2 LICENSE_FILE= ${WRKSRC}/COPYING +PATCH_DEPENDS+= ${LOCALBASE}/share/kBuild/tools/GXX3.kmk:devel/kBuild BUILD_DEPENDS= yasm:devel/yasm \ xsltproc:textproc/libxslt \ kmk:devel/kBuild \ @@ -28,8 +29,13 @@ CPE_PRODUCT= vm_virtualbox WRKSRC= ${WRKDIR}/VirtualBox-${PORTVERSION} ONLY_FOR_ARCHS= i386 amd64 -USES= compiler:c++14-lang cpe gnome iconv pkgconfig ssl tar:bzip2 +USES= cpe gnome iconv pkgconfig ssl tar:bzip2 USE_GNOME= libidl libxml2 +# machine/atomic.h may use features that are only available in GCC9. This is +# a workaround, anyways- we should be expressing USES= compiler:c++14-lang, but +# contemporary clang miscompiles virtualbox in some fashion and yields runtime +# breakage. +USE_GCC= any HAS_CONFIGURE= yes CONFIGURE_ARGS= --disable-java --passive-mesa @@ -200,20 +206,6 @@ KMK_FLAGS+= -j${MAKE_JOBS_NUMBER} .include <bsd.port.pre.mk> -.if ${COMPILER_TYPE} == clang -.if ${COMPILER_VERSION} >= 80 -# XXX PR236616: Clang 8 & 9 caused runtime problems. -BUILD_DEPENDS+= ${LOCALBASE}/bin/clang${VBOX_LLVM_VER}:devel/llvm${VBOX_LLVM_VER} -CC= ${LOCALBASE}/bin/clang${VBOX_LLVM_VER} -CXX= ${LOCALBASE}/bin/clang++${VBOX_LLVM_VER} -VBOX_LLVM_VER?= 70 -.endif -PATCH_DEPENDS+= ${LOCALBASE}/share/kBuild/tools/GXX3.kmk:devel/kBuild -EXTRA_PATCHES+= ${PATCHDIR}/extrapatch-Config.kmk \ - ${PATCHDIR}/extrapatch-src-VBox-Devices-PC-ipxe-Makefile.kmk \ - ${PATCHDIR}/extrapatch-src-recompiler-Makefile.kmk -.endif - .if ${PYTHON_MAJOR_VER} >= 3 PLIST_SUB+= PYTHON_PYCDIR=/__pycache__/ \ PYTHON_PYCEXT=.cpython-${PYTHON_SUFFIX}.pyc @@ -285,7 +277,6 @@ post-patch: @${ECHO_CMD} 'VBOX_GCC_PEDANTIC_CXX = -Wshadow $$(VBOX_GCC_WARN) -Wno-long-long' >> \ ${WRKSRC}/LocalConfig.kmk .endif -.if ${COMPILER_TYPE} == clang @${REINPLACE_CMD} -e 's| -finline-limit=8000||' \ -e 's| -mpreferred-stack-boundary=2||' ${WRKSRC}/Config.kmk @${REINPLACE_CMD} -e 's| -fpermissive||' ${WRKSRC}/Config.kmk \ @@ -294,7 +285,6 @@ post-patch: @${SED} -e 's|GXX3|VBoxGccFreeBSD|g' \ ${LOCALBASE}/share/kBuild/tools/GXX3.kmk > \ ${WRKSRC}/tools/kBuildTools/VBoxGccFreeBSD.kmk -.endif @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \ ${WRKSRC}/Config.kmk ${WRKSRC}/configure \ ${WRKSRC}/kBuild/header.kmk ${WRKSRC}/kBuild/units/qt4.kmk \ diff --git a/emulators/virtualbox-ose/files/extrapatch-Config.kmk b/emulators/virtualbox-ose/files/extrapatch-Config.kmk deleted file mode 100644 index 8465f82a600c..000000000000 --- a/emulators/virtualbox-ose/files/extrapatch-Config.kmk +++ /dev/null @@ -1,27 +0,0 @@ ---- Config.kmk.orig 2016-07-18 11:50:32 UTC -+++ Config.kmk -@@ -3537,6 +3537,7 @@ ifdef VBOX_WITH_RAW_MODE - TEMPLATE_VBoxRc_TOOL = $(VBOX_GCC32_TOOL) - TEMPLATE_VBoxRc_CXXFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC32_Wno-variadic-macros) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fvisibility-inlines-hidden) -fno-rtti $(VBOX_GCC_IPRT_FMT_CHECK) - TEMPLATE_VBoxRc_CFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC32_Wno-variadic-macros) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_IPRT_FMT_CHECK) -+ TEMPLATE_VBoxRc_CXXFLAGS.freebsd = -fno-builtin - ifeq ($(KBUILD_TARGET),solaris) - TEMPLATE_VBoxRc_LDFLAGS = -r - else -@@ -3677,6 +3678,7 @@ ifeq ($(VBOX_LDR_FMT),elf) - TEMPLATE_VBoxR0_TOOL = $(VBOX_GCC_TOOL) - TEMPLATE_VBoxR0_CFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions $(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-hidden) -std=gnu99 $(VBOX_GCC_IPRT_FMT_CHECK) - TEMPLATE_VBoxR0_CXXFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions $(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) -fno-rtti $(VBOX_GCC_IPRT_FMT_CHECK) -+TEMPLATE_VBoxR0_CXXFLAGS.freebsd = -fno-builtin - TEMPLATE_VBoxR0_CFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-asynchronous-unwind-tables -ffreestanding - TEMPLATE_VBoxR0_CXXFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-asynchronous-unwind-tables - ifeq ($(KBUILD_TARGET),solaris) -@@ -3945,7 +3947,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CM - | xargs -J% objcopy % $(out) - - ## Strip debug info (comment out if debugging or something). -- objcopy --strip-debug $(out) -+# objcopy --strip-debug $(out) - endef - else # x86 - TOOL_FREEBSDKMODLD_LINK_SYSMOD_OUTPUT = $(outbase).kld diff --git a/emulators/virtualbox-ose/files/patch-Config.kmk b/emulators/virtualbox-ose/files/patch-Config.kmk index deb56d1f3e32..c660803fc82e 100644 --- a/emulators/virtualbox-ose/files/patch-Config.kmk +++ b/emulators/virtualbox-ose/files/patch-Config.kmk @@ -1,4 +1,4 @@ ---- Config.kmk.orig 2019-05-13 13:12:00 UTC +--- Config.kmk.orig 2019-10-10 18:06:26 UTC +++ Config.kmk @@ -445,11 +445,11 @@ ifn1of ($(KBUILD_TARGET), win darwin) # Enable OSS audio support. @@ -74,7 +74,23 @@ # branding VBOX_BRAND_LICENSE_HTML := $(PATH_ROOT)/doc/License-gpl-2.0.html VBOX_BRAND_LICENSE_RTF := $(PATH_ROOT)/doc/License-gpl-2.0.rtf -@@ -4575,7 +4571,7 @@ TEMPLATE_VBOXR0DRV_CFLAGS = \ +@@ -4158,6 +4154,7 @@ ifdef VBOX_WITH_RAW_MODE + TEMPLATE_VBoxRc_TOOL = $(VBOX_GCC32_TOOL) + TEMPLATE_VBoxRc_CXXFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC32_Wno-variadic-macros) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fvisibility-inlines-hidden) -fno-rtti $(VBOX_GCC_IPRT_FMT_CHECK) + TEMPLATE_VBoxRc_CFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC32_Wno-variadic-macros) -fno-exceptions $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_IPRT_FMT_CHECK) ++ TEMPLATE_VBoxRc_CXXFLAGS.freebsd = -fno-builtin + ifeq ($(KBUILD_TARGET),solaris) + TEMPLATE_VBoxRc_LDFLAGS = -r + else +@@ -4299,6 +4296,7 @@ ifeq ($(VBOX_LDR_FMT),elf) + TEMPLATE_VBoxR0_TOOL = $(VBOX_GCC_TOOL) + TEMPLATE_VBoxR0_CFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions $(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-hidden) -std=gnu99 $(VBOX_GCC_IPRT_FMT_CHECK) + TEMPLATE_VBoxR0_CXXFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions $(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) -fno-rtti $(VBOX_GCC_IPRT_FMT_CHECK) ++TEMPLATE_VBoxR0_CXXFLAGS.freebsd = -fno-builtin + TEMPLATE_VBoxR0_CFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-asynchronous-unwind-tables -ffreestanding + TEMPLATE_VBoxR0_CXXFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-asynchronous-unwind-tables + ifeq ($(KBUILD_TARGET),solaris) +@@ -4623,7 +4621,7 @@ TEMPLATE_VBOXR0DRV_CFLAGS = \ -O2 -ffreestanding -fno-strict-aliasing -fno-common -finline-limit=8000 \ $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \ -nostdinc -std=c99 @@ -83,7 +99,16 @@ TEMPLATE_VBOXR0DRV_CFLAGS.amd64 = -m64 --param inline-unit-growth=100 --param large-function-growth=1000 \ -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx \ -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -Wundef -@@ -4622,7 +4618,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS +@@ -4656,7 +4654,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS + | xargs -J% objcopy % $(out) + + ## Strip debug info (comment out if debugging or something). +- objcopy --strip-debug $(out) ++# objcopy --strip-debug $(out) + endef + else # x86 + TOOL_FREEBSDKMODLD_LINK_SYSMOD_OUTPUT = $(outbase).kld +@@ -4670,7 +4668,7 @@ define TOOL_FREEBSDKMODLD_LINK_SYSMOD_CMDS | xargs -J% objcopy % $(outbase).kld # Link the final .ko (a shared object). @@ -92,7 +117,7 @@ endef endif # x86 -@@ -4908,10 +4904,18 @@ TEMPLATE_VBOXR3EXE_LIBPATH += \ +@@ -4956,10 +4954,18 @@ TEMPLATE_VBOXR3EXE_LIBPATH += \ TEMPLATE_VBOXR3EXE_CFLAGS += -fno-pic TEMPLATE_VBOXR3EXE_CXXFLAGS += -fno-pic TEMPLATE_VBOXR3EXE_LDFLAGS += -fno-pic @@ -112,7 +137,7 @@ /usr/include \ /usr/X11R6/include \ /usr/local/include -@@ -5202,7 +5206,7 @@ ifeq ($(KBUILD_TARGET),win) # No CRT! +@@ -5250,7 +5256,7 @@ ifeq ($(KBUILD_TARGET),win) # No CRT! TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.win.amd64 = $(TEMPLATE_VBOXR3EXE_LDFLAGS.win.amd64) /entry:suplibHardenedWindowsMain TEMPLATE_VBOXR3HARDENEDEXE_LIBS.x86 = $(NOT_SUCH_VARIABLE) TEMPLATE_VBOXR3HARDENEDEXE_LIBS.amd64 = $(NOT_SUCH_VARIABLE) @@ -121,7 +146,7 @@ # We want to keep the RPATH on Solaris to be able to find libgcc_1/libstdc++ within $(VBOX_WITH_RUNPATH) TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBOXR3EXE_LDFLAGS)) TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBOXR3EXE_LDFLAGS.linux)) -@@ -5729,10 +5733,18 @@ TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTI +@@ -5777,10 +5783,18 @@ TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTI else ifeq ($(KBUILD_TARGET),haiku) TEMPLATE_VBOXMAINEXE_TOOL = GXX3 TEMPLATE_VBOXMAINEXE_LIBS = $(LIB_RUNTIME) network stdc++ supc++ @@ -141,7 +166,7 @@ /usr/include \ /usr/X11R6/include \ /usr/local/include -@@ -6271,13 +6283,10 @@ ifdef VBOX_WITH_QTGUI +@@ -6319,13 +6333,10 @@ ifdef VBOX_WITH_QTGUI TEMPLATE_VBOXQTGUIEXE_LIBPATH += \ $(VBOX_LIBPATH_X11) ifeq ($(KBUILD_TARGET),freebsd) @@ -156,7 +181,7 @@ /usr/local/lib endif ifeq ($(KBUILD_TARGET),solaris) -@@ -6500,12 +6509,8 @@ TEMPLATE_VBoxBldProg_LIBPATH += \ +@@ -6548,12 +6559,8 @@ TEMPLATE_VBoxBldProg_LIBPATH += \ TEMPLATE_VBoxBldProg_TOOL = GXX3 TEMPLATE_VBoxBldProg_LIBS = pthread TEMPLATE_VBoxBldProg_INCS += \ @@ -169,7 +194,7 @@ /usr/local/lib else ifeq ($(KBUILD_HOST),netbsd) TEMPLATE_VBoxBldProg_TOOL = GXX3 -@@ -6906,6 +6911,7 @@ TEMPLATE_VBOXCROGLR3HOSTDLL_LDFLAGS.darwin += \ +@@ -6954,6 +6961,7 @@ TEMPLATE_VBOXCROGLR3HOSTDLL_LDFLAGS.darwin += \ -current_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \ -compatibility_version $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) TEMPLATE_VBOXCROGLR3HOSTDLL_LDFLAGS.linux = -Wl,--no-as-needed diff --git a/emulators/virtualbox-ose/files/extrapatch-src-VBox-Devices-PC-ipxe-Makefile.kmk b/emulators/virtualbox-ose/files/patch-src-VBox-Devices-PC-ipxe-Makefile.kmk index c2a39f402b18..c2a39f402b18 100644 --- a/emulators/virtualbox-ose/files/extrapatch-src-VBox-Devices-PC-ipxe-Makefile.kmk +++ b/emulators/virtualbox-ose/files/patch-src-VBox-Devices-PC-ipxe-Makefile.kmk diff --git a/emulators/virtualbox-ose/files/extrapatch-src-recompiler-Makefile.kmk b/emulators/virtualbox-ose/files/patch-src-recompiler-Makefile.kmk index cb720f90e1ff..cb720f90e1ff 100644 --- a/emulators/virtualbox-ose/files/extrapatch-src-recompiler-Makefile.kmk +++ b/emulators/virtualbox-ose/files/patch-src-recompiler-Makefile.kmk |