Bug 255929 - New port: x11-wm/nscde: modern and functional CDE
Summary: New port: x11-wm/nscde: modern and functional CDE
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: Nuno Teixeira
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-05-16 18:10 UTC by Chris Moerz
Modified: 2021-08-09 15:00 UTC (History)
1 user (show)

See Also:


Attachments
Port diff (815.58 KB, patch)
2021-05-16 18:10 UTC, Chris Moerz
no flags Details | Diff
Updated port diff (815.60 KB, patch)
2021-05-18 17:55 UTC, Chris Moerz
eduardo: maintainer-approval+
Details | Diff
Updated port diff (817.70 KB, patch)
2021-05-20 16:46 UTC, Chris Moerz
no flags Details | Diff
Updated port diff (817.96 KB, patch)
2021-05-23 14:29 UTC, Chris Moerz
no flags Details | Diff
Updated port diff (817.98 KB, patch)
2021-05-23 14:38 UTC, Chris Moerz
no flags Details | Diff
Updated port diff (818.48 KB, patch)
2021-05-23 19:18 UTC, Chris Moerz
no flags Details | Diff
Updated port diff (818.48 KB, patch)
2021-05-25 09:33 UTC, Chris Moerz
no flags Details | Diff
Updated port diff (824.14 KB, patch)
2021-05-27 15:01 UTC, Chris Moerz
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Chris Moerz 2021-05-16 18:10:29 UTC
Created attachment 225000 [details]
Port diff

NsCDE is a retro but powerful UNIX desktop environment which resembles CDE look (and partially feel) but with a more powerful and flexible framework beneath-the-surface, more suited for 21st century unix-like and Linux systems and user requirements than original CDE.

See also https://github.com/NsCDE/NsCDE
Comment 1 Nuno Teixeira freebsd_committer 2021-05-17 06:05:44 UTC
Hello Chris,

Thanks for adding a new port.

Makefile needs better organization between sections:

`portclippy Makefile`:

# PORTNAME block
PORTNAME
DISTVERSION
CATEGORIES

# Maintainer block
MAINTAINER
COMMENT

# License block
LICENSE

# Dependencies
-RUN_DEPENDS
PATCH_DEPENDS
BUILD_DEPENDS
+RUN_DEPENDS

# USES block
USES
-USE_XORG
USE_GITHUB
GH_ACCOUNT
+USE_XORG

# USES=shebangfix related variables
SHEBANG_FILES

# Standard bsd.port.mk variables
DOCSDIR

-NSCDE_HELPERS

# Options definitions
OPTIONS_DEFINE
+OPTIONS_DEFAULT
OPTIONS_GROUP
OPTIONS_GROUP_INTEGRATION
-OPTIONS_DEFAULT

# Options descriptions
+AUDIO_DESC
+BROWSER_DESC
CALC_DESC

-CALC_RUN_DEPENDS

+ED_DESC
FM_DESC
+XSCR_DESC

# Options helpers
-FM_RUN_DEPENDS

-ED_DESC

-ED_RUN_DEPENDS

-AUDIO_DESC

AUDIO_RUN_DEPENDS

-BROWSER_DESC

BROWSER_RUN_DEPENDS
+CALC_RUN_DEPENDS
+ED_RUN_DEPENDS
+FM_RUN_DEPENDS
+XSCR_RUN_DEPENDS

# Unknown variables
# WARNING:
# Portclippy did not recognize the following variables.
# They could be local variables only, misspellings of
# framework variables, or Portclippy needs to be made aware
# of them.  Please double check them.
#
# Prefix them with an _ to tell Portclippy to ignore them.
# This is also an important signal for other contributors
# who are working on your port.  It removes any doubt of
# whether they are framework variables or not and whether
# they are safe to remove/rename or not.
+NSCDE_HELPERS
RANDR_DESC
RANDR_RUN_DEPENDS

-XSCR_DESC

-XSCR_RUN_DEPENDS

Please update you diff.

Thanks
Comment 2 Nuno Teixeira freebsd_committer 2021-05-18 06:31:25 UTC
Hello!

Nice that you created a second new port! Thanks

To start this port needs a better organization,
`portclippy Makefile`:

# PORTNAME block
PORTNAME
DISTVERSION
CATEGORIES

# Maintainer block
MAINTAINER
COMMENT

# License block
LICENSE

# Dependencies
-RUN_DEPENDS
PATCH_DEPENDS
BUILD_DEPENDS
+RUN_DEPENDS

# USES block
USES
-USE_XORG
USE_GITHUB
GH_ACCOUNT
+USE_XORG

# USES=shebangfix related variables
SHEBANG_FILES

# Standard bsd.port.mk variables
DOCSDIR

-NSCDE_HELPERS

