Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] dispcalGUI: update to 3.9.11, replace with python3 fork
@ 2023-07-05  1:43 classabbyamp
  2023-09-25 16:59 ` [PR PATCH] [Updated] " classabbyamp
  2023-09-26 16:06 ` [PR PATCH] [Closed]: " ahesford
  0 siblings, 2 replies; 3+ messages in thread
From: classabbyamp @ 2023-07-05  1:43 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 686 bytes --]

There is a new pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages displaycal-py3
https://github.com/void-linux/void-packages/pull/44849

dispcalGUI: update to 3.9.11, replace with python3 fork
cc: @lemmi

launches and the initial interface works, but I think we need to update wxPython4:
![image](https://github.com/void-linux/void-packages/assets/5366828/b5b386e6-4ab0-483a-98d8-ffe27b3fb8a0)

#### Testing the changes
- I tested the changes in this PR: **briefly** (I don't have any hardware to test this with)



A patch file from https://github.com/void-linux/void-packages/pull/44849.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-displaycal-py3-44849.patch --]
[-- Type: text/x-diff, Size: 5148 bytes --]

From 9a6149c0ba2afac00a85595007cc99c80eb9fc56 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Tue, 4 Jul 2023 21:42:01 -0400
Subject: [PATCH] dispcalGUI: update to 3.9.11, replace with python3 fork

---
 srcpkgs/DisplayCAL/template            | 25 +++++++++++++++++++
 srcpkgs/dispcalGUI                     |  1 +
 srcpkgs/dispcalGUI/patches/error.patch | 33 --------------------------
 srcpkgs/dispcalGUI/template            | 25 -------------------
 srcpkgs/dispcalGUI/update              |  1 -
 5 files changed, 26 insertions(+), 59 deletions(-)
 create mode 100644 srcpkgs/DisplayCAL/template
 create mode 120000 srcpkgs/dispcalGUI
 delete mode 100644 srcpkgs/dispcalGUI/patches/error.patch
 delete mode 100644 srcpkgs/dispcalGUI/template
 delete mode 100644 srcpkgs/dispcalGUI/update

diff --git a/srcpkgs/DisplayCAL/template b/srcpkgs/DisplayCAL/template
new file mode 100644
index 000000000000..bc2d48e99116
--- /dev/null
+++ b/srcpkgs/DisplayCAL/template
@@ -0,0 +1,25 @@
+# Template file for 'DisplayCAL'
+pkgname=DisplayCAL
+version=3.9.11
+revision=1
+build_style=python3-module
+hostmakedepends="python3"
+makedepends="python3-devel libXxf86vm-devel libXinerama-devel libXrandr-devel"
+depends="python3-dbus python3-numpy wxPython4 argyllcms"
+short_desc="Display Calibration and Characterization"
+maintainer="lemmi <lemmi@nerd2nerd.org>"
+license="GPL-3.0-or-later"
+homepage="https://github.com/eoyilmaz/displaycal-py3"
+distfiles="https://github.com/eoyilmaz/displaycal-py3/archive/refs/tags/${version}.tar.gz"
+checksum=7769d19551c228d797fd98cb2469730cee84ff27bd0bf5d0463e191753921a5e
+
+pre_configure() {
+	vsed -i misc/displaycal-vrml-to-x3d-converter.desktop \
+		-e 's|MimeType=model/vrml;x-world/x-vrml;|MimeType=model/vrml;|'
+}
+
+dispcalGUI_package() {
+	build_style=meta
+	short_desc+=" (transitional dummy package)"
+	depends="${sourcepkg}>=${version}_${revision}"
+}
diff --git a/srcpkgs/dispcalGUI b/srcpkgs/dispcalGUI
new file mode 120000
index 000000000000..7b2ae7fe8eb1
--- /dev/null
+++ b/srcpkgs/dispcalGUI
@@ -0,0 +1 @@
+DisplayCAL
\ No newline at end of file
diff --git a/srcpkgs/dispcalGUI/patches/error.patch b/srcpkgs/dispcalGUI/patches/error.patch
deleted file mode 100644
index 169fc528b138..000000000000
--- a/srcpkgs/dispcalGUI/patches/error.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Reason: error(3) does not exist on musl, and on glibc the signature
-is (int, int, char*, ...) and not (char*, ...).
-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);
- 
- 					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));
- 
- 					/* 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);
- 
- 			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/template b/srcpkgs/dispcalGUI/template
deleted file mode 100644
index 05086b97e5a2..000000000000
--- a/srcpkgs/dispcalGUI/template
+++ /dev/null
@@ -1,25 +0,0 @@
-# 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"
-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
-
-pre_configure() {
-	sed -i 's|MimeType=model/vrml;x-world/x-vrml;|MimeType=model/vrml;|' misc/displaycal-vrml-to-x3d-converter.desktop
-}
-
-post_install() {
-	find ${DESTDIR}/usr/ -exec chmod a+r \{\} +
-	find ${DESTDIR}/usr/ -type d -exec chmod a+x \{\} +
-}
diff --git a/srcpkgs/dispcalGUI/update b/srcpkgs/dispcalGUI/update
deleted file mode 100644
index 6942393945c3..000000000000
--- a/srcpkgs/dispcalGUI/update
+++ /dev/null
@@ -1 +0,0 @@
-pkgname="${_name}"

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PR PATCH] [Updated] dispcalGUI: update to 3.9.11, replace with python3 fork
  2023-07-05  1:43 [PR PATCH] dispcalGUI: update to 3.9.11, replace with python3 fork classabbyamp
@ 2023-09-25 16:59 ` classabbyamp
  2023-09-26 16:06 ` [PR PATCH] [Closed]: " ahesford
  1 sibling, 0 replies; 3+ messages in thread
From: classabbyamp @ 2023-09-25 16:59 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 814 bytes --]

There is an updated pull request by classabbyamp against master on the void-packages repository

https://github.com/classabbyamp/void-packages displaycal-py3
https://github.com/void-linux/void-packages/pull/44849

dispcalGUI: update to 3.9.11, replace with python3 fork
cc: @lemmi

launches and the initial interface works, but I think we need to update wxPython4:
![image](https://github.com/void-linux/void-packages/assets/5366828/b5b386e6-4ab0-483a-98d8-ffe27b3fb8a0)

#### Testing the changes
- I tested the changes in this PR: **briefly** (I don't have any hardware to test this with)

while the repo is named "displaycal-py3", I went with what they call the application throughout the repo, pypi, and code.


A patch file from https://github.com/void-linux/void-packages/pull/44849.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-displaycal-py3-44849.patch --]
[-- Type: text/x-diff, Size: 28503 bytes --]

From 524ff8702e3c853785476cf6131e58b1f6b1c7ab Mon Sep 17 00:00:00 2001
From: "Andrew J. Hesford" <ajh@sideband.org>
Date: Mon, 25 Sep 2023 00:04:33 -0400
Subject: [PATCH 1/3] wxWidgets-gtk3: update to 3.2.2.1.

---
 common/shlibs                                 | 29 ++++++++++---------
 .../patches/nonfatal-abi-check.patch          | 21 +++++++-------
 srcpkgs/wxWidgets-gtk3/template               | 22 +++++++++-----
 srcpkgs/wxWidgets-gtk3/update                 |  4 +--
 4 files changed, 42 insertions(+), 34 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 9c2060bc45a67..d93e878c5b85e 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3493,19 +3493,22 @@ libmozjs-78.so.0 mozjs78-78.1.0_1
 libebur128.so.1 libebur128-1.2.4_1
 libgtksourceview-4.so.0 gtksourceview4-4.0.2_1
 libgtksourceview-5.so.0 gtksourceview5-5.2.0_1
-libwx_gtk3u_propgrid-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libwx_gtk3u_qa-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libwx_gtk3u_core-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libwx_gtk3u_html-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libwx_gtk3u_adv-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libwx_gtk3u_richtext-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libwx_gtk3u_xrc-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libwx_gtk3u_webview-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libwx_gtk3u_aui-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libwx_gtk3u_media-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libwx_gtk3u_ribbon-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libwx_gtk3u_gl-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libwx_gtk3u_stc-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_baseu_xml-3.2.so.0 wxWidgets-common-3.2.2.1_1
+libwx_baseu-3.2.so.0 wxWidgets-common-3.2.2.1_1
+libwx_baseu_net-3.2.so.0 wxWidgets-common-3.2.2.1_1
+libwx_gtk3u_adv-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
+libwx_gtk3u_aui-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
+libwx_gtk3u_core-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
+libwx_gtk3u_gl-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
+libwx_gtk3u_html-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
+libwx_gtk3u_media-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
+libwx_gtk3u_propgrid-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
+libwx_gtk3u_qa-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
+libwx_gtk3u_ribbon-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
+libwx_gtk3u_richtext-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
+libwx_gtk3u_stc-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
+libwx_gtk3u_webview-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
+libwx_gtk3u_xrc-3.2.so.0 wxWidgets-gtk3-3.2.2.1_1
 libtepl-6.so.2 tepl-6.4.0_1
 libnomacsCore.so.3 nomacs-3.10.2_4
 libaudit.so.1 libaudit-2.8.4_1
diff --git a/srcpkgs/wxWidgets-gtk3/patches/nonfatal-abi-check.patch b/srcpkgs/wxWidgets-gtk3/patches/nonfatal-abi-check.patch
index bb93f0a26156c..9ca241ba8b1ff 100644
--- a/srcpkgs/wxWidgets-gtk3/patches/nonfatal-abi-check.patch
+++ b/srcpkgs/wxWidgets-gtk3/patches/nonfatal-abi-check.patch
@@ -1,18 +1,19 @@
-Taken from
+Adapted from a prior patch which was taken from
 https://github.com/archlinux/svntogit-packages/blob/71ee17d529f8e0dc5c44d2fffb0dfa69b71daa0b/repos/extra-x86_64/make-abicheck-non-fatal.patch
 
-diff -up wxGTK-2.8.12/src/common/appbase.cpp.abicheck wxGTK-2.8.12/src/common/appbase.cpp
---- a/src/common/appbase.cpp.abicheck	2015-03-12 17:15:18.000000000 +0100
-+++ b/src/common/appbase.cpp	2015-03-12 17:15:57.000000000 +0100
-@@ -424,10 +424,7 @@ bool wxAppConsole::CheckBuildOptions(con
-         msg.Printf(_T("Mismatch between the program and library build versions detected.\nThe library used %s,\nand %s used %s."),
-                    lib.c_str(), progName.c_str(), prog.c_str());
+diff -up a/src/common/appbase.cpp b/src/common/appbase.cpp
+--- a/src/common/appbase.cpp
++++ b/src/common/appbase.cpp
+@@ -850,11 +850,8 @@
+         wxString prog = wxString::FromAscii(optionsSignature);
+         wxString progName = wxString::FromAscii(componentName);
  
--        wxLogFatalError(msg.c_str());
+-        wxLogFatalError(wxT("Mismatch between the program and library build versions detected.\nThe library used %s,\nand %s used %s."),
++        wxLogWarning(wxT("Mismatch between the program and library build versions detected.\nThe library used %s,\nand %s used %s."),
+                         lib, progName, prog);
 -
 -        // normally wxLogFatalError doesn't return
 -        return false;
-+        wxLogWarning(msg.c_str());
      }
- #undef wxCMP
  
+     return true;
diff --git a/srcpkgs/wxWidgets-gtk3/template b/srcpkgs/wxWidgets-gtk3/template
index ae5105a89c145..cac6df48f93fe 100644
--- a/srcpkgs/wxWidgets-gtk3/template
+++ b/srcpkgs/wxWidgets-gtk3/template
@@ -1,22 +1,28 @@
 # Template file for 'wxWidgets-gtk3'
 pkgname=wxWidgets-gtk3
-version=3.0.5.1
-revision=6
+version=3.2.2.1
+revision=1
 build_style=gnu-configure
-configure_args="--with-gtk=3 --enable-unicode --with-opengl --with-sdl
- --with-libmspack --with-libnotify --enable-mediactrl"
+configure_args="--with-gtk=3 --with-opengl --with-libmspack --enable-mediactrl
+ --enable-unicode --with-libnotify --with-regex --with-zlib --with-expat
+ --with-libjpeg --with-libpng --with-libtiff --with-liblzma"
 hostmakedepends="pkg-config"
 makedepends="SDL2-devel gst-plugins-base1-devel gstreamer1-devel gtk+3-devel
- libmspack-devel libnotify-devel tiff-devel webkit2gtk-devel glu-devel"
-short_desc="The wxWidgets GUI toolkit library compiled with gtk3 support"
+ libmspack-devel libnotify-devel tiff-devel webkit2gtk-devel glu-devel
+ gst-plugins-bad1-devel libsecret-devel pcre2-devel liblzma-devel gspell-devel
+ libcurl-devel zlib-devel expat-devel libpng-devel"
+short_desc="Cross-platform GUI library (built with GTK+ 3.0)"
 maintainer="Helmut Pozimski <helmut@pozimski.eu>"
 license="custom:wxWindows"
 homepage="https://www.wxwidgets.org"
 distfiles="https://github.com/wxWidgets/wxWidgets/releases/download/v${version}/wxWidgets-${version}.tar.bz2"
-checksum=440f6e73cf5afb2cbf9af10cec8da6cdd3d3998d527598a53db87099524ac807
+checksum=dffcb6be71296fff4b7f8840eb1b510178f57aa2eb236b20da41182009242c02
 
 post_install() {
-	local _config="gtk3-unicode-3.0"
+	local _patch="${version#*.*.}"
+	local _majmin="${version%."${_patch}"}"
+	local _config="gtk3-unicode-${_majmin}"
+
 	# remove all occurrences of $XBPS_CROSS_TRIPLET in wx-config:
 	#   - mark this build as native build
 	if [ "$CROSS_BUILD" ]; then
diff --git a/srcpkgs/wxWidgets-gtk3/update b/srcpkgs/wxWidgets-gtk3/update
index ac4c5f040ec44..051b6769752c6 100644
--- a/srcpkgs/wxWidgets-gtk3/update
+++ b/srcpkgs/wxWidgets-gtk3/update
@@ -1,3 +1 @@
-site="https://github.com/wxWidgets/wxWidgets/releases/latest"
-# development version
-ignore='3.1.*'
+pkgname=wxWidgets

From 9da52c55a28fe3fd04f6eb971fdcd3bd4abc2030 Mon Sep 17 00:00:00 2001
From: "Andrew J. Hesford" <ajh@sideband.org>
Date: Mon, 25 Sep 2023 07:53:19 -0400
Subject: [PATCH 2/3] wxPython4: update to 4.2.1, rename to wxPython

---
 srcpkgs/wxPython/template                     | 77 ++++++++--------
 srcpkgs/wxPython4                             |  1 +
 ...fig-gtk3.0-to-avoid-conflict-with-wx.patch | 52 -----------
 srcpkgs/wxPython4/patches/cross.patch         | 12 ---
 srcpkgs/wxPython4/patches/nullptr-cast.patch  | 11 ---
 srcpkgs/wxPython4/patches/python-3.11.patch   | 92 -------------------
 srcpkgs/wxPython4/patches/syntax.patch        | 32 -------
 srcpkgs/wxPython4/template                    | 50 ----------
 srcpkgs/wxPython4/update                      |  1 -
 9 files changed, 42 insertions(+), 286 deletions(-)
 create mode 120000 srcpkgs/wxPython4
 delete mode 100644 srcpkgs/wxPython4/patches/0001-Switch-to-wx-config-gtk3.0-to-avoid-conflict-with-wx.patch
 delete mode 100644 srcpkgs/wxPython4/patches/cross.patch
 delete mode 100644 srcpkgs/wxPython4/patches/nullptr-cast.patch
 delete mode 100644 srcpkgs/wxPython4/patches/python-3.11.patch
 delete mode 100644 srcpkgs/wxPython4/patches/syntax.patch
 delete mode 100644 srcpkgs/wxPython4/template
 delete mode 100644 srcpkgs/wxPython4/update

diff --git a/srcpkgs/wxPython/template b/srcpkgs/wxPython/template
index 891ddc164552b..bc4873fb541aa 100644
--- a/srcpkgs/wxPython/template
+++ b/srcpkgs/wxPython/template
@@ -1,47 +1,52 @@
 # Template file for 'wxPython'
 pkgname=wxPython
-version=3.0.2.0
-revision=11
-hostmakedepends="pkg-config"
-makedepends="
- zlib-devel libpng-devel libjpeg-turbo-devel tiff-devel expat-devel gtk+-devel
- libSM-devel MesaLib-devel glu-devel
- libnotify-devel python-devel wxWidgets-devel"
-depends="python"
-short_desc="Python Bindings for the wxWidgets GUI toolkit library"
+version=4.2.1
+revision=1
+build_style=python3-module
+make_build_args="--skip-build"
+make_install_args="--skip-build"
+hostmakedepends="pkg-config python3-setuptools python3-pathlib2"
+makedepends="python3-devel wxWidgets-gtk3-devel SDL2-devel webkit2gtk-devel
+ gst-plugins-base1-devel"
+depends="python3 python3-six python3-numpy python3-Pillow"
+short_desc="Python bindings for wxWidgets"
 maintainer="Orphaned <orphan@voidlinux.org>"
-license="WxWindows-exception-3.1"
-homepage="https://www.wxpython.org/"
-distfiles="${SOURCEFORGE_SITE}/wxpython/${pkgname}-src-${version}.tar.bz2"
-checksum=d54129e5fbea4fb8091c87b2980760b72c22a386cb3b9dd2eebc928ef5e8df61
+license="custom:wxWindows"
+homepage="http://www.wxpython.org/"
+distfiles="${PYPI_SITE}/w/wxPython/wxPython-${version}.tar.gz"
+checksum=e48de211a6606bf072ec3fa778771d6b746c00b7f4b970eb58728ddf56d13d5c
 
-if [ -n "${CROSS_BUILD}" ]; then
-	hostmakedepends+=" python"
-	CFLAGS+=" -I${XBPS_CROSS_BASE}/usr/include/python${py2_ver}"
+export WXPYTHON_RELEASE=yes
+if [ "$CROSS_BUILD" ]; then
+	CFLAGS="-I${XBPS_CROSS_BASE}/${py3_inc} -I${XBPS_CROSS_BASE}/usr/include"
+	export WX_CONFIG="${XBPS_WRAPPERDIR}/wx-config-gtk3"
+else
+	export WX_CONFIG=wx-config-gtk3
 fi
 
-pre_configure() {
-	mv wxPython/wx/tools/Editra/{editra,Editra}
+pre_build() {
+	chmod -R go+rX $wrksrc
+	PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}$wrksrc"
+	if [ "$CROSS_BUILD" ]; then
+		PYPREFIX="$XBPS_CROSS_BASE"
+		LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py3_lib} -L${XBPS_CROSS_BASE}/usr/lib"
+		CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS"
+		LDSHARED="${CC} -shared $LDFLAGS"
+		env CC="$CC" LDSHARED="$LDSHARED" \
+			PYPREFIX="$PYPREFIX" CFLAGS="$CFLAGS" \
+			PYTHON_CONFIG="${XBPS_CROSS_BASE}/usr/bin/python3-config" \
+			LDFLAGS="$LDFLAGS" python3 build.py build_py --use_syswx
+	else
+		python3 build.py build_py --use_syswx
+	fi
 }
 
-do_build() {
-	cd wxPython
-	python2.7 setup.py build
+post_install() {
+	vlicense LICENSE.txt
 }
 
-do_install() {
-	cd wxPython
-	# The path where includes are going to be installed is prefixed with WXPREFIX obtained
-	# from 'wx-config --prefix' but in a cross build this is '$XBPS_CROSS_BASE/usr'.
-	sed -i -e "s|WXPREFIX +|'/usr' +|" config.py
-	python2.7 setup.py install --root=${DESTDIR}
-	vlicense ../docs/licence.txt LICENSE
-}
-
-wxPython-devel_package() {
-	depends="wxWidgets-devel ${sourcepkg}>=${version}_${revision}"
-	short_desc+=" - development files"
-	pkg_install() {
-		vmove usr/include
-	}
+wxPython4_package() {
+	build_style=meta
+	short_desc+=" - transitional dummy package"
+	depends="${sourcepkg}>=${version}_${revision}"
 }
diff --git a/srcpkgs/wxPython4 b/srcpkgs/wxPython4
new file mode 120000
index 0000000000000..e396d5ae370d6
--- /dev/null
+++ b/srcpkgs/wxPython4
@@ -0,0 +1 @@
+wxPython
\ No newline at end of file
diff --git a/srcpkgs/wxPython4/patches/0001-Switch-to-wx-config-gtk3.0-to-avoid-conflict-with-wx.patch b/srcpkgs/wxPython4/patches/0001-Switch-to-wx-config-gtk3.0-to-avoid-conflict-with-wx.patch
deleted file mode 100644
index 72a678da78589..0000000000000
--- a/srcpkgs/wxPython4/patches/0001-Switch-to-wx-config-gtk3.0-to-avoid-conflict-with-wx.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From cddbe3b3b237b8e63abd8921fdb20314c20c2c08 Mon Sep 17 00:00:00 2001
-From: Jasper Chan <jasperchan515@gmail.com>
-Date: Sat, 22 Sep 2018 20:59:29 -0700
-Subject: [PATCH] Switch to wx-config-gtk3 to avoid conflict with
- wxWidgets-gtk2
-
----
- build.py | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git build.py build.py
-index 3cd5b828..57dbd384 100755
---- a/build.py
-+++ b/build.py
-@@ -400,7 +400,7 @@ def makeOptionParser():
-         ("mac_arch",       ("",    "Comma separated list of architectures to build on Mac")),
- 
-         ("use_syswx",      (False, "Try to use an installed wx rather than building the "
--                                   "one in this source tree.  The wx-config in {prefix}/bin "
-+                                   "one in this source tree.  The wx-config-gtk3 in {prefix}/bin "
-                                    "or the first found on the PATH determines which wx is "
-                                    "used.  Implies --no_magic.")),
-         ("force_config",   (False, "Run configure when building even if the script "
-@@ -1271,7 +1271,7 @@ def cmd_build_wx(options, args):
-                              os.path.join(wxDir(), 'configure'),
-                              os.path.join(wxDir(), 'setup.h.in'),
-                              os.path.join(wxDir(), 'version-script.in'),
--                             os.path.join(wxDir(), 'wx-config.in'),
-+                             os.path.join(wxDir(), 'wx-config-gtk3.in'),
-                              ]
-             for dep in dependencies:
-                 if newer(dep, os.path.join(BUILD_DIR, "Makefile")):
-@@ -1424,13 +1424,13 @@ def cmd_build_py(options, args):
-         os.environ['WXPYTHON_RELEASE'] = 'yes'
- 
-     if not isWindows:
--        WX_CONFIG = posixjoin(BUILD_DIR, 'wx-config')
-+        WX_CONFIG = posixjoin(BUILD_DIR, 'wx-config-gtk3')
-         if options.use_syswx:
--            wxcfg = posixjoin(options.prefix, 'bin', 'wx-config')
-+            wxcfg = posixjoin(options.prefix, 'bin', 'wx-config-gtk3')
-             if options.prefix and os.path.exists(wxcfg):
-                 WX_CONFIG = wxcfg
-             else:
--                WX_CONFIG = 'wx-config' # hope it is on the PATH
-+                WX_CONFIG = 'wx-config-gtk3' # hope it is on the PATH
- 
- 
-     wafBuildBase = wafBuildDir = getWafBuildBase()
--- 
-2.19.0
-
diff --git a/srcpkgs/wxPython4/patches/cross.patch b/srcpkgs/wxPython4/patches/cross.patch
deleted file mode 100644
index 4f343de201cb0..0000000000000
--- a/srcpkgs/wxPython4/patches/cross.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: wxPython-4.0.7/build.py
-===================================================================
---- wxPython-4.0.7.orig/build.py
-+++ wxPython-4.0.7/build.py
-@@ -169,7 +169,6 @@ def main(args):
-     setPythonVersion(args)
-     setDevModeOptions(args)
- 
--    os.environ['PYTHONPATH'] = phoenixDir()
-     os.environ['PYTHONUNBUFFERED'] = 'yes'
-     os.environ['WXWIN'] = wxDir()
- 
diff --git a/srcpkgs/wxPython4/patches/nullptr-cast.patch b/srcpkgs/wxPython4/patches/nullptr-cast.patch
deleted file mode 100644
index d9351c714b4fc..0000000000000
--- a/srcpkgs/wxPython4/patches/nullptr-cast.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/sip/cpp/sip_propgridwxPGPropArgCls.cpp
-+++ b/sip/cpp/sip_propgridwxPGPropArgCls.cpp
-@@ -317,7 +317,7 @@ static int convertTo_wxPGPropArgCls(PyOb
-             return sipGetState(sipTransferObj);
-         }
-         else if (sipPy == Py_None) {
--            *sipCppPtr = new wxPGPropArgCls(reinterpret_cast< wxPGProperty * >(NULL));
-+            *sipCppPtr = new wxPGPropArgCls(static_cast< wxPGProperty * >(NULL));
-             return sipGetState(sipTransferObj);
-         }
-         else {
diff --git a/srcpkgs/wxPython4/patches/python-3.11.patch b/srcpkgs/wxPython4/patches/python-3.11.patch
deleted file mode 100644
index 15496bdecbca0..0000000000000
--- a/srcpkgs/wxPython4/patches/python-3.11.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-diff -ur wxPython-4.0.7.orig/bin/.waf3/waflib/ConfigSet.py wxPython-4.0.7/bin/.waf3/waflib/ConfigSet.py
---- wxPython-4.0.7.orig/bin/.waf3/waflib/ConfigSet.py
-+++ wxPython-4.0.7/bin/.waf3/waflib/ConfigSet.py
-@@ -146,7 +146,7 @@
- 		Utils.writef(filename,''.join(buf))
- 	def load(self,filename):
- 		tbl=self.table
--		code=Utils.readf(filename,m='rU')
-+		code=Utils.readf(filename,m='r')
- 		for m in re_imp.finditer(code):
- 			g=m.group
- 			tbl[g(2)]=eval(g(3))
-diff -ur wxPython-4.0.7.orig/bin/.waf3/waflib/Context.py wxPython-4.0.7/bin/.waf3/waflib/Context.py
---- wxPython-4.0.7.orig/bin/.waf3/waflib/Context.py
-+++ wxPython-4.0.7/bin/.waf3/waflib/Context.py
-@@ -106,7 +106,7 @@
- 				cache[node]=True
- 				self.pre_recurse(node)
- 				try:
--					function_code=node.read('rU',encoding)
-+					function_code=node.read('r',encoding)
- 					exec(compile(function_code,node.abspath(),'exec'),self.exec_dict)
- 				finally:
- 					self.post_recurse(node)
-@@ -346,7 +346,7 @@
- 		pass
- 	module=imp.new_module(WSCRIPT_FILE)
- 	try:
--		code=Utils.readf(path,m='rU',encoding=encoding)
-+		code=Utils.readf(path,m='r',encoding=encoding)
- 	except EnvironmentError:
- 		raise Errors.WafError('Could not read the file %r'%path)
- 	module_dir=os.path.dirname(path)
-diff -ur wxPython-4.0.7.orig/bin/.waf3/waflib/Tools/python.py wxPython-4.0.7/bin/.waf3/waflib/Tools/python.py
---- wxPython-4.0.7.orig/bin/.waf3/waflib/Tools/python.py
-+++ wxPython-4.0.7/bin/.waf3/waflib/Tools/python.py
-@@ -207,7 +207,7 @@
- 	x='MACOSX_DEPLOYMENT_TARGET'
- 	if dct[x]:
- 		env[x]=conf.environ[x]=dct[x]
--	env.pyext_PATTERN='%s'+dct['SO']
-+	env.pyext_PATTERN='%s.so'
- 	num='.'.join(env.PYTHON_VERSION.split('.')[:2])
- 	conf.find_program([''.join(pybin)+'-config','python%s-config'%num,'python-config-%s'%num,'python%sm-config'%num],var='PYTHON_CONFIG',msg="python-config",mandatory=False)
- 	if env.PYTHON_CONFIG:
-diff -ur wxPython-4.0.7.orig/sip/siplib/sip.h wxPython-4.0.7/sip/siplib/sip.h
---- wxPython-4.0.7.orig/sip/siplib/sip.h
-+++ wxPython-4.0.7/sip/siplib/sip.h
-@@ -1794,7 +1794,7 @@
-     int (*api_get_time)(PyObject *, sipTimeDef *);
-     PyObject *(*api_from_time)(const sipTimeDef *);
-     int (*api_is_user_type)(const sipWrapperType *);
--    struct _frame *(*api_get_frame)(int);
-+    PyFrameObject *(*api_get_frame)(int);
-     int (*api_check_plugin_for_type)(const sipTypeDef *, const char *);
-     PyObject *(*api_unicode_new)(SIP_SSIZE_T, unsigned, int *, void **);
-     void (*api_unicode_write)(int, void *, int, unsigned);
-diff -ur wxPython-4.0.7.orig/sip/siplib/siplib.c wxPython-4.0.7/sip/siplib/siplib.c
---- wxPython-4.0.7.orig/sip/siplib/siplib.c
-+++ wxPython-4.0.7/sip/siplib/siplib.c
-@@ -439,7 +439,7 @@
- static int sip_api_get_time(PyObject *obj, sipTimeDef *time);
- static PyObject *sip_api_from_time(const sipTimeDef *time);
- static int sip_api_is_user_type(const sipWrapperType *wt);
--static struct _frame *sip_api_get_frame(int);
-+static PyFrameObject *sip_api_get_frame(int);
- static int sip_api_check_plugin_for_type(const sipTypeDef *td,
-         const char *name);
- static PyObject *sip_api_unicode_new(SIP_SSIZE_T len, unsigned maxchar,
-@@ -13688,15 +13688,19 @@
- /*
-  * Return a frame from the execution stack.
-  */
--static struct _frame *sip_api_get_frame(int depth)
-+static PyFrameObject *sip_api_get_frame(int depth)
- {
--    struct _frame *frame = PyEval_GetFrame();
-+    PyFrameObject *frame = PyEval_GetFrame();
-+    Py_XINCREF(frame);
- 
-     while (frame != NULL && depth > 0)
-     {
--        frame = frame->f_back;
-+        PyFrameObject *oframe = frame;
-+        frame = PyFrame_GetBack(frame);
-+        Py_DECREF(oframe);
-         --depth;
-     }
-+    Py_XDECREF(frame);
- 
-     return frame;
- }
diff --git a/srcpkgs/wxPython4/patches/syntax.patch b/srcpkgs/wxPython4/patches/syntax.patch
deleted file mode 100644
index 862934f996159..0000000000000
--- a/srcpkgs/wxPython4/patches/syntax.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Index: wxPython-4.0.7/wx/lib/masked/maskededit.py
-===================================================================
---- wxPython-4.0.7.orig/wx/lib/masked/maskededit.py
-+++ wxPython-4.0.7/wx/lib/masked/maskededit.py
-@@ -2645,7 +2645,7 @@ class MaskedEditMixin:
-                         raise ve
-                     elif replace_to > end:
- ####                        dbg(indent=0)
--                        ve = ValueError('"%s" will not fit into field %d of control "%s"' (choice, index, self.name))
-+                        ve = ValueError('"%s" will not fit into field %d of control "%s"' % (choice, index, self.name))
-                         ve.value = choice
-                         ve.index = index
-                         raise ve
-Index: wxPython-4.0.7/wx/lib/plot/plotcanvas.py
-===================================================================
---- wxPython-4.0.7.orig/wx/lib/plot/plotcanvas.py
-+++ wxPython-4.0.7/wx/lib/plot/plotcanvas.py
-@@ -1852,12 +1852,12 @@ class PlotCanvas(wx.Panel):
-         # Get ticks and textExtents for axis if required
-         xticks = yticks = None
-         xTextExtent = yTextExtent = (0, 0)  # No text for ticks
--        if self._xSpec is not 'none':
-+        if self._xSpec != 'none':
-             xticks = self._xticks(xAxis[0], xAxis[1])
-             # w h of x axis text last number on axis
-             xTextExtent = dc.GetTextExtent(xticks[-1][1])
- 
--        if self._ySpec is not 'none':
-+        if self._ySpec != 'none':
-             yticks = self._yticks(yAxis[0], yAxis[1])
-             if self.logScale[1]:
-                 # make sure we have enough room to display SI notation.
diff --git a/srcpkgs/wxPython4/template b/srcpkgs/wxPython4/template
deleted file mode 100644
index e0edf6fb9452f..0000000000000
--- a/srcpkgs/wxPython4/template
+++ /dev/null
@@ -1,50 +0,0 @@
-# Template file for 'wxPython4'
-pkgname=wxPython4
-version=4.0.7
-revision=7
-build_style=python3-module
-make_build_args="--skip-build"
-make_install_args="--skip-build"
-hostmakedepends="pkg-config python3-setuptools python3-pathlib2"
-makedepends="python3-devel wxWidgets-gtk3-devel SDL2-devel webkit2gtk-devel
- gst-plugins-base1-devel"
-depends="python3 python3-six python3-numpy python3-Pillow"
-short_desc="WxWidgets GUI toolkit library (Python3 Bindings)"
-maintainer="Orphaned <orphan@voidlinux.org>"
-license="custom:wxWindows"
-homepage="http://www.wxpython.org/"
-distfiles="${PYPI_SITE}/w/wxPython/wxPython-${version}.tar.gz"
-checksum=3be608bfdede3063678cc703453850ab0a018b82bafd5ee057302250b18f0233
-
-if [ "$CROSS_BUILD" ]; then
-	CFLAGS="-I${XBPS_CROSS_BASE}/${py3_inc} -I${XBPS_CROSS_BASE}/usr/include"
-fi
-
-pre_patch() {
-	# need to patch for Python 3.11, extract them now.
-	cd bin
-	sed '/__name__.*__main__/i sys.exit(0)' waf-* >tmp-waf
-	python3 tmp-waf
-	ln -s .waf3-* .waf3
-}
-
-pre_build() {
-	chmod -R go+rX $wrksrc
-	PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}$wrksrc"
-	if [ "$CROSS_BUILD" ]; then
-		PYPREFIX="$XBPS_CROSS_BASE"
-		LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py3_lib} -L${XBPS_CROSS_BASE}/usr/lib"
-		CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS"
-		LDSHARED="${CC} -shared $LDFLAGS"
-		env CC="$CC" LDSHARED="$LDSHARED" \
-			PYPREFIX="$PYPREFIX" CFLAGS="$CFLAGS" \
-			PYTHON_CONFIG="${XBPS_CROSS_BASE}/usr/bin/python3-config" \
-			LDFLAGS="$LDFLAGS" python3 build.py build_py --use_syswx
-	else
-		python3 build.py build_py --use_syswx
-	fi
-}
-
-post_install() {
-	vlicense LICENSE.txt
-}
diff --git a/srcpkgs/wxPython4/update b/srcpkgs/wxPython4/update
deleted file mode 100644
index 1527342250f66..0000000000000
--- a/srcpkgs/wxPython4/update
+++ /dev/null
@@ -1 +0,0 @@
-pkgname=wxPython

