diff --git a/spread.yaml b/spread.yaml
index b7ac155b78..9f00b49587 100644
--- a/spread.yaml
+++ b/spread.yaml
@@ -263,6 +263,11 @@ suites:
systems:
- ubuntu-24.04*
+ tests/spread/core24-suites/plugins/:
+ summary: core24 plugin tests
+ systems:
+ - ubuntu-22.04*
+
# General, core suite
tests/spread/general/:
summary: tests of snapcraft core functionality
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-jazzy-hello/CMakeLists.txt b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-jazzy-hello/CMakeLists.txt
new file mode 100644
index 0000000000..c014f3f36d
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-jazzy-hello/CMakeLists.txt
@@ -0,0 +1,34 @@
+cmake_minimum_required(VERSION 3.5)
+project(colcon_ros2_rlcpp_hello)
+
+# Default to C++14
+if(NOT CMAKE_CXX_STANDARD)
+ set(CMAKE_CXX_STANDARD 14)
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+find_package(ament_cmake REQUIRED)
+find_package(rclcpp REQUIRED)
+find_package(rclcpp_components REQUIRED)
+find_package(std_msgs REQUIRED)
+
+# This package installs libraries without exporting them.
+# Export the library path to ensure that the installed libraries are available.
+if(NOT WIN32)
+ ament_environment_hooks(
+ "${ament_cmake_package_templates_ENVIRONMENT_HOOK_LIBRARY_PATH}"
+ )
+endif()
+
+add_executable(colcon_ros2_rlcpp_hello src/hello.cpp)
+target_link_libraries(colcon_ros2_rlcpp_hello)
+ament_target_dependencies(colcon_ros2_rlcpp_hello rclcpp class_loader)
+
+install(TARGETS
+ colcon_ros2_rlcpp_hello
+ DESTINATION lib/${PROJECT_NAME})
+
+ament_package()
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-jazzy-hello/package.xml b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-jazzy-hello/package.xml
new file mode 100644
index 0000000000..0abc194155
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-jazzy-hello/package.xml
@@ -0,0 +1,24 @@
+
+
+
+ colcon_ros2_rlcpp_hello
+ 0.0.1
+ snapcraft test for rlcpp
+ me
+ Apache License 2.0
+
+ ament_cmake
+
+ rclcpp
+ rclcpp_components
+ std_msgs
+ fake_package_that_does_not_exists
+
+ rclcpp
+ rclcpp_components
+ std_msgs
+
+
+ ament_cmake
+
+
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-jazzy-hello/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-jazzy-hello/snap/snapcraft.yaml
new file mode 100644
index 0000000000..3a7c849ce2
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-jazzy-hello/snap/snapcraft.yaml
@@ -0,0 +1,22 @@
+name: colcon-ros2-jazzy-hello
+version: "1.0"
+summary: hello world
+description: |
+ A ROS2 rlcpp-based workspace.
+
+grade: stable
+confinement: strict
+base: core24
+
+apps:
+ colcon-ros2-jazzy-hello:
+ command: opt/ros/jazzy/bin/ros2 run colcon_ros2_rlcpp_hello colcon_ros2_rlcpp_hello
+ plugs: [network, network-bind]
+ extensions: [ros2-jazzy]
+
+parts:
+ hello:
+ plugin: colcon
+ source: .
+ build-packages: [g++, make, vim]
+ stage-packages: [ros-jazzy-ros2run]
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-jazzy-hello/src/hello.cpp b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-jazzy-hello/src/hello.cpp
new file mode 100644
index 0000000000..770203acec
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-jazzy-hello/src/hello.cpp
@@ -0,0 +1,28 @@
+// Copyright 2016 Open Source Robotics Foundation, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include
+#include "rclcpp/rclcpp.hpp"
+
+int main(int argc, char * argv[])
+{
+ rclcpp::init(argc, argv);
+ rclcpp::executors::SingleThreadedExecutor exec;
+ rclcpp::NodeOptions options;
+
+ printf("hello world");
+
+ rclcpp::shutdown();
+ return 0;
+}
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-wrapper/CMakeLists.txt b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-wrapper/CMakeLists.txt
new file mode 100644
index 0000000000..c014f3f36d
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-wrapper/CMakeLists.txt
@@ -0,0 +1,34 @@
+cmake_minimum_required(VERSION 3.5)
+project(colcon_ros2_rlcpp_hello)
+
+# Default to C++14
+if(NOT CMAKE_CXX_STANDARD)
+ set(CMAKE_CXX_STANDARD 14)
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+find_package(ament_cmake REQUIRED)
+find_package(rclcpp REQUIRED)
+find_package(rclcpp_components REQUIRED)
+find_package(std_msgs REQUIRED)
+
+# This package installs libraries without exporting them.
+# Export the library path to ensure that the installed libraries are available.
+if(NOT WIN32)
+ ament_environment_hooks(
+ "${ament_cmake_package_templates_ENVIRONMENT_HOOK_LIBRARY_PATH}"
+ )
+endif()
+
+add_executable(colcon_ros2_rlcpp_hello src/hello.cpp)
+target_link_libraries(colcon_ros2_rlcpp_hello)
+ament_target_dependencies(colcon_ros2_rlcpp_hello rclcpp class_loader)
+
+install(TARGETS
+ colcon_ros2_rlcpp_hello
+ DESTINATION lib/${PROJECT_NAME})
+
+ament_package()
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-wrapper/package.xml b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-wrapper/package.xml
new file mode 100644
index 0000000000..0abc194155
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-wrapper/package.xml
@@ -0,0 +1,24 @@
+
+
+
+ colcon_ros2_rlcpp_hello
+ 0.0.1
+ snapcraft test for rlcpp
+ me
+ Apache License 2.0
+
+ ament_cmake
+
+ rclcpp
+ rclcpp_components
+ std_msgs
+ fake_package_that_does_not_exists
+
+ rclcpp
+ rclcpp_components
+ std_msgs
+
+
+ ament_cmake
+
+
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-wrapper/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-wrapper/snap/snapcraft.yaml
new file mode 100644
index 0000000000..4d9602fbc5
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-wrapper/snap/snapcraft.yaml
@@ -0,0 +1,22 @@
+name: colcon-ros2-wrapper
+version: "1.0"
+summary: hello world
+description: |
+ A ROS2 rlcpp-based workspace.
+
+grade: stable
+confinement: strict
+base: core24
+
+apps:
+ colcon-ros2-wrapper:
+ command: ros2 run colcon_ros2_rlcpp_hello colcon_ros2_rlcpp_hello
+ plugs: [network, network-bind]
+ extensions: [ros2-jazzy]
+
+parts:
+ hello:
+ plugin: colcon
+ source: .
+ build-packages: [g++, make, vim]
+ stage-packages: [ros-jazzy-ros2run]
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-wrapper/src/hello.cpp b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-wrapper/src/hello.cpp
new file mode 100644
index 0000000000..770203acec
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/colcon-ros2-wrapper/src/hello.cpp
@@ -0,0 +1,28 @@
+// Copyright 2016 Open Source Robotics Foundation, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include
+#include "rclcpp/rclcpp.hpp"
+
+int main(int argc, char * argv[])
+{
+ rclcpp::init(argc, argv);
+ rclcpp::executors::SingleThreadedExecutor exec;
+ rclcpp::NodeOptions options;
+
+ printf("hello world");
+
+ rclcpp::shutdown();
+ return 0;
+}
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/conda-hello/hello b/tests/spread/core24-suites/plugins/build-and-run-hello/conda-hello/hello
new file mode 100755
index 0000000000..15525d46ed
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/conda-hello/hello
@@ -0,0 +1,4 @@
+#!/usr/bin/env ipython3
+
+print('hello world')
+
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/conda-hello/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/build-and-run-hello/conda-hello/snap/snapcraft.yaml
new file mode 100644
index 0000000000..51c798e9c5
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/conda-hello/snap/snapcraft.yaml
@@ -0,0 +1,25 @@
+name: conda-hello
+version: '1.0'
+summary: Hello world using ipython from conda packages
+description: |
+ Leverage conda-packages to install ipython and use it to say "hello world".
+
+grade: devel
+base: core24
+confinement: strict
+
+apps:
+ conda-hello:
+ command:
+ hello
+
+parts:
+ ipython:
+ plugin: conda
+ conda-miniconda-version: "py39_4.12.0"
+ conda-packages:
+ - ipython
+ conda-python-version: "3.9"
+ hello:
+ plugin: dump
+ source: .
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/README.md b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/README.md
new file mode 100644
index 0000000000..2f699f48ac
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/README.md
@@ -0,0 +1,16 @@
+# flutter_hello
+
+A new Flutter project.
+
+## Getting Started
+
+This project is a starting point for a Flutter application.
+
+A few resources to get you started if this is your first Flutter project:
+
+- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
+- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
+
+For help getting started with Flutter development, view the
+[online documentation](https://docs.flutter.dev/), which offers tutorials,
+samples, guidance on mobile development, and a full API reference.
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/analysis_options.yaml b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/analysis_options.yaml
new file mode 100644
index 0000000000..61b6c4de17
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/analysis_options.yaml
@@ -0,0 +1,29 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
+include: package:flutter_lints/flutter.yaml
+
+linter:
+ # The lint rules applied to this project can be customized in the
+ # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+ # included above or to enable additional rules. A list of all available lints
+ # and their documentation is published at
+ # https://dart-lang.github.io/linter/lints/index.html.
+ #
+ # Instead of disabling a lint rule for the entire project in the
+ # section below, it can also be suppressed for a single line of code
+ # or a specific dart file by using the `// ignore: name_of_lint` and
+ # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+ # producing the lint.
+ rules:
+ # avoid_print: false # Uncomment to disable the `avoid_print` rule
+ # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/flutter_hello.iml b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/flutter_hello.iml
new file mode 100644
index 0000000000..0a2da097ac
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/flutter_hello.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/lib/main.dart b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/lib/main.dart
new file mode 100644
index 0000000000..410f446451
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/lib/main.dart
@@ -0,0 +1,115 @@
+import 'package:flutter/material.dart';
+
+void main() {
+ runApp(const MyApp());
+}
+
+class MyApp extends StatelessWidget {
+ const MyApp({super.key});
+
+ // This widget is the root of your application.
+ @override
+ Widget build(BuildContext context) {
+ return MaterialApp(
+ title: 'Flutter Demo',
+ theme: ThemeData(
+ // This is the theme of your application.
+ //
+ // Try running your application with "flutter run". You'll see the
+ // application has a blue toolbar. Then, without quitting the app, try
+ // changing the primarySwatch below to Colors.green and then invoke
+ // "hot reload" (press "r" in the console where you ran "flutter run",
+ // or simply save your changes to "hot reload" in a Flutter IDE).
+ // Notice that the counter didn't reset back to zero; the application
+ // is not restarted.
+ primarySwatch: Colors.blue,
+ ),
+ home: const MyHomePage(title: 'hello world'),
+ );
+ }
+}
+
+class MyHomePage extends StatefulWidget {
+ const MyHomePage({super.key, required this.title});
+
+ // This widget is the home page of your application. It is stateful, meaning
+ // that it has a State object (defined below) that contains fields that affect
+ // how it looks.
+
+ // This class is the configuration for the state. It holds the values (in this
+ // case the title) provided by the parent (in this case the App widget) and
+ // used by the build method of the State. Fields in a Widget subclass are
+ // always marked "final".
+
+ final String title;
+
+ @override
+ State createState() => _MyHomePageState();
+}
+
+class _MyHomePageState extends State {
+ int _counter = 0;
+
+ void _incrementCounter() {
+ setState(() {
+ // This call to setState tells the Flutter framework that something has
+ // changed in this State, which causes it to rerun the build method below
+ // so that the display can reflect the updated values. If we changed
+ // _counter without calling setState(), then the build method would not be
+ // called again, and so nothing would appear to happen.
+ _counter++;
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ // This method is rerun every time setState is called, for instance as done
+ // by the _incrementCounter method above.
+ //
+ // The Flutter framework has been optimized to make rerunning build methods
+ // fast, so that you can just rebuild anything that needs updating rather
+ // than having to individually change instances of widgets.
+ return Scaffold(
+ appBar: AppBar(
+ // Here we take the value from the MyHomePage object that was created by
+ // the App.build method, and use it to set our appbar title.
+ title: Text(widget.title),
+ ),
+ body: Center(
+ // Center is a layout widget. It takes a single child and positions it
+ // in the middle of the parent.
+ child: Column(
+ // Column is also a layout widget. It takes a list of children and
+ // arranges them vertically. By default, it sizes itself to fit its
+ // children horizontally, and tries to be as tall as its parent.
+ //
+ // Invoke "debug painting" (press "p" in the console, choose the
+ // "Toggle Debug Paint" action from the Flutter Inspector in Android
+ // Studio, or the "Toggle Debug Paint" command in Visual Studio Code)
+ // to see the wireframe for each widget.
+ //
+ // Column has various properties to control how it sizes itself and
+ // how it positions its children. Here we use mainAxisAlignment to
+ // center the children vertically; the main axis here is the vertical
+ // axis because Columns are vertical (the cross axis would be
+ // horizontal).
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ const Text(
+ 'You have pushed the button this many times:',
+ ),
+ Text(
+ '$_counter',
+ style: Theme.of(context).textTheme.headlineSmall,
+ ),
+ ],
+ ),
+ ),
+ floatingActionButton: FloatingActionButton(
+ onPressed: _incrementCounter,
+ tooltip: 'Increment',
+ child: const Icon(Icons.add),
+ ), // This trailing comma makes auto-formatting nicer for build methods.
+ );
+ }
+}
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/.gitignore b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/.gitignore
new file mode 100644
index 0000000000..d3896c9844
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/.gitignore
@@ -0,0 +1 @@
+flutter/ephemeral
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/CMakeLists.txt b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/CMakeLists.txt
new file mode 100644
index 0000000000..12f2c270d1
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/CMakeLists.txt
@@ -0,0 +1,138 @@
+# Project-level configuration.
+cmake_minimum_required(VERSION 3.10)
+project(runner LANGUAGES CXX)
+
+# The name of the executable created for the application. Change this to change
+# the on-disk name of your application.
+set(BINARY_NAME "flutter_hello")
+# The unique GTK application identifier for this application. See:
+# https://wiki.gnome.org/HowDoI/ChooseApplicationID
+set(APPLICATION_ID "com.example.flutter_hello")
+
+# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
+# versions of CMake.
+cmake_policy(SET CMP0063 NEW)
+
+# Load bundled libraries from the lib/ directory relative to the binary.
+set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")
+
+# Root filesystem for cross-building.
+if(FLUTTER_TARGET_PLATFORM_SYSROOT)
+ set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT})
+ set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
+ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+ set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
+ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+endif()
+
+# Define build configuration options.
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+ set(CMAKE_BUILD_TYPE "Debug" CACHE
+ STRING "Flutter build mode" FORCE)
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
+ "Debug" "Profile" "Release")
+endif()
+
+# Compilation settings that should be applied to most targets.
+#
+# Be cautious about adding new options here, as plugins use this function by
+# default. In most cases, you should add new options to specific targets instead
+# of modifying this function.
+function(APPLY_STANDARD_SETTINGS TARGET)
+ target_compile_features(${TARGET} PUBLIC cxx_std_14)
+ target_compile_options(${TARGET} PRIVATE -Wall -Werror)
+ target_compile_options(${TARGET} PRIVATE "$<$>:-O3>")
+ target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>")
+endfunction()
+
+# Flutter library and tool build rules.
+set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
+add_subdirectory(${FLUTTER_MANAGED_DIR})
+
+# System-level dependencies.
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
+
+add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
+
+# Define the application target. To change its name, change BINARY_NAME above,
+# not the value here, or `flutter run` will no longer work.
+#
+# Any new source files that you add to the application should be added here.
+add_executable(${BINARY_NAME}
+ "main.cc"
+ "my_application.cc"
+ "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
+)
+
+# Apply the standard set of build settings. This can be removed for applications
+# that need different build settings.
+apply_standard_settings(${BINARY_NAME})
+
+# Add dependency libraries. Add any application-specific dependencies here.
+target_link_libraries(${BINARY_NAME} PRIVATE flutter)
+target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
+
+# Run the Flutter tool portions of the build. This must not be removed.
+add_dependencies(${BINARY_NAME} flutter_assemble)
+
+# Only the install-generated bundle's copy of the executable will launch
+# correctly, since the resources must in the right relative locations. To avoid
+# people trying to run the unbundled copy, put it in a subdirectory instead of
+# the default top-level location.
+set_target_properties(${BINARY_NAME}
+ PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
+)
+
+# Generated plugin build rules, which manage building the plugins and adding
+# them to the application.
+include(flutter/generated_plugins.cmake)
+
+
+# === Installation ===
+# By default, "installing" just makes a relocatable bundle in the build
+# directory.
+set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle")
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
+endif()
+
+# Start with a clean build bundle directory every time.
+install(CODE "
+ file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\")
+ " COMPONENT Runtime)
+
+set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
+set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib")
+
+install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
+ COMPONENT Runtime)
+
+install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
+ COMPONENT Runtime)
+
+install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+ COMPONENT Runtime)
+
+foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
+ install(FILES "${bundled_library}"
+ DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+ COMPONENT Runtime)
+endforeach(bundled_library)
+
+# Fully re-copy the assets directory on each build to avoid having stale files
+# from a previous install.
+set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
+install(CODE "
+ file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
+ " COMPONENT Runtime)
+install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
+ DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
+
+# Install the AOT library on non-Debug builds only.
+if(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
+ install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
+ COMPONENT Runtime)
+endif()
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/flutter/CMakeLists.txt b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/flutter/CMakeLists.txt
new file mode 100644
index 0000000000..d5bd01648a
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/flutter/CMakeLists.txt
@@ -0,0 +1,88 @@
+# This file controls Flutter-level build steps. It should not be edited.
+cmake_minimum_required(VERSION 3.10)
+
+set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
+
+# Configuration provided via flutter tool.
+include(${EPHEMERAL_DIR}/generated_config.cmake)
+
+# TODO: Move the rest of this into files in ephemeral. See
+# https://github.com/flutter/flutter/issues/57146.
+
+# Serves the same purpose as list(TRANSFORM ... PREPEND ...),
+# which isn't available in 3.10.
+function(list_prepend LIST_NAME PREFIX)
+ set(NEW_LIST "")
+ foreach(element ${${LIST_NAME}})
+ list(APPEND NEW_LIST "${PREFIX}${element}")
+ endforeach(element)
+ set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE)
+endfunction()
+
+# === Flutter Library ===
+# System-level dependencies.
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
+pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
+pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
+
+set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so")
+
+# Published to parent scope for install step.
+set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
+set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
+set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
+set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE)
+
+list(APPEND FLUTTER_LIBRARY_HEADERS
+ "fl_basic_message_channel.h"
+ "fl_binary_codec.h"
+ "fl_binary_messenger.h"
+ "fl_dart_project.h"
+ "fl_engine.h"
+ "fl_json_message_codec.h"
+ "fl_json_method_codec.h"
+ "fl_message_codec.h"
+ "fl_method_call.h"
+ "fl_method_channel.h"
+ "fl_method_codec.h"
+ "fl_method_response.h"
+ "fl_plugin_registrar.h"
+ "fl_plugin_registry.h"
+ "fl_standard_message_codec.h"
+ "fl_standard_method_codec.h"
+ "fl_string_codec.h"
+ "fl_value.h"
+ "fl_view.h"
+ "flutter_linux.h"
+)
+list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/")
+add_library(flutter INTERFACE)
+target_include_directories(flutter INTERFACE
+ "${EPHEMERAL_DIR}"
+)
+target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}")
+target_link_libraries(flutter INTERFACE
+ PkgConfig::GTK
+ PkgConfig::GLIB
+ PkgConfig::GIO
+)
+add_dependencies(flutter flutter_assemble)
+
+# === Flutter tool backend ===
+# _phony_ is a non-existent file to force this command to run every time,
+# since currently there's no way to get a full input/output list from the
+# flutter tool.
+add_custom_command(
+ OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
+ ${CMAKE_CURRENT_BINARY_DIR}/_phony_
+ COMMAND ${CMAKE_COMMAND} -E env
+ ${FLUTTER_TOOL_ENVIRONMENT}
+ "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh"
+ ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE}
+ VERBATIM
+)
+add_custom_target(flutter_assemble DEPENDS
+ "${FLUTTER_LIBRARY}"
+ ${FLUTTER_LIBRARY_HEADERS}
+)
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/flutter/generated_plugin_registrant.cc b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/flutter/generated_plugin_registrant.cc
new file mode 100644
index 0000000000..e71a16d23d
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/flutter/generated_plugin_registrant.cc
@@ -0,0 +1,11 @@
+//
+// Generated file. Do not edit.
+//
+
+// clang-format off
+
+#include "generated_plugin_registrant.h"
+
+
+void fl_register_plugins(FlPluginRegistry* registry) {
+}
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/flutter/generated_plugin_registrant.h b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/flutter/generated_plugin_registrant.h
new file mode 100644
index 0000000000..e0f0a47bc0
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/flutter/generated_plugin_registrant.h
@@ -0,0 +1,15 @@
+//
+// Generated file. Do not edit.
+//
+
+// clang-format off
+
+#ifndef GENERATED_PLUGIN_REGISTRANT_
+#define GENERATED_PLUGIN_REGISTRANT_
+
+#include
+
+// Registers Flutter plugins.
+void fl_register_plugins(FlPluginRegistry* registry);
+
+#endif // GENERATED_PLUGIN_REGISTRANT_
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/flutter/generated_plugins.cmake b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/flutter/generated_plugins.cmake
new file mode 100644
index 0000000000..2e1de87a7e
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/flutter/generated_plugins.cmake
@@ -0,0 +1,23 @@
+#
+# Generated file, do not edit.
+#
+
+list(APPEND FLUTTER_PLUGIN_LIST
+)
+
+list(APPEND FLUTTER_FFI_PLUGIN_LIST
+)
+
+set(PLUGIN_BUNDLED_LIBRARIES)
+
+foreach(plugin ${FLUTTER_PLUGIN_LIST})
+ add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
+ target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
+ list(APPEND PLUGIN_BUNDLED_LIBRARIES $)
+ list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
+endforeach(plugin)
+
+foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
+ add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
+ list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
+endforeach(ffi_plugin)
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/main.cc b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/main.cc
new file mode 100644
index 0000000000..e7c5c54370
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/main.cc
@@ -0,0 +1,6 @@
+#include "my_application.h"
+
+int main(int argc, char** argv) {
+ g_autoptr(MyApplication) app = my_application_new();
+ return g_application_run(G_APPLICATION(app), argc, argv);
+}
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/my_application.cc b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/my_application.cc
new file mode 100644
index 0000000000..9e28713e54
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/my_application.cc
@@ -0,0 +1,104 @@
+#include "my_application.h"
+
+#include
+#ifdef GDK_WINDOWING_X11
+#include
+#endif
+
+#include "flutter/generated_plugin_registrant.h"
+
+struct _MyApplication {
+ GtkApplication parent_instance;
+ char** dart_entrypoint_arguments;
+};
+
+G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION)
+
+// Implements GApplication::activate.
+static void my_application_activate(GApplication* application) {
+ MyApplication* self = MY_APPLICATION(application);
+ GtkWindow* window =
+ GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application)));
+
+ // Use a header bar when running in GNOME as this is the common style used
+ // by applications and is the setup most users will be using (e.g. Ubuntu
+ // desktop).
+ // If running on X and not using GNOME then just use a traditional title bar
+ // in case the window manager does more exotic layout, e.g. tiling.
+ // If running on Wayland assume the header bar will work (may need changing
+ // if future cases occur).
+ gboolean use_header_bar = TRUE;
+#ifdef GDK_WINDOWING_X11
+ GdkScreen* screen = gtk_window_get_screen(window);
+ if (GDK_IS_X11_SCREEN(screen)) {
+ const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen);
+ if (g_strcmp0(wm_name, "GNOME Shell") != 0) {
+ use_header_bar = FALSE;
+ }
+ }
+#endif
+ if (use_header_bar) {
+ GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
+ gtk_widget_show(GTK_WIDGET(header_bar));
+ gtk_header_bar_set_title(header_bar, "flutter_hello");
+ gtk_header_bar_set_show_close_button(header_bar, TRUE);
+ gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
+ } else {
+ gtk_window_set_title(window, "flutter_hello");
+ }
+
+ gtk_window_set_default_size(window, 1280, 720);
+ gtk_widget_show(GTK_WIDGET(window));
+
+ g_autoptr(FlDartProject) project = fl_dart_project_new();
+ fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
+
+ FlView* view = fl_view_new(project);
+ gtk_widget_show(GTK_WIDGET(view));
+ gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
+
+ fl_register_plugins(FL_PLUGIN_REGISTRY(view));
+
+ gtk_widget_grab_focus(GTK_WIDGET(view));
+}
+
+// Implements GApplication::local_command_line.
+static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) {
+ MyApplication* self = MY_APPLICATION(application);
+ // Strip out the first argument as it is the binary name.
+ self->dart_entrypoint_arguments = g_strdupv(*arguments + 1);
+
+ g_autoptr(GError) error = nullptr;
+ if (!g_application_register(application, nullptr, &error)) {
+ g_warning("Failed to register: %s", error->message);
+ *exit_status = 1;
+ return TRUE;
+ }
+
+ g_application_activate(application);
+ *exit_status = 0;
+
+ return TRUE;
+}
+
+// Implements GObject::dispose.
+static void my_application_dispose(GObject* object) {
+ MyApplication* self = MY_APPLICATION(object);
+ g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev);
+ G_OBJECT_CLASS(my_application_parent_class)->dispose(object);
+}
+
+static void my_application_class_init(MyApplicationClass* klass) {
+ G_APPLICATION_CLASS(klass)->activate = my_application_activate;
+ G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
+ G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
+}
+
+static void my_application_init(MyApplication* self) {}
+
+MyApplication* my_application_new() {
+ return MY_APPLICATION(g_object_new(my_application_get_type(),
+ "application-id", APPLICATION_ID,
+ "flags", G_APPLICATION_NON_UNIQUE,
+ nullptr));
+}
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/my_application.h b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/my_application.h
new file mode 100644
index 0000000000..72271d5e41
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/linux/my_application.h
@@ -0,0 +1,18 @@
+#ifndef FLUTTER_MY_APPLICATION_H_
+#define FLUTTER_MY_APPLICATION_H_
+
+#include
+
+G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
+ GtkApplication)
+
+/**
+ * my_application_new:
+ *
+ * Creates a new Flutter-based application.
+ *
+ * Returns: a new #MyApplication.
+ */
+MyApplication* my_application_new();
+
+#endif // FLUTTER_MY_APPLICATION_H_
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/pubspec.lock b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/pubspec.lock
new file mode 100644
index 0000000000..0f3a736aea
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/pubspec.lock
@@ -0,0 +1,160 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+ async:
+ dependency: transitive
+ description:
+ name: async
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.9.0"
+ boolean_selector:
+ dependency: transitive
+ description:
+ name: boolean_selector
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.0"
+ characters:
+ dependency: transitive
+ description:
+ name: characters
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.2.1"
+ clock:
+ dependency: transitive
+ description:
+ name: clock
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.1"
+ collection:
+ dependency: transitive
+ description:
+ name: collection
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.16.0"
+ cupertino_icons:
+ dependency: "direct main"
+ description:
+ name: cupertino_icons
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.5"
+ fake_async:
+ dependency: transitive
+ description:
+ name: fake_async
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.3.1"
+ flutter:
+ dependency: "direct main"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ flutter_lints:
+ dependency: "direct dev"
+ description:
+ name: flutter_lints
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.0.1"
+ flutter_test:
+ dependency: "direct dev"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ lints:
+ dependency: transitive
+ description:
+ name: lints
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.0.1"
+ matcher:
+ dependency: transitive
+ description:
+ name: matcher
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.12.12"
+ material_color_utilities:
+ dependency: transitive
+ description:
+ name: material_color_utilities
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.1.5"
+ meta:
+ dependency: transitive
+ description:
+ name: meta
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.8.0"
+ path:
+ dependency: transitive
+ description:
+ name: path
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.8.2"
+ sky_engine:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.99"
+ source_span:
+ dependency: transitive
+ description:
+ name: source_span
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.9.0"
+ stack_trace:
+ dependency: transitive
+ description:
+ name: stack_trace
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.10.0"
+ stream_channel:
+ dependency: transitive
+ description:
+ name: stream_channel
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.0"
+ string_scanner:
+ dependency: transitive
+ description:
+ name: string_scanner
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.1"
+ term_glyph:
+ dependency: transitive
+ description:
+ name: term_glyph
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.2.1"
+ test_api:
+ dependency: transitive
+ description:
+ name: test_api
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.4.12"
+ vector_math:
+ dependency: transitive
+ description:
+ name: vector_math
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.2"
+sdks:
+ dart: ">=2.18.6 <3.0.0"
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/pubspec.yaml b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/pubspec.yaml
new file mode 100644
index 0000000000..da4590f864
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/pubspec.yaml
@@ -0,0 +1,91 @@
+name: flutter_hello
+description: A new Flutter project.
+
+# The following line prevents the package from being accidentally published to
+# pub.dev using `flutter pub publish`. This is preferred for private packages.
+publish_to: 'none' # Remove this line if you wish to publish to pub.dev
+
+# The following defines the version and build number for your application.
+# A version number is three numbers separated by dots, like 1.2.43
+# followed by an optional build number separated by a +.
+# Both the version and the builder number may be overridden in flutter
+# build by specifying --build-name and --build-number, respectively.
+# In Android, build-name is used as versionName while build-number used as versionCode.
+# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
+# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
+# Read more about iOS versioning at
+# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
+# In Windows, build-name is used as the major, minor, and patch parts
+# of the product and file versions while build-number is used as the build suffix.
+version: 1.0.0+1
+
+environment:
+ sdk: '>=2.18.6 <3.0.0'
+
+# Dependencies specify other packages that your package needs in order to work.
+# To automatically upgrade your package dependencies to the latest versions
+# consider running `flutter pub upgrade --major-versions`. Alternatively,
+# dependencies can be manually updated by changing the version numbers below to
+# the latest version available on pub.dev. To see which dependencies have newer
+# versions available, run `flutter pub outdated`.
+dependencies:
+ flutter:
+ sdk: flutter
+
+
+ # The following adds the Cupertino Icons font to your application.
+ # Use with the CupertinoIcons class for iOS style icons.
+ cupertino_icons: ^1.0.2
+
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+
+ # The "flutter_lints" package below contains a set of recommended lints to
+ # encourage good coding practices. The lint set provided by the package is
+ # activated in the `analysis_options.yaml` file located at the root of your
+ # package. See that file for information about deactivating specific lint
+ # rules and activating additional ones.
+ flutter_lints: ^2.0.0
+
+# For information on the generic Dart part of this file, see the
+# following page: https://dart.dev/tools/pub/pubspec
+
+# The following section is specific to Flutter packages.
+flutter:
+
+ # The following line ensures that the Material Icons font is
+ # included with your application, so that you can use the icons in
+ # the material Icons class.
+ uses-material-design: true
+
+ # To add assets to your application, add an assets section, like this:
+ # assets:
+ # - images/a_dot_burr.jpeg
+ # - images/a_dot_ham.jpeg
+
+ # An image asset can refer to one or more resolution-specific "variants", see
+ # https://flutter.dev/assets-and-images/#resolution-aware
+
+ # For details regarding adding assets from package dependencies, see
+ # https://flutter.dev/assets-and-images/#from-packages
+
+ # To add custom fonts to your application, add a fonts section here,
+ # in this "flutter" section. Each entry in this list should have a
+ # "family" key with the font family name, and a "fonts" key with a
+ # list giving the asset and other descriptors for the font. For
+ # example:
+ # fonts:
+ # - family: Schyler
+ # fonts:
+ # - asset: fonts/Schyler-Regular.ttf
+ # - asset: fonts/Schyler-Italic.ttf
+ # style: italic
+ # - family: Trajan Pro
+ # fonts:
+ # - asset: fonts/TrajanPro.ttf
+ # - asset: fonts/TrajanPro_Bold.ttf
+ # weight: 700
+ #
+ # For details regarding fonts from package dependencies,
+ # see https://flutter.dev/custom-fonts/#from-packages
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/snap/snapcraft.yaml
new file mode 100644
index 0000000000..d7dc93723a
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/snap/snapcraft.yaml
@@ -0,0 +1,16 @@
+name: flutter-hello
+version: "1.0"
+summary: simple flutter application
+description: build a flutter application using core24
+base: core24
+confinement: strict
+
+apps:
+ flutter-hello:
+ command: "flutter_hello"
+ extensions: [gnome]
+
+parts:
+ hello:
+ source: .
+ plugin: flutter
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/test/widget_test.dart b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/test/widget_test.dart
new file mode 100644
index 0000000000..f5811219ce
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/flutter-hello/test/widget_test.dart
@@ -0,0 +1,30 @@
+// This is a basic Flutter widget test.
+//
+// To perform an interaction with a widget in your test, use the WidgetTester
+// utility in the flutter_test package. For example, you can send tap and scroll
+// gestures. You can also use WidgetTester to find child widgets in the widget
+// tree, read text, and verify that the values of widget properties are correct.
+
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+import 'package:flutter_hello/main.dart';
+
+void main() {
+ testWidgets('Counter increments smoke test', (WidgetTester tester) async {
+ // Build our app and trigger a frame.
+ await tester.pumpWidget(const MyApp());
+
+ // Verify that our counter starts at 0.
+ expect(find.text('0'), findsOneWidget);
+ expect(find.text('1'), findsNothing);
+
+ // Tap the '+' icon and trigger a frame.
+ await tester.tap(find.byIcon(Icons.add));
+ await tester.pump();
+
+ // Verify that our counter has incremented.
+ expect(find.text('0'), findsNothing);
+ expect(find.text('1'), findsOneWidget);
+ });
+}
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/maven-hello/pom.xml b/tests/spread/core24-suites/plugins/build-and-run-hello/maven-hello/pom.xml
new file mode 100644
index 0000000000..49d3c519a9
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/maven-hello/pom.xml
@@ -0,0 +1,41 @@
+
+ 4.0.0
+ com.example
+ hello
+ 1.0
+
+ hello
+ A test project
+
+
+ UTF-8
+ 11
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.1.0
+
+
+
+ true
+ lib/
+ com.example.hello.Main
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.10.1
+
+ ${maven.compiler.release}
+
+
+
+
+
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/maven-hello/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/build-and-run-hello/maven-hello/snap/snapcraft.yaml
new file mode 100644
index 0000000000..7f2a7c94dc
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/maven-hello/snap/snapcraft.yaml
@@ -0,0 +1,30 @@
+name: maven-hello
+version: '1.0'
+summary: A test project
+description: |
+ A test project for the maven plugin. It says hello.
+
+grade: stable # must be 'stable' to release into candidate/stable channels
+confinement: strict # use 'strict' once you have the right plugs and slots
+base: core24
+
+lint:
+ ignore:
+ - library:
+ - usr/lib/jvm/java-*/lib/*.so
+
+apps:
+ maven-hello:
+ command: bin/java -jar $SNAP/jar/hello-1.0.jar
+
+parts:
+ hello:
+ plugin: maven
+ source: .
+ build-packages:
+ - openjdk-11-jre-headless
+ - maven
+ stage-packages:
+ - openjdk-11-jre-headless
+ prime:
+ - -usr/lib/jvm/java-11-openjdk-*/lib/security/blacklisted.certs
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/maven-hello/src/main/java/com/example/hello/Main.java b/tests/spread/core24-suites/plugins/build-and-run-hello/maven-hello/src/main/java/com/example/hello/Main.java
new file mode 100644
index 0000000000..059c72e6f8
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/maven-hello/src/main/java/com/example/hello/Main.java
@@ -0,0 +1,8 @@
+package com.example.hello;
+
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("hello world");
+ }
+}
diff --git a/tests/spread/core24/npm-reentrant/hello.js b/tests/spread/core24-suites/plugins/build-and-run-hello/npm-hello/hello.js
similarity index 100%
rename from tests/spread/core24/npm-reentrant/hello.js
rename to tests/spread/core24-suites/plugins/build-and-run-hello/npm-hello/hello.js
diff --git a/tests/spread/core24/npm-reentrant/package-lock.json b/tests/spread/core24-suites/plugins/build-and-run-hello/npm-hello/package-lock.json
similarity index 100%
rename from tests/spread/core24/npm-reentrant/package-lock.json
rename to tests/spread/core24-suites/plugins/build-and-run-hello/npm-hello/package-lock.json
diff --git a/tests/spread/core24/npm-reentrant/package.json b/tests/spread/core24-suites/plugins/build-and-run-hello/npm-hello/package.json
similarity index 100%
rename from tests/spread/core24/npm-reentrant/package.json
rename to tests/spread/core24-suites/plugins/build-and-run-hello/npm-hello/package.json
diff --git a/tests/spread/core24/npm-reentrant/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/build-and-run-hello/npm-hello/snap/snapcraft.yaml
similarity index 74%
rename from tests/spread/core24/npm-reentrant/snap/snapcraft.yaml
rename to tests/spread/core24-suites/plugins/build-and-run-hello/npm-hello/snap/snapcraft.yaml
index 7a75149e72..7b1d7f41fa 100644
--- a/tests/spread/core24/npm-reentrant/snap/snapcraft.yaml
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/npm-hello/snap/snapcraft.yaml
@@ -1,4 +1,4 @@
-name: npm-reentrant
+name: npm-hello
version: "1.0"
summary: test the npm plugin
description: Check that the npm plugin works across snapcraft calls
@@ -7,6 +7,12 @@ confinement: strict
grade: devel
base: core24
+apps:
+ npm-hello:
+ command: bin/npm-hello
+ plugs:
+ - network
+
parts:
hello:
source: .
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/poetry-hello/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/build-and-run-hello/poetry-hello/snap/snapcraft.yaml
new file mode 100644
index 0000000000..c72b767cc9
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/poetry-hello/snap/snapcraft.yaml
@@ -0,0 +1,15 @@
+name: poetry-hello
+version: "1.0"
+summary: simple python application
+description: build a python application using core24
+base: core24
+confinement: strict
+
+apps:
+ poetry-hello:
+ command: bin/hello
+
+parts:
+ hello:
+ plugin: poetry
+ source: src
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/poetry-hello/src/hello/__init__.py b/tests/spread/core24-suites/plugins/build-and-run-hello/poetry-hello/src/hello/__init__.py
new file mode 100644
index 0000000000..e3095b2229
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/poetry-hello/src/hello/__init__.py
@@ -0,0 +1,2 @@
+def main():
+ print("hello world")
diff --git a/tests/spread/core24/python-hello/poetry/src/pyproject.toml b/tests/spread/core24-suites/plugins/build-and-run-hello/poetry-hello/src/pyproject.toml
similarity index 100%
rename from tests/spread/core24/python-hello/poetry/src/pyproject.toml
rename to tests/spread/core24-suites/plugins/build-and-run-hello/poetry-hello/src/pyproject.toml
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/python-hello/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/build-and-run-hello/python-hello/snap/snapcraft.yaml
new file mode 100644
index 0000000000..cec936b84d
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/python-hello/snap/snapcraft.yaml
@@ -0,0 +1,16 @@
+name: python-hello
+version: "1.0"
+summary: simple python application
+description: build a python application using core24
+base: core24
+confinement: strict
+
+apps:
+ python-hello:
+ command: bin/hello
+ extensions: [gnome]
+
+parts:
+ hello:
+ plugin: python
+ source: src
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/python-hello/src/hello/__init__.py b/tests/spread/core24-suites/plugins/build-and-run-hello/python-hello/src/hello/__init__.py
new file mode 100644
index 0000000000..e3095b2229
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/python-hello/src/hello/__init__.py
@@ -0,0 +1,2 @@
+def main():
+ print("hello world")
diff --git a/tests/spread/core24/python-hello/src/setup.py b/tests/spread/core24-suites/plugins/build-and-run-hello/python-hello/src/setup.py
similarity index 100%
rename from tests/spread/core24/python-hello/src/setup.py
rename to tests/spread/core24-suites/plugins/build-and-run-hello/python-hello/src/setup.py
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/qmake-hello/hello.c b/tests/spread/core24-suites/plugins/build-and-run-hello/qmake-hello/hello.c
new file mode 100644
index 0000000000..7ac070b52c
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/qmake-hello/hello.c
@@ -0,0 +1,7 @@
+#include
+
+int main()
+{
+ printf("hello world\n");
+ return 0;
+}
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/qmake-hello/hello.pro b/tests/spread/core24-suites/plugins/build-and-run-hello/qmake-hello/hello.pro
new file mode 100644
index 0000000000..1dc9da55e0
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/qmake-hello/hello.pro
@@ -0,0 +1,4 @@
+CONFIG = console release
+SOURCES += hello.c
+target.path = /bin/
+INSTALLS += target
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/qmake-hello/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/build-and-run-hello/qmake-hello/snap/snapcraft.yaml
new file mode 100644
index 0000000000..2e41af9215
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/qmake-hello/snap/snapcraft.yaml
@@ -0,0 +1,22 @@
+name: qmake-hello
+version: "1.0"
+summary: test the qmake plugin
+description: |
+ This is a basic qmake snap. It just prints a hello world.
+ If you want to add other functionalities to this snap, please don't.
+ Make a new one.
+
+grade: devel
+base: core24
+confinement: strict
+
+apps:
+ qmake-hello:
+ command: bin/hello
+
+parts:
+ hello:
+ plugin: qmake
+ qmake-parameters:
+ - -Wall
+ source: .
diff --git a/tests/spread/core24-suites/plugins/build-and-run-hello/task.yaml b/tests/spread/core24-suites/plugins/build-and-run-hello/task.yaml
new file mode 100644
index 0000000000..ccd32d7f3c
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/build-and-run-hello/task.yaml
@@ -0,0 +1,109 @@
+summary: >-
+ Build, clean, build, modify and rebuild, and run hello
+ with different plugin configurations
+
+environment:
+ SNAPCRAFT_BUILD_ENVIRONMENT: ""
+ # ros extensions for core24 are still experimental
+ SNAPCRAFT_ENABLE_EXPERIMENTAL_EXTENSIONS: "1"
+ SNAP/conda: conda-hello
+ SNAP/colcon_ros2_jazzy: colcon-ros2-jazzy-hello
+ SNAP/colcon_ros2_wrapper: colcon-ros2-wrapper
+ SNAP/flutter: flutter-hello
+ SNAP/npm: npm-hello
+ # https://github.com/canonical/snapcraft/issues/5207
+ # SNAP/python: python-hello
+ SNAP/poetry: poetry-hello
+ SNAP/qmake: qmake-hello
+ SNAP/maven: maven-hello
+
+prepare: |
+ #shellcheck source=tests/spread/tools/package-utils.sh
+ . "$TOOLS_DIR/package-utils.sh"
+ create_dpkg_restore_point
+
+restore: |
+ cd "${SNAP}"
+ snapcraft clean
+ rm -f ./*.snap
+
+ # Undo changes to hello
+ [ -f hello ] && git checkout hello
+ [ -f hello.c ] && git checkout hello.c
+ [ -f hello.cs ] && git checkout hello.cs
+ [ -f subdir/hello.c ] && git checkout subdir/hello.c
+ [ -f hello.js ] && git checkout hello.js
+ [ -f main.go ] && git checkout main.go
+ [ -f src/hello.cpp ] && git checkout src/hello.cpp
+ [ -f src/main.rs ] && git checkout src/main.rs
+ [ -f lib/src/lib.rs ] && git checkout lib/src/lib.rs
+ [ -f lib/main.dart ] && git checkout lib/main.dart
+
+ #shellcheck source=tests/spread/tools/package-utils.sh
+ . "$TOOLS_DIR/package-utils.sh"
+ dpkg_restore_point
+
+execute: |
+ cd "${SNAP}"
+
+ # Make sure expand-extensions works
+ snapcraft expand-extensions
+
+ # Ensure we can run individual plugin steps
+ snapcraft pull
+ snapcraft build
+
+ # Build what we have and verify the snap runs as expected.
+ snapcraft
+ snap install "${SNAP}"_1.0_*.snap --dangerous
+
+ if [ "${SNAP}" != "flutter-hello" ]; then
+ [ "$($SNAP)" = "hello world" ]
+ fi
+
+ # Clean the hello part, then build and run again.
+ snapcraft clean hello
+ snapcraft
+ snap install "${SNAP}"_1.0_*.snap --dangerous
+
+ if [ "${SNAP}" != "flutter-hello" ]; then
+ [ "$($SNAP)" = "hello world" ]
+ fi
+
+ # Make sure that what we built runs with the changes applied.
+ if [ -f hello ]; then
+ modified_file=hello
+ elif [ -f hello.c ]; then
+ modified_file=hello.c
+ elif [ -f hello.cs ]; then
+ modified_file=hello.cs
+ elif [ -f subdir/hello.c ]; then
+ modified_file=subdir/hello.c
+ elif [ -f hello.js ]; then
+ modified_file=hello.js
+ elif [ -f main.go ]; then
+ modified_file=main.go
+ elif [ -f src/hello.cpp ]; then
+ modified_file=src/hello.cpp
+ elif [ -f src/main.rs ]; then
+ modified_file=src/main.rs
+ elif [ -f say/src/lib.rs ]; then
+ modified_file=say/src/lib.rs
+ elif [ -f lib/main.dart ]; then
+ modified_file=lib/main.dart
+ elif [ -f src/hello/__init__.py ]; then
+ modified_file=src/hello/__init__.py
+ elif [ -f src/main/java/com/example/hello/Main.java ]; then
+ modified_file=src/main/java/com/example/hello/Main.java
+ else
+ FATAL "Cannot setup ${SNAP} for rebuilding"
+ fi
+
+ sed -i "${modified_file}" -e 's/hello world/hello rebuilt world/'
+
+ snapcraft
+ snap install "${SNAP}"_1.0_*.snap --dangerous
+
+ if [ "${SNAP}" != "flutter-hello" ]; then
+ [ "$($SNAP)" = "hello rebuilt world" ]
+ fi
diff --git a/tests/spread/core24-suites/plugins/colcon-msg-package/colcon-msg-package/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/colcon-msg-package/colcon-msg-package/snap/snapcraft.yaml
new file mode 100644
index 0000000000..27733e0722
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-msg-package/colcon-msg-package/snap/snapcraft.yaml
@@ -0,0 +1,24 @@
+name: colcon-msg-package
+version: "1.0"
+summary: snapcraft test
+description: |
+ Make sure ROS downloaded packages are properly sourced
+
+grade: stable
+confinement: strict
+base: core24
+
+apps:
+ colcon-msg-package:
+ command: opt/ros/humble/bin/rosidl
+ plugs: [network, network-bind]
+ extensions: [ros2-humble]
+
+parts:
+ test-part:
+ plugin: colcon
+ source: https://github.com/ros2/demos.git
+ source-branch: humble
+ source-subdir: pendulum_msgs
+ build-packages: [g++, make]
+
diff --git a/tests/spread/core24-suites/plugins/colcon-msg-package/task.yaml b/tests/spread/core24-suites/plugins/colcon-msg-package/task.yaml
new file mode 100644
index 0000000000..68c90f7246
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-msg-package/task.yaml
@@ -0,0 +1,44 @@
+summary: >-
+ Make sure ROS downloaded packages are properly sourced
+
+kill-timeout: 180m
+
+environment:
+ SNAP/colcon_msg_package: colcon-msg-package
+
+systems:
+ - ubuntu-22.04
+ - ubuntu-22.04-64
+ - ubuntu-22.04-amd64
+ - ubuntu-22.04-arm64
+
+prepare: |
+ #shellcheck source=tests/spread/tools/snapcraft-yaml.sh
+ . "$TOOLS_DIR/snapcraft-yaml.sh"
+ set_base "$SNAP/snap/snapcraft.yaml"
+
+ #shellcheck source=tests/spread/tools/package-utils.sh
+ . "$TOOLS_DIR/package-utils.sh"
+ create_dpkg_restore_point
+
+restore: |
+ cd "$SNAP"
+ snapcraft clean
+ rm -f ./*.snap
+
+ #shellcheck source=tests/spread/tools/snapcraft-yaml.sh
+ . "$TOOLS_DIR/snapcraft-yaml.sh"
+ restore_yaml "snap/snapcraft.yaml"
+
+ #shellcheck source=tests/spread/tools/package-utils.sh
+ . "$TOOLS_DIR/package-utils.sh"
+ dpkg_restore_point
+
+execute: |
+ cd "$SNAP"
+
+ # Build the snap and verify that a message only package could be build
+ snapcraft
+ [ -d parts/test-part/install/opt/ros/snap/share/pendulum_msgs ]
+
+ snap install "${SNAP}"_1.0_*.snap --dangerous
diff --git a/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/snap/snapcraft.yaml
new file mode 100644
index 0000000000..df2d133b6e
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/snap/snapcraft.yaml
@@ -0,0 +1,27 @@
+name: colcon-packages-ignore
+version: "1.0"
+summary: snapcraft test
+description: |
+ Exercise colcon-packages-ignore/colcon-packages-select options.
+
+grade: stable
+confinement: strict
+base: core24
+
+apps:
+ colcon-packages-ignore:
+ command: opt/ros/snap/lib/package1/package1
+ plugs: [network, network-bind]
+ extensions: [ros2-humble]
+
+parts:
+ test-part:
+ plugin: colcon
+ source: .
+ build-packages: [g++, make]
+
+ # By default, all packages in the workspace will be built.
+ # Request that package1 & package2 is build.
+ colcon-packages: [package1, package2]
+ # Request that package2 is ignored.
+ colcon-packages-ignore: [package2]
diff --git a/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package1/CMakeLists.txt b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package1/CMakeLists.txt
new file mode 100644
index 0000000000..a54247c6f1
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package1/CMakeLists.txt
@@ -0,0 +1,34 @@
+cmake_minimum_required(VERSION 3.5)
+project(package1)
+
+# Default to C++14
+if(NOT CMAKE_CXX_STANDARD)
+ set(CMAKE_CXX_STANDARD 14)
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+find_package(ament_cmake REQUIRED)
+find_package(rclcpp REQUIRED)
+find_package(rclcpp_components REQUIRED)
+find_package(std_msgs REQUIRED)
+
+# This package installs libraries without exporting them.
+# Export the library path to ensure that the installed libraries are available.
+if(NOT WIN32)
+ ament_environment_hooks(
+ "${ament_cmake_package_templates_ENVIRONMENT_HOOK_LIBRARY_PATH}"
+ )
+endif()
+
+add_executable(${PROJECT_NAME} src/hello.cpp)
+target_link_libraries(${PROJECT_NAME})
+ament_target_dependencies(${PROJECT_NAME} rclcpp class_loader)
+
+install(TARGETS
+ ${PROJECT_NAME}
+ DESTINATION lib/${PROJECT_NAME})
+
+ament_package()
diff --git a/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package1/package.xml b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package1/package.xml
new file mode 100644
index 0000000000..01b1c71dea
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package1/package.xml
@@ -0,0 +1,19 @@
+
+
+
+ package1
+ 0.0.1
+ snapcraft test
+ me
+ GPLv3
+
+ ament_cmake
+
+ rclcpp
+ rclcpp_components
+ std_msgs
+
+
+ ament_cmake
+
+
diff --git a/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package1/src/hello.cpp b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package1/src/hello.cpp
new file mode 100644
index 0000000000..0c05a2710f
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package1/src/hello.cpp
@@ -0,0 +1,28 @@
+// Copyright (C) 2020 Canonical Ltd
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 3 as
+// published by the Free Software Foundation.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+#include
+#include "rclcpp/rclcpp.hpp"
+
+int main(int argc, char * argv[])
+{
+ rclcpp::init(argc, argv);
+ rclcpp::executors::SingleThreadedExecutor exec;
+ rclcpp::NodeOptions options;
+
+ printf("I am package1");
+
+ rclcpp::shutdown();
+ return 0;
+}
diff --git a/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package2/CMakeLists.txt b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package2/CMakeLists.txt
new file mode 100644
index 0000000000..9eaffbf394
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package2/CMakeLists.txt
@@ -0,0 +1,34 @@
+cmake_minimum_required(VERSION 3.5)
+project(package2)
+
+# Default to C++14
+if(NOT CMAKE_CXX_STANDARD)
+ set(CMAKE_CXX_STANDARD 14)
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+find_package(ament_cmake REQUIRED)
+find_package(rclcpp REQUIRED)
+find_package(rclcpp_components REQUIRED)
+find_package(std_msgs REQUIRED)
+
+# This package installs libraries without exporting them.
+# Export the library path to ensure that the installed libraries are available.
+if(NOT WIN32)
+ ament_environment_hooks(
+ "${ament_cmake_package_templates_ENVIRONMENT_HOOK_LIBRARY_PATH}"
+ )
+endif()
+
+add_executable(${PROJECT_NAME} src/hello.cpp)
+target_link_libraries(${PROJECT_NAME})
+ament_target_dependencies(${PROJECT_NAME} rclcpp class_loader)
+
+install(TARGETS
+ ${PROJECT_NAME}
+ DESTINATION lib/${PROJECT_NAME})
+
+ament_package()
diff --git a/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package2/package.xml b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package2/package.xml
new file mode 100644
index 0000000000..a193342e83
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package2/package.xml
@@ -0,0 +1,19 @@
+
+
+
+ package2
+ 0.0.1
+ snapcraft test
+ me
+ GPLv3
+
+ ament_cmake
+
+ rclcpp
+ rclcpp_components
+ std_msgs
+
+
+ ament_cmake
+
+
diff --git a/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package2/src/hello.cpp b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package2/src/hello.cpp
new file mode 100644
index 0000000000..481efb1d0c
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package2/src/hello.cpp
@@ -0,0 +1,28 @@
+// Copyright (C) 2020 Canonical Ltd
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 3 as
+// published by the Free Software Foundation.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+#include
+#include "rclcpp/rclcpp.hpp"
+
+int main(int argc, char * argv[])
+{
+ rclcpp::init(argc, argv);
+ rclcpp::executors::SingleThreadedExecutor exec;
+ rclcpp::NodeOptions options;
+
+ printf("I am package2");
+
+ rclcpp::shutdown();
+ return 0;
+}
diff --git a/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package3/CMakeLists.txt b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package3/CMakeLists.txt
new file mode 100644
index 0000000000..4df6d1d4dc
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package3/CMakeLists.txt
@@ -0,0 +1,34 @@
+cmake_minimum_required(VERSION 3.5)
+project(package3)
+
+# Default to C++14
+if(NOT CMAKE_CXX_STANDARD)
+ set(CMAKE_CXX_STANDARD 14)
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+find_package(ament_cmake REQUIRED)
+find_package(rclcpp REQUIRED)
+find_package(rclcpp_components REQUIRED)
+find_package(std_msgs REQUIRED)
+
+# This package installs libraries without exporting them.
+# Export the library path to ensure that the installed libraries are available.
+if(NOT WIN32)
+ ament_environment_hooks(
+ "${ament_cmake_package_templates_ENVIRONMENT_HOOK_LIBRARY_PATH}"
+ )
+endif()
+
+add_executable(${PROJECT_NAME} src/hello.cpp)
+target_link_libraries(${PROJECT_NAME})
+ament_target_dependencies(${PROJECT_NAME} rclcpp class_loader)
+
+install(TARGETS
+ ${PROJECT_NAME}
+ DESTINATION lib/${PROJECT_NAME})
+
+ament_package()
diff --git a/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package3/package.xml b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package3/package.xml
new file mode 100644
index 0000000000..a9b80e26a0
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package3/package.xml
@@ -0,0 +1,19 @@
+
+
+
+ package3
+ 0.0.1
+ snapcraft test
+ me
+ GPLv3
+
+ ament_cmake
+
+ rclcpp
+ rclcpp_components
+ std_msgs
+
+
+ ament_cmake
+
+
diff --git a/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package3/src/hello.cpp b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package3/src/hello.cpp
new file mode 100644
index 0000000000..481efb1d0c
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-packages-ignore/colcon-packages-ignore/src/package3/src/hello.cpp
@@ -0,0 +1,28 @@
+// Copyright (C) 2020 Canonical Ltd
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 3 as
+// published by the Free Software Foundation.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+#include
+#include "rclcpp/rclcpp.hpp"
+
+int main(int argc, char * argv[])
+{
+ rclcpp::init(argc, argv);
+ rclcpp::executors::SingleThreadedExecutor exec;
+ rclcpp::NodeOptions options;
+
+ printf("I am package2");
+
+ rclcpp::shutdown();
+ return 0;
+}
diff --git a/tests/spread/core24-suites/plugins/colcon-packages-ignore/task.yaml b/tests/spread/core24-suites/plugins/colcon-packages-ignore/task.yaml
new file mode 100644
index 0000000000..61cbfe0ed7
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-packages-ignore/task.yaml
@@ -0,0 +1,48 @@
+summary: >-
+ Exercise the colcon-packages/colcon-packages-ignore options of colcon plugin
+
+kill-timeout: 180m
+
+environment:
+ SNAP/colcon_packages_ignore: colcon-packages-ignore
+ SNAPCRAFT_ENABLE_EXPERIMENTAL_EXTENSIONS: "1"
+
+systems:
+ - ubuntu-22.04
+ - ubuntu-22.04-64
+ - ubuntu-22.04-amd64
+ - ubuntu-22.04-arm64
+
+prepare: |
+ #shellcheck source=tests/spread/tools/snapcraft-yaml.sh
+ . "$TOOLS_DIR/snapcraft-yaml.sh"
+ set_base "$SNAP/snap/snapcraft.yaml"
+
+ #shellcheck source=tests/spread/tools/package-utils.sh
+ . "$TOOLS_DIR/package-utils.sh"
+ create_dpkg_restore_point
+
+restore: |
+ cd "$SNAP"
+ snapcraft clean
+ rm -f ./*.snap
+
+ #shellcheck source=tests/spread/tools/snapcraft-yaml.sh
+ . "$TOOLS_DIR/snapcraft-yaml.sh"
+ restore_yaml "snap/snapcraft.yaml"
+
+ #shellcheck source=tests/spread/tools/package-utils.sh
+ . "$TOOLS_DIR/package-utils.sh"
+ dpkg_restore_point
+
+execute: |
+ cd "$SNAP"
+
+ # Build the snap and verify that only package1 was included
+ snapcraft
+ [ -d parts/test-part/install/opt/ros/snap/lib/package1 ]
+ [ ! -d parts/test-part/install/opt/ros/snap/lib/package2 ]
+ [ ! -d parts/test-part/install/opt/ros/snap/lib/package3 ]
+
+ snap install "${SNAP}"_1.0_*.snap --dangerous
+ [ "$($SNAP)" = "I am package1" ]
diff --git a/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/CMakeLists.txt b/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/CMakeLists.txt
new file mode 100644
index 0000000000..55b98b7cd4
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/CMakeLists.txt
@@ -0,0 +1,37 @@
+cmake_minimum_required(VERSION 3.5)
+project(colcon-ros2-talker-listener)
+
+# Default to C++14
+if(NOT CMAKE_CXX_STANDARD)
+ set(CMAKE_CXX_STANDARD 14)
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+# find dependencies
+find_package(ament_cmake REQUIRED)
+find_package(rclcpp REQUIRED)
+find_package(std_msgs REQUIRED)
+
+if(NOT WIN32)
+ ament_environment_hooks(
+ "${ament_cmake_package_templates_ENVIRONMENT_HOOK_LIBRARY_PATH}"
+ )
+endif()
+
+add_executable(talker src/publisher_member_function.cpp)
+ament_target_dependencies(talker rclcpp std_msgs)
+
+add_executable(listener src/subscriber_member_function.cpp)
+ament_target_dependencies(listener rclcpp std_msgs)
+
+install(
+ TARGETS talker listener
+ DESTINATION lib/${PROJECT_NAME}
+)
+
+install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}/)
+
+ament_package()
diff --git a/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/launch/talker_listener.launch.py b/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/launch/talker_listener.launch.py
new file mode 100644
index 0000000000..97685ac468
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/launch/talker_listener.launch.py
@@ -0,0 +1,28 @@
+import launch
+import launch_ros.actions
+from launch.actions import DeclareLaunchArgument
+from launch.substitutions import LaunchConfiguration
+
+
+def generate_launch_description():
+ return launch.LaunchDescription(
+ [
+ launch_ros.actions.Node(
+ package="colcon-ros2-talker-listener",
+ executable="talker",
+ name="talker",
+ output="screen",
+ ),
+ DeclareLaunchArgument("exit_after_receive", default_value="False"),
+ launch_ros.actions.Node(
+ package="colcon-ros2-talker-listener",
+ executable="listener",
+ name="listener",
+ output="screen",
+ parameters=[
+ {"exit_after_receive": LaunchConfiguration("exit_after_receive")}
+ ],
+ on_exit=launch.actions.Shutdown(),
+ ),
+ ]
+ )
diff --git a/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/package.xml b/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/package.xml
new file mode 100644
index 0000000000..6b2b7e4be5
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/package.xml
@@ -0,0 +1,23 @@
+
+
+
+ colcon-ros2-talker-listener
+ 0.0.0
+ A talker listener demo
+ ubuntu-robotics
+ GPLv3
+
+ ament_cmake
+
+ rclcpp
+ std_msgs
+
+ ros2launch
+
+ ament_lint_auto
+ ament_lint_common
+
+
+ ament_cmake
+
+
diff --git a/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/snap/snapcraft.yaml
new file mode 100644
index 0000000000..04d8729674
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/snap/snapcraft.yaml
@@ -0,0 +1,21 @@
+name: colcon-talker-listener
+version: "1.0"
+summary: hello world
+description: |
+ A ROS 2 talker-listener.
+
+grade: stable
+confinement: strict
+base: core24
+
+apps:
+ colcon-talker-listener:
+ command: ros2 launch colcon-ros2-talker-listener talker_listener.launch.py
+ plugs: [network, network-bind]
+ extensions: [ros2-humble]
+
+parts:
+ hello:
+ plugin: colcon
+ source: .
+ build-packages: [g++, make]
diff --git a/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/src/publisher_member_function.cpp b/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/src/publisher_member_function.cpp
new file mode 100644
index 0000000000..c8d2ebfe00
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/src/publisher_member_function.cpp
@@ -0,0 +1,56 @@
+// Copyright 2016 Open Source Robotics Foundation, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include
+#include
+
+#include "rclcpp/rclcpp.hpp"
+#include "std_msgs/msg/string.hpp"
+
+using namespace std::chrono_literals;
+
+/* This example creates a subclass of Node and uses std::bind() to register a
+ * member function as a callback from the timer. */
+
+class MinimalPublisher : public rclcpp::Node
+{
+public:
+ MinimalPublisher()
+ : Node("minimal_publisher"), count_(0)
+ {
+ publisher_ = this->create_publisher("topic", 10);
+ timer_ = this->create_wall_timer(
+ 500ms, std::bind(&MinimalPublisher::timer_callback, this));
+ }
+
+private:
+ void timer_callback()
+ {
+ auto message = std_msgs::msg::String();
+ message.data = "Hello, world! " + std::to_string(count_++);
+ RCLCPP_INFO(this->get_logger(), "Publishing: '%s'", message.data.c_str());
+ publisher_->publish(message);
+ }
+ rclcpp::TimerBase::SharedPtr timer_;
+ rclcpp::Publisher::SharedPtr publisher_;
+ size_t count_;
+};
+
+int main(int argc, char * argv[])
+{
+ rclcpp::init(argc, argv);
+ rclcpp::spin(std::make_shared());
+ rclcpp::shutdown();
+ return 0;
+}
diff --git a/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/src/subscriber_member_function.cpp b/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/src/subscriber_member_function.cpp
new file mode 100644
index 0000000000..655a4ffd57
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-talker-listener/colcon-talker-listener/src/subscriber_member_function.cpp
@@ -0,0 +1,51 @@
+// Copyright 2016 Open Source Robotics Foundation, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include
+
+#include "rclcpp/rclcpp.hpp"
+#include "std_msgs/msg/string.hpp"
+using std::placeholders::_1;
+
+class MinimalSubscriber : public rclcpp::Node
+{
+public:
+ MinimalSubscriber()
+ : Node("minimal_subscriber")
+ {
+ subscription_ = this->create_subscription(
+ "topic", 10, std::bind(&MinimalSubscriber::topic_callback, this, _1));
+
+ this->declare_parameter("exit_after_receive", false);
+ }
+
+private:
+ void topic_callback(const std_msgs::msg::String::SharedPtr msg) const
+ {
+ RCLCPP_INFO(this->get_logger(), "I heard: '%s'", msg->data.c_str());
+
+ if (this->get_parameter("exit_after_receive").as_bool()) {
+ rclcpp::shutdown();
+ }
+ }
+ rclcpp::Subscription::SharedPtr subscription_;
+};
+
+int main(int argc, char * argv[])
+{
+ rclcpp::init(argc, argv);
+ rclcpp::spin(std::make_shared());
+ rclcpp::shutdown();
+ return 0;
+}
diff --git a/tests/spread/core24-suites/plugins/colcon-talker-listener/task.yaml b/tests/spread/core24-suites/plugins/colcon-talker-listener/task.yaml
new file mode 100644
index 0000000000..16efdf61a3
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/colcon-talker-listener/task.yaml
@@ -0,0 +1,38 @@
+summary: Build and run a basic colcon snap
+
+kill-timeout: 180m
+
+environment:
+ SNAP/catkin_ros2_run: colcon-talker-listener
+
+systems:
+ - ubuntu-22.04
+ - ubuntu-22.04-64
+ - ubuntu-22.04-amd64
+ - ubuntu-22.04-arm64
+
+prepare: |
+ #shellcheck source=tests/spread/tools/snapcraft-yaml.sh
+ . "$TOOLS_DIR/snapcraft-yaml.sh"
+ set_base "$SNAP/snap/snapcraft.yaml"
+
+restore: |
+ cd "$SNAP"
+ snapcraft clean
+ rm -f ./*.snap
+
+ #shellcheck source=tests/spread/tools/snapcraft-yaml.sh
+ . "$TOOLS_DIR/snapcraft-yaml.sh"
+ restore_yaml "snap/snapcraft.yaml"
+
+execute: |
+ cd "$SNAP"
+
+ # Build what and install the snap
+ snapcraft
+ snap install "${SNAP}"_1.0_*.snap --dangerous
+
+ # Run the ROS system. By default this will never exit, but the snap supports
+ # an `exit_after_receive` parameter that, if true, will cause the system to
+ # shutdown after the listener has successfully received a message.
+ "$SNAP" exit_after_receive:=true | MATCH "I heard: 'Hello, world! 0'"
diff --git a/tests/spread/core24/dotnet/snapcraft.yaml b/tests/spread/core24-suites/plugins/dotnet-unregistered/snapcraft.yaml
similarity index 100%
rename from tests/spread/core24/dotnet/snapcraft.yaml
rename to tests/spread/core24-suites/plugins/dotnet-unregistered/snapcraft.yaml
diff --git a/tests/spread/core24/dotnet/task.yaml b/tests/spread/core24-suites/plugins/dotnet-unregistered/task.yaml
similarity index 100%
rename from tests/spread/core24/dotnet/task.yaml
rename to tests/spread/core24-suites/plugins/dotnet-unregistered/task.yaml
diff --git a/tests/spread/core24-suites/plugins/kernel/config b/tests/spread/core24-suites/plugins/kernel/config
new file mode 100644
index 0000000000..27f4055847
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/kernel/config
@@ -0,0 +1,2383 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/x86 5.15.60 Kernel Configuration
+#
+CONFIG_CC_VERSION_TEXT="x86_64-linux-gnu-gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0"
+CONFIG_CC_IS_GCC=y
+CONFIG_GCC_VERSION=110200
+CONFIG_CLANG_VERSION=0
+CONFIG_AS_IS_GNU=y
+CONFIG_AS_VERSION=23800
+CONFIG_LD_IS_BFD=y
+CONFIG_LD_VERSION=23800
+CONFIG_LLD_VERSION=0
+CONFIG_CC_CAN_LINK=y
+CONFIG_CC_CAN_LINK_STATIC=y
+CONFIG_CC_HAS_ASM_GOTO=y
+CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
+CONFIG_CC_HAS_ASM_INLINE=y
+CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
+CONFIG_PAHOLE_VERSION=0
+CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_TABLE_SORT=y
+CONFIG_THREAD_INFO_IN_TASK=y
+
+#
+# General setup
+#
+CONFIG_INIT_ENV_ARG_LIMIT=32
+# CONFIG_COMPILE_TEST is not set
+# CONFIG_WERROR is not set
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_BUILD_SALT=""
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_BZIP2=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_LZ4=y
+CONFIG_HAVE_KERNEL_ZSTD=y
+# CONFIG_KERNEL_GZIP is not set
+# CONFIG_KERNEL_BZIP2 is not set
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_XZ is not set
+# CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_LZ4 is not set
+CONFIG_KERNEL_ZSTD=y
+CONFIG_DEFAULT_INIT=""
+CONFIG_DEFAULT_HOSTNAME="(none)"
+CONFIG_VERSION_SIGNATURE=""
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_WATCH_QUEUE=y
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_USELIB=y
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_GENERIC_IRQ_MIGRATION=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y
+CONFIG_GENERIC_IRQ_RESERVATION_MODE=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_SPARSE_IRQ=y
+# CONFIG_GENERIC_IRQ_DEBUGFS is not set
+# end of IRQ subsystem
+
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_ARCH_CLOCKSOURCE_INIT=y
+CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y
+CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
+
+#
+# Timers subsystem
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+# CONFIG_NO_HZ_FULL is not set
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+# end of Timers subsystem
+
+CONFIG_BPF=y
+CONFIG_HAVE_EBPF_JIT=y
+CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y
+
+#
+# BPF subsystem
+#
+CONFIG_BPF_SYSCALL=y
+CONFIG_BPF_JIT=y
+CONFIG_BPF_JIT_ALWAYS_ON=y
+CONFIG_BPF_JIT_DEFAULT_ON=y
+CONFIG_BPF_UNPRIV_DEFAULT_OFF=y
+# CONFIG_BPF_PRELOAD is not set
+# end of BPF subsystem
+
+# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT_VOLUNTARY=y
+# CONFIG_PREEMPT is not set
+CONFIG_SCHED_CORE=y
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_PSI=y
+# CONFIG_PSI_DEFAULT_DISABLED is not set
+# end of CPU/Task time and stats accounting
+
+CONFIG_CPU_ISOLATION=y
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+CONFIG_TREE_SRCU=y
+CONFIG_TASKS_RCU_GENERIC=y
+CONFIG_TASKS_TRACE_RCU=y
+CONFIG_RCU_STALL_COMMON=y
+CONFIG_RCU_NEED_SEGCBLIST=y
+# end of RCU Subsystem
+
+CONFIG_BUILD_BIN2C=y
+# CONFIG_IKCONFIG is not set
+CONFIG_IKHEADERS=m
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
+CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
+# CONFIG_PRINTK_INDEX is not set
+CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
+
+#
+# Scheduler features
+#
+CONFIG_UCLAMP_TASK=y
+CONFIG_UCLAMP_BUCKETS_COUNT=5
+# end of Scheduler features
+
+CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
+CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
+CONFIG_CC_HAS_INT128=y
+CONFIG_ARCH_SUPPORTS_INT128=y
+CONFIG_CGROUPS=y
+CONFIG_PAGE_COUNTER=y
+CONFIG_MEMCG=y
+CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_KMEM=y
+CONFIG_BLK_CGROUP=y
+CONFIG_CGROUP_WRITEBACK=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_UCLAMP_TASK_GROUP=y
+CONFIG_CGROUP_PIDS=y
+CONFIG_CGROUP_RDMA=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_HUGETLB=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_BPF=y
+CONFIG_CGROUP_MISC=y
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_SOCK_CGROUP_DATA=y
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_TIME_NS=y
+CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
+CONFIG_PID_NS=y
+CONFIG_CHECKPOINT_RESTORE=y
+CONFIG_SCHED_AUTOGROUP=y
+# CONFIG_SYSFS_DEPRECATED is not set
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_XZ=y
+CONFIG_RD_LZO=y
+CONFIG_RD_LZ4=y
+CONFIG_RD_ZSTD=y
+CONFIG_BOOT_CONFIG=y
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_LD_ORPHAN_WARN=y
+CONFIG_SYSCTL=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_HAVE_PCSPKR_PLATFORM=y
+CONFIG_EXPERT=y
+CONFIG_MULTIUSER=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSFS_SYSCALL=y
+CONFIG_FHANDLE=y
+CONFIG_POSIX_TIMERS=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_PCSPKR_PLATFORM=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_FUTEX_PI=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_IO_URING=y
+CONFIG_ADVISE_SYSCALLS=y
+CONFIG_HAVE_ARCH_USERFAULTFD_WP=y
+CONFIG_HAVE_ARCH_USERFAULTFD_MINOR=y
+CONFIG_MEMBARRIER=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
+CONFIG_KALLSYMS_BASE_RELATIVE=y
+CONFIG_USERFAULTFD=y
+CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
+CONFIG_KCMP=y
+CONFIG_RSEQ=y
+# CONFIG_DEBUG_RSEQ is not set
+# CONFIG_EMBEDDED is not set
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PC104=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+# end of Kernel Performance Events And Counters
+
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_SLAB_MERGE_DEFAULT=y
+CONFIG_SLAB_FREELIST_RANDOM=y
+CONFIG_SLAB_FREELIST_HARDENED=y
+CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
+CONFIG_SLUB_CPU_PARTIAL=y
+CONFIG_SYSTEM_DATA_VERIFICATION=y
+CONFIG_PROFILING=y
+# end of General setup
+
+CONFIG_64BIT=y
+CONFIG_X86_64=y
+CONFIG_X86=y
+CONFIG_INSTRUCTION_DECODER=y
+CONFIG_OUTPUT_FORMAT="elf64-x86-64"
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_MMU=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=28
+CONFIG_ARCH_MMAP_RND_BITS_MAX=32
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_HAS_CPU_RELAX=y
+CONFIG_ARCH_HAS_FILTER_PGPROT=y
+CONFIG_HAVE_SETUP_PER_CPU_AREA=y
+CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
+CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_NR_GPIO=1024
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_X86_64_SMP=y
+CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_PGTABLE_LEVELS=5
+CONFIG_CC_HAS_SANE_STACKPROTECTOR=y
+
+#
+# Processor type and features
+#
+CONFIG_SMP=y
+CONFIG_X86_FEATURE_NAMES=y
+CONFIG_X86_MPPARSE=y
+# CONFIG_GOLDFISH is not set
+CONFIG_X86_CPU_RESCTRL=y
+# CONFIG_X86_EXTENDED_PLATFORM is not set
+# CONFIG_IOSF_MBI is not set
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+# CONFIG_HYPERVISOR_GUEST is not set
+# CONFIG_MK8 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_MATOM is not set
+CONFIG_GENERIC_CPU=y
+CONFIG_X86_INTERNODE_CACHE_SHIFT=6
+CONFIG_X86_L1_CACHE_SHIFT=6
+CONFIG_X86_TSC=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=64
+CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_IA32_FEAT_CTL=y
+CONFIG_X86_VMX_FEATURE_NAMES=y
+CONFIG_PROCESSOR_SELECT=y
+CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_AMD=y
+# CONFIG_CPU_SUP_HYGON is not set
+# CONFIG_CPU_SUP_CENTAUR is not set
+# CONFIG_CPU_SUP_ZHAOXIN is not set
+CONFIG_HPET_TIMER=y
+CONFIG_DMI=y
+# CONFIG_GART_IOMMU is not set
+CONFIG_MAXSMP=y
+CONFIG_NR_CPUS_RANGE_BEGIN=8192
+CONFIG_NR_CPUS_RANGE_END=8192
+CONFIG_NR_CPUS_DEFAULT=8192
+CONFIG_NR_CPUS=8192
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+CONFIG_SCHED_MC_PRIO=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set
+# CONFIG_X86_MCE is not set
+
+#
+# Performance monitoring
+#
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
+CONFIG_PERF_EVENTS_INTEL_RAPL=y
+CONFIG_PERF_EVENTS_INTEL_CSTATE=y
+# CONFIG_PERF_EVENTS_AMD_POWER is not set
+CONFIG_PERF_EVENTS_AMD_UNCORE=m
+# end of Performance monitoring
+
+CONFIG_X86_16BIT=y
+CONFIG_X86_ESPFIX64=y
+CONFIG_X86_VSYSCALL_EMULATION=y
+CONFIG_X86_IOPL_IOPERM=y
+CONFIG_MICROCODE=y
+CONFIG_MICROCODE_INTEL=y
+CONFIG_MICROCODE_AMD=y
+CONFIG_MICROCODE_OLD_INTERFACE=y
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+CONFIG_X86_5LEVEL=y
+CONFIG_X86_DIRECT_GBPAGES=y
+# CONFIG_X86_CPA_STATISTICS is not set
+# CONFIG_AMD_MEM_ENCRYPT is not set
+# CONFIG_NUMA is not set
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_PROC_KCORE_TEXT=y
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+CONFIG_X86_CHECK_BIOS_CORRUPTION=y
+CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
+CONFIG_MTRR=y
+CONFIG_MTRR_SANITIZER=y
+CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
+CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
+CONFIG_X86_PAT=y
+CONFIG_ARCH_USES_PG_UNCACHED=y
+CONFIG_ARCH_RANDOM=y
+CONFIG_X86_SMAP=y
+CONFIG_X86_UMIP=y
+CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
+CONFIG_X86_INTEL_TSX_MODE_OFF=y
+# CONFIG_X86_INTEL_TSX_MODE_ON is not set
+# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set
+CONFIG_X86_SGX=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_SCHED_HRTICK=y
+CONFIG_KEXEC=y
+CONFIG_KEXEC_FILE=y
+CONFIG_ARCH_HAS_KEXEC_PURGATORY=y
+CONFIG_KEXEC_SIG=y
+# CONFIG_KEXEC_SIG_FORCE is not set
+CONFIG_KEXEC_BZIMAGE_VERIFY_SIG=y
+CONFIG_CRASH_DUMP=y
+CONFIG_PHYSICAL_START=0x1000000
+CONFIG_RELOCATABLE=y
+CONFIG_RANDOMIZE_BASE=y
+CONFIG_X86_NEED_RELOCS=y
+CONFIG_PHYSICAL_ALIGN=0x200000
+CONFIG_DYNAMIC_MEMORY_LAYOUT=y
+CONFIG_RANDOMIZE_MEMORY=y
+CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
+CONFIG_HOTPLUG_CPU=y
+# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
+# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
+# CONFIG_LEGACY_VSYSCALL_EMULATE is not set
+CONFIG_LEGACY_VSYSCALL_XONLY=y
+# CONFIG_LEGACY_VSYSCALL_NONE is not set
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_MODIFY_LDT_SYSCALL=y
+# CONFIG_STRICT_SIGALTSTACK_SIZE is not set
+CONFIG_HAVE_LIVEPATCH=y
+# end of Processor type and features
+
+CONFIG_CC_HAS_SLS=y
+CONFIG_CC_HAS_RETURN_THUNK=y
+CONFIG_SPECULATION_MITIGATIONS=y
+CONFIG_PAGE_TABLE_ISOLATION=y
+CONFIG_RETPOLINE=y
+CONFIG_RETHUNK=y
+CONFIG_CPU_UNRET_ENTRY=y
+CONFIG_CPU_IBPB_ENTRY=y
+CONFIG_CPU_IBRS_ENTRY=y
+CONFIG_SLS=y
+CONFIG_ARCH_HAS_ADD_PAGES=y
+CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
+
+#
+# Power management and ACPI options
+#
+# CONFIG_SUSPEND is not set
+# CONFIG_HIBERNATION is not set
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_CLK=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+# CONFIG_ENERGY_MODEL is not set
+CONFIG_ARCH_SUPPORTS_ACPI=y
+# CONFIG_ACPI is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+# CONFIG_CPU_FREQ_STAT is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+
+#
+# CPU frequency scaling drivers
+#
+CONFIG_X86_INTEL_PSTATE=y
+# CONFIG_X86_P4_CLOCKMOD is not set
+
+#
+# shared options
+#
+# end of CPU Frequency scaling
+
+#
+# CPU Idle
+#
+# CONFIG_CPU_IDLE is not set
+# end of CPU Idle
+# end of Power management and ACPI options
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI_DIRECT=y
+# CONFIG_PCI_CNB20LE_QUIRK is not set
+# CONFIG_ISA_BUS is not set
+# CONFIG_ISA_DMA_API is not set
+CONFIG_AMD_NB=y
+# end of Bus options (PCI etc.)
+
+#
+# Binary Emulations
+#
+# CONFIG_IA32_EMULATION is not set
+# CONFIG_X86_X32 is not set
+# end of Binary Emulations
+
+CONFIG_HAVE_KVM=y
+# CONFIG_VIRTUALIZATION is not set
+CONFIG_AS_AVX512=y
+CONFIG_AS_SHA1_NI=y
+CONFIG_AS_SHA256_NI=y
+CONFIG_AS_TPAUSE=y
+
+#
+# General architecture-dependent options
+#
+CONFIG_CRASH_CORE=y
+CONFIG_KEXEC_CORE=y
+CONFIG_HOTPLUG_SMT=y
+CONFIG_GENERIC_ENTRY=y
+CONFIG_KPROBES=y
+# CONFIG_JUMP_LABEL is not set
+# CONFIG_STATIC_CALL_SELFTEST is not set
+CONFIG_OPTPROBES=y
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
+CONFIG_KRETPROBES=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_OPTPROBES=y
+CONFIG_HAVE_KPROBES_ON_FTRACE=y
+CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y
+CONFIG_HAVE_NMI=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
+CONFIG_ARCH_HAS_SET_MEMORY=y
+CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
+CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
+CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
+CONFIG_ARCH_WANTS_NO_INSTR=y
+CONFIG_HAVE_ASM_MODVERSIONS=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_RSEQ=y
+CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
+CONFIG_HAVE_USER_RETURN_NOTIFIER=y
+CONFIG_HAVE_PERF_EVENTS_NMI=y
+CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
+CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
+CONFIG_HAVE_CMPXCHG_LOCAL=y
+CONFIG_HAVE_CMPXCHG_DOUBLE=y
+CONFIG_HAVE_ARCH_SECCOMP=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+# CONFIG_SECCOMP is not set
+CONFIG_HAVE_ARCH_STACKLEAK=y
+CONFIG_HAVE_STACKPROTECTOR=y
+# CONFIG_STACKPROTECTOR is not set
+CONFIG_ARCH_SUPPORTS_LTO_CLANG=y
+CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y
+CONFIG_LTO_NONE=y
+CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_CONTEXT_TRACKING_OFFSTACK=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOVE_PUD=y
+CONFIG_HAVE_MOVE_PMD=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y
+CONFIG_HAVE_ARCH_HUGE_VMAP=y
+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
+CONFIG_HAVE_ARCH_SOFT_DIRTY=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
+CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=28
+CONFIG_HAVE_STACK_VALIDATION=y
+CONFIG_HAVE_RELIABLE_STACKTRACE=y
+# CONFIG_COMPAT_32BIT_TIME is not set
+CONFIG_HAVE_ARCH_VMAP_STACK=y
+# CONFIG_VMAP_STACK is not set
+CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y
+# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set
+CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y
+# CONFIG_LOCK_EVENT_COUNTS is not set
+CONFIG_ARCH_HAS_MEM_ENCRYPT=y
+CONFIG_HAVE_STATIC_CALL=y
+CONFIG_HAVE_STATIC_CALL_INLINE=y
+CONFIG_HAVE_PREEMPT_DYNAMIC=y
+CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_ARCH_HAS_ELFCORE_COMPAT=y
+CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y
+CONFIG_DYNAMIC_SIGFRAME=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
+# end of GCOV-based kernel profiling
+
+CONFIG_HAVE_GCC_PLUGINS=y
+# end of General architecture-dependent options
+
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULE_SIG_FORMAT=y
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+CONFIG_ASM_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+CONFIG_MODULE_SIG=y
+# CONFIG_MODULE_SIG_FORCE is not set
+CONFIG_MODULE_SIG_ALL=y
+# CONFIG_MODULE_SIG_SHA1 is not set
+# CONFIG_MODULE_SIG_SHA224 is not set
+# CONFIG_MODULE_SIG_SHA256 is not set
+# CONFIG_MODULE_SIG_SHA384 is not set
+CONFIG_MODULE_SIG_SHA512=y
+CONFIG_MODULE_SIG_HASH="sha512"
+CONFIG_MODULE_COMPRESS_NONE=y
+# CONFIG_MODULE_COMPRESS_GZIP is not set
+# CONFIG_MODULE_COMPRESS_XZ is not set
+# CONFIG_MODULE_COMPRESS_ZSTD is not set
+# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set
+CONFIG_MODPROBE_PATH="/sbin/modprobe"
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
+CONFIG_BLOCK=y
+CONFIG_BLK_CGROUP_RWSTAT=y
+CONFIG_BLK_DEV_BSG_COMMON=y
+CONFIG_BLK_DEV_BSGLIB=y
+CONFIG_BLK_DEV_INTEGRITY=y
+# CONFIG_BLK_DEV_ZONED is not set
+CONFIG_BLK_DEV_THROTTLING=y
+# CONFIG_BLK_DEV_THROTTLING_LOW is not set
+# CONFIG_BLK_WBT is not set
+# CONFIG_BLK_CGROUP_IOLATENCY is not set
+# CONFIG_BLK_CGROUP_IOCOST is not set
+# CONFIG_BLK_CGROUP_IOPRIO is not set
+# CONFIG_BLK_DEBUG_FS is not set
+# CONFIG_BLK_SED_OPAL is not set
+# CONFIG_BLK_INLINE_ENCRYPTION is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_AIX_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_CMDLINE_PARTITION=y
+# end of Partition Types
+
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_PM=y
+
+#
+# IO Schedulers
+#
+CONFIG_MQ_IOSCHED_DEADLINE=y
+# CONFIG_MQ_IOSCHED_KYBER is not set
+# CONFIG_IOSCHED_BFQ is not set
+# end of IO Schedulers
+
+CONFIG_ASN1=y
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+CONFIG_INLINE_READ_UNLOCK=y
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+CONFIG_INLINE_WRITE_UNLOCK=y
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
+CONFIG_QUEUED_SPINLOCKS=y
+CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
+CONFIG_QUEUED_RWLOCKS=y
+CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y
+CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y
+CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
+CONFIG_FREEZER=y
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_ELFCORE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_COREDUMP=y
+# end of Executable file formats
+
+#
+# Memory Management options
+#
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_HAVE_FAST_GUP=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+# CONFIG_MEMORY_HOTPLUG is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
+CONFIG_COMPACTION=y
+CONFIG_PAGE_REPORTING=y
+CONFIG_MIGRATION=y
+CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_MMU_NOTIFIER=y
+CONFIG_KSM=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
+# CONFIG_TRANSPARENT_HUGEPAGE is not set
+CONFIG_ARCH_WANTS_THP_SWAP=y
+# CONFIG_CLEANCACHE is not set
+# CONFIG_FRONTSWAP is not set
+# CONFIG_CMA is not set
+# CONFIG_MEM_SOFT_DIRTY is not set
+# CONFIG_ZPOOL is not set
+# CONFIG_ZSMALLOC is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_ARCH_HAS_PTE_DEVMAP=y
+CONFIG_ARCH_HAS_ZONE_DMA_SET=y
+CONFIG_ZONE_DMA=y
+CONFIG_ZONE_DMA32=y
+CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
+CONFIG_ARCH_HAS_PKEYS=y
+# CONFIG_PERCPU_STATS is not set
+# CONFIG_GUP_TEST is not set
+CONFIG_ARCH_HAS_PTE_SPECIAL=y
+CONFIG_SECRETMEM=y
+
+#
+# Data Access Monitoring
+#
+# CONFIG_DAMON is not set
+# end of Data Access Monitoring
+# end of Memory Management options
+
+# CONFIG_NET is not set
+
+#
+# Device Drivers
+#
+CONFIG_HAVE_EISA=y
+# CONFIG_EISA is not set
+CONFIG_HAVE_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_PCIEPORTBUS is not set
+CONFIG_PCIEASPM=y
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
+# CONFIG_PCIEASPM_PERFORMANCE is not set
+# CONFIG_PCIE_PTM is not set
+# CONFIG_PCI_MSI is not set
+# CONFIG_PCI_QUIRKS is not set
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCI_STUB is not set
+CONFIG_PCI_LOCKLESS_CONFIG=y
+# CONFIG_PCI_IOV is not set
+# CONFIG_PCI_PRI is not set
+# CONFIG_PCI_PASID is not set
+CONFIG_PCI_LABEL=y
+# CONFIG_PCIE_BUS_TUNE_OFF is not set
+CONFIG_PCIE_BUS_DEFAULT=y
+# CONFIG_PCIE_BUS_SAFE is not set
+# CONFIG_PCIE_BUS_PERFORMANCE is not set
+# CONFIG_PCIE_BUS_PEER2PEER is not set
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# PCI controller drivers
+#
+
+#
+# DesignWare PCI Core Support
+#
+# end of DesignWare PCI Core Support
+
+#
+# Mobiveil PCIe Core Support
+#
+# end of Mobiveil PCIe Core Support
+
+#
+# Cadence PCIe controllers support
+#
+# end of Cadence PCIe controllers support
+# end of PCI controller drivers
+
+#
+# PCI Endpoint
+#
+# CONFIG_PCI_ENDPOINT is not set
+# end of PCI Endpoint
+
+#
+# PCI switch controller drivers
+#
+# CONFIG_PCI_SW_SWITCHTEC is not set
+# end of PCI switch controller drivers
+
+# CONFIG_CXL_BUS is not set
+# CONFIG_PCCARD is not set
+# CONFIG_RAPIDIO is not set
+
+#
+# Generic Driver Options
+#
+# CONFIG_UEVENT_HELPER is not set
+# CONFIG_DEVTMPFS is not set
+# CONFIG_STANDALONE is not set
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+
+#
+# Firmware loader
+#
+CONFIG_FW_LOADER=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_EXTRA_FIRMWARE=""
+CONFIG_FW_LOADER_USER_HELPER=y
+# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
+CONFIG_FW_LOADER_COMPRESS=y
+# end of Firmware loader
+
+CONFIG_ALLOW_DEV_COREDUMP=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
+# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGMAP_IRQ=y
+CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_DMA_FENCE_TRACE is not set
+# end of Generic Driver Options
+
+#
+# Bus devices
+#
+# CONFIG_MHI_BUS is not set
+# end of Bus devices
+
+#
+# Firmware Drivers
+#
+
+#
+# ARM System Control and Management Interface Protocol
+#
+# end of ARM System Control and Management Interface Protocol
+
+# CONFIG_EDD is not set
+# CONFIG_FIRMWARE_MEMMAP is not set
+# CONFIG_DMIID is not set
+# CONFIG_DMI_SYSFS is not set
+CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
+# CONFIG_FW_CFG_SYSFS is not set
+CONFIG_SYSFB=y
+# CONFIG_SYSFB_SIMPLEFB is not set
+# CONFIG_GOOGLE_FIRMWARE is not set
+
+#
+# Tegra firmware driver
+#
+# end of Tegra firmware driver
+# end of Firmware Drivers
+
+# CONFIG_GNSS is not set
+# CONFIG_MTD is not set
+# CONFIG_OF is not set
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+# CONFIG_PARPORT is not set
+# CONFIG_BLK_DEV is not set
+
+#
+# NVME Support
+#
+# CONFIG_BLK_DEV_NVME is not set
+# CONFIG_NVME_FC is not set
+# CONFIG_NVME_TARGET is not set
+# end of NVME Support
+
+#
+# Misc devices
+#
+# CONFIG_DUMMY_IRQ is not set
+# CONFIG_IBM_ASM is not set
+# CONFIG_PHANTOM is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_HP_ILO is not set
+# CONFIG_SRAM is not set
+# CONFIG_DW_XDATA_PCIE is not set
+# CONFIG_PCI_ENDPOINT_TEST is not set
+# CONFIG_XILINX_SDFEC is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_93CX6 is not set
+# end of EEPROM support
+
+# CONFIG_CB710_CORE is not set
+
+#
+# Texas Instruments shared transport line discipline
+#
+# end of Texas Instruments shared transport line discipline
+
+#
+# Altera FPGA firmware download module (requires I2C)
+#
+# CONFIG_INTEL_MEI is not set
+# CONFIG_INTEL_MEI_ME is not set
+# CONFIG_INTEL_MEI_TXE is not set
+# CONFIG_INTEL_VSC is not set
+# CONFIG_INTEL_VSC_PSE is not set
+# CONFIG_INTEL_VSC_ACE_DEBUG is not set
+# CONFIG_VMWARE_VMCI is not set
+# CONFIG_GENWQE is not set
+# CONFIG_ECHO is not set
+# CONFIG_MISC_ALCOR_PCI is not set
+# CONFIG_MISC_RTSX_PCI is not set
+# CONFIG_HABANA_AI is not set
+# CONFIG_PVPANIC is not set
+# end of Misc devices
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# end of SCSI device support
+
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+# CONFIG_TARGET_CORE is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_FIREWIRE_NOSY is not set
+# end of IEEE 1394 (FireWire) support
+
+# CONFIG_MACINTOSH_DRIVERS is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_SPARSEKMAP is not set
+# CONFIG_INPUT_MATRIXKMAP is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+# CONFIG_RMI4_CORE is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=m
+CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
+# CONFIG_SERIO_I8042 is not set
+CONFIG_SERIO_SERPORT=m
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PCIPS2 is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# CONFIG_SERIO_RAW is not set
+# CONFIG_SERIO_ALTERA_PS2 is not set
+# CONFIG_SERIO_PS2MULT is not set
+# CONFIG_SERIO_ARC_PS2 is not set
+# CONFIG_USERIO is not set
+# CONFIG_GAMEPORT is not set
+# end of Hardware I/O ports
+# end of Input device support
+
+#
+# Character devices
+#
+CONFIG_TTY=y
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=0
+CONFIG_LDISC_AUTOLOAD=y
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_EARLYCON=y
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
+CONFIG_SERIAL_8250_16550A_VARIANTS=y
+CONFIG_SERIAL_8250_FINTEK=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_EXAR=y
+CONFIG_SERIAL_8250_NR_UARTS=48
+CONFIG_SERIAL_8250_RUNTIME_UARTS=32
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+CONFIG_SERIAL_8250_RSA=y
+CONFIG_SERIAL_8250_DWLIB=y
+CONFIG_SERIAL_8250_DW=m
+CONFIG_SERIAL_8250_RT288X=y
+CONFIG_SERIAL_8250_LPSS=y
+CONFIG_SERIAL_8250_MID=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_KGDB_NMI=y
+CONFIG_SERIAL_UARTLITE=m
+CONFIG_SERIAL_UARTLITE_NR_UARTS=1
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_CONSOLE_POLL=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_SERIAL_LANTIQ=m
+CONFIG_SERIAL_SCCNXP=y
+CONFIG_SERIAL_SCCNXP_CONSOLE=y
+# CONFIG_SERIAL_BCM63XX is not set
+CONFIG_SERIAL_ALTERA_JTAGUART=m
+CONFIG_SERIAL_ALTERA_UART=m
+CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4
+CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200
+CONFIG_SERIAL_ARC=m
+CONFIG_SERIAL_ARC_NR_PORTS=1
+# CONFIG_SERIAL_RP2 is not set
+CONFIG_SERIAL_FSL_LPUART=m
+CONFIG_SERIAL_FSL_LINFLEXUART=m
+# CONFIG_SERIAL_SPRD is not set
+# end of Serial drivers
+
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_NOZOMI is not set
+# CONFIG_NULL_TTY is not set
+# CONFIG_SERIAL_DEV_BUS is not set
+# CONFIG_TTY_PRINTK is not set
+# CONFIG_VIRTIO_CONSOLE is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_TIMERIOMEM=m
+CONFIG_HW_RANDOM_INTEL=y
+CONFIG_HW_RANDOM_AMD=y
+CONFIG_HW_RANDOM_BA431=m
+CONFIG_HW_RANDOM_VIA=m
+CONFIG_HW_RANDOM_XIPHERA=m
+# CONFIG_APPLICOM is not set
+# CONFIG_MWAVE is not set
+CONFIG_DEVMEM=y
+# CONFIG_NVRAM is not set
+CONFIG_DEVPORT=y
+# CONFIG_HANGCHECK_TIMER is not set
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+# CONFIG_XILLYBUS is not set
+# CONFIG_RANDOM_TRUST_CPU is not set
+# CONFIG_RANDOM_TRUST_BOOTLOADER is not set
+# end of Character devices
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+# end of I2C support
+
+# CONFIG_I3C is not set
+# CONFIG_SPI is not set
+# CONFIG_SPMI is not set
+# CONFIG_HSI is not set
+# CONFIG_PPS is not set
+
+#
+# PTP clock support
+#
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+# end of PTP clock support
+
+CONFIG_PINCTRL=y
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+# CONFIG_DEBUG_PINCTRL is not set
+
+#
+# Renesas pinctrl drivers
+#
+# end of Renesas pinctrl drivers
+
+CONFIG_PINCTRL_MADERA=m
+CONFIG_PINCTRL_CS47L15=y
+CONFIG_PINCTRL_CS47L35=y
+CONFIG_PINCTRL_CS47L85=y
+CONFIG_PINCTRL_CS47L90=y
+CONFIG_PINCTRL_CS47L92=y
+# CONFIG_GPIOLIB is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_RESET is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_THERMAL is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+CONFIG_BCMA_POSSIBLE=y
+# CONFIG_BCMA is not set
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=m
+CONFIG_MFD_MADERA=m
+CONFIG_MFD_CS47L15=y
+CONFIG_MFD_CS47L35=y
+CONFIG_MFD_CS47L85=y
+CONFIG_MFD_CS47L90=y
+CONFIG_MFD_CS47L92=y
+CONFIG_HTC_PASIC3=m
+# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
+# CONFIG_LPC_ICH is not set
+# CONFIG_LPC_SCH is not set
+# CONFIG_MFD_INTEL_LPSS_PCI is not set
+# CONFIG_MFD_INTEL_PMT is not set
+# CONFIG_MFD_JANZ_CMODIO is not set
+CONFIG_MFD_KEMPLD=m
+CONFIG_MFD_MT6397=m
+# CONFIG_MFD_RDC321X is not set
+CONFIG_MFD_SM501=m
+CONFIG_MFD_SYSCON=y
+CONFIG_MFD_TI_AM335X_TSCADC=m
+CONFIG_MFD_TQMX86=m
+# CONFIG_MFD_VX855 is not set
+# end of Multifunction device drivers
+
+# CONFIG_REGULATOR is not set
+# CONFIG_RC_CORE is not set
+# CONFIG_MEDIA_CEC_SUPPORT is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+# CONFIG_AGP is not set
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=16
+# CONFIG_DRM is not set
+
+#
+# ARM devices
+#
+# end of ARM devices
+
+#
+# Frame buffer Devices
+#
+# CONFIG_FB is not set
+# end of Frame buffer Devices
+
+#
+# Backlight & LCD device support
+#
+# CONFIG_LCD_CLASS_DEVICE is not set
+# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
+# end of Backlight & LCD device support
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
+# end of Console display driver support
+# end of Graphics support
+
+# CONFIG_SOUND is not set
+
+#
+# HID support
+#
+CONFIG_HID=m
+# CONFIG_HID_BATTERY_STRENGTH is not set
+# CONFIG_HIDRAW is not set
+# CONFIG_UHID is not set
+CONFIG_HID_GENERIC=m
+
+#
+# Special HID drivers
+#
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_ACRUX is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_AUREAL is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_COUGAR is not set
+# CONFIG_HID_MACALLY is not set
+# CONFIG_HID_CMEDIA is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EMS_FF is not set
+# CONFIG_HID_ELECOM is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_GEMBIRD is not set
+# CONFIG_HID_GFRM is not set
+# CONFIG_HID_GLORIOUS is not set
+# CONFIG_HID_VIVALDI is not set
+# CONFIG_HID_KEYTOUCH is not set
+# CONFIG_HID_KYE is not set
+# CONFIG_HID_WALTOP is not set
+# CONFIG_HID_VIEWSONIC is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_ICADE is not set
+# CONFIG_HID_ITE is not set
+# CONFIG_HID_JABRA is not set
+# CONFIG_HID_TWINHAN is not set
+# CONFIG_HID_KENSINGTON is not set
+# CONFIG_HID_LCPOWER is not set
+# CONFIG_HID_LENOVO is not set
+# CONFIG_HID_MAGICMOUSE is not set
+# CONFIG_HID_MALTRON is not set
+# CONFIG_HID_MAYFLASH is not set
+# CONFIG_HID_REDRAGON is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTI is not set
+# CONFIG_HID_ORTEK is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_PICOLCD is not set
+# CONFIG_HID_PLANTRONICS is not set
+# CONFIG_HID_PLAYSTATION is not set
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_SAITEK is not set
+# CONFIG_HID_SEMITEK is not set
+# CONFIG_HID_SPEEDLINK is not set
+# CONFIG_HID_STEAM is not set
+# CONFIG_HID_STEELSERIES is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_HID_RMI is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+# CONFIG_HID_TIVO is not set
+# CONFIG_HID_TOPSEED is not set
+# CONFIG_HID_UDRAW_PS3 is not set
+# CONFIG_HID_XINMO is not set
+# CONFIG_HID_ZEROPLUS is not set
+# CONFIG_HID_ZYDACRON is not set
+# CONFIG_HID_SENSOR_HUB is not set
+# CONFIG_HID_ALPS is not set
+# end of Special HID drivers
+
+#
+# Intel ISH HID support
+#
+# CONFIG_INTEL_ISH_HID is not set
+# end of Intel ISH HID support
+
+#
+# AMD SFH HID Support
+#
+# CONFIG_AMD_SFH_HID is not set
+# end of AMD SFH HID Support
+# end of HID support
+
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SUPPORT is not set
+# CONFIG_MMC is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_NEW_LEDS is not set
+# CONFIG_ACCESSIBILITY is not set
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_MC146818_LIB=y
+# CONFIG_RTC_CLASS is not set
+# CONFIG_DMADEVICES is not set
+
+#
+# DMABUF options
+#
+CONFIG_SYNC_FILE=y
+CONFIG_SW_SYNC=y
+CONFIG_UDMABUF=y
+# CONFIG_DMABUF_MOVE_NOTIFY is not set
+# CONFIG_DMABUF_DEBUG is not set
+# CONFIG_DMABUF_SELFTESTS is not set
+CONFIG_DMABUF_HEAPS=y
+# CONFIG_DMABUF_SYSFS_STATS is not set
+CONFIG_DMABUF_HEAPS_SYSTEM=y
+# end of DMABUF options
+
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_UIO is not set
+# CONFIG_VFIO is not set
+# CONFIG_VIRT_DRIVERS is not set
+# CONFIG_VIRTIO_MENU is not set
+# CONFIG_VHOST_MENU is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+# end of Microsoft Hyper-V guest support
+
+# CONFIG_GREYBUS is not set
+# CONFIG_COMEDI is not set
+# CONFIG_STAGING is not set
+CONFIG_X86_PLATFORM_DEVICES=y
+# CONFIG_X86_PLATFORM_DRIVERS_DELL is not set
+# CONFIG_IBM_RTL is not set
+# CONFIG_SENSORS_HDAPS is not set
+
+#
+# Intel Speed Select Technology interface support
+#
+# CONFIG_INTEL_SPEED_SELECT_INTERFACE is not set
+# end of Intel Speed Select Technology interface support
+
+# CONFIG_INTEL_PUNIT_IPC is not set
+# CONFIG_INTEL_TURBO_MAX_3 is not set
+# CONFIG_INTEL_UNCORE_FREQ_CONTROL is not set
+# CONFIG_INTEL_SCU_PCI is not set
+CONFIG_PMC_ATOM=y
+# CONFIG_CHROME_PLATFORMS is not set
+# CONFIG_MELLANOX_PLATFORM is not set
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+
+#
+# Clock driver for ARM Reference designs
+#
+# CONFIG_ICST is not set
+# CONFIG_CLK_SP810 is not set
+# end of Clock driver for ARM Reference designs
+
+# CONFIG_XILINX_VCU is not set
+# CONFIG_HWSPINLOCK is not set
+
+#
+# Clock Source drivers
+#
+CONFIG_CLKEVT_I8253=y
+CONFIG_I8253_LOCK=y
+CONFIG_CLKBLD_I8253=y
+# end of Clock Source drivers
+
+# CONFIG_MAILBOX is not set
+# CONFIG_IOMMU_SUPPORT is not set
+
+#
+# Remoteproc drivers
+#
+# CONFIG_REMOTEPROC is not set
+# end of Remoteproc drivers
+
+#
+# Rpmsg drivers
+#
+# CONFIG_RPMSG_VIRTIO is not set
+# end of Rpmsg drivers
+
+#
+# SOC (System On Chip) specific Drivers
+#
+
+#
+# Amlogic SoC drivers
+#
+# end of Amlogic SoC drivers
+
+#
+# Broadcom SoC drivers
+#
+# end of Broadcom SoC drivers
+
+#
+# NXP/Freescale QorIQ SoC drivers
+#
+# end of NXP/Freescale QorIQ SoC drivers
+
+#
+# i.MX SoC drivers
+#
+# end of i.MX SoC drivers
+
+#
+# Enable LiteX SoC Builder specific drivers
+#
+# end of Enable LiteX SoC Builder specific drivers
+
+#
+# Qualcomm SoC drivers
+#
+# end of Qualcomm SoC drivers
+
+# CONFIG_SOC_TI is not set
+
+#
+# Xilinx SoC drivers
+#
+# end of Xilinx SoC drivers
+# end of SOC (System On Chip) specific Drivers
+
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+# CONFIG_MEMORY is not set
+# CONFIG_IIO is not set
+# CONFIG_NTB is not set
+# CONFIG_VME_BUS is not set
+# CONFIG_PWM is not set
+
+#
+# IRQ chip support
+#
+CONFIG_MADERA_IRQ=m
+# end of IRQ chip support
+
+# CONFIG_IPACK_BUS is not set
+# CONFIG_RESET_CONTROLLER is not set
+
+#
+# PHY Subsystem
+#
+# CONFIG_GENERIC_PHY is not set
+# CONFIG_PHY_CAN_TRANSCEIVER is not set
+# CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
+# CONFIG_PHY_INTEL_LGM_EMMC is not set
+# end of PHY Subsystem
+
+# CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+# end of Performance monitor support
+
+# CONFIG_RAS is not set
+# CONFIG_USB4 is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# end of Android
+
+CONFIG_DAX=y
+# CONFIG_NVMEM is not set
+
+#
+# HW tracing support
+#
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+# end of HW tracing support
+
+# CONFIG_FPGA is not set
+# CONFIG_TEE is not set
+# CONFIG_SIOX is not set
+# CONFIG_SLIMBUS is not set
+# CONFIG_INTERCONNECT is not set
+# CONFIG_COUNTER is not set
+# CONFIG_MOST is not set
+# end of Device Drivers
+
+#
+# Ubuntu Supplied Third-Party Device Drivers
+#
+CONFIG_UBUNTU_ODM_DRIVERS=y
+# CONFIG_UBUNTU_HOST is not set
+# end of Ubuntu Supplied Third-Party Device Drivers
+
+#
+# File systems
+#
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_VALIDATE_FS_PARSER=y
+CONFIG_FS_IOMAP=y
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_USE_FOR_EXT2=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+CONFIG_FS_DAX=y
+CONFIG_FS_POSIX_ACL=y
+CONFIG_EXPORTFS=y
+CONFIG_EXPORTFS_BLOCK_OPS=y
+CONFIG_FILE_LOCKING=y
+CONFIG_FS_ENCRYPTION=y
+CONFIG_FS_ENCRYPTION_ALGS=y
+CONFIG_FS_VERITY=y
+# CONFIG_FS_VERITY_DEBUG is not set
+CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_FANOTIFY=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
+# CONFIG_QUOTA is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_AUTOFS_FS=m
+CONFIG_FUSE_FS=y
+CONFIG_CUSE=m
+# CONFIG_VIRTIO_FS is not set
+# CONFIG_OVERLAY_FS is not set
+# CONFIG_SHIFT_FS is not set
+
+#
+# Caches
+#
+CONFIG_NETFS_SUPPORT=m
+CONFIG_NETFS_STATS=y
+CONFIG_FSCACHE=m
+CONFIG_FSCACHE_STATS=y
+# CONFIG_FSCACHE_DEBUG is not set
+CONFIG_CACHEFILES=m
+# CONFIG_CACHEFILES_DEBUG is not set
+# end of Caches
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+# end of CD-ROM/DVD Filesystems
+
+#
+# DOS/FAT/EXFAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
+CONFIG_EXFAT_FS=m
+CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS3_FS is not set
+# end of DOS/FAT/EXFAT/NT Filesystems
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_VMCORE=y
+CONFIG_PROC_VMCORE_DEVICE_DUMP=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_PROC_CHILDREN=y
+CONFIG_PROC_PID_ARCH_STATUS=y
+CONFIG_PROC_CPU_RESCTRL=y
+CONFIG_KERNFS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_TMPFS_XATTR=y
+CONFIG_TMPFS_INODE64=y
+CONFIG_HUGETLBFS=y
+CONFIG_HUGETLB_PAGE=y
+CONFIG_HUGETLB_PAGE_FREE_VMEMMAP=y
+# CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON is not set
+CONFIG_MEMFD_CREATE=y
+CONFIG_ARCH_HAS_GIGANTIC_PAGE=y
+CONFIG_CONFIGFS_FS=y
+# end of Pseudo filesystems
+
+# CONFIG_MISC_FILESYSTEMS is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_MAC_ROMAN is not set
+# CONFIG_NLS_MAC_CELTIC is not set
+# CONFIG_NLS_MAC_CENTEURO is not set
+# CONFIG_NLS_MAC_CROATIAN is not set
+# CONFIG_NLS_MAC_CYRILLIC is not set
+# CONFIG_NLS_MAC_GAELIC is not set
+# CONFIG_NLS_MAC_GREEK is not set
+# CONFIG_NLS_MAC_ICELAND is not set
+# CONFIG_NLS_MAC_INUIT is not set
+# CONFIG_NLS_MAC_ROMANIAN is not set
+# CONFIG_NLS_MAC_TURKISH is not set
+# CONFIG_NLS_UTF8 is not set
+CONFIG_UNICODE=y
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
+CONFIG_IO_WQ=y
+# end of File systems
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+CONFIG_KEYS_REQUEST_CACHE=y
+CONFIG_PERSISTENT_KEYRINGS=y
+CONFIG_ENCRYPTED_KEYS=y
+CONFIG_KEY_DH_OPERATIONS=y
+CONFIG_KEY_NOTIFICATIONS=y
+CONFIG_SECURITY_DMESG_RESTRICT=y
+CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_PATH=y
+CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
+CONFIG_HARDENED_USERCOPY=y
+# CONFIG_HARDENED_USERCOPY_FALLBACK is not set
+# CONFIG_HARDENED_USERCOPY_PAGESPAN is not set
+CONFIG_FORTIFY_SOURCE=y
+# CONFIG_STATIC_USERMODEHELPER is not set
+# CONFIG_SECURITY_LOADPIN is not set
+CONFIG_SECURITY_YAMA=y
+CONFIG_SECURITY_SAFESETID=y
+CONFIG_SECURITY_LOCKDOWN_LSM=y
+CONFIG_SECURITY_LOCKDOWN_LSM_EARLY=y
+CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y
+# CONFIG_LOCK_DOWN_KERNEL_FORCE_INTEGRITY is not set
+# CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY is not set
+# CONFIG_SECURITY_LANDLOCK is not set
+# CONFIG_INTEGRITY is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_LSM="landlock,lockdown,yama,integrity,apparmor"
+
+#
+# Kernel hardening options
+#
+
+#
+# Memory initialization
+#
+CONFIG_INIT_STACK_NONE=y
+CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
+# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set
+CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y
+# CONFIG_ZERO_CALL_USED_REGS is not set
+# end of Memory initialization
+# end of Kernel hardening options
+# end of Security options
+
+CONFIG_XOR_BLOCKS=m
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_SKCIPHER=y
+CONFIG_CRYPTO_SKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=y
+CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_KPP=y
+CONFIG_CRYPTO_ACOMP2=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_NULL2=y
+# CONFIG_CRYPTO_PCRYPT is not set
+CONFIG_CRYPTO_CRYPTD=m
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Public-key cryptography
+#
+CONFIG_CRYPTO_RSA=y
+CONFIG_CRYPTO_DH=y
+# CONFIG_CRYPTO_ECDH is not set
+# CONFIG_CRYPTO_ECDSA is not set
+# CONFIG_CRYPTO_ECRDSA is not set
+# CONFIG_CRYPTO_SM2 is not set
+# CONFIG_CRYPTO_CURVE25519 is not set
+# CONFIG_CRYPTO_CURVE25519_X86 is not set
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
+# CONFIG_CRYPTO_AEGIS128 is not set
+# CONFIG_CRYPTO_AEGIS128_AESNI_SSE2 is not set
+# CONFIG_CRYPTO_SEQIV is not set
+# CONFIG_CRYPTO_ECHAINIV is not set
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CFB is not set
+CONFIG_CRYPTO_CTR=y
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=y
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_OFB is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_KEYWRAP is not set
+# CONFIG_CRYPTO_NHPOLY1305_SSE2 is not set
+# CONFIG_CRYPTO_NHPOLY1305_AVX2 is not set
+# CONFIG_CRYPTO_ADIANTUM is not set
+# CONFIG_CRYPTO_ESSIV is not set
+
+#
+# Hash modes
+#
+# CONFIG_CRYPTO_CMAC is not set
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32C_INTEL=y
+# CONFIG_CRYPTO_CRC32 is not set
+# CONFIG_CRYPTO_CRC32_PCLMUL is not set
+# CONFIG_CRYPTO_XXHASH is not set
+# CONFIG_CRYPTO_BLAKE2B is not set
+# CONFIG_CRYPTO_BLAKE2S is not set
+# CONFIG_CRYPTO_BLAKE2S_X86 is not set
+CONFIG_CRYPTO_CRCT10DIF=y
+# CONFIG_CRYPTO_CRCT10DIF_PCLMUL is not set
+# CONFIG_CRYPTO_GHASH is not set
+# CONFIG_CRYPTO_POLY1305 is not set
+# CONFIG_CRYPTO_POLY1305_X86_64 is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD160 is not set
+CONFIG_CRYPTO_SHA1=y
+# CONFIG_CRYPTO_SHA1_SSSE3 is not set
+# CONFIG_CRYPTO_SHA256_SSSE3 is not set
+# CONFIG_CRYPTO_SHA512_SSSE3 is not set
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA512=y
+# CONFIG_CRYPTO_SHA3 is not set
+# CONFIG_CRYPTO_SM3 is not set
+# CONFIG_CRYPTO_STREEBOG is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_AES_TI is not set
+# CONFIG_CRYPTO_AES_NI_INTEL is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAMELLIA_X86_64 is not set
+# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set
+# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST5_AVX_X86_64 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_DES3_EDE_X86_64 is not set
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_CHACHA20 is not set
+# CONFIG_CRYPTO_CHACHA20_X86_64 is not set
+CONFIG_CRYPTO_SERPENT=m
+# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set
+# CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set
+# CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set
+# CONFIG_CRYPTO_SM4 is not set
+# CONFIG_CRYPTO_SM4_AESNI_AVX_X86_64 is not set
+# CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64 is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
+# CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set
+# CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_LZO=y
+# CONFIG_CRYPTO_842 is not set
+# CONFIG_CRYPTO_LZ4 is not set
+# CONFIG_CRYPTO_LZ4HC is not set
+# CONFIG_CRYPTO_ZSTD is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_DRBG_MENU is not set
+# CONFIG_CRYPTO_JITTERENTROPY is not set
+CONFIG_CRYPTO_HASH_INFO=y
+# CONFIG_CRYPTO_HW is not set
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
+CONFIG_X509_CERTIFICATE_PARSER=y
+CONFIG_PKCS8_PRIVATE_KEY_PARSER=m
+CONFIG_PKCS7_MESSAGE_PARSER=y
+CONFIG_PKCS7_TEST_KEY=m
+CONFIG_SIGNED_PE_FILE_VERIFICATION=y
+
+#
+# Certificates for signature checking
+#
+CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+CONFIG_MODULE_SIG_KEY_TYPE_RSA=y
+# CONFIG_MODULE_SIG_KEY_TYPE_ECDSA is not set
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
+CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
+CONFIG_SYSTEM_EXTRA_CERTIFICATE=y
+CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096
+CONFIG_SECONDARY_TRUSTED_KEYRING=y
+CONFIG_SYSTEM_BLACKLIST_KEYRING=y
+CONFIG_SYSTEM_BLACKLIST_HASH_LIST=""
+CONFIG_SYSTEM_REVOCATION_LIST=y
+CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"
+# end of Certificates for signature checking
+
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_PACKING=y
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_FIND_FIRST_BIT=y
+CONFIG_CORDIC=m
+# CONFIG_PRIME_NUMBERS is not set
+CONFIG_RATIONAL=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
+CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
+CONFIG_ARCH_USE_SYM_ANNOTATIONS=y
+
+#
+# Crypto library routines
+#
+CONFIG_CRYPTO_LIB_AES=y
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_CHACHA_GENERIC=m
+CONFIG_CRYPTO_LIB_CHACHA=m
+CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m
+CONFIG_CRYPTO_LIB_CURVE25519=m
+CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11
+CONFIG_CRYPTO_LIB_POLY1305_GENERIC=m
+CONFIG_CRYPTO_LIB_POLY1305=m
+CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
+CONFIG_CRYPTO_LIB_SHA256=y
+# end of Crypto library routines
+
+CONFIG_LIB_MEMNEQ=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=y
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+CONFIG_CRC64=m
+CONFIG_CRC4=m
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_CRC8=m
+CONFIG_XXHASH=y
+# CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_LZ4_DECOMPRESS=y
+CONFIG_ZSTD_DECOMPRESS=y
+CONFIG_XZ_DEC=y
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_SPARC=y
+CONFIG_XZ_DEC_BCJ=y
+CONFIG_XZ_DEC_TEST=m
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_LZ4=y
+CONFIG_DECOMPRESS_ZSTD=y
+CONFIG_INTERVAL_TREE=y
+CONFIG_ASSOCIATIVE_ARRAY=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAS_DMA=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_SWIOTLB=y
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_DMA_MAP_BENCHMARK is not set
+CONFIG_SGL_ALLOC=y
+CONFIG_CPUMASK_OFFSTACK=y
+CONFIG_CLZ_TAB=y
+CONFIG_IRQ_POLL=y
+CONFIG_MPILIB=y
+CONFIG_OID_REGISTRY=y
+CONFIG_HAVE_GENERIC_VDSO=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_VDSO_TIME_NS=y
+CONFIG_ARCH_HAS_PMEM_API=y
+CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y
+CONFIG_ARCH_HAS_COPY_MC=y
+CONFIG_ARCH_STACKWALK=y
+CONFIG_SBITMAP=y
+# end of Library routines
+
+#
+# Kernel hacking
+#
+
+#
+# printk and dmesg options
+#
+CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_CALLER is not set
+# CONFIG_STACKTRACE_BUILD_ID is not set
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
+CONFIG_CONSOLE_LOGLEVEL_QUIET=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
+CONFIG_BOOT_PRINTK_DELAY=y
+CONFIG_DYNAMIC_DEBUG=y
+CONFIG_DYNAMIC_DEBUG_CORE=y
+CONFIG_SYMBOLIC_ERRNAME=y
+CONFIG_DEBUG_BUGVERBOSE=y
+# end of printk and dmesg options
+
+#
+# Compile-time checks and compiler options
+#
+# CONFIG_DEBUG_INFO is not set
+CONFIG_FRAME_WARN=1024
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_READABLE_ASM is not set
+# CONFIG_HEADERS_INSTALL is not set
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_STACK_VALIDATION=y
+CONFIG_VMLINUX_MAP=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# end of Compile-time checks and compiler options
+
+#
+# Generic Kernel Debugging Instruments
+#
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
+CONFIG_MAGIC_SYSRQ_SERIAL=y
+CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
+CONFIG_DEBUG_FS=y
+CONFIG_DEBUG_FS_ALLOW_ALL=y
+# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set
+# CONFIG_DEBUG_FS_ALLOW_NONE is not set
+CONFIG_HAVE_ARCH_KGDB=y
+CONFIG_KGDB=y
+CONFIG_KGDB_HONOUR_BLOCKLIST=y
+CONFIG_KGDB_SERIAL_CONSOLE=y
+# CONFIG_KGDB_TESTS is not set
+CONFIG_KGDB_LOW_LEVEL_TRAP=y
+CONFIG_KGDB_KDB=y
+CONFIG_KDB_DEFAULT_ENABLE=0x1
+CONFIG_KDB_KEYBOARD=y
+CONFIG_KDB_CONTINUE_CATASTROPHIC=0
+CONFIG_ARCH_HAS_EARLY_DEBUG=y
+CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
+CONFIG_UBSAN=y
+# CONFIG_UBSAN_TRAP is not set
+CONFIG_CC_HAS_UBSAN_BOUNDS=y
+CONFIG_UBSAN_BOUNDS=y
+CONFIG_UBSAN_ONLY_BOUNDS=y
+CONFIG_UBSAN_SHIFT=y
+# CONFIG_UBSAN_DIV_ZERO is not set
+CONFIG_UBSAN_BOOL=y
+CONFIG_UBSAN_ENUM=y
+# CONFIG_UBSAN_ALIGNMENT is not set
+CONFIG_UBSAN_SANITIZE_ALL=y
+# CONFIG_TEST_UBSAN is not set
+CONFIG_HAVE_ARCH_KCSAN=y
+CONFIG_HAVE_KCSAN_COMPILER=y
+# CONFIG_KCSAN is not set
+# end of Generic Kernel Debugging Instruments
+
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_MISC=y
+
+#
+# Memory Debugging
+#
+# CONFIG_PAGE_EXTENSION is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_PAGE_OWNER is not set
+CONFIG_PAGE_POISONING=y
+# CONFIG_DEBUG_RODATA_TEST is not set
+CONFIG_ARCH_HAS_DEBUG_WX=y
+CONFIG_DEBUG_WX=y
+CONFIG_GENERIC_PTDUMP=y
+CONFIG_PTDUMP_CORE=y
+# CONFIG_PTDUMP_DEBUGFS is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+CONFIG_SCHED_STACK_END_CHECK=y
+CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VM_PGTABLE is not set
+CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
+# CONFIG_DEBUG_VIRTUAL is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+CONFIG_HAVE_ARCH_KASAN=y
+CONFIG_HAVE_ARCH_KASAN_VMALLOC=y
+CONFIG_CC_HAS_KASAN_GENERIC=y
+CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
+# CONFIG_KASAN is not set
+CONFIG_HAVE_ARCH_KFENCE=y
+CONFIG_KFENCE=y
+CONFIG_KFENCE_SAMPLE_INTERVAL=0
+CONFIG_KFENCE_NUM_OBJECTS=255
+CONFIG_KFENCE_STRESS_TEST_FAULTS=0
+# end of Memory Debugging
+
+# CONFIG_DEBUG_SHIRQ is not set
+
+#
+# Debug Oops, Lockups and Hangs
+#
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_PANIC_TIMEOUT=0
+CONFIG_LOCKUP_DETECTOR=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_HARDLOCKUP_DETECTOR_PERF=y
+CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y
+CONFIG_HARDLOCKUP_DETECTOR=y
+# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0
+CONFIG_DETECT_HUNG_TASK=y
+CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+# CONFIG_WQ_WATCHDOG is not set
+# CONFIG_TEST_LOCKUP is not set
+# end of Debug Oops, Lockups and Hangs
+
+#
+# Scheduler Debugging
+#
+CONFIG_SCHED_DEBUG=y
+CONFIG_SCHED_INFO=y
+CONFIG_SCHEDSTATS=y
+# end of Scheduler Debugging
+
+# CONFIG_DEBUG_TIMEKEEPING is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
+# CONFIG_WW_MUTEX_SELFTEST is not set
+# CONFIG_SCF_TORTURE_TEST is not set
+# CONFIG_CSD_LOCK_WAIT_DEBUG is not set
+# end of Lock Debugging (spinlocks, mutexes, etc...)
+
+# CONFIG_DEBUG_IRQFLAGS is not set
+CONFIG_STACKTRACE=y
+# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
+# CONFIG_DEBUG_KOBJECT is not set
+
+#
+# Debug kernel data structures
+#
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_PLIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_BUG_ON_DATA_CORRUPTION is not set
+# end of Debug kernel data structures
+
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_RCU_SCALE_TEST is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_REF_SCALE_TEST is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=60
+# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# end of RCU Debugging
+
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_USER_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_FENTRY=y
+CONFIG_HAVE_OBJTOOL_MCOUNT=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACING_SUPPORT=y
+# CONFIG_FTRACE is not set
+# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
+CONFIG_SAMPLES=y
+# CONFIG_SAMPLE_AUXDISPLAY is not set
+# CONFIG_SAMPLE_KOBJECT is not set
+# CONFIG_SAMPLE_KPROBES is not set
+# CONFIG_SAMPLE_HW_BREAKPOINT is not set
+# CONFIG_SAMPLE_KFIFO is not set
+# CONFIG_SAMPLE_KDB is not set
+# CONFIG_SAMPLE_CONFIGFS is not set
+# CONFIG_SAMPLE_WATCHDOG is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
+CONFIG_STRICT_DEVMEM=y
+# CONFIG_IO_STRICT_DEVMEM is not set
+
+#
+# x86 Debugging
+#
+CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
+# CONFIG_X86_VERBOSE_BOOTUP is not set
+CONFIG_EARLY_PRINTK=y
+# CONFIG_EARLY_PRINTK_DBGP is not set
+# CONFIG_EARLY_PRINTK_USB_XDBC is not set
+# CONFIG_DEBUG_TLBFLUSH is not set
+CONFIG_HAVE_MMIOTRACE_SUPPORT=y
+# CONFIG_X86_DECODER_SELFTEST is not set
+# CONFIG_IO_DELAY_0X80 is not set
+CONFIG_IO_DELAY_0XED=y
+# CONFIG_IO_DELAY_UDELAY is not set
+# CONFIG_IO_DELAY_NONE is not set
+# CONFIG_DEBUG_BOOT_PARAMS is not set
+# CONFIG_CPA_DEBUG is not set
+# CONFIG_DEBUG_ENTRY is not set
+# CONFIG_DEBUG_NMI_SELFTEST is not set
+CONFIG_X86_DEBUG_FPU=y
+# CONFIG_PUNIT_ATOM_DEBUG is not set
+# CONFIG_UNWINDER_ORC is not set
+CONFIG_UNWINDER_FRAME_POINTER=y
+# CONFIG_UNWINDER_GUESS is not set
+# end of x86 Debugging
+
+#
+# Kernel Testing and Coverage
+#
+# CONFIG_KUNIT is not set
+CONFIG_NOTIFIER_ERROR_INJECTION=m
+CONFIG_PM_NOTIFIER_ERROR_INJECT=m
+CONFIG_FUNCTION_ERROR_INJECTION=y
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_ARCH_HAS_KCOV=y
+CONFIG_CC_HAS_SANCOV_TRACE_PC=y
+# CONFIG_KCOV is not set
+CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_MIN_HEAP is not set
+# CONFIG_TEST_DIV64 is not set
+# CONFIG_KPROBES_SANITY_TEST is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_REED_SOLOMON_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_PERCPU_TEST is not set
+# CONFIG_ATOMIC64_SELFTEST is not set
+# CONFIG_TEST_HEXDUMP is not set
+# CONFIG_STRING_SELFTEST is not set
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_STRSCPY is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_SCANF is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_XARRAY is not set
+# CONFIG_TEST_OVERFLOW is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
+# CONFIG_TEST_IDA is not set
+# CONFIG_TEST_LKM is not set
+# CONFIG_TEST_BITOPS is not set
+# CONFIG_TEST_VMALLOC is not set
+# CONFIG_TEST_USER_COPY is not set
+# CONFIG_FIND_BIT_BENCHMARK is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_SYSCTL is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_TEST_STATIC_KEYS is not set
+# CONFIG_TEST_MEMCAT_P is not set
+# CONFIG_TEST_STACKINIT is not set
+# CONFIG_TEST_MEMINIT is not set
+# CONFIG_TEST_FREE_PAGES is not set
+# CONFIG_TEST_FPU is not set
+# CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set
+CONFIG_ARCH_USE_MEMTEST=y
+CONFIG_MEMTEST=y
+# end of Kernel Testing and Coverage
+# end of Kernel hacking
diff --git a/tests/spread/core24-suites/plugins/kernel/snapcraft.yaml b/tests/spread/core24-suites/plugins/kernel/snapcraft.yaml
new file mode 100644
index 0000000000..c46b2f1dfc
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/kernel/snapcraft.yaml
@@ -0,0 +1,73 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2021 Canonical Ltd
+name: pc-kernel
+summary: Kernel plugin test
+description: A stripped-down pc kernel to test the kernel plugin.
+
+grade: stable
+build-base: core24
+confinement: strict
+type: kernel
+adopt-info: kernel
+
+architectures:
+ - build-on: [amd64]
+ build-for: amd64
+
+parts:
+ kernel:
+ plugin: kernel
+ source: https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy
+ source-depth: 1
+ source-type: git
+ source-branch: master
+ stage-packages:
+ - linux-firmware
+ - wireless-regdb
+ kernel-kconfigfile: $SNAPCRAFT_PROJECT_DIR/config
+ kernel-kconfigflavour: "generic"
+ kernel-with-firmware: false
+ kernel-enable-zfs-support: true
+ kernel-build-efi-image: true
+ kernel-image-target:
+ amd64: bzImage
+ arm64: Image
+ armhf: zImage
+ kernel-initrd-firmware:
+ - firmware/regulatory.db
+ - firmware/regulatory.db.p7s
+ kernel-kconfigs:
+ - CONFIG_DEBUG_INFO=n
+ build-environment:
+ - PATH: "/usr/lib/ccache:${PATH}"
+ override-build: |
+ cd ${CRAFT_PART_SRC}
+ fakeroot ./debian/rules clean
+ cd ${CRAFT_PART_BUILD}
+ echo "Building kernel"
+ craftctl default
+ craftctl set version=$(git --git-dir=${CRAFT_PART_SRC}/.git describe --tags | cut -c 8-38)
+ override-prime: |
+ craftctl default
+ # Trim firmware
+ mkdir -p ${CRAFT_PRIME}/firmware.new
+ trim_tool="https://git.launchpad.net/~canonical-kernel-snaps/+git/kernel-snaps-uc22/plain/trim-firmware"
+ curl -s ${trim_tool} | bash -x /dev/stdin ${CRAFT_PRIME}
+ stage:
+ - -*Image-*
+ - -initrd*
+ - -kernel.img*
+
+build-packages:
+ - bison
+ - cpio
+ - curl
+ - debhelper
+ - dpkg-dev
+ - fakeroot
+ - flex
+ - gcc
+ - libfdt-dev
+ - libssl-dev
+ - libelf-dev
+ - sbsigntool
diff --git a/tests/spread/core24-suites/plugins/kernel/task.yaml b/tests/spread/core24-suites/plugins/kernel/task.yaml
new file mode 100644
index 0000000000..97474f2dc5
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/kernel/task.yaml
@@ -0,0 +1,18 @@
+summary: Craft Parts kernel plugin test
+manual: true
+kill-timeout: 180m
+
+systems:
+ - ubuntu-22.04-64
+
+restore: |
+ snapcraft clean --enable-experimental-plugins
+ rm -f ./*.snap
+
+execute: |
+ # Unset SNAPCRAFT_BUILD_ENVIRONMENT=host.
+ unset SNAPCRAFT_BUILD_ENVIRONMENT
+
+ rm -f ./*.snap
+ snapcraft --enable-experimental-plugins
+ ls -l pc-kernel_*_amd64.snap
diff --git a/tests/spread/core24-suites/plugins/matter-sdk/snapcraft.yaml b/tests/spread/core24-suites/plugins/matter-sdk/snapcraft.yaml
new file mode 100644
index 0000000000..3ed895a756
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/matter-sdk/snapcraft.yaml
@@ -0,0 +1,47 @@
+name: matter-lighting
+summary: Matter plugin test
+description: An lighting application to test the matter plugin.
+version: "1.0"
+
+base: core24
+
+grade: stable
+confinement: strict
+
+layout:
+ /mnt:
+ bind: $SNAP_COMMON/mnt
+
+apps:
+ matter-lighting:
+ daemon: simple
+ command: bin/lighting-app
+ install-mode: disable
+ plugs:
+ - network
+ - network-bind
+ - bluez
+ - avahi-control
+
+parts:
+ matter-sdk:
+ plugin: matter-sdk
+ matter-sdk-version: "1536ca20c5917578ca40ce509400e97b52751788" # use this commit with ptpython version fix; needs to be updated once matter sdk have a stable release
+
+ lighting:
+ plugin: nil
+ after: [matter-sdk]
+ override-build: |
+ # Source the Matter SDK environment variables
+ source $CRAFT_STAGE/matter-sdk-env.sh
+
+ # Build the lighting app for snapcraft spread testing purposes
+ cd ../../matter-sdk/build/examples/lighting-app/linux
+ gn gen out/build
+ ninja -C out/build
+
+ ldd out/build/chip-lighting-app
+
+ mkdir -p $CRAFT_PART_INSTALL/bin
+ cp out/build/chip-lighting-app $CRAFT_PART_INSTALL/bin/lighting-app
+
diff --git a/tests/spread/core24-suites/plugins/matter-sdk/task.yaml b/tests/spread/core24-suites/plugins/matter-sdk/task.yaml
new file mode 100644
index 0000000000..f293c114cd
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/matter-sdk/task.yaml
@@ -0,0 +1,50 @@
+summary: Craft Parts matter SDK plugin test
+manual: true
+kill-timeout: 180m
+
+systems:
+ - ubuntu-22.04-64
+
+prepare: |
+ #shellcheck source=tests/spread/tools/snapcraft-yaml.sh
+ . "$TOOLS_DIR/snapcraft-yaml.sh"
+ set_base "$SNAP/snap/snapcraft.yaml"
+
+restore: |
+ cd "$SNAP"
+ snapcraft clean
+ rm -f ./*.snap
+
+ #shellcheck source=tests/spread/tools/snapcraft-yaml.sh
+ . "$TOOLS_DIR/snapcraft-yaml.sh"
+ restore_yaml "snap/snapcraft.yaml"
+
+execute: |
+ cd "$SNAP"
+
+ # Build and install the snap
+ snapcraft
+ snap install "${SNAP}*.snap" --dangerous
+
+ start_time=$(date +"%Y-%m-%d %H:%M:%S")
+ snap start matter-lighting
+
+ # Check if storage path replacement from /tmp to SNAP_COMMON/mnt works
+ for file in /tmp/chip_*; do
+ if [ -e "$file" ]; then
+ echo "Error: $file should not exist."
+ exit 1
+ fi
+ done
+
+ if [ ! -e "${SNAP_COMMON/mnt/chip_*}" ]; then
+ echo "Error: ${SNAP_COMMON}/mnt/chip_* does not exist."
+ exit 1
+ fi
+
+ # Check if server initialization is complete for matter-lighting
+ if ! journalctl --since "$start_time" | grep matter-lighting | grep "CHIP:SVR: Server initialization complete"; then
+ echo "Error: matter-lighting initialization failed."
+ exit 1
+ fi
+
\ No newline at end of file
diff --git a/tests/spread/core24/python-hello/classic/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-hello/classic/snap/snapcraft.yaml
similarity index 100%
rename from tests/spread/core24/python-hello/classic/snap/snapcraft.yaml
rename to tests/spread/core24-suites/plugins/python-hello/classic/snap/snapcraft.yaml
diff --git a/tests/spread/core24/python-hello/poetry/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-hello/poetry/snap/snapcraft.yaml
similarity index 100%
rename from tests/spread/core24/python-hello/poetry/snap/snapcraft.yaml
rename to tests/spread/core24-suites/plugins/python-hello/poetry/snap/snapcraft.yaml
diff --git a/tests/spread/core24-suites/plugins/python-hello/poetry/src/pyproject.toml b/tests/spread/core24-suites/plugins/python-hello/poetry/src/pyproject.toml
new file mode 100644
index 0000000000..eef363c29b
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-hello/poetry/src/pyproject.toml
@@ -0,0 +1,18 @@
+[tool.poetry]
+name = "hello"
+version = "0.1.0"
+description = ""
+authors = ["Your Name "]
+
+[tool.poetry.dependencies]
+python = "^3.10"
+black = "^24.8.0"
+
+[tool.poetry.dev-dependencies]
+
+[build-system]
+requires = ["poetry-core>=1.0.0"]
+build-backend = "poetry.core.masonry.api"
+
+[tool.poetry.scripts]
+hello = "hello:main"
diff --git a/tests/spread/core24/python-hello/src/hello/__init__.py b/tests/spread/core24-suites/plugins/python-hello/src/hello/__init__.py
similarity index 100%
rename from tests/spread/core24/python-hello/src/hello/__init__.py
rename to tests/spread/core24-suites/plugins/python-hello/src/hello/__init__.py
diff --git a/tests/spread/core24-suites/plugins/python-hello/src/setup.py b/tests/spread/core24-suites/plugins/python-hello/src/setup.py
new file mode 100644
index 0000000000..b2f5b45efa
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-hello/src/setup.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python3
+
+from distutils.core import setup
+
+setup(
+ name="hello",
+ version="0.1",
+ entry_points={"console_scripts": ["hello=hello:main"]},
+ packages=["hello"],
+)
diff --git a/tests/spread/core24/python-hello/strict/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-hello/strict/snap/snapcraft.yaml
similarity index 100%
rename from tests/spread/core24/python-hello/strict/snap/snapcraft.yaml
rename to tests/spread/core24-suites/plugins/python-hello/strict/snap/snapcraft.yaml
diff --git a/tests/spread/core24/python-hello/task.yaml b/tests/spread/core24-suites/plugins/python-hello/task.yaml
similarity index 100%
rename from tests/spread/core24/python-hello/task.yaml
rename to tests/spread/core24-suites/plugins/python-hello/task.yaml
diff --git a/tests/spread/core24/python-hello/uv/snap/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-hello/uv/snap/snapcraft.yaml
similarity index 100%
rename from tests/spread/core24/python-hello/uv/snap/snapcraft.yaml
rename to tests/spread/core24-suites/plugins/python-hello/uv/snap/snapcraft.yaml
diff --git a/tests/spread/core24/python-hello/uv/src/hello/__init__.py b/tests/spread/core24-suites/plugins/python-hello/uv/src/hello/__init__.py
similarity index 100%
rename from tests/spread/core24/python-hello/uv/src/hello/__init__.py
rename to tests/spread/core24-suites/plugins/python-hello/uv/src/hello/__init__.py
diff --git a/tests/spread/core24/python-hello/uv/src/pyproject.toml b/tests/spread/core24-suites/plugins/python-hello/uv/src/pyproject.toml
similarity index 100%
rename from tests/spread/core24/python-hello/uv/src/pyproject.toml
rename to tests/spread/core24-suites/plugins/python-hello/uv/src/pyproject.toml
diff --git a/tests/spread/core24/python-hello/uv/src/uv.lock b/tests/spread/core24-suites/plugins/python-hello/uv/src/uv.lock
similarity index 100%
rename from tests/spread/core24/python-hello/uv/src/uv.lock
rename to tests/spread/core24-suites/plugins/python-hello/uv/src/uv.lock
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/bare-not-provisioned/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-symlinks/bare-not-provisioned/snapcraft.yaml
new file mode 100644
index 0000000000..d35c3b8087
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/bare-not-provisioned/snapcraft.yaml
@@ -0,0 +1,21 @@
+name: bare-not-provisioned
+version: "1.0"
+summary: Bare base without staged python
+description: |
+ If we use base bare staging python is mandatory. If the
+ interpreter is not staged, we must fail.
+
+grade: devel
+base: bare
+build-base: core24
+confinement: strict
+
+apps:
+ hello:
+ command: bin/hello
+
+parts:
+ python-sample:
+ plugin: python
+ source: src
+ python-packages: [black]
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/bare-not-provisioned/src b/tests/spread/core24-suites/plugins/python-symlinks/bare-not-provisioned/src
new file mode 120000
index 0000000000..5cd551cf26
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/bare-not-provisioned/src
@@ -0,0 +1 @@
+../src
\ No newline at end of file
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/bare-provisioned/expected-symlink b/tests/spread/core24-suites/plugins/python-symlinks/bare-provisioned/expected-symlink
new file mode 100644
index 0000000000..f89b49523d
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/bare-provisioned/expected-symlink
@@ -0,0 +1 @@
+../usr/bin/python3.12
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/bare-provisioned/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-symlinks/bare-provisioned/snapcraft.yaml
new file mode 100644
index 0000000000..e39953d510
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/bare-provisioned/snapcraft.yaml
@@ -0,0 +1,26 @@
+name: bare-provisioned
+version: "1.0"
+summary: Bare base with staged python
+description: |
+ If we use base bare staging python is mandatory, and the venv
+ symlink must point to the staged interpreter. The expected
+ symlink is python3 -> ../usr/bin/.
+
+grade: devel
+base: bare
+build-base: core24
+confinement: strict
+
+apps:
+ hello:
+ command: bin/hello
+
+parts:
+ python-sample:
+ plugin: python
+ source: src
+ python-packages: [black]
+ stage-packages:
+ - python3-minimal
+ - python3.12-minimal
+ - python3-venv
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/bare-provisioned/src b/tests/spread/core24-suites/plugins/python-symlinks/bare-provisioned/src
new file mode 120000
index 0000000000..5cd551cf26
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/bare-provisioned/src
@@ -0,0 +1 @@
+../src
\ No newline at end of file
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/classic-not-provisioned/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-symlinks/classic-not-provisioned/snapcraft.yaml
new file mode 100644
index 0000000000..de97344e0d
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/classic-not-provisioned/snapcraft.yaml
@@ -0,0 +1,22 @@
+name: classic-not-provisioned
+version: "1.0"
+summary: Classic confinement, python not staged
+description: |
+ Classic confinement requires the python interpreter to be
+ provisioned by the user because we can't rely on the host to
+ provide a compatible version. If a staged interpreter is not
+ found, we must fail.
+
+grade: devel
+base: core24
+confinement: classic
+
+apps:
+ hello:
+ command: bin/hello
+
+parts:
+ python-sample:
+ plugin: python
+ source: src
+ python-packages: [black]
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/classic-not-provisioned/src b/tests/spread/core24-suites/plugins/python-symlinks/classic-not-provisioned/src
new file mode 120000
index 0000000000..5cd551cf26
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/classic-not-provisioned/src
@@ -0,0 +1 @@
+../src
\ No newline at end of file
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/classic-provisioned/expected-symlink b/tests/spread/core24-suites/plugins/python-symlinks/classic-provisioned/expected-symlink
new file mode 100644
index 0000000000..f89b49523d
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/classic-provisioned/expected-symlink
@@ -0,0 +1 @@
+../usr/bin/python3.12
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/classic-provisioned/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-symlinks/classic-provisioned/snapcraft.yaml
new file mode 100644
index 0000000000..e2d4350492
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/classic-provisioned/snapcraft.yaml
@@ -0,0 +1,23 @@
+name: classic-provisioned
+version: "1.0"
+summary: Classic confinement with staged python
+description: |
+ Classic confinement requires the python interpreter to be
+ provisioned by the user because we can't rely on the host to
+ provide a compatible version. The expected venv symlink is
+ python3 -> ../usr/bin/.
+
+grade: devel
+base: core24
+confinement: classic
+
+apps:
+ hello:
+ command: bin/hello
+
+parts:
+ python-sample:
+ plugin: python
+ source: src
+ python-packages: [black]
+ stage-packages: [python3-minimal, python3.12-minimal]
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/classic-provisioned/src b/tests/spread/core24-suites/plugins/python-symlinks/classic-provisioned/src
new file mode 120000
index 0000000000..5cd551cf26
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/classic-provisioned/src
@@ -0,0 +1 @@
+../src
\ No newline at end of file
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/devmode-not-provisioned/expected-symlink b/tests/spread/core24-suites/plugins/python-symlinks/devmode-not-provisioned/expected-symlink
new file mode 100644
index 0000000000..a01d81c222
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/devmode-not-provisioned/expected-symlink
@@ -0,0 +1 @@
+/usr/bin/python3.12
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/devmode-not-provisioned/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-symlinks/devmode-not-provisioned/snapcraft.yaml
new file mode 100644
index 0000000000..f5b87b4668
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/devmode-not-provisioned/snapcraft.yaml
@@ -0,0 +1,22 @@
+name: devmode-not-provisioned
+version: "1.0"
+summary: Devmode confinement without staged python
+description: |
+ Devmode works like strict confinement and if we don't have a staged
+ python interpreter the venv symlink must point to the interpreter
+ provided by the base snap (which will appear as the root filesystem).
+ The expected link for core24 is python3 -> /usr/bin/python3.12.
+
+grade: devel
+base: core24
+confinement: devmode
+
+apps:
+ hello:
+ command: bin/hello
+
+parts:
+ python-sample:
+ plugin: python
+ source: src
+ python-packages: [black]
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/devmode-not-provisioned/src b/tests/spread/core24-suites/plugins/python-symlinks/devmode-not-provisioned/src
new file mode 120000
index 0000000000..5cd551cf26
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/devmode-not-provisioned/src
@@ -0,0 +1 @@
+../src
\ No newline at end of file
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/devmode-provisioned/expected-symlink b/tests/spread/core24-suites/plugins/python-symlinks/devmode-provisioned/expected-symlink
new file mode 100644
index 0000000000..f89b49523d
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/devmode-provisioned/expected-symlink
@@ -0,0 +1 @@
+../usr/bin/python3.12
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/devmode-provisioned/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-symlinks/devmode-provisioned/snapcraft.yaml
new file mode 100644
index 0000000000..88652dff30
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/devmode-provisioned/snapcraft.yaml
@@ -0,0 +1,22 @@
+name: devmode-provisioned
+version: "1.0"
+summary: Devmode confinement with staged python
+description: |
+ Devmode works like strict confinement so if python is staged, the
+ venv symlink must point to the staged interpreter. The expected
+ symlink is python3 -> ../usr/bin/.
+
+grade: devel
+base: core24
+confinement: devmode
+
+apps:
+ hello:
+ command: bin/hello
+
+parts:
+ python-sample:
+ plugin: python
+ source: src
+ python-packages: [black]
+ stage-packages: [python3-minimal, python3.12-minimal]
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/devmode-provisioned/src b/tests/spread/core24-suites/plugins/python-symlinks/devmode-provisioned/src
new file mode 120000
index 0000000000..5cd551cf26
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/devmode-provisioned/src
@@ -0,0 +1 @@
+../src
\ No newline at end of file
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/provisioned-from-another-part/expected-symlink b/tests/spread/core24-suites/plugins/python-symlinks/provisioned-from-another-part/expected-symlink
new file mode 100644
index 0000000000..f89b49523d
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/provisioned-from-another-part/expected-symlink
@@ -0,0 +1 @@
+../usr/bin/python3.12
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/provisioned-from-another-part/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-symlinks/provisioned-from-another-part/snapcraft.yaml
new file mode 100644
index 0000000000..856229f30d
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/provisioned-from-another-part/snapcraft.yaml
@@ -0,0 +1,29 @@
+name: provisioned-from-another-part
+version: "1.0"
+summary: Python staged from a different part
+description: |
+ It doesn't matter if a python interpreter is staged from
+ the part using the python plugin or from a different part,
+ the venv symlink should be the same (as long as the part
+ using the python plugin is built after the part that
+ stages the python interpreter). The expected symlink is
+ python3 -> ../usr/bin/.
+
+grade: devel
+base: core24
+confinement: strict
+
+apps:
+ hello:
+ command: bin/hello
+
+parts:
+ python-sample:
+ after: [other-part]
+ plugin: python
+ source: src
+ python-packages: [black]
+
+ other-part:
+ plugin: nil
+ stage-packages: [python3-minimal, python3.12-minimal]
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/provisioned-from-another-part/src b/tests/spread/core24-suites/plugins/python-symlinks/provisioned-from-another-part/src
new file mode 120000
index 0000000000..5cd551cf26
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/provisioned-from-another-part/src
@@ -0,0 +1 @@
+../src
\ No newline at end of file
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/src/hello/__init__.py b/tests/spread/core24-suites/plugins/python-symlinks/src/hello/__init__.py
new file mode 100644
index 0000000000..e3095b2229
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/src/hello/__init__.py
@@ -0,0 +1,2 @@
+def main():
+ print("hello world")
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/src/setup.py b/tests/spread/core24-suites/plugins/python-symlinks/src/setup.py
new file mode 100644
index 0000000000..b2f5b45efa
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/src/setup.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python3
+
+from distutils.core import setup
+
+setup(
+ name="hello",
+ version="0.1",
+ entry_points={"console_scripts": ["hello=hello:main"]},
+ packages=["hello"],
+)
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/strict-gnome-extension/expected-symlink b/tests/spread/core24-suites/plugins/python-symlinks/strict-gnome-extension/expected-symlink
new file mode 100644
index 0000000000..a01d81c222
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/strict-gnome-extension/expected-symlink
@@ -0,0 +1 @@
+/usr/bin/python3.12
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/strict-gnome-extension/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-symlinks/strict-gnome-extension/snapcraft.yaml
new file mode 100644
index 0000000000..4a057d8d02
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/strict-gnome-extension/snapcraft.yaml
@@ -0,0 +1,22 @@
+name: strict-gnome-extension
+version: "1.0"
+summary: Strict with gnome extension
+description: |
+ Using the gnome extension must not affect the python
+ interpreter symlink. With strict confinement, the expected
+ symlink for base core24 is python3 -> /usr/bin/python3.12.
+
+grade: devel
+base: core24
+confinement: strict
+
+apps:
+ hello:
+ command: bin/hello
+ extensions: [gnome]
+
+parts:
+ python-sample:
+ plugin: python
+ source: src
+ python-packages: [black]
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/strict-gnome-extension/src b/tests/spread/core24-suites/plugins/python-symlinks/strict-gnome-extension/src
new file mode 120000
index 0000000000..5cd551cf26
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/strict-gnome-extension/src
@@ -0,0 +1 @@
+../src
\ No newline at end of file
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/strict-not-provisioned/expected-symlink b/tests/spread/core24-suites/plugins/python-symlinks/strict-not-provisioned/expected-symlink
new file mode 100644
index 0000000000..a01d81c222
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/strict-not-provisioned/expected-symlink
@@ -0,0 +1 @@
+/usr/bin/python3.12
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/strict-not-provisioned/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-symlinks/strict-not-provisioned/snapcraft.yaml
new file mode 100644
index 0000000000..1d7f5281c8
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/strict-not-provisioned/snapcraft.yaml
@@ -0,0 +1,22 @@
+name: strict-not-provisioned
+version: "1.0"
+summary: Strict confinement without staged python
+description: |
+ When we have a strict snap with no staged python the venv
+ symlink must point to the interpreter provided by the base
+ snap (which will appear as the root filesystem). The expected
+ link for core24 is python3 -> /usr/bin/python3.12.
+
+grade: devel
+base: core24
+confinement: strict
+
+apps:
+ hello:
+ command: bin/hello
+
+parts:
+ python-sample:
+ plugin: python
+ source: src
+ python-packages: [black]
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/strict-not-provisioned/src b/tests/spread/core24-suites/plugins/python-symlinks/strict-not-provisioned/src
new file mode 120000
index 0000000000..5cd551cf26
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/strict-not-provisioned/src
@@ -0,0 +1 @@
+../src
\ No newline at end of file
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/strict-provisioned/expected-symlink b/tests/spread/core24-suites/plugins/python-symlinks/strict-provisioned/expected-symlink
new file mode 100644
index 0000000000..f89b49523d
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/strict-provisioned/expected-symlink
@@ -0,0 +1 @@
+../usr/bin/python3.12
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/strict-provisioned/snapcraft.yaml b/tests/spread/core24-suites/plugins/python-symlinks/strict-provisioned/snapcraft.yaml
new file mode 100644
index 0000000000..1ae0cf82fc
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/strict-provisioned/snapcraft.yaml
@@ -0,0 +1,22 @@
+name: strict-provisioned
+version: "1.0"
+summary: Strict confinement with staged python
+description: |
+ When confinement is strict and python is staged, the venv
+ symlink must point to the staged interpreter. The expected
+ symlink is python3 -> ../usr/bin/.
+
+grade: devel
+base: core24
+confinement: strict
+
+apps:
+ hello:
+ command: bin/hello
+
+parts:
+ python-sample:
+ plugin: python
+ source: src
+ python-packages: [black]
+ stage-packages: [python3-minimal, python3.12-minimal]
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/strict-provisioned/src b/tests/spread/core24-suites/plugins/python-symlinks/strict-provisioned/src
new file mode 120000
index 0000000000..5cd551cf26
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/strict-provisioned/src
@@ -0,0 +1 @@
+../src
\ No newline at end of file
diff --git a/tests/spread/core24-suites/plugins/python-symlinks/task.yaml b/tests/spread/core24-suites/plugins/python-symlinks/task.yaml
new file mode 100644
index 0000000000..93f44313de
--- /dev/null
+++ b/tests/spread/core24-suites/plugins/python-symlinks/task.yaml
@@ -0,0 +1,43 @@
+summary: >-
+ Verify python symlinks with different base and confinement
+ configurations
+
+environment:
+ # base core24, strict confinement: use provisioned if available
+ SNAP/strict_not_provisioned: strict-not-provisioned
+ SNAP/strict_provisioned: strict-provisioned
+
+ # base core24, classic confinement: requires provisioning
+ SNAP/classic_not_provisioned: classic-not-provisioned
+ SNAP/classic_provisioned: classic-provisioned
+
+ # base core24, devmode: same as strict
+ SNAP/devmode_not_provisioned: devmode-not-provisioned
+ SNAP/devmode_provisioned: devmode-provisioned
+
+ # base bare: requires provisioning
+ SNAP/bare_not_provisioned: bare-not-provisioned
+ SNAP/bare_provisioned: bare-provisioned
+
+ # provisioned from a different part
+ SNAP/provisioned_from_another_part: provisioned-from-another-part
+
+ # using the gnome extension
+ SNAP/strict_gnome_extension: strict-gnome-extension
+
+restore: |
+ cd "${SNAP}"
+ snapcraft clean
+ rm -f ./*.snap
+
+execute: |
+ cd "${SNAP}"
+
+ if [ -f expected-symlink ]; then
+ snapcraft prime
+ ls -l prime/bin
+ [ -x prime/bin/hello ]
+ [ "$(readlink prime/bin/python3)" == "$(cat expected-symlink)" ]
+ else
+ snapcraft prime 2>&1 | MATCH "No suitable Python interpreter found, giving up."
+ fi
diff --git a/tests/spread/core24/npm-reentrant/task.yaml b/tests/spread/core24/npm-reentrant/task.yaml
deleted file mode 100644
index 9ad7c48d5d..0000000000
--- a/tests/spread/core24/npm-reentrant/task.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-summary: Pull, then Build, a Node snap
-
-execute: |
- snapcraft pull
- snapcraft build
- snapcraft pack
- test -f npm-reentrant*.snap
-
-restore: |
- snapcraft clean
- rm -f ./*.snap