On 5/11/20 8:51 PM, Thomas Dickey wrote:
On Mon, May 11, 2020 at 05:10:27PM +0000, Dennis Clarke wrote:
On 5/3/20 12:56 AM, Thomas Dickey wrote:
<snip>
                              Patch #356 - 2020/05/02

       * revise  fix  for  Debian #954730, which interfered with wheel mouse
         events (report by Gabriele Balducci).


I ran into problems on FreeBSD 12.1 wherein I was surprised to see this
error during the compile stage :

I did test with FreeBSD 12.1, but didn't run into this problem.
I don't recall making any recent change in this area, either.


Sorry for the delay and late reply.

I will look into this again today with FreeBSD 12.1 :


vesta$
vesta$ freebsd-version
12.1-RELEASE-p4
vesta$ uname -apKU
FreeBSD vesta 12.1-RELEASE-p3 FreeBSD 12.1-RELEASE-p3 GENERIC amd64 amd64 1201000 1201000
vesta$


Also Red Hat Enterprise Linux 7.4 :

b$
b$ uname -a
Linux boe13.genunix.com 3.10.0-693.el7.x86_64 #1 SMP Thu Jul 6 19:56:57 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
b$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.4 (Maipo)
b$

Possibly Debian on IBM Power9 ppc64le if I can get to it.


misc.o print.o ptydata.o scrollback.o screen.o scrollbar.o tabs.o util.o
version.o xstrings.o xtermcap.o VTPrsTbl.o TekPrsTbl.o Tekproc.o charclass.o
precompose.o wcwidth.o html.o svg.o -lutil -lXaw -lXmu -lXt -lSM -lICE
-lXext -lXpm -lXt -lX11 -lSM -lICE
...

my generated makefile does this:

/bin/sh ./plink.sh gcc -g -O2 -pthread -pthread -pthread -pthread -pthread   -o 
resize resize.o version.o xstrings.o -lXft -L/usr/local/lib -lfontconfig 
-lfreetype -lXext -lutil -lXaw7 -L/usr/local/lib -lXmu -lXinerama -lXpm 
-L/usr/local/lib -lXt -lX11 -lSM -lICE -ltermcap

My configure script said this:

checking if we want full tgetent function... yes
checking for full tgetent function... -ltermcap
checking for termcap.h... yes

ld: error: undefined symbol: tgetstr
referenced by xtermcap.c:247 (./xtermcap.c:247)
               xtermcap.o:(loadTermcapStrings)

I'd suppose that the configure script didn't succeed in the check for
libtermcap -- which is actually a symbolic link to ncurses:

$ ls -l /usr/lib/libtermc*
lrwxr-xr-x  1 root  wheel  12 Dec  6  2018 /usr/lib/libtermcap.a -> libncurses.a
lrwxr-xr-x  1 root  wheel  13 Dec  6  2018 /usr/lib/libtermcap.so -> 
libncurses.so
lrwxr-xr-x  1 root  wheel  14 Dec  6  2018 /usr/lib/libtermcap_p.a -> 
libncurses_p.a
lrwxr-xr-x  1 root  wheel  13 Dec  6  2018 /usr/lib/libtermcapw.a -> 
libncursesw.a
lrwxr-xr-x  1 root  wheel  14 Dec  6  2018 /usr/lib/libtermcapw.so -> 
libncursesw.so
lrwxr-xr-x  1 root  wheel  15 Dec  6  2018 /usr/lib/libtermcapw_p.a -> 
libncursesw_p.a


To be clear I was trying to compile with strict C99 and also with
XOPEN_SOURCE defined at '600' which should keep me safely within the
POSIX "IEEE Std 1003.1, 2004 Edition" world.  Usually works fine.

usually :-)
My compiler was the typical system LLVM/Clang version in FreeBSD :


vesta$ cc --version
FreeBSD clang version 8.0.1 (tags/RELEASE_801/final 366581) (based on LLVM
8.0.1)
Target: x86_64-unknown-freebsd12.1
Thread model: posix
InstalledDir: /usr/bin
vesta$

With some rather strict flags and verbose warnings :