From a4d727cb7a72164ad132be3b393c587fec84b02f Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Tue, 4 Jul 2023 21:42:01 -0400
Subject: [PATCH 3/3] dispcalGUI: update to 3.9.11, replace with python3 fork

---
 srcpkgs/DisplayCAL/template            | 25 +++++++++++++++++++
 srcpkgs/dispcalGUI                     |  1 +
 srcpkgs/dispcalGUI/patches/error.patch | 33 --------------------------
 srcpkgs/dispcalGUI/template            | 25 -------------------
 srcpkgs/dispcalGUI/update              |  1 -
 5 files changed, 26 insertions(+), 59 deletions(-)
 create mode 100644 srcpkgs/DisplayCAL/template
 create mode 120000 srcpkgs/dispcalGUI
 delete mode 100644 srcpkgs/dispcalGUI/patches/error.patch
 delete mode 100644 srcpkgs/dispcalGUI/template
 delete mode 100644 srcpkgs/dispcalGUI/update

diff --git a/srcpkgs/DisplayCAL/template b/srcpkgs/DisplayCAL/template
new file mode 100644
index 0000000000000..962d66e29bf68
--- /dev/null
+++ b/srcpkgs/DisplayCAL/template
@@ -0,0 +1,25 @@
+# Template file for 'DisplayCAL'
+pkgname=DisplayCAL
+version=3.9.11
+revision=1
+build_style=python3-module
+hostmakedepends="python3"
+makedepends="python3-devel libXxf86vm-devel libXinerama-devel libXrandr-devel"
+depends="python3-dbus python3-numpy wxPython argyllcms"
+short_desc="Display Calibration and Characterization"
+maintainer="lemmi <lemmi@nerd2nerd.org>"
+license="GPL-3.0-or-later"
+homepage="https://github.com/eoyilmaz/displaycal-py3"
+distfiles="https://github.com/eoyilmaz/displaycal-py3/archive/refs/tags/${version}.tar.gz"
+checksum=7769d19551c228d797fd98cb2469730cee84ff27bd0bf5d0463e191753921a5e
+
+pre_configure() {
+	vsed -i misc/displaycal-vrml-to-x3d-converter.desktop \
+		-e 's|MimeType=model/vrml;x-world/x-vrml;|MimeType=model/vrml;|'
+}
+
+dispcalGUI_package() {
+	build_style=meta
+	short_desc+=" (transitional dummy package)"
+	depends="${sourcepkg}>=${version}_${revision}"
+}
diff --git a/srcpkgs/dispcalGUI b/srcpkgs/dispcalGUI
new file mode 120000
index 0000000000000..7b2ae7fe8eb1e
--- /dev/null
+++ b/srcpkgs/dispcalGUI
@@ -0,0 +1 @@
+DisplayCAL
\ No newline at end of file
diff --git a/srcpkgs/dispcalGUI/patches/error.patch b/srcpkgs/dispcalGUI/patches/error.patch
deleted file mode 100644
index 169fc528b138e..0000000000000
--- a/srcpkgs/dispcalGUI/patches/error.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Reason: error(3) does not exist on musl, and on glibc the signature
-is (int, int, char*, ...) and not (char*, ...).
-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);
- 
- 					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));
- 
- 					/* 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);
- 
- 			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/template b/srcpkgs/dispcalGUI/template
deleted file mode 100644
index 05086b97e5a26..0000000000000
--- a/srcpkgs/dispcalGUI/template
+++ /dev/null
@@ -1,25 +0,0 @@
-# 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"
-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
-
-pre_configure() {
-	sed -i 's|MimeType=model/vrml;x-world/x-vrml;|MimeType=model/vrml;|' misc/displaycal-vrml-to-x3d-converter.desktop
-}
-
-post_install() {
-	find ${DESTDIR}/usr/ -exec chmod a+r \{\} +
-	find ${DESTDIR}/usr/ -type d -exec chmod a+x \{\} +
-}
diff --git a/srcpkgs/dispcalGUI/update b/srcpkgs/dispcalGUI/update
deleted file mode 100644
index 6942393945c36..0000000000000
--- a/srcpkgs/dispcalGUI/update
+++ /dev/null
@@ -1 +0,0 @@
-pkgname="${_name}"

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PR PATCH] [Closed]: dispcalGUI: update to 3.9.11, replace with python3 fork
  2023-07-05  1:43 [PR PATCH] dispcalGUI: update to 3.9.11, replace with python3 fork classabbyamp
  2023-09-25 16:59 ` [PR PATCH] [Updated] " classabbyamp
@ 2023-09-26 16:06 ` ahesford
  1 sibling, 0 replies; 3+ messages in thread
From: ahesford @ 2023-09-26 16:06 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 641 bytes --]

There's a closed pull request on the void-packages repository

dispcalGUI: update to 3.9.11, replace with python3 fork
https://github.com/void-linux/void-packages/pull/44849

Description:
cc: @lemmi

launches and the initial interface works, but I think we need to update wxPython4:
![image](https://github.com/void-linux/void-packages/assets/5366828/b5b386e6-4ab0-483a-98d8-ffe27b3fb8a0)

#### Testing the changes
- I tested the changes in this PR: **briefly** (I don't have any hardware to test this with)

while the repo is named "displaycal-py3", I went with what they call the application throughout the repo, pypi, and code.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-09-26 16:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-05  1:43 [PR PATCH] dispcalGUI: update to 3.9.11, replace with python3 fork classabbyamp
2023-09-25 16:59 ` [PR PATCH] [Updated] " classabbyamp
2023-09-26 16:06 ` [PR PATCH] [Closed]: " ahesford

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).