Ports: Add joe's own editor

This commit is contained in:
Snow 2022-05-15 11:41:03 +08:00 committed by Andreas Kling
parent f8984146bd
commit a1f19b7a98
4 changed files with 71 additions and 0 deletions

View file

@ -82,6 +82,7 @@ Please make sure to keep this list up to date when adding and updating ports. :^
| [`indent`](indent/) | GNU indent | 2.2.11 | https://www.gnu.org/software/indent/ |
| [`isl`](isl/) | Integer Set Library | 0.24 | https://libisl.sourceforge.io/ |
| [`ja2`](ja2/) | Jagged Alliance 2 Stracciatella | 0.15.x | https://github.com/safarp/ja2-stracciatella/tree/0.15.x |
| [`joe`](joe/) | joe's own editor | 4.6 | https://joe-editor.sourceforge.io/ |
| [`jot`](jot/) | jot (OpenBSD) | 6.6 | https://github.com/ibara/libpuffy |
| [`jq`](jq/) | jq | 1.6 | https://stedolan.github.io/jq/ |
| [`klong`](klong/) | Klong | 20220315 | https://t3x.org/klong/ |

10
Ports/joe/package.sh Executable file
View file

@ -0,0 +1,10 @@
#!/usr/bin/env -S bash ../.port_include.sh
port=joe
version=4.6
files="https://sourceforge.net/projects/joe-editor/files/JOE%20sources/joe-${version}/joe-${version}.tar.gz/download joe-${version}.tar.gz 495a0a61f26404070fe8a719d80406dc7f337623788e445b92a9f6de512ab9de"
useconfigure="true"
auth_type=sha256
configopts=(
"--disable-curses"
"--disable-termcap"
)

View file

@ -0,0 +1,14 @@
# Patches for joe's own editor
## `joe.patch`
Build a curseless joe's own editor, its only dependency is LibC.
- Add serenity to `config.sub`.
- Some hacks in joe source code to make it work.
- Undefine the macro `TERMINFO` in `termcap.c`, or it will lead crash.
- Define `__USE_MISC` manually in `checkwidths.c` for `ECHOCTL` and `ECHOKE`,
see `Kernel/API/POSIX/termios.h`.
- Remove the prefix `sys/`, because serenity does not have the header `fcntl.h`
in `/usr/include/sys`.

View file

@ -0,0 +1,46 @@
diff -u -r joe-4.6/config.sub joe-4.6-patched/config.sub
--- joe-4.6/config.sub 2018-01-11 00:29:29.000000000 +0800
+++ joe-4.6-patched/config.sub 2022-05-15 11:01:52.017408784 +0800
@@ -1374,7 +1374,7 @@
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -serenity*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
diff -u -r joe-4.6/joe/termcap.c joe-4.6-patched/joe/termcap.c
--- joe-4.6/joe/termcap.c 2018-01-11 00:28:34.000000000 +0800
+++ joe-4.6-patched/joe/termcap.c 2022-05-15 11:02:58.185406191 +0800
@@ -7,6 +7,8 @@
*/
#include "types.h"
+#undef TERMINFO // undefine this manually, or it will lead crash
+
#ifdef TERMINFO
#ifdef __CYGWIN__
diff -u -r joe-4.6/joe/util/checkwidths.c joe-4.6-patched/joe/util/checkwidths.c
--- joe-4.6/joe/util/checkwidths.c 2018-01-11 00:28:34.000000000 +0800
+++ joe-4.6-patched/joe/util/checkwidths.c 2022-05-15 11:04:04.225403604 +0800
@@ -5,6 +5,8 @@
*/
+#define __USE_MISC // for ECHOCTL and ECHOKE
+
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -12,7 +14,7 @@
#include <arpa/inet.h>
#include <stddef.h>
#include <poll.h>
-#include <sys/fcntl.h>
+#include <fcntl.h> // the prefix "sys/" is not needed on serenity
#include <termios.h>
#define TO_CHAR_OK(c) ((char)(c))