GNU bug report logs - #71837
[PATCH] gnu: clasp: Prevent ID clashes in dependent packages.

Previous Next

Package: guix-patches;

Reported by: Liliana Marie Prikler <liliana.prikler <at> gmail.com>

Date: Sat, 29 Jun 2024 07:04:01 UTC

Severity: normal

Tags: patch

Done: Liliana Marie Prikler <liliana.prikler <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#71837: closed ([PATCH] gnu: clasp: Prevent ID clashes in
 dependent packages.)
Date: Sun, 07 Jul 2024 06:19:01 +0000
[Message part 1 (text/plain, inline)]
Your message dated Sun, 07 Jul 2024 08:17:44 +0200
with message-id <40ee51fb0f31866f84b23551452c9b4bbbfde9de.camel <at> gmail.com>
and subject line Re: [PATCH v2 3/3] gnu: komikku: Update to 1.46.0.
has caused the debbugs.gnu.org bug report #71837,
regarding [PATCH] gnu: clasp: Prevent ID clashes in dependent packages.
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
71837: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=71837
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: guix-patches <at> gnu.org
Subject: [PATCH] gnu: clasp: Prevent ID clashes in dependent packages.
Date: Sat, 29 Jun 2024 08:53:54 +0200
Clasp uses an interesting CRTP pattern to insert statically (i.e. compile-time)
generated numeric IDs into global fields.  However, these templates are
instantiated once per shared library---thus, whenever a library is linked, new
IDs are generated, and the original intent (safely type-casting objects across
libraries) is lost.  To help the linker out, we make sure that these IDs are
only instantiated in clasp and not when building other libraries.

* gnu/packages/patches/clasp-hide-event-ids.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it here.
* gnu/packages/clasp.scm (source)[patches]: Add it here.
(clingo)[#:phases]: Drop ‘skip-failing-tests’.
(python-clorm)[#:phases]<fix-breaking-tests>: Adjust accordingly.
(python-clintest): Drop arguments.
---
 gnu/local.mk                                  |  1 +
 .../patches/clasp-hide-event-ids.patch        | 41 +++++++++++++++++++
 gnu/packages/potassco.scm                     | 31 ++------------
 3 files changed, 45 insertions(+), 28 deletions(-)
 create mode 100644 gnu/packages/patches/clasp-hide-event-ids.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index d0cc62dd57..de13a0794e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1063,6 +1063,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/clang-runtime-3.7-fix-build-with-python3.patch	\
   %D%/packages/patches/clang-runtime-3.9-libsanitizer-mode-field.patch	\
   %D%/packages/patches/clang-runtime-3.8-libsanitizer-mode-field.patch	\
+  %D%/packages/patches/clasp-hide-event-ids.patch		\
   %D%/packages/patches/classpath-aarch64-support.patch		\
   %D%/packages/patches/classpath-miscompilation.patch		\
   %D%/packages/patches/cling-use-shared-library.patch		\
diff --git a/gnu/packages/patches/clasp-hide-event-ids.patch b/gnu/packages/patches/clasp-hide-event-ids.patch
new file mode 100644
index 0000000000..9587f9ff3f
--- /dev/null
+++ b/gnu/packages/patches/clasp-hide-event-ids.patch
@@ -0,0 +1,41 @@
+From a4c4e4f3c410834c3e56f644841f5bcbb084225c Mon Sep 17 00:00:00 2001
+From: Liliana Marie Prikler <liliana.prikler <at> ist.tugraz.at>
+Date: Fri, 28 Jun 2024 11:15:16 +0200
+Subject: [PATCH] clasp: Hide Event_t<T>::id_s.
+
+This patch helps build clingo with non-local clasp while keeping the
+event system working as intended.
+---
+ clasp/util/misc_types.h | 2 ++
+ src/CMakeLists.txt      | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/clasp/util/misc_types.h b/clasp/util/misc_types.h
+index 3677873..09c2075 100644
+--- a/clasp/util/misc_types.h
++++ b/clasp/util/misc_types.h
+@@ -432,7 +432,9 @@ struct Event_t : Event {
+ 	Event_t(Subsystem sys, Verbosity verb) : Event(sys, id_s, verb) {}
+ 	static const uint32 id_s;
+ };
++#if _BUILDING_CLASP_
+ template <class T> const uint32 Event_t<T>::id_s = Event::nextId();
++#endif
+ 
+ template <class ToType, class EvType> const ToType* event_cast(const EvType& ev) { return ev.id == ToType::id_s ? static_cast<const ToType*>(&ev) : 0; }
+ 
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 8439d12..4f55990 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -123,6 +123,7 @@ source_group("${ide_header}\\mt" FILES ${header_mt})
+ endif()
+ 
+ add_library(libclasp ${header} ${header_util} ${header_cli} ${header_mt} ${src})
++target_compile_definitions(libclasp PRIVATE _BUILDING_CLASP_)
+ if (CLASP_BUILD_WITH_THREADS)
+ 	target_link_libraries(libclasp PUBLIC Threads::Threads)
+ 	target_compile_options(libclasp PRIVATE
+-- 
+2.45.1
+
diff --git a/gnu/packages/potassco.scm b/gnu/packages/potassco.scm
index b7cfca2eec..5432fc10c3 100644
--- a/gnu/packages/potassco.scm
+++ b/gnu/packages/potassco.scm
@@ -112,6 +112,7 @@ (define-public clasp
                     (url "https://github.com/potassco/clasp")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
+              (patches (search-patches "clasp-hide-event-ids.patch"))
               (sha256
                (base32
                 "0qap7rar8a5mkqz28n2hnvr4cfv5x0rh4zs3wdp919dw4d034chr"))))
@@ -200,22 +201,7 @@ (define-public clingo
               (substitute* "cmake/ClingoConfig.cmake.in"
                 (("find_package\\(Clasp") "find_package(clasp"))
               (rename-file "cmake/ClingoConfig.cmake.in"
-                           "cmake/clingo-config.cmake.in")))
-          (add-after 'unpack 'skip-failing-tests
-            (lambda _
-              (with-directory-excursion "libclingo/tests"
-                (substitute* "CMakeLists.txt"
-                  (("COMMAND test_clingo" all)
-                   (string-append all
-                                  " -f "
-                                  "\"${CMAKE_CURRENT_SOURCE_DIR}/good.txt\"")))
-                (call-with-output-file "good.txt"
-                  (lambda (port)
-                    (for-each (lambda (test) (format port "~s~%" test))
-                              '("parse-ast-v2" "add-ast-v2" "build-ast-v2"
-                                "unpool-ast-v2" "parse_term"
-                                "propagator" "propgator-sequence-mining"
-                                "symbol" "visitor"))))))))))
+                           "cmake/clingo-config.cmake.in"))))))
     (inputs (list catch2-3 clasp libpotassco))
     (native-inputs (list bison re2c
                          mpark-variant
@@ -465,10 +451,7 @@ (define-public python-clorm
                  (lambda _
                    ;; noclingo tests rely on this being set
                    (setenv "CLORM_NOCLINGO" "1")
-                   (delete-file "tests/test_mypy_query.py")
-                   (substitute* "tests/test_clingo.py"
-                     (("self\\.assertTrue\\(os_called\\)" all)
-                      (string-append "# " all))))))))
+                   (delete-file "tests/test_mypy_query.py"))))))
     (propagated-inputs (list python-clingo))
     (native-inputs (list python-typing-extensions))
     (home-page "https://potassco.org")
