[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.
?