#1122987 Replacing Trilinos-Kokkos by Kokkos

#1122987#5
Date:
2025-03-28 10:36:31 UTC
From:
To:
Hi,

I have NMUed src:kokkos with the intention to get it into trixie. As
part of it I fixed the multi arch problem by moving the cmake files from
/usr/lib/cmake to usr/lib/${DEB_HOST_MULTIARCH}/. Now libkokkos-dev has
a undeclared file conflict as both provide KokkosConfig.cmake. Even
more, libtrilinos-kokkos-dev seems to vendor kokkos 3.0 whereas
libkokkos-dev contains kokkos 4.0. This bug is to block the file
conflict from migrating to testing and to discuss how to resolve the
duplicated packaging.

As I have no deeper insights on both packages nor their downstreams, I
would be happy to get comments from both maintainers.

Cheers Jochen

#1122987#18
Date:
2025-03-31 13:27:05 UTC
From:
To:
Jochen originally assigned it to src:libkokkos-dev and then Graham
reassigned it to src:kokkos, but that makes the conflict detector not
see it either as it only thinks about binary packages.

If reassigning, please go

    Control: reassign -1 libtrilinos-kokkos-dev VER
    Control: affects -1 = libkokkos-dev

I'll leave the technical bits to you.

Thanks

Helmut

#1122987#29
Date:
2025-04-03 17:42:49 UTC
From:
To:
Hi,