@@ -627,14 +610,6 @@ (define-public python-clintest
                (base32
                 "0xzbby9ram55h87ykm652kgm45b8rlhbjc8gjkz308h1jnjllmmy"))))
     (build-system pyproject-build-system)
-    (arguments
-     (list #:phases
-           #~(modify-phases %standard-phases
-               (add-after 'unpack 'delete-failing-tests
-                 (lambda _
-                   ;; XXX: Clingo statistics are broken in dependencies already.
-                   (for-each delete-file '("tests/test_solver.py"
-                                           "tests/test_test.py")))))))
     (inputs (list python-clingo))
     (native-inputs (list python-pytest))
     (home-page "https://potassco.org/clintest/")

base-commit: 01ea5ebc71a5f104af2ed220cb29f88523298ca7
-- 
2.45.1



[Message part 3 (message/rfc822, inline)]
From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 71837-done <at> debbugs.gnu.org
Subject: Re: [PATCH v2 3/3] gnu: komikku: Update to 1.46.0.
Date: Sun, 07 Jul 2024 08:17:44 +0200
Am Samstag, dem 29.06.2024 um 10:51 +0200 schrieb Liliana Marie
Prikler:
> * gnu/packages/gnome.scm (komikku): Update to 1.46.0.
> [source]: Use “https://codeberg.xn--org-9o0a for the URL.
> [home-page]: Use “https://apps.gnome.org/Komikku”.
> [#:phases]<python-and-gi-wrap>: Also wrap GDK_PIXBUF_MODULE_FILE.
> [inputs]: Add webp-pixbuf-loader.
> ---
Pushed


This bug report was last modified 1 year and 10 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.