From 06a1bba81ad6caf460d84afbc7b67048276ada20 Mon Sep 17 00:00:00 2001 From: "Galantsev, Dmitrii" Date: Mon, 12 Aug 2024 18:42:50 -0500 Subject: [PATCH] INSTALL - Fix rdc groups and lock file check This fixes issues like: 1. /run/lock/rdcd.lock: Bad file descriptor Failed to determine owner of lock file.: Numerical result out of range 2. rdc.service: Failed to determine group credentials: No such process rdc.service: Failed at step GROUP spawning rdcd: No such process Change-Id: I0ef5eb6ab72d036a3ea8dcb81f7a9108d279f7d6 Signed-off-by: Galantsev, Dmitrii [ROCm/rdc commit: c015f0fcaa07c4377562603a42f687bdfdfc9499] --- projects/rdc/src/DEBIAN_postinst.in | 28 +++++++++++++++++++--------- projects/rdc/src/RPM_rpm_post.in | 16 +++++++++++++--- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/projects/rdc/src/DEBIAN_postinst.in b/projects/rdc/src/DEBIAN_postinst.in index 800b4dda55..c436feb9e7 100755 --- a/projects/rdc/src/DEBIAN_postinst.in +++ b/projects/rdc/src/DEBIAN_postinst.in @@ -56,15 +56,25 @@ do_update_alternatives(){ # it already exists # https://www.debian.org/doc/debian-policy/ch-opersys.html#users-and-groups do_create_rdc_user() { - adduser \ - --system \ - --quiet \ - --home /nonexistent \ - --no-create-home \ - --disabled-password \ - rdc + # create rdc group + if ! getent group rdc > /dev/null 2>&1 ; then + addgroup --system rdc + fi + + # create rdc user + if ! getent passwd rdc > /dev/null 2>&1 ; then + adduser \ + --system \ + --quiet \ + --home /nonexistent \ + --no-create-home \ + --disabled-password \ + --ingroup rdc \ + rdc + fi + # only add render if it exists - if [ $(getent group render) ]; then + if getent group render > /dev/null 2>&1 ; then usermod -a -G render rdc fi @@ -78,7 +88,7 @@ do_create_rdc_user() { create_rdc_service() { #Symlink RDC Service if [ -d /run/systemd/system ]; then - ln -s -f -r /@CPACK_PACKAGING_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBEXECDIR@/rdc/rdc.service /lib/systemd/system/rdc.service + ln -s -f -r @CPACK_PACKAGING_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBEXECDIR@/rdc/rdc.service /lib/systemd/system/rdc.service fi } diff --git a/projects/rdc/src/RPM_rpm_post.in b/projects/rdc/src/RPM_rpm_post.in index ba972fa072..bf7e8f0298 100755 --- a/projects/rdc/src/RPM_rpm_post.in +++ b/projects/rdc/src/RPM_rpm_post.in @@ -53,9 +53,19 @@ do_update_alternatives(){ # https://fedoraproject.org/wiki/Packaging%3aUsersAndGroups do_create_rdc_user() { - useradd -r -s /sbin/nologin rdc + + # create rdc group + if ! getent group rdc > /dev/null 2>&1 ; then + groupadd --system rdc + fi + + # create rdc user + if ! getent passwd rdc > /dev/null 2>&1 ; then + useradd -r -g rdc -s /sbin/nologin rdc + fi + # only add render if it exists - if [ $(getent group render) ]; then + if getent group render > /dev/null 2>&1 ; then usermod -a -G render rdc fi @@ -68,7 +78,7 @@ do_create_rdc_user() { create_rdc_service() { if [ -d /run/systemd/system ]; then - ln -s -f -r /@CPACK_PACKAGING_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBEXECDIR@/rdc/rdc.service @DISTRO_ROOT@/rdc.service + ln -s -f -r @CPACK_PACKAGING_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBEXECDIR@/rdc/rdc.service @DISTRO_ROOT@/rdc.service fi }