Trilinos can be build with an external Kokkos package if the version
matches.
The current required version for Kokkos to be compatible with Trilinos
in Debian would be 4.1.0
(https://salsa.debian.org/science-team/trilinos/-/blob/master/packages/tpetra/CMakeLists.txt?ref_type=heads#L27).
In the latest Trilinos version Kokkos would requires the latest release
4.6.0.

Searching a bit in the Trilinos documentation I found -D
TPL_ENABLE_KOKKOS=ON as a CMake configuration flag to build with an
external Kokkos package.
I am not yet sure how to point Trilinos to the external Kokkos install.
Usually Kokkos_ROOT or Kokkos_DIR should be set in the cmake configuration.
If Kokkos can be found in the default paths maybe cmake is capable to
find the install without specifying the path.

This might solve the issue.

Best regards,
Nils

#1122987#34
Date:
2025-04-03 17:42:49 UTC
From:
To:
Hi,

Trilinos can be build with an external Kokkos package if the version
matches.
The current required version for Kokkos to be compatible with Trilinos
in Debian would be 4.1.0
(https://salsa.debian.org/science-team/trilinos/-/blob/master/packages/tpetra/CMakeLists.txt?ref_type=heads#L27).
In the latest Trilinos version Kokkos would requires the latest release
4.6.0.

Searching a bit in the Trilinos documentation I found -D
TPL_ENABLE_KOKKOS=ON as a CMake configuration flag to build with an
external Kokkos package.
I am not yet sure how to point Trilinos to the external Kokkos install.
Usually Kokkos_ROOT or Kokkos_DIR should be set in the cmake configuration.
If Kokkos can be found in the default paths maybe cmake is capable to
find the install without specifying the path.

This might solve the issue.

Best regards,
Nils

#1122987#39
Date:
2025-11-04 07:32:26 UTC
From:
To:
Hi,

with the attached patches Jochen and I could successfully separated the
Kokkos (v4.5.1) package from the Trilinos (v16.1.0) package.

Kokkos is still closely related to Trilinos but by now developed and
maintained externally.
For downstream users of Kokkos this is more obvious if a separate kokkos
package is available.
To give an example: PETSc which is independent of Trilinos can take a
dependency on Kokkos
(https://petsc.org/release/install/install/#installing-petsc-to-use-gpus-and-accelerators).

We have successfully rebuild Kokkos and Trilinos packages with the
patches below.
Additionally, we have tested the update process of deal.ii package which
was build against a Trilinos version containing Kokkos to a Trilinos
version which has been build with an external Kokkos package in Debian
testing.

Some comments on future updates of Trilinos and Kokkos.
To my knowledge Trilinos is always tested and compiled with a specific
version of Kokkos.
Therefore, a future update of one of these packages (Trilinos,Kokkos)
will require an update of the other package as well if Trilinos is not
configured with Tpetra_IGNORE_KOKKOS_COMPATIBILITY.

Below are two diffs which can be applied to the Kokkos and the Trilinos
package.
Then Trilinos would depend on the Kokkos Debian package.
The libtrilinos-kokkos-16.1 and libtrilinos-kokkos-dev packages are
replaced by transitional packages which can be removed at a later stage.

Are there any change requests, recommendations, or objections to these
changes?
Before we apply any of these changes we wait until #1120018 is closed.

Best,
Nils

Kokkos diff:

diff --git a/debian/changelog b/debian/changelog
index 1e3efa5..7ed57d5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+kokkos (4.5.01-1.3) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Package transition from Trilinos-Kokkos to Kokkos (Closes:
#1101487)
+  * Enable serial backend of Kokkos required to build Trilinos
+  * Create transitional package for libtrilinos-kokkos-dev,
+    libtrilinos-kokkos-16.1
+
+ -- Nils Schild <nils.schild@posteo.de>  Sat, 27 Sep 2025 15:52:08
+0200
+
  kokkos (4.5.01-1.2) unstable; urgency=medium

    * Non-maintainer upload.
diff --git a/debian/control b/debian/control
index cd74df4..9f752a7 100644
--- a/debian/control
+++ b/debian/control
@@ -29,9 +31,9 @@ Package: libkokkos4.5
  Architecture: any
  Multi-Arch: same
  Section: libs
-Depends:
- ${shlibs:Depends},
- ${misc:Depends}
+Breaks: libtrilinos-kokkos-16.1 (<< 16.1.0-2.1)
+Replaces: libtrilinos-kokkos-16.1 (<< 16.1.0-2.1)
+Depends: ${shlibs:Depends}, ${misc:Depends}
  Description: C++ Performance Portability Programming
   This implements a programming model in C++ for writing performance
   portable applications targeting all major HPC platforms. For that
purpose it
@@ -45,6 +47,8 @@ Package: libkokkos-dev
  Architecture: any
  Multi-Arch: same
  Section: libdevel
+Breaks: libtrilinos-kokkos-dev (<< 16.1.0-2.1)
+Replaces: libtrilinos-kokkos-dev (<< 16.1.0-2.1)
  Depends:
   ${misc:Depends},
   libkokkos4.5 (= ${binary:Version}),
@@ -58,3 +62,4 @@ Description: C++ Performance Portability Programming
   backends in development.
   .
   This is a development package of kokkos.
+
diff --git a/debian/rules b/debian/rules
index cfa53bf..81ac75a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -15,6 +15,7 @@ endif
  override_dh_auto_configure:
  	dh_auto_configure -- \
  	-DBUILD_SHARED_LIBS=ON \
+        -DKokkos_ENABLE_SERIAL=ON \
  	-DKokkos_ENABLE_OPENMP=ON \
  	$(RUN_TESTS)

Trilinos diff:

diff --git a/debian/changelog b/debian/changelog
index 1e64a892b3..56b0a5272e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+trilinos (16.1.0-2.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Transition package Trilinos-Kokkos to Kokkos
+  * Enable OpenMP for Kokkos package compatibility
+
+ -- Nils Schild <nils.schild@posteo.de>  Sat, 27 Sep 2025 19:07:14
+0200
+
  trilinos (16.1.0-2) unstable; urgency=medium

    * Revert 'switch to mold linker', it seems to have
diff --git a/debian/control b/debian/control
index d0bb41076a..488cf1f360 100644
--- a/debian/control
+++ b/debian/control
@@ -20,7 +20,8 @@ Build-Depends: debhelper-compat (= 13),
   libmumps-dev (>= 4.10),
   libptscotch-dev (>= 6.0.3),
   openmpi-bin,
- zlib1g-dev
+ zlib1g-dev,
+ libkokkos-dev
  Build-Depends-Indep: bc,
   doxygen,
   ghostscript,
@@ -54,7 +55,7 @@ Package: trilinos-dev
  Architecture: any
  Multi-Arch: same
  Section: libs
-Depends: ${misc:Depends}
+Depends: libkokkos-dev, ${misc:Depends}
  Suggests: trilinos-doc
  Description: object-oriented framework for large-scale problems -
development files
   The Trilinos Project is an effort to develop algorithms and enabling
@@ -65,6 +66,22 @@ Description: object-oriented framework for
large-scale problems - development fi
   .
   This package contains the development header and some makefile
templates.

+Package: libtrilinos-kokkos-16.1
+Depends: libkokkos4.5, ${misc:Depends}
+Architecture: all
+Priority: optional
+Section: oldlibs
+Description: transitional package
+ This is a transitional package. It can safely be removed.
+
+Package: libtrilinos-kokkos-dev
+Depends: libkokkos-dev, ${misc:Depends}
+Architecture: all
+Priority: optional
+Section: oldlibs
+Description: transitional package
+ This is a transitional package. It can safely be removed.
+
  Package: libtrilinos-amesos-16.1
  Architecture: any
  Multi-Arch: same
@@ -436,37 +453,6 @@ Description: partitioning, load balancing, coloring
of sparse matrices - develop
   .
   This package provides headers.

#1122987#44
Date:
2025-11-04 09:13:26 UTC
From:
To:
Hi

Adding Matthias Maier, maintainer of trilinos and deal.ii, as recipient.

What problem are you trying to solve?

Why not use kokkos that is already packaged in trilinos?

Regards
Graham

#1122987#49
Date:
2025-11-04 13:56:24 UTC
From:
To:
Thank you for working on this!

Should the same approach be taken for Kokkos Kernels?

Best,
 Christian

#1122987#54
Date:
2025-11-04 22:58:37 UTC
From:
To:
Hi,

the diff below can be applied to the Kokkos repository to change the
install path of the header files.

I tested that the patch can compile valid kokkos code using the example
'example/build_cmake_installed' from the Kokkos upstream repo.
Also I tested that the update works from 4.7.1-1 to 4.7.1-2.

If there are no objections I would ask the maintainer to apply the
changes.

Best,
Nils

diff --git a/debian/changelog b/debian/changelog
index ab338fa..3ae117e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+kokkos (4.7.01-2) unstable; urgency=medium
+
+  * Install Kokkos headers into /usr/include/kokkos
+
+ -- Nils Schild <nils.schild@posteo.de>  Tue, 04 Nov 2025 20:49:38
+0100
+
  kokkos (4.7.01-1) unstable; urgency=medium

    * New upstream version.
diff --git a/debian/libkokkos-dev.install b/debian/libkokkos-dev.install
index 30ccf82..2adbb5a 100644
--- a/debian/libkokkos-dev.install
+++ b/debian/libkokkos-dev.install
@@ -1,3 +1,3 @@
-usr/include/* usr/include
+usr/include/kokkos/* usr/include/kokkos
  usr/lib/*/*.so usr/lib/${DEB_HOST_MULTIARCH}/
  usr/lib/*/cmake usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/rules b/debian/rules
index cfa53bf..446955a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -14,6 +14,7 @@ endif

  override_dh_auto_configure:
  	dh_auto_configure -- \
+        -DCMAKE_INSTALL_INCLUDEDIR="/usr/include/kokkos" \
  	-DBUILD_SHARED_LIBS=ON \
  	-DKokkos_ENABLE_OPENMP=ON \
  	$(RUN_TESTS)

#1122987#59
Date:
2025-11-05 19:39:49 UTC
From:
To:
Hi,

my last response to the bug was meant for a different bug, sorry for
that.

Am 04.11.2025 10:13 schrieb Graham Inggs:

The main idea of the provided diffs is to resolve this bug so that the
Kokkos package
can transition to testing.

The motivation for separating the Kokkos package from the Trilinos
package would
be that Kokkos is developed independently of Trilinos. That would be
more obvious
if a libkokkos-* package is available. That could also be achieved with
a virtual
package or using e.g. 'Provides: libkokkos' in the
'libtrilinos-kokkos-package'.
CMake projects which rely on 'find_package(Kokkos)' also works with
'libtrilinos-kokkos-dev'.
I have just tested that.

In favor of a separate Kokkos package would be that Kokkos is released
more frequently
than Trilinos. Making the latest version of Kokkos available in unstable
and testing is easier
if Kokkos is available as a separate package. Trilinos could be build
using
'Tpetra_IGNORE_KOKKOS_COMPATIBILITY=ON'.
If the CI/buildd does not fail the Kokkos package could be accepted.

Am 4.11.2025 06:56 schrieb Christian Alexander Glusa

To keep treat Kokkos and Kokkos Kernels consistently that seems
reasonable to me.
Probably one of the maintainers can say more about this.

Best
Nils

#1122987#66
Date:
2025-12-13 20:08:31 UTC
From:
To:
Hello

Thanks Nils for the patches, I think I've applied all of it - except the transition/conflicts parts.

Do you think this bug can be closed? Can you test with the sid 4.07 version?
I've also packaged/put 5.0 to experimental (hangs in NEW for now).

Christian: probably the same should be done for kokkos-kernels.
I've had a short look at that, as well as kokkos-tools. Who/what we do on it?

Best,
Alex

#1122987#71
Date:
2025-12-15 15:18:33 UTC
From:
To:
control: clone -1 -2
control: reassign -2 src:trilinos
control: found -2 16.1.0-4
control: retitle -2 Replacing Trilinos-Kokkos by Kokkos

Hi Alex,

thank you for applying the necessary changes to debian/rules.

I can test the build for the external Kokkos build using 5.0.00-1.
I do not think that the bug can be closed, since it still would require
changes in the Trilinos package.
Therefore, I cloned the bug.

Kokkos-Tools has quite some useful tooling to work with Kokkos.
But I think first this bug should be fixed before considering other
packages from the Kokkos ecosystem.

Best,
Nils

#1122987#88
Date:
2026-03-08 21:38:39 UTC
From:
To:
Hi,

there was a meeting of the Kokkos working group taking care about
building and packaging in December.
The Kokkos Team would prefer a package provided independently of
Trilinos.
https://github.com/kokkos/development/blob/cb4f1a1b45cdfaf5ae20d792cd42750ef50aea76/meeting_notes/wg-build-packaging/2025_12_16_notes.md?plain=1#L50

The main reasons are projects depending on Kokkos without a Trilinos
dependency and the development outside of the Trilinos ecosystem.

Are there concerns or objections regarding a separation of the Kokkos
package from the Trilinos package by the Debian Trilinos maintainers and
uploaders?

Best
Nils

#1122987#93
Date:
2026-03-11 14:25:51 UTC
From:
To:
Hi all,

Yes, debundling Kokkos from Trilinos is the sensible way forward.

I only have some minor concerns that we will need to ensure that
Trilinos still builds against external Kokkos before uploading a new
Kokkos version.

Best,
Matthias