CC=/usr/bin/cc
CFLAGS=-std=iso9899:1999 -pedantic -pedantic-errors -Weverything
-Wno-reserved-id-macro -Wno-missing-prototypes -m64 -g -O0 -fno-fast-math
-fno-builtin
CPPFLAGS=-D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE64_SOURCE -D_TS_ERRNO
-D_XOPEN_SOURCE=600
CXX=/usr/bin/c++
CXXFLAGS=-m64 -g -O0 -fno-fast-math -fno-builtin -Wl,-rpath=/opt/bw/lib

I have also tried various gymnastics with the FreeBSD system ld linker
which appears to be the LLVM linker ld.lld.

Configure always runs clean and outputs a strange message as the last
line but not an error state :

...yes - error-handling is a problem, because (when I can), I just report
the problem in the configure script, and try to produce something that
works.
checking if POSIX saved-ids are supported... yes
checking if we want full tgetent function... yes
checking for full tgetent function... no
checking for partial tgetent function... no

well...,. the problem is this: the last test for tgetent fails
because there's no prototype (cannot compile) rather than the intended
runtime check.

The existence check (for tgetent) succeeds since that just uses "nm".

The original BSD termcap had no headers for declaring prototypes.
That's only done in later stuff.  You'll notice a termcap.h file,
which is from ncurses.  I don't check for that by default because
a real termcap implementation (other than the GNU termcap which
Slackware still uses...) hasn't got that header.

I will take a look into FreeBSD ports and see how they handle XTerm :



vesta$ cd xterm
vesta$ pwd
/usr/ports/x11/xterm

vesta$ ls -lap
total 48
drwxr-xr-x    3 root  wheel     8 Mar 17 23:56 ./
drwxr-xr-x  549 root  wheel   550 Mar 17 23:56 ../
-rw-r--r--    1 root  wheel  3097 Feb  3 05:53 Makefile
-rw-r--r--    1 root  wheel   279 Feb  3 05:53 distinfo
drwxr-xr-x    2 root  wheel     3 Mar 17 23:56 files/
-rw-r--r--    1 root  wheel   480 May 17  2019 pkg-descr
-rw-r--r--    1 root  wheel   506 Aug 14  2019 pkg-message.wchar
-rw-r--r--    1 root  wheel   635 Jan 22  2014 pkg-plist
vesta$
vesta$ cat  distinfo
TIMESTAMP = 1580708699
SHA256 (xterm-353.tgz) = e521d3ee9def61f5d5c911afc74dd5c3a56ce147c7071c74023ea24cac9bb768
SIZE (xterm-353.tgz) = 1407183
SHA256 (bsd-xterm-icons-1.tgz) = fcf51dce0e23e9911a16ed7f2ce835bb6ff2ada65f023c29fdd8abda2795bf7c
SIZE (bsd-xterm-icons-1.tgz) = 22718
vesta$
vesta$
vesta$ more Makefile
# Created by: krion
# $FreeBSD: head/x11/xterm/Makefile 525014 2020-02-03 05:53:36Z ehaupt $

PORTNAME=       xterm
PORTVERSION=    353
PORTREVISION=   1
CATEGORIES=     x11
MASTER_SITES=   ftp://ftp.invisible-island.net/xterm/:src1 \
                https://invisible-mirror.net/archives/xterm/:src1 \
                LOCAL/ehaupt:src1 LOCAL/ehaupt:src2
DISTFILES=      ${DISTNAME}${EXTRACT_SUFX}:src1 \
                bsd-xterm-icons-${ICONVERSION}${EXTRACT_SUFX}:src2

MAINTAINER=     eha...@freebsd.org
COMMENT=        Terminal emulator for the X Window System

LICENSE=        MIT
LICENSE_FILE=   ${WRKSRC}/COPYING

USES=           cpe localbase ncurses tar:tgz xorg
USE_XORG=       xft xmu xt x11 xext xpm ice

GNU_CONFIGURE=  yes

CPE_VENDOR=     invisible-island

CONFIGURE_ARGS+=        --with-utempter --enable-narrowproto

CONFLICTS=      x11iraf-[0-9]*

ICONVERSION=    1

OPTIONS_DEFINE= WCHAR LUIT DECTERM PCRE DABBREV 256COLOR SIXEL GNOME LOGGING \
                SCRNDUMP REGIS TOOLBAR XINERAMA
OPTIONS_RADIO=  3D
OPTIONS_RADIO_3D=       XAW3D XAW3DXFT NEXTAW

