diff --git a/nixos/modules/services/x11/desktop-managers/cde.nix b/nixos/modules/services/x11/desktop-managers/cde.nix index e0b4fb0e7bfb..ad4b5d27f9d9 100644 --- a/nixos/modules/services/x11/desktop-managers/cde.nix +++ b/nixos/modules/services/x11/desktop-managers/cde.nix @@ -36,7 +36,7 @@ in { name = "cmsd"; protocol = "udp"; user = "root"; - server = "${pkgs.cdesktopenv}/opt/dt/bin/rpc.cmsd"; + server = "${pkgs.cdesktopenv}/bin/rpc.cmsd"; extraConfig = '' type = RPC UNLISTED rpc_number = 100068 @@ -64,7 +64,7 @@ in { services.xserver.desktopManager.session = [ { name = "CDE"; start = '' - exec ${pkgs.cdesktopenv}/opt/dt/bin/Xsession + exec ${pkgs.cdesktopenv}/bin/Xsession ''; }]; }; diff --git a/pkgs/desktops/cdesktopenv/0001-all-remove-deprecated-sys_errlist-and-replace-with-A.patch b/pkgs/desktops/cdesktopenv/0001-all-remove-deprecated-sys_errlist-and-replace-with-A.patch deleted file mode 100644 index 4382cdcf35b0..000000000000 --- a/pkgs/desktops/cdesktopenv/0001-all-remove-deprecated-sys_errlist-and-replace-with-A.patch +++ /dev/null @@ -1,336 +0,0 @@ -From 67f62e5a8acd70d30f7067f1f44ac7b15c67011a Mon Sep 17 00:00:00 2001 -From: Peter Howkins -Date: Mon, 2 Nov 2020 05:30:08 +0000 -Subject: [PATCH] all: remove deprecated sys_errlist[] and replace with ANSI C - strerror() - ---- - cde/config/imake/imake.c | 13 ------------- - cde/lib/tt/bin/dbck/spec.C | 8 -------- - cde/lib/tt/lib/tt_options.h | 12 ------------ - cde/programs/dtcm/dtcm/dnd.c | 4 ---- - cde/programs/dtcm/libDtCmP/util.c | 5 +---- - .../dthelp/parser.ccdf/volumegen/Volumegen.c | 1 - - cde/programs/dtimsstart/remote.c | 4 ---- - cde/programs/dtimsstart/start.c | 12 +++--------- - cde/programs/dtinfo/dtinfo/src/external-api/comm.c | 5 +---- - .../dtksh/ksh93/src/lib/libast/string/fmterror.c | 9 +-------- - .../dtksh/ksh93/src/lib/libast/string/strerror.c | 8 +------- - cde/programs/dtlogin/dm.h | 7 +------ - 12 files changed, 8 insertions(+), 80 deletions(-) - -diff --git a/cde/config/imake/imake.c b/cde/config/imake/imake.c -index 574af7c7..83834aa7 100644 ---- a/cde/config/imake/imake.c -+++ b/config/imake/imake.c -@@ -242,19 +242,6 @@ extern int errno; - #include - #include "imakemdep.h" - --/* -- * This define of strerror is copied from (and should be identical to) -- * Xos.h, which we don't want to include here for bootstrapping reasons. -- */ --#if defined(X_NOT_STDC_ENV) || (defined(sun) && !defined(SVR4)) --# ifndef strerror --extern char *sys_errlist[]; --extern int sys_nerr; --# define strerror(n) \ -- (((n) >= 0 && (n) < sys_nerr) ? sys_errlist[n] : "unknown error") --# endif --#endif -- - #define TRUE 1 - #define FALSE 0 - -diff --git a/cde/lib/tt/bin/dbck/spec.C b/cde/lib/tt/bin/dbck/spec.C -index 18bba3fb..eaf2d6b7 100644 ---- a/cde/lib/tt/bin/dbck/spec.C -+++ b/lib/tt/bin/dbck/spec.C -@@ -44,14 +44,6 @@ - #include "ttdbck.h" - #include "tt_db_server_consts.h" - --#if !defined(OPT_STRERROR) --// No strerror(), fake it --char * --strerror(int e) --{ -- return ((e sys_nerr) -- (void) fprintf(stderr, ":Unknown error %d", saveerr); -- else -- (void) fprintf(stderr, ":%s", sys_errlist[saveerr]); -+ (void) fprintf(stderr, ":%s", strerror(saveerr)); - } - #endif - -diff --git a/cde/programs/dthelp/parser.ccdf/volumegen/Volumegen.c b/cde/programs/dthelp/parser.ccdf/volumegen/Volumegen.c -index d9a42943..08de4809 100644 ---- a/cde/programs/dthelp/parser.ccdf/volumegen/Volumegen.c -+++ b/programs/dthelp/parser.ccdf/volumegen/Volumegen.c -@@ -56,7 +56,6 @@ - typedef int Boolean; - - /* extern int errno; */ --/* extern char *sys_errlist[]; */ - /* extern int sys_nerr; */ - - static void GenTopicList ( -diff --git a/cde/programs/dtimsstart/remote.c b/cde/programs/dtimsstart/remote.c -index 68773673..71d32977 100644 ---- a/cde/programs/dtimsstart/remote.c -+++ b/programs/dtimsstart/remote.c -@@ -37,10 +37,6 @@ - #include /* for X_ChangeHosts */ - #include /* for XA_STRING */ - --#if !defined(__linux__) && !defined(CSRG_BASED) --extern char *sys_errlist[]; --#endif -- - static char *conf_msg_id = STR_CONFDATA; - - #define CONF_MSG_ID_LEN strlen(conf_msg_id) -diff --git a/cde/programs/dtimsstart/start.c b/cde/programs/dtimsstart/start.c -index 78fc2a38..1dafa189 100644 ---- a/cde/programs/dtimsstart/start.c -+++ b/programs/dtimsstart/start.c -@@ -27,14 +27,10 @@ - #include - #include - #include -+#include - - #if (defined(__linux__) || defined(CSRG_BASED)) && !defined(_NFILE) - #define _NFILE FOPEN_MAX --#endif -- --#if !defined(__linux__) && !defined(CSRG_BASED) --extern char *sys_errlist[]; --extern int sys_nerr; - #endif - - /* local functions */ -@@ -599,8 +595,7 @@ static int invoke_ims(UserSelection *sel) - - pid = fork(); - if (pid == (pid_t) -1) { -- put_xims_log("fork failed [%s]", -- (errno <= sys_nerr) ? sys_errlist[errno] : NULL, 0, 0); -+ put_xims_log("fork failed [%s]", strerror(errno), 0, 0); - #ifdef DEBUG - perror("fork"); - #endif -@@ -617,8 +612,7 @@ static int invoke_ims(UserSelection *sel) - #endif - execl(SH_PATH, "sh", "-c", renv->cmdbuf, NULL); - -- put_xims_log("%s: exec failed [%s]", SH_PATH, -- (errno <= sys_nerr) ? sys_errlist[errno] : NULL, 0, 0); -+ put_xims_log("%s: exec failed [%s]", SH_PATH, strerror(errno) , 0, 0); - /* perror(SH_PATH); */ - sleep(1); - _exit(1); -diff --git a/cde/programs/dtinfo/dtinfo/src/external-api/comm.c b/cde/programs/dtinfo/dtinfo/src/external-api/comm.c -index d61ccb7a..6aa2fc91 100644 ---- a/cde/programs/dtinfo/dtinfo/src/external-api/comm.c -+++ b/programs/dtinfo/dtinfo/src/external-api/comm.c -@@ -53,9 +53,6 @@ - #include - #endif - --extern char *sys_errlist[]; -- -- - static OliasEvent *current_event; - static int reply_status; - #define NO_REPLY 0 -@@ -332,7 +329,7 @@ wait_for_reply (Widget toplevel) - XtAppWarningMsg (XtWidgetToApplicationContext (toplevel), - "communicationsError", "select", - "Olias API", "Select failed: %s", -- &sys_errlist[errno], &num_params); -+ strerror(errno), &num_params); - continue; - } - continue; -diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/string/fmterror.c b/cde/programs/dtksh/ksh93/src/lib/libast/string/fmterror.c -index 313b67bc..8dd87ab8 100644 ---- a/cde/programs/dtksh/ksh93/src/lib/libast/string/fmterror.c -+++ b/programs/dtksh/ksh93/src/lib/libast/string/fmterror.c -@@ -92,14 +92,7 @@ - #endif - #include - --extern __MANGLE__ int sys_nerr; --extern __MANGLE__ char* sys_errlist[]; -- - char* - fmterror __PARAM__((int err), (err)) __OTORP__(int err;){ -- static char msg[28]; -- -- if (err > 0 && err <= sys_nerr) return(sys_errlist[err]); -- sfsprintf(msg, sizeof(msg), "Error %d", err); -- return(msg); -+ return strerror(err); - } -diff --git a/cde/programs/dtksh/ksh93/src/lib/libast/string/strerror.c b/cde/programs/dtksh/ksh93/src/lib/libast/string/strerror.c -index 7686a54d..a6aa7ce8 100644 ---- a/cde/programs/dtksh/ksh93/src/lib/libast/string/strerror.c -+++ b/programs/dtksh/ksh93/src/lib/libast/string/strerror.c -@@ -108,18 +108,12 @@ NoN(strerror) - - #include - --extern __MANGLE__ int sys_nerr; --extern __MANGLE__ char* sys_errlist[]; - - char* - strerror __PARAM__((int err), (err)) __OTORP__(int err;) - #line 25 - { -- static char msg[28]; -- -- if (err > 0 && err <= sys_nerr) return(sys_errlist[err]); -- sfsprintf(msg, sizeof(msg), "Error %d", err); -- return(msg); -+ return strerror(err); - } - - #endif -diff --git a/cde/programs/dtlogin/dm.h b/cde/programs/dtlogin/dm.h -index 3e0f2499..e67edc3c 100644 ---- a/cde/programs/dtlogin/dm.h -+++ b/programs/dtlogin/dm.h -@@ -68,8 +68,7 @@ - # include /* for passwd structure */ - # include - # include /* for exit(), malloc(), abort() */ --# include /* for string functions, bcopy(), -- sys_errlist */ -+# include /* for string functions, bcopy() */ - # include /* for NGROUPS */ - # include /* for fd_set */ - # include /* for Internet socket stuff */ -@@ -475,10 +474,6 @@ struct verify_info { - * - ***************************************************************************/ - --#if !defined(__linux__) && !defined(CSRG_BASED) --extern char *sys_errlist[]; /* system error msgs */ --extern int sys_nerr; /* system error msgs */ --#endif - extern XrmDatabase XresourceDB; - - --- -2.28.0 - diff --git a/pkgs/desktops/cdesktopenv/2.3.2.patch b/pkgs/desktops/cdesktopenv/2.3.2.patch deleted file mode 100644 index cfd027694d79..000000000000 --- a/pkgs/desktops/cdesktopenv/2.3.2.patch +++ /dev/null @@ -1,106 +0,0 @@ -From 8db8a2290683acf94f02e855af668a864d6001c2 Mon Sep 17 00:00:00 2001 -Subject: [PATCH 1/2] installCDE: don't hardcode path to whoami ---- - cde/admin/IntegTools/dbTools/installCDE.src | 11 ++--------- - cde/admin/IntegTools/dbTools/mkProd | 9 +-------- - 2 files changed, 3 insertions(+), 17 deletions(-) - -diff --git a/cde/admin/IntegTools/dbTools/installCDE.src b/cde/admin/IntegTools/dbTools/installCDE.src -index a00fefd1..233b4a96 100755 ---- a/cde/admin/IntegTools/dbTools/installCDE.src -+++ b/admin/IntegTools/dbTools/installCDE.src -@@ -52,7 +52,7 @@ LOGFILE="installCDE.$$.log" - - Log() - { -- /bin/echo "$1" | tee -a $LOGFILE -+ echo "$1" | tee -a $LOGFILE - } - - MakeTarball() -@@ -537,14 +537,7 @@ XCOMM - PLATFORM_SCRIPT_DIR=hp - fi - -- if [ "$PLATFORM" = "aix" ]; -- then -- USER=$(/bin/whoami) -- else -- USER=$(/usr/bin/whoami) -- fi -- -- if [ "$USER" != "root" ]; -+ if [ $(whoami) != "root" ]; - then - echo "" - echo "You should be root to run this script. Continuing anyway." -diff --git a/cde/admin/IntegTools/dbTools/mkProd b/cde/admin/IntegTools/dbTools/mkProd -index 44591fab..413a77e8 100755 ---- a/cde/admin/IntegTools/dbTools/mkProd -+++ b/admin/IntegTools/dbTools/mkProd -@@ -96,13 +96,6 @@ else # Build system = HP - PLATFORM=hp-ux - fi - --if [ $PLATFORM = "aix" ]; --then -- USER=`/bin/whoami` --else -- USER=`/usr/bin/whoami` --fi -- - awkit() { - awk ' - BEGIN { -@@ -504,7 +497,7 @@ doit() - } - # set permissions for non-links - if [ "${TYPE%link}" = "$TYPE" ]; then -- if [ "$USER" = "root" ]; then -+ if [ $(whoami) = "root" ]; then - chgrp $GROUP $DEST || - echo "ERROR: \"chgrp $GROUP $DEST\" failed" >&2 - chown $OWNER $DEST || --- -2.25.0 - - -From 9221c55a5f811986eaf0e01301827c294ac2e29b Mon Sep 17 00:00:00 2001 -Subject: [PATCH 2/2] tt_type_comp: use CppCmd definition ---- - cde/lib/tt/bin/tt_type_comp/Imakefile | 4 +++- - cde/lib/tt/lib/tt_options.h | 5 +++++ - 2 files changed, 8 insertions(+), 1 deletion(-) - -diff --git a/cde/lib/tt/bin/tt_type_comp/Imakefile b/cde/lib/tt/bin/tt_type_comp/Imakefile -index 92179208..62434929 100644 ---- a/cde/lib/tt/bin/tt_type_comp/Imakefile -+++ b/lib/tt/bin/tt_type_comp/Imakefile -@@ -8,7 +8,9 @@ EXTRA_LOAD_FLAGS = ExtraLoadFlags $(UNSHARED_CXXLIB) - - #include "../../tooltalk.tmpl" - --DEFINES = -+CPP_PROGRAM = CppCmd -+CPP_DEFINES = -DCPP_PROGRAM="\"$(CPP_PROGRAM)\"" -+DEFINES = $(CPP_DEFINES) - INCLUDES = $(TIRPCINC) -I../../lib -I../../slib - - DEPLIBS = ../../slib/libstt.a TtClientDepLibs -diff --git a/cde/lib/tt/lib/tt_options.h b/cde/lib/tt/lib/tt_options.h -index 4315daa8..e23bb9e5 100644 ---- a/cde/lib/tt/lib/tt_options.h -+++ b/lib/tt/lib/tt_options.h -@@ -529,4 +529,9 @@ - - #endif - -+#ifdef CPP_PROGRAM -+# undef OPT_CPP_PATH -+# define OPT_CPP_PATH CPP_PROGRAM -+#endif -+ - #endif /* _TT_OPTIONS_H */ --- -2.25.0 - diff --git a/pkgs/desktops/cdesktopenv/default.nix b/pkgs/desktops/cdesktopenv/default.nix index 0124220346af..fd8de27b2fde 100644 --- a/pkgs/desktops/cdesktopenv/default.nix +++ b/pkgs/desktops/cdesktopenv/default.nix @@ -1,106 +1,67 @@ { lib, stdenv, fetchurl -, fetchpatch -, xorgproto, libX11, bison, ksh, perl, gnum4 +, libX11, bison, ksh, perl , libXinerama, libXt, libXext, libtirpc, motif, libXft, xbitmaps -, libjpeg, libXmu, libXdmcp, libXScrnSaver, symlinkJoin, bdftopcf -, ncompress, mkfontdir, tcl-8_5, libXaw, libxcrypt, gcc, glibcLocales -, autoPatchelfHook, libredirect, makeWrapper, xset, xrdb, fakeroot +, libjpeg, libXmu, libXdmcp, libXScrnSaver, bdftopcf +, ncompress, mkfontdir, tcl, libXaw, libxcrypt, glibcLocales +, autoPatchelfHook, makeWrapper, xset, xrdb +, autoreconfHook, opensp, flex, libXpm , rpcsvc-proto }: -let - x11ProjectRoot = symlinkJoin { - name = "x11ProjectRoot"; - paths = [ - bdftopcf mkfontdir - xset # fonts - xrdb # session load - ]; - }; -in stdenv.mkDerivation rec { - version = "2.3.2"; +stdenv.mkDerivation rec { pname = "cde"; + version = "2.5.1"; src = fetchurl { url = "mirror://sourceforge/cdesktopenv/cde-${version}.tar.gz"; - sha256 = "029rljhi5r483x8rzdpl8625z0wx8r7k2m0364nbw66h5pig9lbx"; + hash = "sha256-caslezz2kbljwApv5igDPH345PK2YqQUTi1YZgvM1Dw="; }; - # remove with next release - patches = [ - ./2.3.2.patch - ./0001-all-remove-deprecated-sys_errlist-and-replace-with-A.patch + postPatch = '' + for f in $(find . -type f ! -path doc/common); do + sed -i \ + -e "s|/usr/dt|$out|g" \ + -e "s|/etc/dt|$out/etc|g" \ + -e "s|\$(DESTDIR)/var|$out/var|g" \ + "$f" + done - (fetchpatch { - name = "binutils-2.36.patch"; - url = "https://github.com/cdesktopenv/cde/commit/0b7849e210a99a413ddeb52a0eb5aef9a08504a0.patch"; - sha256 = "0wlhs617hws3rwln9v74y1nw27n3pp7jkpnxlala7k5y64506ipj"; - stripLen = 1; - }) - ]; + for f in $(find . -type f -name "Makefile.am"); do + sed -i \ + -e "/chown /d" \ + -e "/chgrp /d" \ + -e "s/chmod 4755/chmod 755/g" \ + "$f" + done + + substituteInPlace configure.ac \ + --replace "-I/usr/include/tirpc" "-I${libtirpc.dev}/include/tirpc" + + patchShebangs autogen.sh config.rpath contrib programs + ''; buildInputs = [ libX11 libXinerama libXt libXext libtirpc motif libXft xbitmaps - libjpeg libXmu libXdmcp libXScrnSaver tcl-8_5 libXaw ksh libxcrypt + libjpeg libXmu libXdmcp libXScrnSaver tcl libXaw ksh libxcrypt + libXpm ]; nativeBuildInputs = [ - bison ncompress autoPatchelfHook makeWrapper fakeroot + bison ncompress autoPatchelfHook makeWrapper + autoreconfHook bdftopcf mkfontdir xset xrdb opensp perl flex rpcsvc-proto ]; - # build fails otherwise - enableParallelBuilding = false; - # Workaround build failure on -fno-common toolchains: - # ld: raima/startup.o:/build/cde-2.3.2/lib/DtSearch/raima/dbtype.h:408: multiple definition of - # `__SK__'; raima/alloc.o:/build/cde-2.3.2/lib/DtSearch/raima/dbtype.h:408: first defined here - env.NIX_CFLAGS_COMPILE = "-fcommon"; - - makeFlags = [ - "World" - "BOOTSTRAPCFLAGS=-I${xorgproto}/include/X11" - "IMAKECPP=cpp" - "LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive" - # Workaround for dtdocbook issue with tcl 8.6.13. - # TODO: this might be possible to remove when updating CDE - "TCLLIB=-ltcl8.5" - ]; + enableParallelBuilding = true; preConfigure = '' - # binutils 2.37 fix - fixupList=( - "config/cf/Imake.tmpl" - "config/util/crayar.sh" - "config/util/crayar.sh" - "programs/dtwm/Makefile.tmpl" - ) - for toFix in "''${fixupList[@]}"; do - substituteInPlace "$toFix" --replace "clq" "cq" - done + export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive" ''; - preBuild = '' - while IFS= read -r -d ''$'\0' i; do - substituteInPlace "$i" --replace /usr/dt $out/opt/dt - done < <(find "." -type f -exec grep -Iq /usr/dt {} \; -and -print0) + configureFlags = [ + "--with-tcl=${tcl}/lib" + ]; - cat >> config/cf/site.def << EOF -#define MakeFlagsToShellFlags(makeflags,shellcmd) set -e -#define KornShell ${ksh}/bin/ksh -#define PerlCmd ${perl}/bin/perl -#define M4Cmd ${gnum4}/bin/m4 -#define X11ProjectRoot ${x11ProjectRoot} -#define CppCmd ${gcc}/bin/cpp -TIRPCINC = -I${libtirpc.dev}/include/tirpc -EOF - - patchShebangs . - unset AR - ''; - - installPhase = '' - fakeroot admin/IntegTools/dbTools/installCDE -s . -DontRunScripts - - mkdir -p $out/bin - mv $out/opt/dt/bin/dtmail $out/bin + preInstall = '' + mkdir -p $out/opt/dt/bin ''; meta = with lib; { @@ -108,6 +69,6 @@ EOF homepage = "https://sourceforge.net/projects/cdesktopenv/"; license = licenses.lgpl2; maintainers = [ ]; - platforms = [ "i686-linux" "x86_64-linux" ]; + platforms = platforms.linux; }; }