Unverified Commit 5e3022fb authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

Merge pull request #240320 from wegank/cdesktopenv-bump

cdesktopenv: 2.3.2 -> 2.5.1
parents 7fb56186 a5b7078a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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
      '';
    }];
  };
+0 −336
Original line number Diff line number Diff line
From 67f62e5a8acd70d30f7067f1f44ac7b15c67011a Mon Sep 17 00:00:00 2001
From: Peter Howkins <flibble@users.sf.net>
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 <stdarg.h>
 #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) ? sys_errlist[e] : "unknown");
-}
-#endif
 
 Spec::
 Spec()     
diff --git a/cde/lib/tt/lib/tt_options.h b/cde/lib/tt/lib/tt_options.h
index e23bb9e5..de3a30e2 100644
--- a/cde/lib/tt/lib/tt_options.h
+++ b/lib/tt/lib/tt_options.h
@@ -107,10 +107,6 @@
  * OPT_CPP_OPTIONS - string, options to pass to cpp. For example, on
  *   some platforms -B is used so C++ comments are processed by cpp.
  *
- *
- * OPT_STRERROR - set if strerror() is available, otherwise we assume
- *   global symbol sys_errlist is defined in errno.h.
- *
  * OPT_SVR4_GETMNTENT - set to use new SVR4 flavor of getmntent.
  *
  * OPT_LOCKF_MNTTAB - set to hold a lockf lock on MNTTAB while doing
@@ -242,7 +238,6 @@
 # undef  OPT_SYSINFO
 # define OPT_CPP_PATH		"/usr/ccs/lib/cpp"
 # define OPT_CPP_OPTIONS	""
-# define OPT_STRERROR
 # undef  OPT_SVR4_GETMNTENT
 # undef  OPT_LOCKF_MNTENT
 # define OPT_DEFINE_SIG_PF
@@ -273,7 +268,6 @@
 # undef  OPT_SYSINFO
 # define OPT_CPP_PATH		"/usr/lib/cpp"
 # define OPT_CPP_OPTIONS	 "-B"
-# undef  OPT_STRERROR
 # undef  OPT_SVR4_GETMNTENT
 # undef  OPT_LOCKF_MNTENT
 # define OPT_LOCAL_MOUNT_TYPE	MNTTYPE_42
@@ -302,7 +296,6 @@
 # define OPT_CATGETS
 # undef  OPT_GETDTABLESIZE
 # define OPT_SYSINFO
-# define OPT_STRERROR
 # define OPT_CPP_PATH		"/usr/ccs/lib/cpp"
 # define OPT_CPP_OPTIONS	"-B"
 # define OPT_SVR4_GETMNTENT
@@ -389,7 +382,6 @@
 #  define OPT_CPP_PATH		"/opt/langtools/lbin/cpp"
 # endif
 # define OPT_CPP_OPTIONS	""
-# define OPT_STRERROR
 # undef  OPT_SVR4_GETMNTENT
 # undef  OPT_LOCKF_MNTENT
 # define OPT_LOCAL_MOUNT_TYPE	MNTTYPE_HFS
@@ -415,7 +407,6 @@
 # undef  OPT_SYSINFO
 # define OPT_CPP_PATH		"/usr/bin/cpp"
 # define OPT_CPP_OPTIONS	 ""
-# define OPT_STRERROR
 # undef  OPT_SVR4_GETMNTENT
 # undef  OPT_LOCKF_MNTENT
 # define OPT_LOCAL_MOUNT_TYPE	"ext2fs"
@@ -446,7 +437,6 @@
 # undef  OPT_SYSINFO
 # define OPT_CPP_PATH		"/usr/libexec/cpp"
 # define OPT_CPP_OPTIONS	""
-# define OPT_STRERROR
 # undef  OPT_SVR4_GETMNTENT
 # undef  OPT_LOCKF_MNTENT
 # define OPT_LOCAL_MOUNT_TYPE	MNTTYPE_UFS
@@ -479,7 +469,6 @@
 #  define OPT_CPP_PATH		"/usr/libexec/cpp"
 # endif
 # define OPT_CPP_OPTIONS	""
-# define OPT_STRERROR
 # undef  OPT_SVR4_GETMNTENT
 # undef  OPT_LOCKF_MNTENT
 # define OPT_LOCAL_MOUNT_TYPE	MNTTYPE_UFS
@@ -509,7 +498,6 @@
 # undef  OPT_SYSINFO
 # define OPT_CPP_PATH		"/usr/bin/cpp"
 # define OPT_CPP_OPTIONS	""
-# define OPT_STRERROR
 # undef  OPT_SVR4_GETMNTENT
 # undef  OPT_LOCKF_MNTENT
 # define OPT_LOCAL_MOUNT_TYPE	MNTTYPE_UFS
diff --git a/cde/programs/dtcm/dtcm/dnd.c b/cde/programs/dtcm/dtcm/dnd.c
index abc58c12..f37f19a6 100644
--- a/cde/programs/dtcm/dtcm/dnd.c
+++ b/programs/dtcm/dtcm/dnd.c
@@ -72,10 +72,6 @@
 
 static Bool lookForButton(Display *, XEvent *, XPointer);
 
-#if !defined(__linux__) && !defined(CSRG_BASED)
-extern char	*sys_errlist[];
-#endif
-
 extern int	drag_load_proc(char*, Calendar *);
 static char	dnd_filename[20];
 
diff --git a/cde/programs/dtcm/libDtCmP/util.c b/cde/programs/dtcm/libDtCmP/util.c
index d33b8ba1..6de4739d 100644
--- a/cde/programs/dtcm/libDtCmP/util.c
+++ b/programs/dtcm/libDtCmP/util.c
@@ -306,10 +306,7 @@ syserr(char *msg, int a1, int a2, int a3)
 #if 0
 	/* print the error, if any */
 	if (saveerr != 0) {
-		if (saveerr < 0 || saveerr > 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	<X11/Xproto.h>		/* for X_ChangeHosts */
 #include	<X11/Xatom.h>		/* 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	<sys/wait.h>
 #include	<setjmp.h>
 #include	<unistd.h>
+#include    <errno.h>
 
 #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 <sys/select.h>
 #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 <ast.h>
 
-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 <ast.h>
 
-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       <pwd.h>                 /* for passwd structure            */
 # include	<stdio.h>
 # include	<stdlib.h>		/* for exit(), malloc(), abort()   */
-# include	<string.h>		/* for string functions, bcopy(),
-					   sys_errlist			   */
+# include	<string.h>		/* for string functions, bcopy()   */
 # include	<sys/param.h>		/* for NGROUPS			   */
 # include	<sys/types.h>   	/* for fd_set			   */
 # include	<netinet/in.h>		/* 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
+0 −106
Original line number Diff line number Diff line
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
+41 −80
Original line number Diff line number Diff line
{ 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
  '';

  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)

    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
    export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive"
  '';

  installPhase = ''
    fakeroot admin/IntegTools/dbTools/installCDE -s . -DontRunScripts
  configureFlags = [
    "--with-tcl=${tcl}/lib"
  ];

    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;
  };
}