Message ID | 20240227071004.2402854-1-changqing.li@windriver.com |
---|---|
State | Accepted, archived |
Commit | daff3b4bf9d7b77a8170d9bc6f0b9c81b0a077d7 |
Headers | show |
Series | [V6] rxvt-unicode: Fix installing of terminfo | expand |
On Tue, 27 Feb 2024 at 08:10, Changqing Li <changqing.li@eng.windriver.com> wrote: > + > + install -d ${D}/${sysconfdir} > + install -m 0644 ${S}/doc/etc/rxvt-unicode.terminfo ${D}/${sysconfdir}/rxvt-unicode.terminfo > +} > + > +RDEPENDS:${PN} = "ncurses-tools" > +PACKAGE_WRITE_DEPS += "qemu-native" > +pkg_postinst:${PN} () { > + if [ -n "$D" ]; then > + if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true', 'false', d)}; then > + outdir=$(${@qemu_run_binary(d, '$D', '${bindir}/tic')} -D 2>&1 | sed -n "2p" | awk '{ print $2 }') > + ${@qemu_run_binary(d, '$D', '${bindir}/tic')} -x ${sysconfdir}/rxvt-unicode.terminfo -o $D$outdir > + fi > + fi > } I would really prefer to make native tic do the right thing, if the only problem is that it installs the needed items into the wrong location. qemu usermode is notoriously brittle, and isn't available on some targets at all. Alex
On 2/27/24 17:37, Alexander Kanavin wrote: > CAUTION: This email comes from a non Wind River email account! > Do not click links or open attachments unless you recognize the sender and know the content is safe. > > On Tue, 27 Feb 2024 at 08:10, Changqing Li > <changqing.li@eng.windriver.com> wrote: >> + >> + install -d ${D}/${sysconfdir} >> + install -m 0644 ${S}/doc/etc/rxvt-unicode.terminfo ${D}/${sysconfdir}/rxvt-unicode.terminfo >> +} >> + >> +RDEPENDS:${PN} = "ncurses-tools" >> +PACKAGE_WRITE_DEPS += "qemu-native" >> +pkg_postinst:${PN} () { >> + if [ -n "$D" ]; then >> + if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true', 'false', d)}; then >> + outdir=$(${@qemu_run_binary(d, '$D', '${bindir}/tic')} -D 2>&1 | sed -n "2p" | awk '{ print $2 }') >> + ${@qemu_run_binary(d, '$D', '${bindir}/tic')} -x ${sysconfdir}/rxvt-unicode.terminfo -o $D$outdir >> + fi >> + fi >> } > I would really prefer to make native tic do the right thing, if the > only problem is that it installs the needed items into the wrong > location. Yes, the wrong location is the only problem. V4 patch is a way to make native tic install to a right location. but this solution (hardcode output dir to $(DESTDIR)$(datadir)/terminfo) is rejected by upstream. if use V4 patch, we need to make it an oe specific patch. upstream said that to it is better to use target tic to generate the terminfo to make sure ncurses in the target environment can get the correct terminfo. That's why I changed to use target tic. but we do will met "some targets don't support usermode" problem. So what's your suggestion about this? use V4 patch? if you think the hardcode path $(DESTDIR)$(datadir)/terminfo) is not good in v4, I can do some change for V4. Since native tic and target tic is from the same recipe, the TERMINFO should be the same except native tic is under ${RECIPE_SYSROOT_NATIVE}. how about like what I did in this patch, get the native outputdir from native tic, cut ${RECIPE_SYSROOT_NATIVE} to get target outputdir, then pass it to nativetic .. -o ${DESTDIR}${target outputdir} //Changqing > > qemu usermode is notoriously brittle, and isn't available on some > targets at all. > > Alex
On Wed, 28 Feb 2024 at 02:54, Changqing Li <changqing.li@windriver.com> wrote: > Yes, the wrong location is the only problem. V4 patch is a way to make native tic install to a right location. > > but this solution (hardcode output dir to $(DESTDIR)$(datadir)/terminfo) is rejected by upstream. > > if use V4 patch, we need to make it an oe specific patch. > > > upstream said that to it is better to use target tic to generate the terminfo to make sure ncurses in the > > target environment can get the correct terminfo. That's why I changed to use target tic. but we do will met > > "some targets don't support usermode" problem. > > So what's your suggestion about this? use V4 patch? I would suggest this: - recipe needs to depend on ncurses-native, otherwise we have a floating dependency on tic executable - drop the patch, and instead just add a manual tic invocation into do_install:append () that places the output into correct directory in ${D}. As far as I understand, what doc/Makefile does is harmless, but you can additionally set environment variable TIC to : or /usr/bin/true as suggested by upstream to avoid that happening. Alex
diff --git a/meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc b/meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc index e7d520ebef..e6ca10f6e0 100644 --- a/meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc +++ b/meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc @@ -11,9 +11,11 @@ DEPENDS = "virtual/libx11 libxt libxft gdk-pixbuf libxmu libptytty" SRC_URI = "http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-${PV}.tar.bz2 \ file://xwc.patch \ file://rxvt.desktop \ - file://rxvt.png" + file://rxvt.png \ + file://0001-Makefile.in-disable-the-terminfo-installation-by-set.patch \ +" -inherit autotools pkgconfig update-alternatives +inherit autotools pkgconfig update-alternatives qemu PROVIDES = "virtual/x-terminal-emulator" ALTERNATIVE:${PN} = "x-terminal-emulator" @@ -53,6 +55,20 @@ do_install:append () { install -m 0644 ${WORKDIR}/rxvt.png ${D}/${datadir}/pixmaps install -m 0644 ${WORKDIR}/rxvt.desktop ${D}/${datadir}/applications + + install -d ${D}/${sysconfdir} + install -m 0644 ${S}/doc/etc/rxvt-unicode.terminfo ${D}/${sysconfdir}/rxvt-unicode.terminfo +} + +RDEPENDS:${PN} = "ncurses-tools" +PACKAGE_WRITE_DEPS += "qemu-native" +pkg_postinst:${PN} () { + if [ -n "$D" ]; then + if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true', 'false', d)}; then + outdir=$(${@qemu_run_binary(d, '$D', '${bindir}/tic')} -D 2>&1 | sed -n "2p" | awk '{ print $2 }') + ${@qemu_run_binary(d, '$D', '${bindir}/tic')} -x ${sysconfdir}/rxvt-unicode.terminfo -o $D$outdir + fi + fi } FILES:${PN} += "${datadir}/applications/rxvt.desktop ${datadir}/pixmaps/rxvt.png" diff --git a/meta/recipes-sato/rxvt-unicode/rxvt-unicode/0001-Makefile.in-disable-the-terminfo-installation-by-set.patch b/meta/recipes-sato/rxvt-unicode/rxvt-unicode/0001-Makefile.in-disable-the-terminfo-installation-by-set.patch new file mode 100644 index 0000000000..6bdbedb3c4 --- /dev/null +++ b/meta/recipes-sato/rxvt-unicode/rxvt-unicode/0001-Makefile.in-disable-the-terminfo-installation-by-set.patch @@ -0,0 +1,37 @@ +From ff5c75995485ee9c5331e52bb9bf3aa5db6d8837 Mon Sep 17 00:00:00 2001 +From: Changqing Li <changqing.li@windriver.com> +Date: Wed, 7 Feb 2024 10:35:23 +0800 +Subject: [PATCH] Makefile.in: disable the terminfo installation by setting TIC + to : + +For cross compile, TIC will be native tic in recipe-sysroot-native, and +the terminfo path will be native path, the rxvt-unicode terminfo will be +installed to native path. + +disable the terminfo installation by setting TIC to : + +Upstream-Status: Inappropriate [ oe specific ] + +Signed-off-by: Changqing Li <changqing.li@windriver.com> +--- + doc/Makefile.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/doc/Makefile.in b/doc/Makefile.in +index e3d1fe8..1961c93 100644 +--- a/doc/Makefile.in ++++ b/doc/Makefile.in +@@ -100,8 +100,8 @@ install: all + $(INSTALL_DATA) rxvtd.1.man $(DESTDIR)$(man1dir)/$(RXVTNAME)d.$(man1ext) + $(INSTALL_DATA) rxvt.7.man $(DESTDIR)$(man7dir)/$(RXVTNAME).$(man7ext) + $(INSTALL_DATA) rclock.1.man $(DESTDIR)$(man1dir)/urclock.$(man1ext) +- @TIC@ -x $(srcdir)/etc/rxvt-unicode.terminfo || \ +- @TIC@ $(srcdir)/etc/rxvt-unicode.terminfo ++ : -x $(srcdir)/etc/rxvt-unicode.terminfo || \ ++ : $(srcdir)/etc/rxvt-unicode.terminfo + + distdepend: alldoc + +-- +2.25.1 +