# Options definitions
OPTIONS_DEFINE
+OPTIONS_DEFAULT
OPTIONS_GROUP
OPTIONS_GROUP_INTEGRATION
-OPTIONS_DEFAULT

# Options descriptions
+AUDIO_DESC
+BROWSER_DESC
CALC_DESC

-CALC_RUN_DEPENDS

+ED_DESC
FM_DESC
+XSCR_DESC

# Options helpers
-FM_RUN_DEPENDS

-ED_DESC

-ED_RUN_DEPENDS

-AUDIO_DESC

AUDIO_RUN_DEPENDS

-BROWSER_DESC

BROWSER_RUN_DEPENDS
+CALC_RUN_DEPENDS
+ED_RUN_DEPENDS
+FM_RUN_DEPENDS
+XSCR_RUN_DEPENDS

# Unknown variables
# WARNING:
# Portclippy did not recognize the following variables.
# They could be local variables only, misspellings of
# framework variables, or Portclippy needs to be made aware
# of them.  Please double check them.
#
# Prefix them with an _ to tell Portclippy to ignore them.
# This is also an important signal for other contributors
# who are working on your port.  It removes any doubt of
# whether they are framework variables or not and whether
# they are safe to remove/rename or not.
+NSCDE_HELPERS
RANDR_DESC
RANDR_RUN_DEPENDS

-XSCR_DESC

-XSCR_RUN_DEPENDS

