On Tue, 20 Aug 2013, Stuart Henderson wrote:
> On 2013/08/20 08:25, Stuart Henderson wrote:
> > On 2013/08/20 08:50, David Coppa wrote:
> > > On Mon, Aug 19, 2013 at 11:50 PM, Stuart Henderson <[email protected]>
> > > wrote:
> > >
> > > > these ones all use cmake which has a common segfault on arm since
> > > > the move to enabling the elf parser.
Comments on the following diff?
Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/cmake/Makefile,v
retrieving revision 1.89
diff -u -p -u -p -r1.89 Makefile
--- Makefile 20 Aug 2013 14:22:58 -0000 1.89
+++ Makefile 21 Aug 2013 13:03:48 -0000
@@ -23,7 +23,10 @@ PERMIT_PACKAGE_CDROM = Yes
WANTLIB = archive c curl curses expat form m \
stdc++ z
+# XXX: CMake's built-in ELF parser is broken on arm
+.if ${MACHINE_ARCH} != "arm"
BUILD_DEPENDS = devel/ninja
+.endif
LIB_DEPENDS = archivers/libarchive \
net/curl
@@ -59,6 +62,8 @@ pre-configure:
${WRKSRC}/Modules/FindSDL.cmake \
${WRKSRC}/Modules/FindTCL.cmake
+# XXX: CMake's built-in ELF parser is broken on arm
+.if ${MACHINE_ARCH} != "arm"
do-build:
cd ${WRKBUILD} && exec ${SETENV} ${MAKE_ENV} ninja -v -j \
${MAKE_JOBS} ${ALL_TARGET}
@@ -70,6 +75,7 @@ do-install:
do-test:
cd ${WRKBUILD} && exec ${SETENV} ${MAKE_ENV} ninja -v -j \
${MAKE_JOBS} ${TEST_FLAGS} ${TEST_TARGET}
+.endif
post-install:
rm ${WRKINST}/${LOCALBASE}/share/cmake/Modules/*.{beforesubst,orig}
Index: cmake.port.mk
===================================================================
RCS file: /cvs/ports/devel/cmake/cmake.port.mk,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 cmake.port.mk
--- cmake.port.mk 25 Jun 2013 08:34:10 -0000 1.20
+++ cmake.port.mk 21 Aug 2013 13:03:48 -0000
@@ -9,6 +9,11 @@ MAKE_ENV+=LIB${_n}_VERSION=${_v}
USE_NINJA ?= Yes
+# XXX: CMake's built-in ELF parser is broken on arm
+.if ${MACHINE_ARCH} == "arm"
+USE_NINJA = No
+.endif
+
.if ${USE_NINJA:L} == "yes"
BUILD_DEPENDS += devel/ninja
_MODCMAKE_GEN = Ninja
Index: patches/patch-Source_CMakeLists_txt
===================================================================
RCS file: /cvs/ports/devel/cmake/patches/patch-Source_CMakeLists_txt,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 patch-Source_CMakeLists_txt
--- patches/patch-Source_CMakeLists_txt 25 Jun 2013 07:16:46 -0000 1.3
+++ patches/patch-Source_CMakeLists_txt 21 Aug 2013 13:03:49 -0000
@@ -13,18 +13,22 @@ OpenBSD provides ELF ABI declarations in
Teach the platform check and cmELF implementation to use these.
---- Source/CMakeLists.txt.orig Wed May 15 19:38:13 2013
-+++ Source/CMakeLists.txt Fri Jun 21 09:15:02 2013
-@@ -11,7 +11,11 @@
+XXX: broken on arm
+
+--- Source/CMakeLists.txt.orig Tue Jul 2 15:41:40 2013
++++ Source/CMakeLists.txt Tue Aug 20 11:22:32 2013
+@@ -11,8 +11,12 @@
#=============================================================================
include(CheckIncludeFile)
# Check if we can build support for ELF parsing.
-CHECK_INCLUDE_FILE("elf.h" HAVE_ELF_H)
+-if(HAVE_ELF_H)
+if(CMAKE_CXX_PLATFORM_ID MATCHES "OpenBSD")
+ CHECK_INCLUDE_FILES("stdint.h;elf_abi.h" HAVE_ELF_H)
+else()
+ CHECK_INCLUDE_FILE("elf.h" HAVE_ELF_H)
+endif()
- if(HAVE_ELF_H)
++if(HAVE_ELF_H AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
set(CMAKE_USE_ELF_PARSER 1)
else()
+ set(CMAKE_USE_ELF_PARSER)
Index: patches/patch-bootstrap
===================================================================
RCS file: /cvs/ports/devel/cmake/patches/patch-bootstrap,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 patch-bootstrap
--- patches/patch-bootstrap 28 Jun 2013 14:58:23 -0000 1.3
+++ patches/patch-bootstrap 21 Aug 2013 13:03:49 -0000
@@ -1,15 +1,20 @@
$OpenBSD: patch-bootstrap,v 1.3 2013/06/28 14:58:23 dcoppa Exp $
Use Ninja to build CMake
+XXX: broken on arm
---- bootstrap.orig Thu Jun 27 11:26:07 2013
-+++ bootstrap Thu Jun 27 11:26:31 2013
-@@ -112,7 +112,7 @@ if ${cmake_system_mingw}; then
+--- bootstrap.orig Tue Jul 2 15:41:41 2013
++++ bootstrap Tue Aug 20 10:55:10 2013
+@@ -112,7 +112,11 @@ if ${cmake_system_mingw}; then
cmake_bootstrap_generator="MSYS Makefiles"
else
# Bootstrapping from a standard UNIX prompt.
- cmake_bootstrap_generator="Unix Makefiles"
-+ cmake_bootstrap_generator="Ninja"
++ if arch -s | grep ^arm >/dev/null 2>&1; then
++ cmake_bootstrap_generator="Unix Makefiles"
++ else
++ cmake_bootstrap_generator="Ninja"
++ fi
fi
# Choose tools and extensions for this platform.