summaryrefslogtreecommitdiff
path: root/x11
diff options
context:
space:
mode:
authortsutsui <tsutsui@pkgsrc.org>2020-06-21 17:53:01 +0000
committertsutsui <tsutsui@pkgsrc.org>2020-06-21 17:53:01 +0000
commit63f4ef7d8a3ca692dab088ac5699d3c0b9eb0fe1 (patch)
tree3d305ae00b7283f1c1a861bf974fa71d227c1749 /x11
parent29d16083cbc618f8389e3e42cf368007b913ff49 (diff)
downloadpkgsrc-63f4ef7d8a3ca692dab088ac5699d3c0b9eb0fe1.tar.gz
mlterm: pull an upstream patch for 3.9.0.
Also put misc pkgsrc tweaks: - Disable SPECIAL_PERMS for mlterm. It was required for utmp support only on ancient systems that have none of pututxline(3), setutent(3), or addToUtmp(3) but have to use logwtmp(3) or open system's _PATH_UTMP or _PATH_WTMP file directly to update utmp entries, but no easy way to statically identify them per OS and version basis. - Add hacks.mk to avoid gcc SIGSEGV on NetBSD/sh3 9.0 (PR/55265) - Appease several pkglint warnings/errors. Bump PKGREVISION.
Diffstat (limited to 'x11')
-rw-r--r--x11/mlterm/Makefile16
-rw-r--r--x11/mlterm/distinfo5
-rw-r--r--x11/mlterm/hacks.mk17
-rw-r--r--x11/mlterm/options.mk5
-rw-r--r--x11/mlterm/patches/patch-etc_font-fb20
-rw-r--r--x11/mlterm/patches/patch-uitoolkit_xlib_ui__imagelib.c136
6 files changed, 179 insertions, 20 deletions
diff --git a/x11/mlterm/Makefile b/x11/mlterm/Makefile
index 0b792658e32..daec7aeff39 100644
--- a/x11/mlterm/Makefile
+++ b/x11/mlterm/Makefile
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.160 2020/06/02 08:25:02 adam Exp $
+# $NetBSD: Makefile,v 1.161 2020/06/21 17:53:01 tsutsui Exp $
DISTNAME= mlterm-3.9.0
-PKGREVISION= 1
+PKGREVISION= 2
CATEGORIES= x11
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=mlterm/}
@@ -52,12 +52,18 @@ SUBST_CLASSES+= conf
SUBST_MESSAGE.conf= Fixing hardcoded paths in config files.
SUBST_STAGE.conf= pre-configure
SUBST_FILES.conf= etc/font-fb
-SUBST_SED.conf= -e 's|/usr/X11R7/|${X11BASE}/|g'
-SUBST_SED.conf+= -e 's|/usr/pkg/|${PREFIX}/|g'
+SUBST_VARS.conf= PREFIX X11BASE
BUILDLINK_DEPMETHOD.libXt?= build
-SPECIAL_PERMS+= bin/mlterm ${REAL_ROOT_USER} utmp 2755
+# XXX
+# setgid is required only on ancient systems that have
+# none of pututxline(3), setutent(3), or addToUtmp(3)
+# but have to use logwtmp(3) or open system's _PATH_UTMP
+# or _PATH_WTMP file directly to handle utmp entries.
+# configure script checks these functions automatically, but
+# no easy way to statically identify them per OS and version.
+#SPECIAL_PERMS+= bin/mlterm ${REAL_ROOT_USER} utmp 2755
INSTALLATION_DIRS= share/doc/mlterm share/doc/mlterm/en share/doc/mlterm/ja
diff --git a/x11/mlterm/distinfo b/x11/mlterm/distinfo
index e911ee727f9..393945bccc2 100644
--- a/x11/mlterm/distinfo
+++ b/x11/mlterm/distinfo
@@ -1,9 +1,10 @@
-$NetBSD: distinfo,v 1.84 2020/04/27 15:45:43 tsutsui Exp $
+$NetBSD: distinfo,v 1.85 2020/06/21 17:53:01 tsutsui Exp $
SHA1 (mlterm-3.9.0.tar.gz) = be37059caab99219be79b14cfabfb26d34bb8954
RMD160 (mlterm-3.9.0.tar.gz) = d5fec228b86918fe8dec05a6957869520dc8e5d4
SHA512 (mlterm-3.9.0.tar.gz) = d89340eb460904ca36c6ed063b356625d9c9b4ad129dc51640d50a04e166f8239124d0003db778376c47daa6311c869f9fe7e337c90937fed5ae4151f5af57c4
Size (mlterm-3.9.0.tar.gz) = 4143644 bytes
SHA1 (patch-configure) = ce9fe3642258c5ab01d4e371e067c5f1501d5c22
-SHA1 (patch-etc_font-fb) = 03f0b2ecee20ef3201c8e4ce17f03ac90f657b00
+SHA1 (patch-etc_font-fb) = 52c18f512c67ff530c0c326394fdf43956d71cb0
+SHA1 (patch-uitoolkit_xlib_ui__imagelib.c) = 787e38dc9505850151d58177ea1cbadbecb96075
SHA1 (patch-vtemu_Makefile.in) = 172f12f73408489f782d63c8b0b7915af441d368
diff --git a/x11/mlterm/hacks.mk b/x11/mlterm/hacks.mk
new file mode 100644
index 00000000000..4255d3ba072
--- /dev/null
+++ b/x11/mlterm/hacks.mk
@@ -0,0 +1,17 @@
+# $NetBSD: hacks.mk,v 1.1 2020/06/21 17:53:01 tsutsui Exp $
+
+.if !defined(MLTERM_HACKS_MK)
+MLTERM_HACKS_MK= defined
+
+.include "../../mk/compiler.mk"
+
+# On NetBSD/sh3el 9.0, the default -Os causes an error on compiling
+# vt_line_bidi.c and -fno-dce works around. (PR/55265)
+.if !empty(MACHINE_PLATFORM:MNetBSD-*-sh3*) && !empty(CC_VERSION:Mgcc-7.4.*)
+PKG_HACKS+= optimisation
+# XXX: is there any good way to replace the default -Os with multiple args?
+#BUILDLINK_TRANSFORM+=
+CFLAGS+= -fno-dce
+.endif
+
+.endif # MLTERM_HACKS_MK
diff --git a/x11/mlterm/options.mk b/x11/mlterm/options.mk
index 43c82e8a531..f5b3a42657b 100644
--- a/x11/mlterm/options.mk
+++ b/x11/mlterm/options.mk
@@ -1,7 +1,7 @@
-# $NetBSD: options.mk,v 1.19 2020/06/20 07:50:45 rillig Exp $
+# $NetBSD: options.mk,v 1.20 2020/06/21 17:53:01 tsutsui Exp $
PKG_OPTIONS_VAR= PKG_OPTIONS.mlterm
-PKG_SUPPORTED_OPTIONS= cairo canna fcitx fribidi gdk_pixbuf2 ibus libind m17nlib mlterm-fb mlterm-x68kgrf otl scim skk uim wnn4 xft2
+PKG_SUPPORTED_OPTIONS= cairo canna fcitx fribidi gdk_pixbuf2 ibus libind m17nlib mlterm-fb otl scim skk uim wnn4 xft2
PKG_SUGGESTED_OPTIONS= cairo fribidi gdk_pixbuf2 m17nlib otl xft2
.if ${OPSYS} == "NetBSD" || ${OPSYS} == "FreeBSD" || ${OPSYS} == "Linux"
PKG_SUGGESTED_OPTIONS+= mlterm-fb
@@ -14,7 +14,6 @@ PLIST_VARS+= bidi cairo canna fb fbfiles fcitx ibus ind m17nlib otl scim skk ui
.if !empty(PKG_OPTIONS:Mmlterm-fb)
. if ${OPSYS} == "NetBSD"
. if ${MACHINE_ARCH} == "m68k"
-PKG_SUGGESTED_OPTIONS+= mlterm-x68kgrf
CONFIGURE_ARGS+= --with-gui=xlib,wscons,x68kgrf
SPECIAL_PERMS+= ${PREFIX:Q}/bin/mlterm-x68kgrf ${SETUID_ROOT_PERMS}
PLIST.x68kgrf= yes
diff --git a/x11/mlterm/patches/patch-etc_font-fb b/x11/mlterm/patches/patch-etc_font-fb
index 187cc000179..9d30e764295 100644
--- a/x11/mlterm/patches/patch-etc_font-fb
+++ b/x11/mlterm/patches/patch-etc_font-fb
@@ -1,4 +1,4 @@
-$NetBSD: patch-etc_font-fb,v 1.9 2015/10/30 15:29:20 tsutsui Exp $
+$NetBSD: patch-etc_font-fb,v 1.10 2020/06/21 17:53:01 tsutsui Exp $
add more examples for typical NetBSD and pkgsrc installation
@@ -6,23 +6,23 @@ add more examples for typical NetBSD and pkgsrc installation
+++ etc/font-fb
@@ -1,12 +1,19 @@
-#DEFAULT = /usr/share/fonts/X11/misc/unifont.pcf.gz:100
-+#DEFAULT = /usr/pkg/share/fonts/X11/misc/unifont.pcf.gz:100
-+#DEFAULT = /usr/pkg/share/fonts/X11/efont/b16.pcf.gz
++#DEFAULT = @PREFIX@/share/fonts/X11/misc/unifont.pcf.gz:100
++#DEFAULT = @PREFIX@/share/fonts/X11/efont/b16.pcf.gz
#ISO8859_1 = /usr/share/fonts/X11/misc/mplus_f12r.pcf.gz
-+#ISO8859_1 = /usr/X11R7/lib/X11/fonts/misc/8x16.pcf.gz
-+#JISX0201_KATA = /usr/X11R7/lib/X11/fonts/misc/8x16rk.pcf.gz
++#ISO8859_1 = @X11BASE@/lib/X11/fonts/misc/8x16.pcf.gz
++#JISX0201_KATA = @X11BASE@/lib/X11/fonts/misc/8x16rk.pcf.gz
#JISX0208_1983 = /usr/share/fonts/X11/misc/mplus_j12r.pcf.gz
-+#JISX0208_1983 = /usr/X11R7/lib/X11/fonts/misc/jiskan16.pcf.gz
++#JISX0208_1983 = @X11BASE@/lib/X11/fonts/misc/jiskan16.pcf.gz
JISC6226_1978 = &JISX0208_1983
JISX0208_1990 = &JISX0208_1983
JISX0213_2000_1 = &JISX0208_1983
-+#JISX0213_2000_1=/usr/pkg/share/fonts/X11/local/jiskan16-2000-1.pcf.gz
-+#JISX0213_2000_2=/usr/pkg/share/fonts/X11/local/jiskan16-2000-2.pcf.gz
++#JISX0213_2000_1 = @PREFIX@/share/fonts/X11/local/jiskan16-2000-1.pcf.gz
++#JISX0213_2000_2 = @PREFIX@/share/fonts/X11/local/jiskan16-2000-2.pcf.gz
-#ISO10646_UCS4_1 = /usr/share/fonts/X11/misc/unifont.pcf.gz:100
-+#ISO10646_UCS4_1 = /usr/pkg/share/fonts/X11/misc/unifont.pcf.gz:100
-+#ISO10646_UCS4_1 = /usr/pkg/share/fonts/X11/efont/b16.pcf.gz
++#ISO10646_UCS4_1 = @PREFIX@/share/fonts/X11/misc/unifont.pcf.gz:100
++#ISO10646_UCS4_1 = @PREFIX@/share/fonts/X11/efont/b16.pcf.gz
ISO10646_UCS4_1_FULLWIDTH = &ISO10646_UCS4_1
#ISCII_ASSAMESE = /usr/share/fonts/truetype/Asdr0ntt.ttf:120
diff --git a/x11/mlterm/patches/patch-uitoolkit_xlib_ui__imagelib.c b/x11/mlterm/patches/patch-uitoolkit_xlib_ui__imagelib.c
new file mode 100644
index 00000000000..3e670c8ac23
--- /dev/null
+++ b/x11/mlterm/patches/patch-uitoolkit_xlib_ui__imagelib.c
@@ -0,0 +1,136 @@
+$NetBSD: patch-uitoolkit_xlib_ui__imagelib.c,v 1.1 2020/06/21 17:53:01 tsutsui Exp $
+
+Pull upstrem fixes from mlterm-3.9.0-fixes.patch:
+> This patch gets mlimgloader to exit correctly after loading a wall picture.
+
+--- uitoolkit/xlib/ui_imagelib.c.orig 2020-04-26 12:54:53.000000000 +0000
++++ uitoolkit/xlib/ui_imagelib.c
+@@ -1226,20 +1226,24 @@ static int modify_image(GdkPixbuf *pixbu
+
+ #else /* NO_TOOLS */
+
+-static pid_t exec_mlimgloader(int *read_fd, Window window,
+- u_int width, u_int height, char *path, char *dst, char *opt) {
+- int fds[2];
++static pid_t exec_mlimgloader(int *read_fd,
++ int *write_fd /* close(write_fd) makes mlimgloader exit */,
++ Window window, u_int width, u_int height,
++ char *path, char *dst, char *opt) {
++ int fds1[2];
++ int fds2[2];
+ pid_t pid;
+
+- if (!path || !*path || pipe(fds) == -1) {
++ if (!path || !*path || pipe(fds1) == -1) {
+ return -1;
+ }
+
+- if ((pid = fork()) == -1) {
+- close(fds[0]);
+- close(fds[1]);
++ if (pipe(fds2) == -1) {
++ goto error1;
++ }
+
+- return -1;
++ if ((pid = fork()) == -1) {
++ goto error2;
+ }
+
+ if (pid == 0) {
+@@ -1262,9 +1266,10 @@ static pid_t exec_mlimgloader(int *read_
+ args[6] = opt;
+ args[7] = NULL;
+
+- close(fds[0]);
++ close(fds1[1]);
++ close(fds2[0]);
+
+- if (dup2(fds[1], STDOUT_FILENO) != -1) {
++ if (dup2(fds1[0], STDIN_FILENO) != -1 && dup2(fds2[1], STDOUT_FILENO) != -1) {
+ execv(args[0], args);
+ }
+
+@@ -1273,23 +1278,35 @@ static pid_t exec_mlimgloader(int *read_
+ exit(1);
+ }
+
+- close(fds[1]);
++ close(fds1[0]);
++ close(fds2[1]);
+
+- *read_fd = fds[0];
++ *write_fd = fds1[1];
++ *read_fd = fds2[0];
+
+ return pid;
++
++error2:
++ close(fds2[0]);
++ close(fds2[1]);
++error1:
++ close(fds1[0]);
++ close(fds1[1]);
++
++ return -1;
+ }
+
+ static int load_file(ui_display_t *disp, char *path, u_int *width, u_int *height, int keep_aspect,
+ ui_picture_modifier_t *pic_mod, Pixmap *pixmap, Pixmap *mask /* Can be NULL */
+ ) {
+ int read_fd;
++ int write_fd;
+ char pix_str[DIGIT_STR_LEN(Pixmap) + 1 + DIGIT_STR_LEN(Pixmap) + 1];
+ Pixmap pixmap_tmp;
+ Pixmap mask_tmp;
+ ssize_t size;
+
+- if (exec_mlimgloader(&read_fd, ui_display_get_group_leader(disp), *width, *height,
++ if (exec_mlimgloader(&read_fd, &write_fd, ui_display_get_group_leader(disp), *width, *height,
+ path, "pixmap", keep_aspect ? "-a" : NULL) == -1) {
+ return 0;
+ }
+@@ -1338,22 +1355,29 @@ static int load_file(ui_display_t *disp,
+
+ XSync(disp->display, False);
+
+- close(read_fd); /* child process exited by this. pixmap_tmp is alive until here. */
++ close(read_fd);
++ /*
++ * child process exited by this. pixmap_tmp is alive until here.
++ * (See read(STDIN_FILENO) in mlimgloader/gdk-pixbuf.c)
++ */
++ close(write_fd);
+
+ return 1;
+
+ error:
+ close(read_fd);
++ close(write_fd);
+
+ return 0;
+ }
+
+ static u_int32_t *create_cardinals_from_file(char *path, u_int32_t width, u_int32_t height) {
+ int read_fd;
++ int write_fd;
+ u_int32_t *cardinal;
+ ssize_t size;
+
+- if (exec_mlimgloader(&read_fd, None, width, height, path, "stdout", NULL) == -1) {
++ if (exec_mlimgloader(&read_fd, &write_fd, None, width, height, path, "stdout", NULL) == -1) {
+ return 0;
+ }
+
+@@ -1381,6 +1405,11 @@ static u_int32_t *create_cardinals_from_
+ }
+
+ close(read_fd);
++ /*
++ * child process exited by this. pixmap_tmp is alive until here.
++ * (See read(STDIN_FILENO) in mlimgloader/gdk-pixbuf.c)
++ */
++ close(write_fd);
+
+ #ifdef DEBUG
+ bl_debug_printf(BL_DEBUG_TAG " %s(w %d h %d) is loaded.\n", path, width, height);