Please use portclippy tool to fix it
Comment 3 Nuno Teixeira freebsd_committer 2021-05-18 06:32:48 UTC
(In reply to Nuno Teixeira from comment #2)
Duplicate info, ignore
Comment 4 Chris Moerz 2021-05-18 17:55:40 UTC
Created attachment 225070 [details]
Updated port diff

Thanks for the feedback; somehow portclippy/portfmt slipped by me. Checked with portlint but that didn't give me all these details. Will keep that ready for the future.

corrected Makefile and cross checked with portclippy
Comment 5 Nuno Teixeira freebsd_committer 2021-05-19 06:05:22 UTC
(In reply to Chris Moerz from comment #4)
Looks good.

I will now do poudriere testport in 8 jails (140amd64|i386, 130amd64|i386, 122amd64|122i386 and 114amd64|i386) and if builds are ok, I will create a review in Phabricator.

I will send you a link of that review so you can see the progress.
Comment 6 Nuno Teixeira freebsd_committer 2021-05-19 09:38:25 UTC
BUILD_DEPENDS=  gcc:lang/gcc \ [1]
                pkg-config:devel/pkgconf \ [2]
                docbook-xsl>0:textproc/docbook-xsl \
                xsltproc:textproc/libxslt

[1] Does it really needs gcc? did you try with FreeBSD default llvm in base?
Can you try build without calling gcc?

[2] "USES pkgconfig:build" instead of BUILD_DEPENDS, this list must be alphabetacly ordered, e.g.,
USES= pkgconfig:build python:3.7+ shebangfix xorg 

https://docs.freebsd.org/en/books/porters-handbook/uses/#uses-pkgconfig
Comment 7 Chris Moerz 2021-05-20 16:46:00 UTC
Created attachment 225130 [details]
Updated port diff

Thanks for the additional feedback. Sorry about missing the USES issue and gcc. Really should have realized that myself. Looks like I was on autopilot and just went with the easy way out...

Both are fixed. I've switched to clang now as well and confirmed on 12.2-p6 that it's working. I'm working on a poudriere setup for 13.0-RELEASE. If you want me to complete this check first, please let me know and I'll post an update when it completes.
Comment 8 Nuno Teixeira freebsd_committer 2021-05-21 06:39:35 UTC
(In reply to Chris Moerz from comment #7)
Hello,

You don't need to post your poudriere testport log. But is always good to make this tests in clean enviromnent.

I've started poudriere tests on this port today because I have builded some big updates in all 8 jails: gcc10, llvm12 and rust! Lots of hours compiling :-)

One think that I noticed is that you use absolute path "/usr/local" in your files/patches-*, e.g.:
---
-#!/usr/bin/env ksh93
+#!/usr/local/bin/ksh93

 #
 # This file is a part of the NsCDE - Not so Common Desktop Environment
@@ -7,7 +7,7 @@
 #

 VERBOSE=0
-export TEXTDOMAINDIR="$NSCDE_ROOT/share/locale"
+export TEXTDOMAINDIR="/usr/local/share/nscde/locale"
---

When tests are finished I will substitute "/usr/local" with "${PREFIX} to see what happens.

Cheers
Comment 9 Nuno Teixeira freebsd_committer 2021-05-23 07:46:13 UTC
I've completed poudriere testport for 140amd64:
---
====> Running Q/A tests (stage-qa)
Error: '/usr/bin/env python3' is an invalid shebang you need USES=shebangfix for 'sbin/nscde_usleep'
Warning: 'lib/nscde/XOverrideFontCursor.so' is not stripped consider trying INSTALL_TARGET=install-strip or using ${STRIP_CMD}
Error: /usr/local/bin/pclock is linked to /usr/local/lib/libXext.so.6 from x11/libXext but it is not declared as a dependency
Warning: you need USE_XORG+=xext
Warning: Possible REINPLACE_CMD issues:
- - REINPLACE_CMD ran, but did not modify file contents: NsCDE/config/NsCDE-Font-75dpi.conf
- - REINPLACE_CMD ran, but did not modify file contents: NsCDE/config/NsCDE-Mousebindings.conf
---
Comment 10 Chris Moerz 2021-05-23 14:29:13 UTC
Created attachment 225195 [details]
Updated port diff

Thanks for the additional feedback. I've fixed those - at least those, which I could confirm as broken. 

Those sed replacements really aren't matching all files. Unfortunately, I didn't figure out the proper way to exclude single files. I'd otherwise have to pre-compile a manual list of ${REPLACE_CMD} calls but that would likely quickly break things when new versions come along and introduce new files.

I also realized, I was missing a gettext dependency. There are multiple gettext calls in the ksh scripts. So I also added that into the USES clause.

Furthermore, I cleaned up the Makefile to reference ${PREFIX}, ${DATADIR} etc. instead of the absolute paths for the replacements.

Unfortunately, this still leaves a bunch of static replacements in python files, as you already pointed out (those patches in files/). These would be a though nut to crack with sed replacements. Not sure, what the best practice is to handle this? Right now, I basically changed that to the usual /usr/local prefix.

If you have any suggestions on how further to improve, I'm happy to hear it.
Comment 11 Chris Moerz 2021-05-23 14:31:18 UTC
Gaah, damn. I screwed something up. Please ignore previously posted attachment. I'll post another fixed diff.
Comment 12 Chris Moerz 2021-05-23 14:38:06 UTC
Created attachment 225197 [details]
Updated port diff

Ok, please use this one. Previous upload was broken.
Comment 13 Chris Moerz 2021-05-23 18:58:16 UTC
(In reply to Chris Moerz from comment #10)

Actually, it just dawned on me on how to fix those static patches. I'm still in the middle of it and it'll need more testing, but I'm fairly confident this new approach will fix it.

I've replaced all /usr/local with ${PREFIX} as you originally suggested. I simply added more replacements in my Makefile for replacing the static '${PREFIX}' strings with the actual variable content.

Not sure why I didn't get this earlier. The human brain works in mysterious ways...

So, would appreciate it, if you could hold off with any further tests for the moment until I've completed this work.

Thanks for the patience.
Comment 14 Chris Moerz 2021-05-23 19:18:53 UTC
Created attachment 225205 [details]
Updated port diff

Well, went quicker then I thought. Then again, I did not think I'd learn this much in the process...
Comment 15 Chris Moerz 2021-05-25 09:33:34 UTC
Created attachment 225245 [details]
Updated port diff

My own poudriere run highlighted one more missing strip on a library. Included that now as well.
Comment 16 Nuno Teixeira freebsd_committer 2021-05-25 10:08:25 UTC
Hello Chris!

I will test latest patch tomorrow and see if it fixes:
---
====> Running Q/A tests (stage-qa)
Warning: 'lib/nscde/XOverrideFontCursor.so' is not stripped consider trying INSTALL_TARGET=install-strip or using ${STRIP_CMD}
---

Related to using REINPLACE_CMD multiple times in the same file(s), could you follow freebsd-ports@freebsd.org? [Lot's of REINPLACE_CMD versus patch]

And I'm about to test this port in RL because I really like whatched upstream videos :-)

BTW, I've searched upstream docs and FAQ but I didn't find out how to run this wm.

.xinitrc:
---
exec nscde
---
?
Comment 17 Chris Moerz 2021-05-27 15:01:33 UTC
Created attachment 225317 [details]
Updated port diff

Ok, I believe I've finally got it. I fixed the replacements to focus only on the affected files.

I've rerun poudriere for 12.2p6 without any errors. Confident this should work the same for later releases. portlint and portclippy were ok. portlint wrongfully reported some "absolute paths", which are actually replacement strings - so I'm reading those as misinterpreted strings.

So far, I've only run nscde via xrdp on a terminal server. Starting it basically works like any other window manager - simply using an
exec /usr/local/sbin/nscde
should do the trick. There's a lot of hidden functionality in this setup; apart from the CDE look, there's a lot of keyboard shortcuts to explore. I haven't grasped the whole thing myself yet. 

I hope that, once I get a better understanding of the inner workings, I'll be able to build in further port customizations (separating NLS, other integrations, etc.).
Comment 18 Nuno Teixeira freebsd_committer 2021-06-01 05:55:53 UTC
Hello Chris!

Nice work that you've done on this port.

Poudriere testport logs looks nice and I did a runtime test and nscde wm works fine.

I will create a review in Phabricator and when ready I will post review kink here.

Cheers
Comment 19 Nuno Teixeira freebsd_committer 2021-06-01 06:51:45 UTC
https://reviews.freebsd.org/D30591

Feel free to participate on this review
Comment 20 commit-hook freebsd_committer 2021-08-09 14:57:54 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=02f8e1555773479cbe369e8db67821acdae238a5

commit 02f8e1555773479cbe369e8db67821acdae238a5
Author:     Chris Moerz <freebsd@ny-central.org>
AuthorDate: 2021-08-09 14:53:25 +0000
Commit:     Nuno Teixeira <eduardo@FreeBSD.org>
CommitDate: 2021-08-09 14:56:30 +0000

    x11-wm/nscde: New port: modern and functional CDE

     * Submitter becomes maintainer

    sCDE is a retro but powerful UNIX desktop environment which resembles
    CDE look (and partially feel) but with a more powerful and flexible
    framework beneath-the-surface, more suited for 21st century unix-like
    and Linux systems and user requirements than original CDE.

    See also https://github.com/NsCDE/NsCDE

    PR:             255929
    Differential Revision:  https://reviews.freebsd.org/D30591

 x11-wm/Makefile                                    |     1 +
 x11-wm/nscde/Makefile (new)                        |   306 +
 x11-wm/nscde/distinfo (new)                        |     3 +
 x11-wm/nscde/files/patch-NsCDE_bin_fpclock (new)   |    44 +
 .../patch-NsCDE_bin_get__fvwm__infostore (new)     |    11 +
 x11-wm/nscde/files/patch-NsCDE_bin_getfont (new)   |    41 +
 .../nscde/files/patch-NsCDE_bin_mkpagemenu (new)   |    29 +
 x11-wm/nscde/files/patch-NsCDE_bin_nscde (new)     |    30 +
 .../files/patch-NsCDE_bin_nscde__colorpicker (new) |    13 +
 .../nscde/files/patch-NsCDE_bin_xdowrapper (new)   |    11 +
 .../patch-NsCDE_config_NsCDE-FrontPanel.conf (new) |   182 +
 .../files/patch-NsCDE_config_NsCDE-Main.conf (new) |    32 +
 .../files/patch-NsCDE_libexec_Splash.sh (new)      |    16 +
 .../nscde/files/patch-NsCDE_libexec_colormgr (new) |    11 +
 .../nscde/files/patch-NsCDE_libexec_fontmgr (new)  |    26 +
 .../patch-NsCDE_libexec_fp__manage__subpanel (new) |    28 +
 ...tch-NsCDE_libexec_fvwm-modules_FvwmScript (new) |    43 +
 .../files/patch-NsCDE_libexec_nscde__setup (new)   |   372 +
 .../patch-NsCDE_libexec_strip__icon__path (new)    |    21 +
 ...patch-NsCDE_libexec_style__managers.shlib (new) |    38 +
 ...h-NsCDE_libexec_subpanel__menuitem__props (new) |    21 +
 .../files/patch-NsCDE_libexec_themegen.py (new)    |    45 +
 ...e_config__templates_NsCDE-Functions.local (new) |    19 +
 ...amples_lxsession-integration_desktop.conf (new) |    11 +
 ...es_mate-session-integration_nscde.desktop (new) |    11 +
 ...share_doc_examples_sudo_006__PowerManager (new) |    19 +
 ...amples_xsession-integration_nscde.desktop (new) |    11 +
 x11-wm/nscde/files/patch-docbook_NsCDE.xml (new)   |  1162 ++
 x11-wm/nscde/files/patch-docbook_NsCDE.xsl (new)   |    10 +
 .../patch-src_XOverrideFontCursor_Makefile (new)   |     9 +
 .../files/patch-src_colorpicker_Makefile (new)     |     8 +
 .../patch-src_pclock-0.13.1_src_Makefile (new)     |    11 +
 x11-wm/nscde/pkg-descr (new)                       |     9 +
 x11-wm/nscde/pkg-message (new)                     |    16 +
 x11-wm/nscde/pkg-plist (new)                       | 10596 +++++++++++++++++++
 35 files changed, 13216 insertions(+)
Comment 21 Nuno Teixeira freebsd_committer 2021-08-09 15:00:21 UTC
Committed thanks!