DABBREV_DESC=   Enable support for dabbrev-expand
DECTERM_DESC=   Enable DECterm Locator support
LUIT_DESC=      Use LUIT for locale convertion from/to UTF-8
SIXEL_DESC=     Enable Sixel graphics support
REGIS_DESC=     Enable ReGIS graphics support
WCHAR_DESC=     Enable wide-character support
256COLOR_DESC=  Enable 256-color support
LOGGING_DESC=   Enable logging terminal I/O to a file
XAW3D_DESC=     Link with Xaw 3d library
XAW3DXFT_DESC=  Link with Xaw 3d xft (extended fonts) library
NEXTAW_DESC=    Link with neXT Athena library
SCRNDUMP_DESC=  Enable XHTML and SVG screen dumps
TOOLBAR_DESC=   Enable pulldown menus with a toolbar

OPTIONS_DEFAULT=WCHAR LUIT 256COLOR

256COLOR_CONFIGURE_ENABLE=      256-color
LUIT_BUILD_DEPENDS=             luit:x11/luit
LUIT_CONFIGURE_ENABLE=          luit
LUIT_IMPLIES=                   WCHAR
WCHAR_CONFIGURE_ENABLE=         wide-chars
WCHAR_VARS=                     PKGMESSAGE="${PKGDIR}/pkg-message.wchar"
DECTERM_CONFIGURE_ENABLE=       dec-locator
PCRE_CONFIGURE_WITH=            pcre
PCRE_LIB_DEPENDS=               libpcre.so:devel/pcre
DABBREV_CONFIGURE_ENABLE=       dabbrev
SIXEL_CONFIGURE_ENABLE=         sixel-graphics
REGIS_CONFIGURE_ENABLE=         regis-graphics
GNOME_USES=                     desktop-file-utils
LOGGING_CONFIGURE_ENABLE=       logging
SCRNDUMP_CONFIGURE_ENABLE=      screen-dumps
XAW3D_CONFIGURE_WITH=           Xaw3d
XAW3D_LIB_DEPENDS=              libXaw3d.so:x11-toolkits/Xaw3d
XAW3DXFT_CONFIGURE_WITH=        Xaw3dxft
XAW3DXFT_LIB_DEPENDS=           libXaw3dxft.so:x11-toolkits/libxaw3dxft
NEXTAW_CONFIGURE_WITH=          neXtaw
NEXTAW_LIB_DEPENDS=             libneXtaw.so:x11-toolkits/neXtaw
TOOLBAR_CONFIGURE_ENABLE=       toolbar
WCHAR_LIB_DEPENDS=              libfreetype.so:print/freetype2
XINERAMA_USE=                   XORG=xinerama,xorgproto
XINERAMA_CONFIGURE_OFF=         --without-xinerama

LIB_DEPENDS+=   libfontconfig.so:x11-fonts/fontconfig

.include <bsd.port.options.mk>

.if ! ${PORT_OPTIONS:MXAW3D} && ! ${PORT_OPTIONS:MXAW3DXFT} && ! ${PORT_OPTIONS:MNEXTAW}
USE_XORG+=      xaw
.endif

post-extract:
        @${CP} ${WRKDIR}/bsd-xterm-icons-1/*.png \
                ${WRKDIR}/bsd-xterm-icons-1/*.xpm \
                        ${WRKSRC}/icons/

post-install:
.for f in koi8rxterm resize uxterm xterm
        @${CHMOD} ${BINMODE} ${STAGEDIR}${PREFIX}/bin/${f}
.endfor
        ${INSTALL_DATA} ${WRKSRC}/xterm.desktop \
                ${STAGEDIR}${PREFIX}/share/applications/

.include <bsd.port.mk>
vesta$


Pretty darn up to date and no real surprises there.

I should see what happens if I change that to 356 but I bet
it all "just works"(tm).



In the more typical case, the script would find the terminfo interface
(and the associated term.h file), but FreeBSD base doesn't _do_ that.

Given all of that, I can improve the configure script by checking for
this case and disabling the tcap-query feature for FreeBSD if the
configure script isn't able to compile/link the tgetent function.


I'll mess around with this a bit today and let you know what I see, if
anything.


--
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken
GreyBeard and suspenders optional
_______________________________________________
xorg@lists.x.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: https://lists.x.org/mailman/listinfo/xorg
Your subscription address: %(user_address)s

Reply via email to