From patchwork Mon Jun 16 05:03:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Tai X-Patchwork-Id: 43100 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id E259C27BC4B; Mon, 16 Jun 2025 06:05:19 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 1602927BC4A for ; Mon, 16 Jun 2025 06:05:18 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uR21s-0005eL-1T; Mon, 16 Jun 2025 01:05:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uR21o-0005dj-Qg for guix-patches@gnu.org; Mon, 16 Jun 2025 01:05:05 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uR21o-00031g-Gv for guix-patches@gnu.org; Mon, 16 Jun 2025 01:05:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=DGJe7P8swDnrlgtcqjFcYHW4q732OohCsIKlsCqAb8Q=; b=uQEYyMYYZLTpciB/kWM+/uiR1jfBkzSZl5VIylQqAyX+RvN5LaXcfQLcLn0VcP1q/M03h1G5IlAm8Nqh+PIj4i6DUy53b6PFIxLz+8E/z3UApQYu2lCyz22YUqvHCO6rp+JiF0d65t0EZuctwRU5MyqAfeQoUtc6M7Ttm6XgvDVQF9VJsI2PujZBpIUPTYKTuhJndzX7/Bq04rxnFag2usyRvspec65ziL60o3sZk1QRtE8CzjLoqzAK2V7x1plCWk2CcvN2IfK62o8fDje0P5YGbiqYRxIOA2WMJQMosG4Ms500PTstn09Nc6V7kG2B6eZX8j6boRGRWuCZwKE0mw==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1uR21m-0005Pp-Dk; Mon, 16 Jun 2025 01:05:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#78706] [PATCH v2 2/2] gnu: nlopt: no longer assume C++11 mode when building. Resent-From: Andy Tai Original-Sender: "Debbugs-submit" Resent-CC: andreas@enge.fr, bavier@posteo.net, sharlatanus@gmail.com, guix-patches@gnu.org Resent-Date: Mon, 16 Jun 2025 05:05:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78706 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 78706@debbugs.gnu.org, andreas@enge.fr Cc: Andy Tai , Andreas Enge , Eric Bavier , Sharlatan Hellseher X-Debbugs-Original-Xcc: Andreas Enge , Eric Bavier , Sharlatan Hellseher Received: via spool by 78706-submit@debbugs.gnu.org id=B78706.175005025420571 (code B ref 78706); Mon, 16 Jun 2025 05:05:02 +0000 Received: (at 78706) by debbugs.gnu.org; 16 Jun 2025 05:04:14 +0000 Received: from localhost ([127.0.0.1]:39206 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uR20z-0005Ld-Ju for submit@debbugs.gnu.org; Mon, 16 Jun 2025 01:04:14 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]:50212) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uR20s-0005KK-Sr for 78706@debbugs.gnu.org; Mon, 16 Jun 2025 01:04:07 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-b2f62bbb5d6so3075901a12.0 for <78706@debbugs.gnu.org>; Sun, 15 Jun 2025 22:04:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750050239; x=1750655039; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=DGJe7P8swDnrlgtcqjFcYHW4q732OohCsIKlsCqAb8Q=; b=iEpHRTr/Aqn/ewwcvvVU/hfFiNrEzd5RcwqdibKyGQrkNMSEJOURG7FENTlNq8OX0t WD4Oz3S1zlNpy6Nn52eiY0EGKs9jVN6CMMSM7FfoZCB4+TuQONTkC/AM9qwmOHxW3T+a VcmXEllHY82px7IuH5DE7c5MMPPy3qQs8qlATCS1MdgTX8VMxZk4wxf+T8oxuwbEoiZU c9wMC3GeUt2udBdJcc6X61DZRcnt1uSiEiqWIcnLRZ4/Uf/D/uEWtQLDfMjFYE/oYTRq +JhHS7vA2gg3nO6PmJlvws0CEYYs27xMxxsA5lbTHfH29xiWu0+cfWZ5OI8uGzwh9TTK JAlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750050239; x=1750655039; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=DGJe7P8swDnrlgtcqjFcYHW4q732OohCsIKlsCqAb8Q=; b=g6Zrdjrrts9GCRMY+EuVdxZNl4FUNCK7o6wRxvlA6h8NtcHcn9Rn6mFuAb/KIsJQSH djn6c7wvW+6J/w2exW/7Umv2CyPJhyA6URKY9CT3Ovj3J0Zi61iUevty3xuF4OsuxvJ3 6dfnCR9UJduEizpylcbUuKg2ZWvcEqsHdstmg4LuUxLNmCDPqg+VJLSySMgHilfyIXrQ gZZ7OGC+y2AI8uVkVm30RyAJf4BNzpGt8HadQGpIABp31qV8DfPVjOe8i0Yj/Hkw6fII PlYqSHM4oV/P8sE+C6nMxKTKqz/GJ6f43Mgb+dIKjp26fWLB4AVTJOtL/mlFEwk2K2Jb C/Xg== X-Gm-Message-State: AOJu0YwgMrs5eSxOT6wzqrnUuIiX4u9kJR6/9DjmJpUn9+Hg+XdIS7Hi NYtvavKoAq9lzs+KwdwuAbbziHIfoHWgAgm6aQPFuZzUO2Mg7lzLiSphxPvHgFv+ X-Gm-Gg: ASbGncu6vVFkKqDaQTqBl4GCd9l7En1ZxOs2FpiJqk9YLg5I4AdUI96em66kikiKYRN jjtB2DDX6YsmITgkbDVdSUKoaTwoDUk0HFigbsWyr4KKFu7z5a1sp4U602Y3eeqgqlquvl1JjHD nGbFnZti0S+/sluHxgVGcYwWoM1LOsNrHIF8OtTalgEbBmUE3KGjlqhnOtAqnJXOBUZY0pY9ozj exHmYmzUc2z0lJfVdXDoSxu/AriGyVWN8UQSwL8bFYaiQPyu6ButLqlHHmCVAAvbYInXZL2nBpE 90lKzHnmqmOiY+qRptRJMBSGA7Mc9M+5OLtw0n7rgtCcE71VUehPH79IgRh//EZMxrkc X-Google-Smtp-Source: AGHT+IGJqfaYm7fkh4fp5a7dXiYx58R7Ag0SVl4KhJtcCYgJ2Mu1JTOnAtBruPcqFg4B5bTJDdFfQA== X-Received: by 2002:a05:6a21:3946:b0:201:4061:bd94 with SMTP id adf61e73a8af0-21fbd5f1eb4mr11445904637.19.1750050239270; Sun, 15 Jun 2025 22:03:59 -0700 (PDT) Received: from DEskMiniX300.. ([172.98.218.160]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74890006311sm6043462b3a.60.2025.06.15.22.03.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 15 Jun 2025 22:03:58 -0700 (PDT) From: Andy Tai Date: Sun, 15 Jun 2025 22:03:52 -0700 Message-ID: <4387a103e91f6c3e152edbb2a07f776031dd82d2.1750049973.git.atai@atai.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/patches/nlopt_CMake-Assume-working-c-compiler-597.patch: New file. * gnu/local.mk: Register new patch. * gnu/packages/maths.scm (nlopt)[source]: Use it. Change-Id: I8aa8aa7a62c9050d8b0b15fd23029679c38cc8be --- gnu/local.mk | 1 + gnu/packages/maths.scm | 4 +- ..._CMake-Assume-working-c-compiler-597.patch | 178 ++++++++++++++++++ 3 files changed, 182 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/nlopt_CMake-Assume-working-c-compiler-597.patch diff --git a/gnu/local.mk b/gnu/local.mk index 1565828f88..a0afb1e139 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1926,6 +1926,7 @@ dist_patch_DATA = \ %D%/packages/patches/newlib-getentropy.patch \ %D%/packages/patches/nginx-socket-cloexec.patch \ %D%/packages/patches/nickle-man-release-date.patch \ + %D%/packages/patches/nlopt_CMake-Assume-working-c-compiler-597.patch \ %D%/packages/patches/nnpack-system-libraries.patch \ %D%/packages/patches/nsis-env-passthru.patch \ %D%/packages/patches/nss-getcwd-nonnull.patch \ diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 64ba70ed4f..0ded262080 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -2598,7 +2598,9 @@ (define-public nlopt (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "04257r7a1bjmm6hznf9v6fimz2p93dk745sf89wmxzhg3rh0ak44")))) + (base32 "04257r7a1bjmm6hznf9v6fimz2p93dk745sf89wmxzhg3rh0ak44")) + (patches + (search-patches "nlopt_CMake-Assume-working-c-compiler-597.patch")))) (build-system cmake-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/patches/nlopt_CMake-Assume-working-c-compiler-597.patch b/gnu/packages/patches/nlopt_CMake-Assume-working-c-compiler-597.patch new file mode 100644 index 0000000000..6cfff4efd2 --- /dev/null +++ b/gnu/packages/patches/nlopt_CMake-Assume-working-c-compiler-597.patch @@ -0,0 +1,178 @@ +nlopt used to assume C++11. this removes that assumption. +Then nlopt can be built with Octave 10 in c++17 mode. +Patch in upstream repo. Shall be in next upstrea release; +so this patch can be removed from GNU Guix upon updating to +next nlopt release. + +From a5426ead8d8478c46201c21860e789e47f15c5a3 Mon Sep 17 00:00:00 2001 +From: Julien Schueller +Date: Mon, 24 Feb 2025 15:59:52 +0100 +Subject: [PATCH] CMake: Assume working c++ compiler (#597) + +--- + CMakeLists.txt | 19 +++---------------- + src/swig/CMakeLists.txt | 6 +++--- + test/CMakeLists.txt | 38 ++++++++++++++++++-------------------- + 3 files changed, 24 insertions(+), 39 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c0a84de..39b0144 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -77,8 +77,6 @@ endif () + include (CheckIncludeFiles) + include (CheckFunctionExists) + include (CheckTypeSize) +-include (CheckCCompilerFlag) +-include (CheckCXXSymbolExists) + include (CheckCSourceCompiles) + + #============================================================================== +@@ -140,20 +138,6 @@ if (WITH_THREADLOCAL AND NOT DEFINED THREADLOCAL) + endforeach() + endif () + +- +-if (NLOPT_CXX OR NLOPT_PYTHON OR NLOPT_GUILE OR NLOPT_OCTAVE OR NLOPT_JAVA) +- check_cxx_symbol_exists (__cplusplus ciso646 SYSTEM_HAS_CXX) +- if (SYSTEM_HAS_CXX) +- set (CMAKE_CXX_STANDARD 11) # set the standard to C++11 but do not require it +- +- if (NLOPT_CXX) +- set (CMAKE_CXX_STANDARD_REQUIRED ON) # if we build C++ API, we do need C++11 +- endif () +- else() +- message (FATAL_ERROR "The compiler doesn't support CXX.") +- endif () +-endif () +- + #============================================================================== + # CREATE nlopt_config.h + #============================================================================== +@@ -260,6 +244,9 @@ if (M_LIBRARY) + endif () + set_target_properties (${nlopt_lib} PROPERTIES SOVERSION ${SO_MAJOR}) + set_target_properties (${nlopt_lib} PROPERTIES VERSION "${SO_MAJOR}.${SO_MINOR}.${SO_PATCH}") ++if (NLOPT_CXX) ++ target_compile_features (${nlopt_lib} PUBLIC cxx_lambdas) ++endif () + + #============================================================================== + # INCLUDE DIRECTORIES +diff --git a/src/swig/CMakeLists.txt b/src/swig/CMakeLists.txt +index a48b8b3..e8248e9 100644 +--- a/src/swig/CMakeLists.txt ++++ b/src/swig/CMakeLists.txt +@@ -21,7 +21,7 @@ endif () + include_directories (${NLOPT_PRIVATE_INCLUDE_DIRS}) + set_source_files_properties (nlopt.i PROPERTIES CPLUSPLUS ON) + +-if (Python_NumPy_FOUND) ++if (Python_NumPy_FOUND AND NLOPT_CXX) + + set (SWIG_MODULE_nlopt_python_EXTRA_DEPS nlopt-python.i numpy.i generate-cpp) + +@@ -46,7 +46,7 @@ if (Python_NumPy_FOUND) + endif () + + +-if (GUILE_FOUND) ++if (GUILE_FOUND AND NLOPT_CXX) + + set (SWIG_MODULE_nlopt_guile_EXTRA_DEPS nlopt-guile.i generate-cpp) + set (CMAKE_SWIG_FLAGS -scmstub) +@@ -74,7 +74,7 @@ if (GUILE_FOUND) + endif () + + +-if (JNI_FOUND AND Java_FOUND AND SWIG_FOUND) ++if (JNI_FOUND AND Java_FOUND AND SWIG_FOUND AND NLOPT_CXX) + + include (UseJava) + +diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt +index f66d280..0edf5e8 100644 +--- a/test/CMakeLists.txt ++++ b/test/CMakeLists.txt +@@ -1,28 +1,26 @@ + add_custom_target (tests) + + macro(NLOPT_add_cpp_test test_name) +- add_executable (${test_name} ${test_name}.cxx) +- target_link_libraries (${test_name} ${nlopt_lib}) +- add_dependencies (tests ${test_name}) +- target_include_directories (${test_name} PRIVATE ${NLOPT_PRIVATE_INCLUDE_DIRS}) +- foreach(arg IN ITEMS ${ARGN}) +- add_test (NAME check_${test_name}_${arg} COMMAND ${test_name} ${arg}) +- if (CMAKE_HOST_SYSTEM_NAME MATCHES Windows) +- set_tests_properties (check_${test_name}_${arg} +- PROPERTIES ENVIRONMENT "PATH=${PROJECT_BINARY_DIR}\\${CMAKE_BUILD_TYPE};$ENV{PATH}") # to load dll +- endif () +- endforeach() ++ if (NLOPT_CXX) ++ add_executable (${test_name} ${test_name}.cxx) ++ target_link_libraries (${test_name} ${nlopt_lib}) ++ add_dependencies (tests ${test_name}) ++ target_include_directories (${test_name} PRIVATE ${NLOPT_PRIVATE_INCLUDE_DIRS}) ++ foreach(arg IN ITEMS ${ARGN}) ++ add_test (NAME check_${test_name}_${arg} COMMAND ${test_name} ${arg}) ++ if (CMAKE_HOST_SYSTEM_NAME MATCHES Windows) ++ set_tests_properties (check_${test_name}_${arg} ++ PROPERTIES ENVIRONMENT "PATH=${PROJECT_BINARY_DIR}\\${CMAKE_BUILD_TYPE};$ENV{PATH}") # to load dll ++ endif () ++ endforeach() ++ endif () + endmacro() + + NLOPT_add_cpp_test(t_tutorial 24 25 31 40) + NLOPT_add_cpp_test(cpp_functor 0) + NLOPT_add_cpp_test(t_fbound 0) + NLOPT_add_cpp_test(t_except 1 0) +- + NLOPT_add_cpp_test(t_bounded 0 1 2 3 4 5 6 7 8 19 35 42 43) +-if (NOT NLOPT_CXX) +- set_tests_properties (check_t_bounded_8 check_t_bounded_43 PROPERTIES DISABLED TRUE) +-endif () + + # have to add timer.c and mt19937ar.c as symbols are declared extern + set (testopt_sources testfuncs.c testfuncs.h testopt.c ${PROJECT_SOURCE_DIR}/src/util/timer.c ${PROJECT_SOURCE_DIR}/src/util/mt19937ar.c) +@@ -67,7 +65,7 @@ foreach (algo_index RANGE 28) # 42 + endforeach () + endforeach () + +-if (Python_NumPy_FOUND AND (SWIG_FOUND OR (EXISTS ${PROJECT_SOURCE_DIR}/src/swig/nlopt-python.cpp))) ++if (TARGET nlopt_python) + set (PYINSTALLCHECK_ENVIRONMENT "LD_LIBRARY_PATH=${PROJECT_BINARY_DIR}/src/swig" + "PYTHONPATH=$" + ) +@@ -85,7 +83,7 @@ endif () + # The binding itself should also compile with more ancient Java versions that + # have already reached their end of life, but it is not worth uglifying the test + # code for them, because people will then cargo-cult the legacy boilerplate. +-if (JNI_FOUND AND Java_FOUND AND SWIG_FOUND AND NOT Java_VERSION VERSION_LESS 1.8) ++if (TARGET nlopt_java AND NOT Java_VERSION VERSION_LESS 1.8) + include (UseJava) + add_jar (t_java SOURCES t_java.java INCLUDE_JARS nlopt_jar ENTRY_POINT t_java) + get_property (t_java_jar TARGET t_java PROPERTY JAR_FILE) +@@ -100,15 +98,15 @@ if (JNI_FOUND AND Java_FOUND AND SWIG_FOUND AND NOT Java_VERSION VERSION_LESS 1. + endforeach() + endif () + +-if (OCTAVE_FOUND) ++if (TARGET nlopt_optimize) + add_test (NAME test_octave COMMAND ${OCTAVE_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/t_octave.m ${PROJECT_SOURCE_DIR}/src/octave ${PROJECT_BINARY_DIR}/src/octave) + endif () + +-if (MATLAB_FOUND) ++if (TARGET nlopt_optimize-mex) + add_test (NAME test_matlab COMMAND ${Matlab_MAIN_PROGRAM} -nodesktop -nosplash -r "addpath('${PROJECT_SOURCE_DIR}/src/octave'); addpath('${PROJECT_BINARY_DIR}/src/octave'); try; run('${CMAKE_CURRENT_SOURCE_DIR}/t_matlab.m'); catch; exit(1); end; quit") + endif () + +-if (GUILE_FOUND AND (SWIG_FOUND OR (EXISTS ${PROJECT_SOURCE_DIR}/src/swig/nlopt-guile.cpp))) ++if (TARGET nlopt_guile) + set (GUILECHECK_ENVIRONMENT "LD_LIBRARY_PATH=${PROJECT_BINARY_DIR}/src/swig" + "GUILE_LOAD_PATH=$" + "GUILE_AUTO_COMPILE=0") +-- +2.43.0 +