From: kruceter <kruceter@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] dispcalGUI: update to 3.9.8, change upstream.
Date: Thu, 10 Nov 2022 08:13:42 +0100 [thread overview]
Message-ID: <20221110071342.zT3ZkHAktLK2pUuh0KxCp8JQVF4e3ZQVnCT6Jg3w-yo@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-40420@inbox.vuxu.org>
[-- Attachment #1: Type: text/plain, Size: 616 bytes --]
There is an updated pull request by kruceter against master on the void-packages repository
https://github.com/kruceter/void-packages dispcalgui
https://github.com/void-linux/void-packages/pull/40420
dispcalGUI: update to 3.9.8, change upstream.
dispcalGUI is not maintained by its original authors anymore.
The significant advantage of the fork is python 3 support which excludes python 2 from dependencies (related to #38229).
cc: @lemmi
#### Testing the changes
- I tested the changes in this PR: **briefly**
A patch file from https://github.com/void-linux/void-packages/pull/40420.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-dispcalgui-40420.patch --]
[-- Type: text/x-diff, Size: 17588 bytes --]
From 478a7e4f1f06e66ec3e334141af132721228fd22 Mon Sep 17 00:00:00 2001
From: Krul Ceter <kruceter@proton.me>
Date: Wed, 9 Nov 2022 20:08:17 +0300
Subject: [PATCH] dispcalGUI: update to 3.9.8, change upstream.
dispcalGUI is not maintained by its original authors anymore.
The significant advantage of the fork is python 3 support which
excludes python 2 from dependencies (related to void-packages#38229).
---
srcpkgs/dispcalGUI/patches/error.patch | 44 +++----
srcpkgs/dispcalGUI/patches/fix-gettext.patch | 13 ++
.../patches/fix-hardcoded-import.patch | 18 +++
.../dispcalGUI/patches/fix-setuptools.patch | 18 +++
srcpkgs/dispcalGUI/patches/fix-version.patch | 111 ++++++++++++++++++
srcpkgs/dispcalGUI/patches/update-check.patch | 90 ++++++++++++++
srcpkgs/dispcalGUI/template | 39 +++---
7 files changed, 295 insertions(+), 38 deletions(-)
create mode 100644 srcpkgs/dispcalGUI/patches/fix-gettext.patch
create mode 100644 srcpkgs/dispcalGUI/patches/fix-hardcoded-import.patch
create mode 100644 srcpkgs/dispcalGUI/patches/fix-setuptools.patch
create mode 100644 srcpkgs/dispcalGUI/patches/fix-version.patch
create mode 100644 srcpkgs/dispcalGUI/patches/update-check.patch
diff --git a/srcpkgs/dispcalGUI/patches/error.patch b/srcpkgs/dispcalGUI/patches/error.patch
index 169fc528b138..757a906b9ddc 100644
--- a/srcpkgs/dispcalGUI/patches/error.patch
+++ b/srcpkgs/dispcalGUI/patches/error.patch
@@ -4,30 +4,30 @@ Therefore the current code either results in garbled output or
doesn't work at all. Replace it with a simple printf.
---
---- a/DisplayCAL/RealDisplaySizeMM.c 2018-07-25 16:47:01.000000000 +0200
-+++ b/DisplayCAL/RealDisplaySizeMM.c 2018-07-25 16:47:01.000000000 +0200
-@@ -822,13 +822,13 @@
- sprintf(desc1, "_ICC_PROFILE_%d",disps[ndisps]->uscreen);
+--- a/DisplayCAL/RealDisplaySizeMM.c
++++ b/DisplayCAL/RealDisplaySizeMM.c
+@@ -835,13 +835,13 @@
+ sprintf(desc1, "_ICC_PROFILE_%d",disps[ndisps]->uscreen);
- if ((disps[ndisps]->icc_atom = XInternAtom(mydisplay, desc1, False)) == None)
-- error("Unable to intern atom '%s'",desc1);
-+ fprintf(stderr, "Unable to intern atom '%s'",desc1);
+ if ((disps[ndisps]->icc_atom = XInternAtom(mydisplay, desc1, False)) == None)
+- error("Unable to intern atom '%s'",desc1);
++ fprintf(stderr, "Unable to intern atom '%s'",desc1);
- debugrr2((errout,"Root atom '%s'\n",desc1));
+ debugrr2((errout,"Root atom '%s'\n",desc1));
- /* Create the atom of the output that may contain the associated ICC profile */
- if ((disps[ndisps]->icc_out_atom = XInternAtom(mydisplay, "_ICC_PROFILE", False)) == None)
-- error("Unable to intern atom '%s'","_ICC_PROFILE");
-+ fprintf(stderr, "Unable to intern atom '%s'","_ICC_PROFILE");
-
- /* Grab the EDID from the output */
- {
-@@ -993,7 +993,7 @@
- sprintf(desc1, "_ICC_PROFILE_%d",disps[i]->uscreen);
+ /* Create the atom of the output that may contain the associated ICC profile */
+ if ((disps[ndisps]->icc_out_atom = XInternAtom(mydisplay, "_ICC_PROFILE", False)) == None)
+- error("Unable to intern atom '%s'","_ICC_PROFILE");
++ fprintf(stderr, "Unable to intern atom '%s'","_ICC_PROFILE");
- if ((disps[i]->icc_atom = XInternAtom(mydisplay, desc1, False)) == None)
-- error("Unable to intern atom '%s'",desc1);
-+ fprintf(stderr, "Unable to intern atom '%s'",desc1);
+ /* Grab the EDID from the output */
+ {
+@@ -1007,7 +1007,7 @@
+ sprintf(desc1, "_ICC_PROFILE_%d",disps[i]->uscreen);
- /* See if we can locate the EDID of the monitor for this screen */
- for (j = 0; j < 2; j++) {
+ if ((disps[i]->icc_atom = XInternAtom(mydisplay, desc1, False)) == None)
+- error("Unable to intern atom '%s'",desc1);
++ fprintf(stderr, "Unable to intern atom '%s'",desc1);
+
+ /* See if we can locate the EDID of the monitor for this screen */
+ for (j = 0; j < 2; j++) {
diff --git a/srcpkgs/dispcalGUI/patches/fix-gettext.patch b/srcpkgs/dispcalGUI/patches/fix-gettext.patch
new file mode 100644
index 000000000000..8236dca857c1
--- /dev/null
+++ b/srcpkgs/dispcalGUI/patches/fix-gettext.patch
@@ -0,0 +1,13 @@
+"codeset" in gettext.translation() is deprecated with python 3.11
+
+--- a/DisplayCAL/defaultpaths.py
++++ b/DisplayCAL/defaultpaths.py
+@@ -231,7 +231,7 @@
+
+ try:
+ obj.translation = gettext.translation(
+- obj.GETTEXT_PACKAGE, locale_dir, codeset="UTF-8"
++ obj.GETTEXT_PACKAGE, locale_dir
+ )
+ except IOError as exception:
+ print("XDG:", exception)
diff --git a/srcpkgs/dispcalGUI/patches/fix-hardcoded-import.patch b/srcpkgs/dispcalGUI/patches/fix-hardcoded-import.patch
new file mode 100644
index 000000000000..e327cc512fc4
--- /dev/null
+++ b/srcpkgs/dispcalGUI/patches/fix-hardcoded-import.patch
@@ -0,0 +1,18 @@
+--- a/DisplayCAL/RealDisplaySizeMM.py
++++ b/DisplayCAL/RealDisplaySizeMM.py
+@@ -17,14 +17,7 @@
+ # TODO: Intel vs ARM (Apple Silicon) distinction
+ from DisplayCAL.lib64.RealDisplaySizeMM import *
+ else:
+- # elif sys.platform == "win32":
+- # Windows have separate files
+- if sys.version_info[:2] == (3, 8):
+- from DisplayCAL.lib64.python38.RealDisplaySizeMM import *
+- elif sys.version_info[:2] == (3, 9):
+- from DisplayCAL.lib64.python39.RealDisplaySizeMM import *
+- elif sys.version_info[:2] == (3, 10):
+- from DisplayCAL.lib64.python310.RealDisplaySizeMM import *
++ from DisplayCAL.lib64.python@PY_VER@.RealDisplaySizeMM import *
+ # else:
+ # pass
+
diff --git a/srcpkgs/dispcalGUI/patches/fix-setuptools.patch b/srcpkgs/dispcalGUI/patches/fix-setuptools.patch
new file mode 100644
index 000000000000..aa1cdcb768b0
--- /dev/null
+++ b/srcpkgs/dispcalGUI/patches/fix-setuptools.patch
@@ -0,0 +1,18 @@
+--- a/DisplayCAL/setup.py
++++ b/DisplayCAL/setup.py
+@@ -453,7 +453,6 @@
+ prefix = ""
+ recordfile_name = None # record installed files to this file
+ sdist = "sdist" in sys.argv[1:]
+- setuptools = None
+ skip_postinstall = "--skip-postinstall" in sys.argv[1:]
+ use_distutils = not bdist_bbfreeze and not do_py2app
+ use_setuptools = (
+@@ -480,7 +479,6 @@
+ import setuptools
+ from setuptools import setup, Extension
+
+- setuptools = True
+ print("using setuptools")
+ current_findall = setuptools.findall
+ except ImportError:
diff --git a/srcpkgs/dispcalGUI/patches/fix-version.patch b/srcpkgs/dispcalGUI/patches/fix-version.patch
new file mode 100644
index 000000000000..ae0709b2b68c
--- /dev/null
+++ b/srcpkgs/dispcalGUI/patches/fix-version.patch
@@ -0,0 +1,111 @@
+setup.py uses package version provided that the builddir is a git
+repository and git is present in hostmakedepends.
+
+Otherwise 0.0.0 is supplied as the version.
+
+--- a/setup.py
++++ b/setup.py
+@@ -445,71 +445,40 @@
+
+ from DisplayCAL.util_os import which
+
+- if (
+- Path(pydir, ".git").is_dir()
+- and (which("git") or which("git.exe"))
+- and (not sys.argv[1:] or (len(non_build_args) < len(sys.argv[1:]) and not help))
+- ):
+- print("Trying to get git version information...")
+- git_version = None
+-
+- try:
+- p = subprocess.Popen(
+- ["git", "rev-parse", "--short", "HEAD"],
+- stdout=subprocess.PIPE,
+- cwd=pydir,
+- )
+- except Exception as exception:
+- print("...failed:", exception)
+- else:
+- git_version = p.communicate()[0].strip().decode()
+- version_base_file_path = Path(pydir, "VERSION_BASE")
+- version_base = "0.0.0".split(".")
+-
+- if version_base_file_path.is_file():
+- with open(version_base_file_path) as version_base_file:
+- version_base = version_base_file.read().strip().split(".")
+-
+- print("Trying to get git information...")
+- lastmod = ""
+- timestamp = None
+- mtime = 0
+-
+- try:
+- p = subprocess.Popen(
+- ["git", "log", "-1", "--format=%ct"], stdout=subprocess.PIPE, cwd=pydir
++ version_base_file_path = Path(pydir, "VERSION_BASE")
++
++ with open(version_base_file_path) as version_base_file:
++ version_base = version_base_file.read().strip().split(".")
++
++ lastmod = ""
++ timestamp = None
++ mtime = 0
++ timestamp = time.gmtime(mtime)
++
++ if timestamp:
++ lastmod = f"{strftime('%Y-%m-%dT%H:%M:%S', timestamp)}Z"
++
++ if not dry_run:
++ print("Generating __version__.py")
++
++ with open(Path(pydir, "DisplayCAL", "__version__.py"), "w") as versionpy:
++ versionpy.write("# generated by setup.py\n\n")
++ build_time = time.time()
++ versionpy.write(
++ f"BUILD_DATE = "
++ f"\"{strftime('%Y-%m-%dT%H:%M:%S', gmtime(build_time))}Z\"\n"
+ )
+- except Exception as exception:
+- print("...failed:", exception)
+- else:
+- mtime = int(p.communicate()[0].strip().decode())
+- timestamp = time.gmtime(mtime)
+-
+- if timestamp:
+- lastmod = f"{strftime('%Y-%m-%dT%H:%M:%S', timestamp)}Z"
+-
+- if not dry_run:
+- print("Generating __version__.py")
+-
+- with open(Path(pydir, "DisplayCAL", "__version__.py"), "w") as versionpy:
+- versionpy.write("# generated by setup.py\n\n")
+- build_time = time.time()
+- versionpy.write(
+- f"BUILD_DATE = "
+- f"\"{strftime('%Y-%m-%dT%H:%M:%S', gmtime(build_time))}Z\"\n"
+- )
+-
+- if lastmod:
+- versionpy.write(f"LASTMOD = {lastmod!r}\n")
+-
+- if git_version:
+- print("Version", ".".join(version_base))
+- versionpy.write("VERSION = (%s)\n" % ", ".join(version_base))
+- versionpy.write("VERSION_BASE = (%s)\n" % ", ".join(version_base))
+- versionpy.write("VERSION_STRING = %r\n" % ".".join(version_base))
+
+- with open(Path(pydir, "VERSION"), "w") as versiontxt:
+- versiontxt.write(".".join(version_base))
++ if lastmod:
++ versionpy.write(f"LASTMOD = {lastmod!r}\n")
++
++ print("Version", ".".join(version_base))
++ versionpy.write("VERSION = (%s)\n" % ", ".join(version_base))
++ versionpy.write("VERSION_BASE = (%s)\n" % ", ".join(version_base))
++ versionpy.write("VERSION_STRING = %r\n" % ".".join(version_base))
++
++ with open(Path(pydir, "VERSION"), "w") as versiontxt:
++ versiontxt.write(".".join(version_base))
+
+ backup_setup_path = Path(pydir, "setup.cfg.backup")
+ setup_path = Path(pydir, "setup.cfg")
diff --git a/srcpkgs/dispcalGUI/patches/update-check.patch b/srcpkgs/dispcalGUI/patches/update-check.patch
new file mode 100644
index 000000000000..382943a6724e
--- /dev/null
+++ b/srcpkgs/dispcalGUI/patches/update-check.patch
@@ -0,0 +1,90 @@
+Quite a crude attempt to remove update checks, but it should work.
+
+Update checks also used to trigger popup donation window at startup,
+but not anymore with these patches.
+
+--- a/DisplayCAL/display_cal.py
++++ b/DisplayCAL/display_cal.py
+@@ -3119,16 +3119,6 @@
+ self.Bind(wx.EVT_MENU, self.help_support_handler, menuitem)
+ menuitem = help.FindItemById(help.FindItem("bug_report"))
+ self.Bind(wx.EVT_MENU, self.bug_report_handler, menuitem)
+- self.menuitem_app_auto_update_check = help.FindItemById(
+- help.FindItem("update_check.onstartup")
+- )
+- self.Bind(
+- wx.EVT_MENU,
+- self.app_auto_update_check_handler,
+- self.menuitem_app_auto_update_check,
+- )
+- menuitem = help.FindItemById(help.FindItem("update_check"))
+- self.Bind(wx.EVT_MENU, self.app_update_check_handler, menuitem)
+
+ if sys.platform == "darwin":
+ wx.GetApp().SetMacAboutMenuItemId(self.menuitem_about.GetId())
+@@ -3257,7 +3247,6 @@
+ self.menuitem_show_log.Check(bool(getcfg("log.show")))
+ self.menuitem_log_autoshow.Enable(not bool(getcfg("log.show")))
+ self.menuitem_log_autoshow.Check(bool(getcfg("log.autoshow")))
+- self.menuitem_app_auto_update_check.Check(bool(getcfg("update_check")))
+
+ def init_controls(self):
+ """Initialize the main window controls and their event handlers."""
+@@ -4047,7 +4036,6 @@
+ "untethered.max_delta.chroma",
+ "untethered.min_delta",
+ "untethered.min_delta.lightness",
+- "update_check",
+ "webserver.portnumber",
+ "whitepoint.visual_editor.bg_v",
+ "whitepoint.visual_editor.b",
+@@ -19474,19 +19462,6 @@
+ app.frame.Show()
+ app.process_argv(1)
+ wx.CallAfter(app.frame.Raise)
+- # Check for updates if configured
+- if getcfg("update_check"):
+- # Give time for the main window to gain focus before checking for
+- # update, otherwise the main window may steal the update
+- # confirmation dialog's focus which looks weird
+- wx.CallAfter(app.frame.app_update_check_handler, None, silent=True)
+- else:
+- # Check if we need to run instrument setup
+- wx.CallAfter(
+- app.frame.check_instrument_setup,
+- check_donation,
+- (app.frame, VERSION > VERSION_BASE),
+- )
+ # If resources are missing, XRC shows an error dialog which immediately
+ # gets hidden when we close ourselves because we are the parent.
+ # Hide instead.
+--- a/DisplayCAL/worker.py
++++ b/DisplayCAL/worker.py
+@@ -1610,10 +1610,6 @@
+ dlg_result = dlg.ShowModal()
+ dlg.Destroy()
+ if dlg_result == wx.ID_OK:
+- # Download Argyll CMS
+- from DisplayCAL.display_cal import app_update_check
+-
+- app_update_check(parent, silent, argyll=True)
+ return False
+ elif dlg_result == wx.ID_CANCEL:
+ if callafter:
+--- a/DisplayCAL/xrc/mainmenu.xrc
++++ b/DisplayCAL/xrc/mainmenu.xrc
+@@ -231,14 +231,6 @@
+ <label>bug_report</label>
+ </object>
+ <object class="separator"/>
+- <object class="wxMenuItem" name="update_check.onstartup">
+- <label>update_check.onstartup</label>
+- <checkable>1</checkable>
+- </object>
+- <object class="wxMenuItem" name="update_check">
+- <label>update_check</label>
+- </object>
+- <object class="separator"/>
+ <label>menu.help</label>
+ </object>
+ </object>
diff --git a/srcpkgs/dispcalGUI/template b/srcpkgs/dispcalGUI/template
index 05086b97e5a2..1a82b91e0c20 100644
--- a/srcpkgs/dispcalGUI/template
+++ b/srcpkgs/dispcalGUI/template
@@ -1,25 +1,32 @@
# Template file for 'dispcalGUI'
pkgname=dispcalGUI
-version=3.8.9.3
-revision=5
-_name="DisplayCAL"
-build_style=python2-module
-hostmakedepends="python"
-makedepends="python-devel libXxf86vm-devel libXinerama-devel libXrandr-devel"
-depends="python-dbus python-numpy wxPython argyllcms"
+version=3.9.8
+revision=1
+build_style=python3-module
+# uses distutils without these options
+make_build_args="--use-setuptools"
+make_install_args="--use-setuptools"
+hostmakedepends="python3-setuptools"
+makedepends="python3-devel libXxf86vm-devel libXinerama-devel libXrandr-devel"
+depends="python3-distro python3-dbus python3-numpy python3-Pillow
+ python3-chromecast python3-send2trash wxPython4 python3-zeroconf argyllcms"
short_desc="Display Calibration and Characterization"
maintainer="lemmi <lemmi@nerd2nerd.org>"
license="GPL-3.0-or-later"
-homepage="https://displaycal.net/"
-changelog="https://displaycal.net/CHANGES.html"
-distfiles="${SOURCEFORGE_SITE}/dispcalgui/${_name}-${version}.tar.gz"
-checksum=7c34dfbd9f66f24f1d4c88de4a5a0de688aad719f095874b6259637d30893bea
+homepage="https://github.com/eoyilmaz/displaycal-py3"
+changelog="https://github.com/eoyilmaz/displaycal-py3/releases/tag/${version}"
+distfiles="https://github.com/eoyilmaz/displaycal-py3/archive/${version}.tar.gz"
+checksum=a9e8bba02f9bdf8df506f0dcbbea4eae48795001cb81ea5968fbfc41f4b72e1d
+# requires running dbus-daemon
+make_check=no
-pre_configure() {
- sed -i 's|MimeType=model/vrml;x-world/x-vrml;|MimeType=model/vrml;|' misc/displaycal-vrml-to-x3d-converter.desktop
+post_patch() {
+ # set the hardcoded version of python 3 to the latest one
+ sed -i "s|^\(py_maxversion =\).*|\1 (${py3_ver%.*}, ${py3_ver#*.})|" DisplayCAL/meta.py
+
+ sed -i "s|@PY_VER@|${py3_ver/./}|g" DisplayCAL/RealDisplaySizeMM.py
}
-post_install() {
- find ${DESTDIR}/usr/ -exec chmod a+r \{\} +
- find ${DESTDIR}/usr/ -type d -exec chmod a+x \{\} +
+pre_configure() {
+ sed -i 's|MimeType=model/vrml;x-world/x-vrml;|MimeType=model/vrml;|' misc/displaycal-vrml-to-x3d-converter.desktop
}
next prev parent reply other threads:[~2022-11-10 7:13 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-09 17:56 [PR PATCH] " kruceter
2022-11-09 18:05 ` [PR PATCH] [Updated] " kruceter
2022-11-10 0:28 ` kruceter
2022-11-10 7:13 ` kruceter [this message]
2022-11-11 16:49 ` [PR PATCH] [Updated] " kruceter
2022-11-11 16:51 ` kruceter
2022-11-12 19:59 ` kruceter
2022-11-12 21:54 ` [PR REVIEW] " paper42
2022-11-12 21:54 ` paper42
2022-11-12 22:30 ` kruceter
2022-11-12 22:35 ` kruceter
2022-11-12 22:45 ` [PR REVIEW] " paper42
2022-11-12 22:57 ` [PR PATCH] [Updated] " kruceter
2022-11-22 1:15 ` kruceter
2022-11-22 1:15 ` [PR PATCH] [Closed]: " kruceter
2023-07-04 21:42 ` lemmi
2023-07-04 21:43 ` lemmi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221110071342.zT3ZkHAktLK2pUuh0KxCp8JQVF4e3ZQVnCT6Jg3w-yo@z \
--to=kruceter@users.noreply.github.com \
--cc=ml@inbox.vuxu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).