[PATCH] gnu: Openbox: Make compatible with Python 3.

  • Done
  • quality assurance status badge
Details
3 participants
  • Leo Famulari
  • Ludovic Courtès
  • Vinicius Monego
Owner
unassigned
Submitted by
Leo Famulari
Severity
normal
Merged with
L
L
Leo Famulari wrote on 20 Jan 2022 19:11
(address . guix-patches@gnu.org)
002d396c0ecfe47e1457a71842d53c95875f99cf.1642702165.git.leo@famulari.name
As the patch file says, Openbox seems abandoned upstream. So, as Python 2 is
phased out, we can either use a patch like this, or remove Openbox.

I rebuilt all affected packages on x86_64-linux, and there were no new build
failures, only the same failures as before this patch:

kdepim-runtime-20.04.1
kmail-20.04.1
akregator-20.04.1
scorep-openmpi-3.1
smb4k-3.0.6

* gnu/packages/patches/openbox-python-3-compatibility.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/openbox.scm (openbox)[source]: Use it.
---
gnu/packages/openbox.scm | 4 +-
.../openbox-python-3-compatibility.patch | 273 ++++++++++++++++++
2 files changed, 276 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/openbox-python-3-compatibility.patch

Toggle diff (310 lines)
diff --git a/gnu/packages/openbox.scm b/gnu/packages/openbox.scm
index 873592c19e..698c939a96 100644
--- a/gnu/packages/openbox.scm
+++ b/gnu/packages/openbox.scm
@@ -24,6 +24,7 @@ (define-module (gnu packages openbox)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
+ #:use-module (gnu packages)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gnome)
@@ -44,6 +45,7 @@ (define-public openbox
(uri (string-append
"http://openbox.org/dist/openbox/" name "-"
version ".tar.xz"))
+ (patches (search-patches "openbox-python-3-compatibility.patch"))
(sha256
(base32
"0vg2y1qddsdxkjv806mzpvmkgzliab8ll4s7zm7ma5jnriamirxb"))))
@@ -60,7 +62,7 @@ (define-public openbox
libxrandr
libxft
pango
- python-2))
+ python))
(synopsis "Box style window manager")
(description
"Openbox is a highly configurable, next generation window manager with
diff --git a/gnu/packages/patches/openbox-python-3-compatibility.patch b/gnu/packages/patches/openbox-python-3-compatibility.patch
new file mode 100644
index 0000000000..8e19bc86d6
--- /dev/null
+++ b/gnu/packages/patches/openbox-python-3-compatibility.patch
@@ -0,0 +1,273 @@
+Make Openbox compatible with Python 3.
+
+Patch adapted from Gentoo:
+
+https://gitweb.gentoo.org/repo/gentoo.git/patch/?id=31bad4f781f788ccf848500f8c17905ad32a2de9
+
+Openbox seems to be abandoned upstream, with no activity in their Git repo since
+2015:
+
+http://openbox.org/develop-git.php
+
+From 31bad4f781f788ccf848500f8c17905ad32a2de9 Mon Sep 17 00:00:00 2001
+From: Hanno Böck <hanno@gentoo.org>
+Date: Mon, 13 Jan 2020 17:22:27 +0100
+Subject: x11-wm/openbox: Python 3 support.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Use EAPI 7.
+Remove Python 2, change to python single package.
+
+Closes: https://bugs.gentoo.org/696042
+Signed-off-by: Hanno Böck <hanno@gentoo.org>
+Package-Manager: Portage-2.3.84, Repoman-2.3.20
+---
+ x11-wm/openbox/files/openbox-3.6.1-py3-xdg.patch | 126 +++++++++++++++++++++++
+ x11-wm/openbox/openbox-3.6.1-r2.ebuild | 100 ++++++++++++++++++
+ 2 files changed, 226 insertions(+)
+ create mode 100644 x11-wm/openbox/files/openbox-3.6.1-py3-xdg.patch
+ create mode 100644 x11-wm/openbox/openbox-3.6.1-r2.ebuild
+
+diff --git a/x11-wm/openbox/files/openbox-3.6.1-py3-xdg.patch b/x11-wm/openbox/files/openbox-3.6.1-py3-xdg.patch
+new file mode 100644
+index 00000000000..d28b536d64a
+--- /dev/null
++++ b/x11-wm/openbox/files/openbox-3.6.1-py3-xdg.patch
+@@ -0,0 +1,126 @@
++diff --git a/data/autostart/openbox-xdg-autostart b/data/autostart/openbox-xdg-autostart
++index 04a17a199..f2c75bbdd 100755
++--- a/data/autostart/openbox-xdg-autostart
+++++ b/data/autostart/openbox-xdg-autostart
++@@ -19,6 +19,8 @@
++ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ # GNU General Public License for more details.
++
+++from __future__ import print_function
+++
++ ME="openbox-xdg-autostart"
++ VERSION="1.1"
++
++@@ -28,9 +30,9 @@ try:
++ from xdg.DesktopEntry import DesktopEntry
++ from xdg.Exceptions import ParsingError
++ except ImportError:
++- print
++- print >>sys.stderr, "ERROR:", ME, "requires PyXDG to be installed"
++- print
+++ print()
+++ print("ERROR:", ME, "requires PyXDG to be installed", file=sys.stderr)
+++ print()
++ sys.exit(1)
++
++ def main(argv=sys.argv):
++@@ -51,7 +53,7 @@ def main(argv=sys.argv):
++ try:
++ autofile = AutostartFile(path)
++ except ParsingError:
++- print "Invalid .desktop file: " + path
+++ print("Invalid .desktop file: " + path)
++ else:
++ if not autofile in files:
++ files.append(autofile)
++@@ -99,9 +101,9 @@ class AutostartFile:
++
++ def _alert(self, str, info=False):
++ if info:
++- print "\t ", str
+++ print("\t ", str)
++ else:
++- print "\t*", str
+++ print("\t*", str)
++
++ def _showInEnvironment(self, envs, verbose=False):
++ default = not self.de.getOnlyShowIn()
++@@ -146,14 +148,14 @@ class AutostartFile:
++
++ def display(self, envs):
++ if self._shouldRun(envs):
++- print "[*] " + self.de.getName()
+++ print("[*] " + self.de.getName())
++ else:
++- print "[ ] " + self.de.getName()
+++ print("[ ] " + self.de.getName())
++ self._alert("File: " + self.path, info=True)
++ if self.de.getExec():
++ self._alert("Executes: " + self.de.getExec(), info=True)
++ self._shouldRun(envs, True)
++- print
+++ print()
++
++ def run(self, envs):
++ here = os.getcwd()
++@@ -165,34 +167,34 @@ class AutostartFile:
++ os.chdir(here)
++
++ def show_help():
++- print "Usage:", ME, "[OPTION]... [ENVIRONMENT]..."
++- print
++- print "This tool will run xdg autostart .desktop files"
++- print
++- print "OPTIONS"
++- print " --list Show a list of the files which would be run"
++- print " Files which would be run are marked with an asterix"
++- print " symbol [*]. For files which would not be run,"
++- print " information is given for why they are excluded"
++- print " --help Show this help and exit"
++- print " --version Show version and copyright information"
++- print
++- print "ENVIRONMENT specifies a list of environments for which to run autostart"
++- print "applications. If none are specified, only applications which do not "
++- print "limit themselves to certain environments will be run."
++- print
++- print "ENVIRONMENT can be one or more of:"
++- print " GNOME Gnome Desktop"
++- print " KDE KDE Desktop"
++- print " ROX ROX Desktop"
++- print " XFCE XFCE Desktop"
++- print " Old Legacy systems"
++- print
+++ print("Usage:", ME, "[OPTION]... [ENVIRONMENT]...")
+++ print()
+++ print("This tool will run xdg autostart .desktop files")
+++ print()
+++ print("OPTIONS")
+++ print(" --list Show a list of the files which would be run")
+++ print(" Files which would be run are marked with an asterix")
+++ print(" symbol [*]. For files which would not be run,")
+++ print(" information is given for why they are excluded")
+++ print(" --help Show this help and exit")
+++ print(" --version Show version and copyright information")
+++ print()
+++ print("ENVIRONMENT specifies a list of environments for which to run autostart")
+++ print("applications. If none are specified, only applications which do not ")
+++ print("limit themselves to certain environments will be run.")
+++ print()
+++ print("ENVIRONMENT can be one or more of:")
+++ print(" GNOME Gnome Desktop")
+++ print(" KDE KDE Desktop")
+++ print(" ROX ROX Desktop")
+++ print(" XFCE XFCE Desktop")
+++ print(" Old Legacy systems")
+++ print()
++
++ def show_version():
++- print ME, VERSION
++- print "Copyright (c) 2008 Dana Jansens"
++- print
+++ print(ME, VERSION)
+++ print("Copyright (c) 2008 Dana Jansens")
+++ print()
++
++ if __name__ == "__main__":
++ sys.exit(main())
+#diff --git a/x11-wm/openbox/openbox-3.6.1-r2.ebuild b/x11-wm/openbox/openbox-3.6.1-r2.ebuild
+#new file mode 100644
+#index 00000000000..80c67975b17
+#--- /dev/null
+#+++ b/x11-wm/openbox/openbox-3.6.1-r2.ebuild
+#@@ -0,0 +1,100 @@
+#+# Copyright 1999-2020 Gentoo Authors
+#+# Distributed under the terms of the GNU General Public License v2
+#+
+#+EAPI=7
+#+
+#+PYTHON_COMPAT=( python3_{6,7,8} )
+#+inherit multilib autotools python-single-r1 eutils
+#+
+#+DESCRIPTION="A standards compliant, fast, light-weight, extensible window manager"
+#+HOMEPAGE="http://openbox.org/"
+#+if [[ ${PV} == *9999* ]]; then
+#+ inherit git-r3
+#+ EGIT_REPO_URI="git://git.openbox.org/dana/openbox"
+#+ SRC_URI="branding? (
+#+ https://dev.gentoo.org/~hwoarang/distfiles/surreal-gentoo.tar.gz )"
+#+else
+#+ SRC_URI="http://openbox.org/dist/openbox/${P}.tar.gz
+#+ branding? ( https://dev.gentoo.org/~hwoarang/distfiles/surreal-gentoo.tar.gz )"
+#+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-linux"
+#+fi
+#+
+#+LICENSE="GPL-2"
+#+SLOT="3"
+#+IUSE="branding debug imlib nls session startup-notification static-libs svg xdg"
+#+REQUIRED_USE="xdg? ( ${PYTHON_REQUIRED_USE} )"
+#+
+#+RDEPEND="dev-libs/glib:2
+#+ >=dev-libs/libxml2-2.0
+#+ >=media-libs/fontconfig-2
+#+ x11-libs/cairo
+#+ x11-libs/libXau
+#+ x11-libs/libXcursor
+#+ x11-libs/libXext
+#+ x11-libs/libXft
+#+ x11-libs/libXinerama
+#+ x11-libs/libXrandr
+#+ x11-libs/libXt
+#+ >=x11-libs/pango-1.8[X]
+#+ imlib? ( media-libs/imlib2 )
+#+ startup-notification? ( >=x11-libs/startup-notification-0.8 )
+#+ svg? ( gnome-base/librsvg:2 )
+#+ xdg? (
+#+ ${PYTHON_DEPS}
+#+ dev-python/pyxdg[${PYTHON_USEDEP}]
+#+ )
+#+ "
+#+DEPEND="${RDEPEND}
+#+ sys-devel/gettext
+#+ virtual/pkgconfig
+#+ x11-base/xorg-proto"
+#+
+#+PATCHES=(
+#+ "${FILESDIR}/${PN}-3.5.2-gnome-session.patch"
+#+ # see https://github.com/danakj/openbox/pull/35
+#+ "${FILESDIR}/${PN}-3.6.1-py3-xdg.patch"
+#+)
+#+
+#+src_prepare() {
+#+ default
+#+ sed -i \
+#+ -e "s:-O0 -ggdb ::" \
+#+ -e 's/-fno-strict-aliasing//' \
+#+ "${S}"/m4/openbox.m4 || die
+#+ eautoreconf
+#+}
+#+
+#+src_configure() {
+#+ econf \
+#+ --docdir="${EPREFIX}/usr/share/doc/${PF}" \
+#+ $(use_enable debug) \
+#+ $(use_enable static-libs static) \
+#+ $(use_enable nls) \
+#+ $(use_enable imlib imlib2) \
+#+ $(use_enable svg librsvg) \
+#+ $(use_enable startup-notification) \
+#+ $(use_enable session session-management) \
+#+ --with-x
+#+}
+#+
+#+src_install() {
+#+ dodir /etc/X11/Sessions
+#+ echo "/usr/bin/openbox-session" > "${ED}/etc/X11/Sessions/${PN}"
+#+ fperms a+x /etc/X11/Sessions/${PN}
+#+ emake DESTDIR="${D}" install
+#+ if use branding; then
+#+ insinto /usr/share/themes
+#+ doins -r "${WORKDIR}"/Surreal_Gentoo
+#+ # make it the default theme
+#+ sed -i \
+#+ -e "/<theme>/{n; s@<name>.*</name>@<name>Surreal_Gentoo</name>@}" \
+#+ "${D}"/etc/xdg/openbox/rc.xml \
+#+ || die "failed to set Surreal Gentoo as the default theme"
+#+ fi
+#+ use static-libs || find "${D}" -name '*.la' -delete
+#+ if use xdg ; then
+#+ python_fix_shebang "${ED}"/usr/libexec/openbox-xdg-autostart
+#+ else
+#+ rm "${ED}"/usr/libexec/openbox-xdg-autostart || die
+#+ fi
+#+}
+#--
+#cgit v1.2.3-18-g5258
+#
--
2.34.0
L
L
Leo Famulari wrote on 3 Feb 2022 17:13
(no subject)
(address . control@debbugs.gnu.org)
Yfv/Ro/LYDW8Ytqn@jasmine.lan
merge 53394 53750
V
V
Vinicius Monego wrote on 6 Feb 2022 19:56
Re: [PATCH] gnu: Openbox: Make compatible with Python 3.
1f60b35cb7b09c8f0799378b9fcdf1be442d415a.camel@posteo.net
Em qui, 2022-01-20 às 13:11 -0500, Leo Famulari escreveu:
Toggle quote (15 lines)
> As the patch file says, Openbox seems abandoned upstream. So, as
> Python 2 is
> phased out, we can either use a patch like this, or remove Openbox.
>
> I rebuilt all affected packages on x86_64-linux, and there were no
> new build
> failures, only the same failures as before this patch:
>
> kdepim-runtime-20.04.1
> kmail-20.04.1
> akregator-20.04.1
> scorep-openmpi-3.1
> smb4k-3.0.6
>

[...]

I noticed that with 'python' the shebang in libexec/openbox-xdg-
autostart becomes '#!/usr/bin/env python' while with python-wrapper it
changes to the store path.

I also 'cat' that file and the code is still in Python 2. Can you check
this?

openbox.scm is missing the copyright line, and python2-xdg should be
changed to python-xdg. There are trailing whitespaces in the patch.
L
L
Ludovic Courtès wrote on 29 Mar 2022 12:06
Re: bug#53394: [PATCH] gnu: Openbox: Make compatible with Python 3.
(name . Vinicius Monego)(address . monego@posteo.net)
87zgl913a7.fsf_-_@gnu.org
Leo, Vinicius,

What’s the status of this patch? Looks like it was almost ready.

Thanks,
Ludo’.

Vinicius Monego <monego@posteo.net> skribis:

Toggle quote (27 lines)
> Em qui, 2022-01-20 às 13:11 -0500, Leo Famulari escreveu:
>> As the patch file says, Openbox seems abandoned upstream. So, as
>> Python 2 is
>> phased out, we can either use a patch like this, or remove Openbox.
>>
>> I rebuilt all affected packages on x86_64-linux, and there were no
>> new build
>> failures, only the same failures as before this patch:
>>
>> kdepim-runtime-20.04.1
>> kmail-20.04.1
>> akregator-20.04.1
>> scorep-openmpi-3.1
>> smb4k-3.0.6
>>
>
> [...]
>
> I noticed that with 'python' the shebang in libexec/openbox-xdg-
> autostart becomes '#!/usr/bin/env python' while with python-wrapper it
> changes to the store path.
>
> I also 'cat' that file and the code is still in Python 2. Can you check
> this?
>
> openbox.scm is missing the copyright line, and python2-xdg should be
> changed to python-xdg. There are trailing whitespaces in the patch.
?
Your comment

This issue is archived.

To comment on this conversation send an email to 53394@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 53394
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch