From 27e17c316db18fe8357c57e86a3104fc4fdb877e Mon Sep 17 00:00:00 2001 From: leonarski_f Date: Mon, 20 May 2024 11:40:30 +0200 Subject: [PATCH] Build RPM for DKMS driver --- .gitlab-ci.yml | 12 ++++++++---- CMakeLists.txt | 13 +++++++++---- VERSION | 2 +- fpga/pcie_driver/postinstall.sh | 14 ++++++++++++++ fpga/pcie_driver/preuninstall.sh | 8 ++++++++ 5 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 fpga/pcie_driver/postinstall.sh create mode 100644 fpga/pcie_driver/preuninstall.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 95f167d0..140944cc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -315,10 +315,12 @@ release: script: - export PACKAGE_VERSION=`head -n1 VERSION` - export PACKAGE_REGISTRY_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/jungfraujoch/${PACKAGE_VERSION}" - - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch-writer.${PACKAGE_VERSION}-1.el8.x86_64.rpm "${PACKAGE_REGISTRY_URL}/jfjoch-writer.${PACKAGE_VERSION}-1.el8.x86_64.rpm"' - - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch.${PACKAGE_VERSION}-1.el8.x86_64.rpm "${PACKAGE_REGISTRY_URL}/jfjoch.${PACKAGE_VERSION}-1.el8.x86_64.rpm"' - - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch-writer.${PACKAGE_VERSION}-1.el8.x86_64.rpm "${PACKAGE_REGISTRY_URL}/jfjoch-writer.el8.x86_64.rpm"' - - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch.${PACKAGE_VERSION}-1.el8.x86_64.rpm "${PACKAGE_REGISTRY_URL}/jfjoch.el8.x86_64.rpm"' + - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch-driver-dkms-${PACKAGE_VERSION}-1.el8.noarch.rpm "${PACKAGE_REGISTRY_URL}/jfjoch-driver-dkms-${PACKAGE_VERSION}-1.el8.noarch.rpm"' + - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch-driver-dkms-${PACKAGE_VERSION}-1.el8.noarch.rpm "${PACKAGE_REGISTRY_URL}/jfjoch-driver-dkms.el8.noarch.rpm"' + - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch-writer-${PACKAGE_VERSION}-1.el8.x86_64.rpm "${PACKAGE_REGISTRY_URL}/jfjoch-writer-${PACKAGE_VERSION}-1.el8.x86_64.rpm"' + - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch-writer-${PACKAGE_VERSION}-1.el8.x86_64.rpm "${PACKAGE_REGISTRY_URL}/jfjoch-writer.el8.x86_64.rpm"' + - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch-${PACKAGE_VERSION}-1.el8.x86_64.rpm "${PACKAGE_REGISTRY_URL}/jfjoch-${PACKAGE_VERSION}-1.el8.x86_64.rpm"' + - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch-${PACKAGE_VERSION}-1.el8.x86_64.rpm "${PACKAGE_REGISTRY_URL}/jfjoch.el8.x86_64.rpm"' - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch_driver.tar.gz "${PACKAGE_REGISTRY_URL}/jfjoch_driver.tar.gz"' - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch_frontend.tar.gz "${PACKAGE_REGISTRY_URL}/jfjoch_frontend.tar.gz"' - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file jfjoch_fpga_pcie_100g.mcs "${PACKAGE_REGISTRY_URL}/jfjoch_fpga_pcie_100g.mcs"' @@ -331,5 +333,7 @@ release: --assets-link "{\"name\":\"jfjoch_fpga_pcie_100g.mcs\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch_fpga_pcie_100g.mcs\"}" --assets-link "{\"name\":\"jfjoch-${PACKAGE_VERSION}-1.el8.x86_64.rpm\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch-${PACKAGE_VERSION}-1.el8.x86_64.rpm\"}" --assets-link "{\"name\":\"jfjoch-writer-${PACKAGE_VERSION}-1.el8.x86_64.rpm\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch-writer-${PACKAGE_VERSION}-1.el8.x86_64.rpm\"}" + --assets-link "{\"name\":\"jfjoch-driver-dkms-${PACKAGE_VERSION}-1.el8.noarch.rpm\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch-driver-dkms-${PACKAGE_VERSION}-1.el8.noarch.rpm\"}" --assets-link "{\"name\":\"jfjoch.el8.x86_64.rpm\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch.el8.x86_64.rpm\"}" --assets-link "{\"name\":\"jfjoch-writer.el8.x86_64.rpm\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch-writer.el8.x86_64.rpm\"}" + --assets-link "{\"name\":\"jfjoch-driver-dkms.el8.noarch.rpm\",\"url\":\"${PACKAGE_REGISTRY_URL}/jfjoch-driver-dkms.el8.noarch.rpm\"}" diff --git a/CMakeLists.txt b/CMakeLists.txt index da4327e9..704d7d66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -131,9 +131,10 @@ ADD_CUSTOM_COMMAND(OUTPUT frontend_ui/build/index.html ADD_CUSTOM_TARGET(frontend DEPENDS frontend_ui/build/index.html) INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/fpga/pcie_driver/ - DESTINATION share/jfjoch/kernel - COMPONENT jfjoch - FILES_MATCHING PATTERN "*.c" PATTERN "*.h" PATTERN "Makefile" PATTERN "dkms.conf" PATTERN "install.dkms") + DESTINATION /usr/src/jfjoch-1.0.0 + COMPONENT driver-dkms + FILES_MATCHING PATTERN "*.c" PATTERN "*.h" PATTERN "Makefile" PATTERN "dkms.conf") + INSTALL(DIRECTORY frontend_ui/build/ DESTINATION share/jfjoch/frontend COMPONENT jfjoch ) IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) @@ -143,7 +144,7 @@ ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) # Set Package Name set(CPACK_PACKAGE_NAME "jfjoch") -SET(CPACK_COMPONENTS_ALL jfjoch writer) +SET(CPACK_COMPONENTS_ALL jfjoch writer driver-dkms) SET(CPACK_GENERATOR RPM) SET(CPACK_RPM_COMPONENT_INSTALL ON) SET(CPACK_RPM_MAIN_COMPONENT jfjoch) @@ -153,6 +154,10 @@ SET(CPACK_RPM_PACKAGE_VERSION ${JFJOCH_VERSION}) SET(CPACK_RPM_PACKAGE_RELEASE 1) SET(CPACK_RPM_PACKAGE_SUMMARY "Jungfraujoch data acquisition system") SET(CPACK_RPM_PACKAGE_DESCRIPTION "Jungfraujoch") +SET(CPACK_RPM_DRIVER-DKMS_PACKAGE_REQUIRES "dkms, gcc, bash, sed") +SET(CPACK_RPM_DRIVER-DKMS_PACKAGE_ARCHITECTURE "noarch") +SET(CPACK_RPM_DRIVER-DKMS_POST_INSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/fpga/pcie_driver/postinstall.sh) +SET(CPACK_RPM_DRIVER-DKMS_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/fpga/pcie_driver/preuninstall.sh) # Set The Vendor Name SET(CPACK_PACKAGE_VENDOR "Paul Scherrer Institut") diff --git a/VERSION b/VERSION index 3c029ddf..d17f0653 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.0-rc.3 +1.0.0-rc.4 diff --git a/fpga/pcie_driver/postinstall.sh b/fpga/pcie_driver/postinstall.sh new file mode 100644 index 00000000..b6d9f2bc --- /dev/null +++ b/fpga/pcie_driver/postinstall.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# Taken from https://schneide.blog/2015/08/10/packaging-kernel-modulesdrivers-using-dkms/ + +VERSION="1.0.0" + +occurrences=`/usr/sbin/dkms status | grep jfjoch | grep ${VERSION} | wc -l` + +if [ ! occurrences > 0 ]; then + /usr/sbin/dkms add -m jfjoch -v ${VERSION} +fi +/usr/sbin/dkms build -m jfjoch -v ${VERSION} +/usr/sbin/dkms install -m jfjoch -v ${VERSION} + +exit 0 \ No newline at end of file diff --git a/fpga/pcie_driver/preuninstall.sh b/fpga/pcie_driver/preuninstall.sh new file mode 100644 index 00000000..9c3a6f4f --- /dev/null +++ b/fpga/pcie_driver/preuninstall.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# Taken from https://schneide.blog/2015/08/10/packaging-kernel-modulesdrivers-using-dkms/ + +VERSION="1.0.0" + +/usr/sbin/dkms remove -m jfjoch -v ${VERSION} --all + +exit 0