From c48a371562e5b4f5632e220e03e032464487bda0 Mon Sep 17 00:00:00 2001 From: ahze Date: Thu, 20 Mar 2008 16:41:58 +0000 Subject: CUPS configuration Gtk+2.0 GUI Configures a CUPS server. It uses the CUPS API (bound to Python with pycups) to do this. The communication with the server is performed using IPP. As a result, it is equally able to configure a remote CUPS server as a local one. WWW: http://cyberelk.net/tim/software/system-config-printer/ (I think I got all the depends) git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@10795 df743ca5-7f9a-e211-a948-0013205c9059 --- print/system-config-printer/Makefile | 39 +++++++ print/system-config-printer/distinfo | 3 + print/system-config-printer/files/patch-applet.py | 29 +++++ .../files/patch-cupshelpers.py | 29 +++++ .../files/patch-manage-print-jobs.desktop.in | 13 +++ .../files/patch-my-default-printer | 6 + .../files/patch-my-default-printer.desktop.in | 11 ++ .../files/patch-print-applet.desktop.in | 11 ++ print/system-config-printer/files/patch-pysmb.py | 19 ++++ .../files/patch-system-config-printer | 6 + .../files/patch-system-config-printer-applet | 6 + .../files/patch-system-config-printer.desktop.in | 11 ++ .../files/patch-system-config-printer.py | 38 +++++++ print/system-config-printer/pkg-descr | 7 ++ print/system-config-printer/pkg-plist | 124 +++++++++++++++++++++ 15 files changed, 352 insertions(+) create mode 100644 print/system-config-printer/Makefile create mode 100644 print/system-config-printer/distinfo create mode 100644 print/system-config-printer/files/patch-applet.py create mode 100644 print/system-config-printer/files/patch-cupshelpers.py create mode 100644 print/system-config-printer/files/patch-manage-print-jobs.desktop.in create mode 100644 print/system-config-printer/files/patch-my-default-printer create mode 100644 print/system-config-printer/files/patch-my-default-printer.desktop.in create mode 100644 print/system-config-printer/files/patch-print-applet.desktop.in create mode 100644 print/system-config-printer/files/patch-pysmb.py create mode 100644 print/system-config-printer/files/patch-system-config-printer create mode 100644 print/system-config-printer/files/patch-system-config-printer-applet create mode 100644 print/system-config-printer/files/patch-system-config-printer.desktop.in create mode 100644 print/system-config-printer/files/patch-system-config-printer.py create mode 100644 print/system-config-printer/pkg-descr create mode 100644 print/system-config-printer/pkg-plist diff --git a/print/system-config-printer/Makefile b/print/system-config-printer/Makefile new file mode 100644 index 000000000..9f04928a2 --- /dev/null +++ b/print/system-config-printer/Makefile @@ -0,0 +1,39 @@ +# New ports collection makefile for: system-config-printer +# Date created: 2008-03-20 +# Whom: Michael Johnson +# +# $FreeBSD$ +# $MCom$ + +PORTNAME= system-config-printer +PORTVERSION= 0.7.82 +CATEGORIES= print gnome +MASTER_SITES= http://cyberelk.net/tim/data/${PORTNAME}/ + +MAINTAINER= gnome@FreeBSD.org +COMMENT= CUPS configuration Gtk+2.0 GUI + +BUILD_DEPENDS= ${PYTHON_SITELIBDIR}/cups.so:${PORTSDIR}/print/py-cups \ + ${LOCALBASE}/libdata/pkgconfig/notify-python.pc:${PORTSDIR}/devel/py-notify \ + xmlproc_parse:${PORTSDIR}/textproc/py-xml \ + ${LOCALBASE}/libdata/pkgconfig/dbus-python.pc:${PORTSDIR}/devel/py-dbus + xmlto:${PORTSDIR}/textproc/xmlto +RUN_DEPENDS= ${PYTHON_SITELIBDIR}/cups.so:${PORTSDIR}/print/py-cups \ + ${LOCALBASE}/libdata/pkgconfig/notify-python.pc:${PORTSDIR}/devel/py-notify \ + xmlproc_parse:${PORTSDIR}/textproc/py-xml \ + ${LOCALBASE}/libdata/pkgconfig/dbus-python.pc:${PORTSDIR}/devel/py-dbus + +USE_BZIP2= yes +USE_PYTHON= yes +GNU_CONFIGURE= yes +USE_GMAKE= yes +USE_GETTEXT= yes +CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" LDFLAGS="-L${LOCALBASE}/lib" +USE_GNOME= pygtk2 +MAN1= system-config-printer-applet.1 system-config-printer.1 + +post-patch: + @${FIND} ${WRKSRC} -type f | ${XARGS} ${REINPLACE_CMD} -e \ + 's|%%LOCALBASE%%|${LOCALBASE}|g; s|%%PREFIX%%|${PREFIX}|g' + +.include diff --git a/print/system-config-printer/distinfo b/print/system-config-printer/distinfo new file mode 100644 index 000000000..e2c41ee5a --- /dev/null +++ b/print/system-config-printer/distinfo @@ -0,0 +1,3 @@ +MD5 (system-config-printer-0.7.82.tar.bz2) = a85efc175c58506239f3613baf992fca +SHA256 (system-config-printer-0.7.82.tar.bz2) = 4756a7bf3d36eb7bcb2993b97f4543ee8a6d5c68f775c6d73f2c02cc6dfd1f5f +SIZE (system-config-printer-0.7.82.tar.bz2) = 622767 diff --git a/print/system-config-printer/files/patch-applet.py b/print/system-config-printer/files/patch-applet.py new file mode 100644 index 000000000..bcf9a7297 --- /dev/null +++ b/print/system-config-printer/files/patch-applet.py @@ -0,0 +1,29 @@ +--- applet.py.orig 2008-03-20 11:46:28.000000000 -0400 ++++ applet.py 2008-03-20 11:48:47.000000000 -0400 +@@ -22,7 +22,7 @@ + import statereason + from statereason import StateReason + +-APPDIR="/usr/share/system-config-printer" ++APPDIR="%%PREFIX%%/share/system-config-printer" + DOMAIN="system-config-printer" + GLADE="applet.glade" + ICON="printer" +@@ -976,7 +976,7 @@ + pid = os.fork () + if pid == 0: + # Child. +- cmd = "/usr/bin/system-config-printer" ++ cmd = "%%PREFIX%%/bin/system-config-printer" + argv.insert (0, cmd) + os.execvp (cmd, argv) + sys.exit (1) +@@ -994,7 +994,7 @@ + pid = os.fork () + if pid == 0: + # Child. +- argv = ["/usr/bin/system-install-packages"] ++ argv = ["/usr/bin/true"] + argv.extend (missing_pkgs) + os.execv (argv[0], argv) + sys.exit (1) diff --git a/print/system-config-printer/files/patch-cupshelpers.py b/print/system-config-printer/files/patch-cupshelpers.py new file mode 100644 index 000000000..b1b006330 --- /dev/null +++ b/print/system-config-printer/files/patch-cupshelpers.py @@ -0,0 +1,29 @@ +--- cupshelpers.py.orig 2008-03-20 11:49:54.000000000 -0400 ++++ cupshelpers.py 2008-03-20 11:51:06.000000000 -0400 +@@ -19,7 +19,7 @@ + ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + import cups, pprint, os, tempfile, re +-from rhpl.translate import _, N_ ++from gettext import gettext as _ + import locale + + def debugprint(x): +@@ -456,7 +456,7 @@ + + # First, a local function. How to check that something exists + # in a path: +- def pathcheck (name, path="/usr/bin:/bin"): ++ def pathcheck (name, path="%%LOCALBASE%%/bin:/usr/bin:/bin:%%PREFIX%%/bin"): + # Strip out foomatic '%'-style place-holders. + p = name.find ('%') + if p != -1: +@@ -551,7 +551,7 @@ + continue + + exepath = pathcheck (exe, +- "/usr/lib/cups/filter:" ++ "%%LOCALBASE%%/libexec/cups/filter:" + "/usr/lib64/cups/filter") + + if exe and not exepath: diff --git a/print/system-config-printer/files/patch-manage-print-jobs.desktop.in b/print/system-config-printer/files/patch-manage-print-jobs.desktop.in new file mode 100644 index 000000000..0eff6d030 --- /dev/null +++ b/print/system-config-printer/files/patch-manage-print-jobs.desktop.in @@ -0,0 +1,13 @@ +--- manage-print-jobs.desktop.in.orig 2008-03-20 11:51:36.000000000 -0400 ++++ manage-print-jobs.desktop.in 2008-03-20 11:51:59.000000000 -0400 +@@ -2,8 +2,8 @@ + Encoding=UTF-8 + _Name=Manage Print Jobs + _Comment=Cancel, pause, resume or reprint jobs +-Exec=/usr/bin/system-config-printer-applet --no-tray-icon ++Exec=%%PREFIX%%/bin/system-config-printer-applet --no-tray-icon + Terminal=false + Type=Application + Icon=printer +-NoDisplay=true ++NoDisplay=false diff --git a/print/system-config-printer/files/patch-my-default-printer b/print/system-config-printer/files/patch-my-default-printer new file mode 100644 index 000000000..d5678c0a9 --- /dev/null +++ b/print/system-config-printer/files/patch-my-default-printer @@ -0,0 +1,6 @@ +--- my-default-printer.orig 2008-03-20 11:53:08.000000000 -0400 ++++ my-default-printer 2008-03-20 11:53:17.000000000 -0400 +@@ -1,2 +1,2 @@ + #!/bin/sh +-exec /usr/share/system-config-printer/my-default-printer.py "$@" ++exec %%PREFIX%%/share/system-config-printer/my-default-printer.py "$@" diff --git a/print/system-config-printer/files/patch-my-default-printer.desktop.in b/print/system-config-printer/files/patch-my-default-printer.desktop.in new file mode 100644 index 000000000..415712639 --- /dev/null +++ b/print/system-config-printer/files/patch-my-default-printer.desktop.in @@ -0,0 +1,11 @@ +--- my-default-printer.desktop.in.orig 2008-03-20 11:53:43.000000000 -0400 ++++ my-default-printer.desktop.in 2008-03-20 11:53:59.000000000 -0400 +@@ -2,7 +2,7 @@ + Encoding=UTF-8 + _Name=Default Printer + _Comment=Select default printer +-Exec=/usr/bin/my-default-printer ++Exec=%%PREFIX%%/bin/my-default-printer + Terminal=false + Type=Application + Icon=printer diff --git a/print/system-config-printer/files/patch-print-applet.desktop.in b/print/system-config-printer/files/patch-print-applet.desktop.in new file mode 100644 index 000000000..fd0755e39 --- /dev/null +++ b/print/system-config-printer/files/patch-print-applet.desktop.in @@ -0,0 +1,11 @@ +--- print-applet.desktop.in.orig 2008-03-20 11:54:56.000000000 -0400 ++++ print-applet.desktop.in 2008-03-20 11:55:10.000000000 -0400 +@@ -2,7 +2,7 @@ + Encoding=UTF-8 + _Name=Print Queue Applet + _Comment=System tray icon for managing print jobs +-Exec=/usr/bin/system-config-printer-applet ++Exec=%%PREFIX%%/bin/system-config-printer-applet + Terminal=false + Type=Application + Icon=printer diff --git a/print/system-config-printer/files/patch-pysmb.py b/print/system-config-printer/files/patch-pysmb.py new file mode 100644 index 000000000..648837de6 --- /dev/null +++ b/print/system-config-printer/files/patch-pysmb.py @@ -0,0 +1,19 @@ +--- pysmb.py.orig 2008-03-20 11:55:30.000000000 -0400 ++++ pysmb.py 2008-03-20 11:56:22.000000000 -0400 +@@ -24,13 +24,13 @@ + import sys + import re + +-nmblookup = "/usr/bin/nmblookup" +-smbclient = "/usr/bin/smbclient" ++nmblookup = "%%LOCALBASE%%/bin/nmblookup" ++smbclient = "%%LOCALBASE%%/bin/smbclient" + + wins = None + + def get_wins_server(): +- smbconf = "/etc/samba/smb.conf" ++ smbconf = "%%LOCALBASE%%/etc/smb.conf" + wsregex = re.compile("\s*wins\s*server.*",re.IGNORECASE) + + global wins diff --git a/print/system-config-printer/files/patch-system-config-printer b/print/system-config-printer/files/patch-system-config-printer new file mode 100644 index 000000000..17f1bf5fb --- /dev/null +++ b/print/system-config-printer/files/patch-system-config-printer @@ -0,0 +1,6 @@ +--- system-config-printer.orig 2008-03-20 11:56:46.000000000 -0400 ++++ system-config-printer 2008-03-20 11:56:58.000000000 -0400 +@@ -1,2 +1,2 @@ + #!/bin/sh +-exec /usr/share/system-config-printer/system-config-printer.py "$@" ++exec %%PREFIX%%/share/system-config-printer/system-config-printer.py "$@" diff --git a/print/system-config-printer/files/patch-system-config-printer-applet b/print/system-config-printer/files/patch-system-config-printer-applet new file mode 100644 index 000000000..b9d8e3125 --- /dev/null +++ b/print/system-config-printer/files/patch-system-config-printer-applet @@ -0,0 +1,6 @@ +--- system-config-printer-applet.orig 2008-03-20 11:57:22.000000000 -0400 ++++ system-config-printer-applet 2008-03-20 11:57:32.000000000 -0400 +@@ -1,2 +1,2 @@ + #!/bin/sh +-exec /usr/share/system-config-printer/applet.py "$@" ++exec %%PREFIX%%/share/system-config-printer/applet.py "$@" diff --git a/print/system-config-printer/files/patch-system-config-printer.desktop.in b/print/system-config-printer/files/patch-system-config-printer.desktop.in new file mode 100644 index 000000000..0cba05cdc --- /dev/null +++ b/print/system-config-printer/files/patch-system-config-printer.desktop.in @@ -0,0 +1,11 @@ +--- system-config-printer.desktop.in.orig 2008-03-20 11:58:12.000000000 -0400 ++++ system-config-printer.desktop.in 2008-03-20 11:58:25.000000000 -0400 +@@ -2,7 +2,7 @@ + Encoding=UTF-8 + _Name=Printing + _Comment=Configure printers +-Exec=/usr/bin/system-config-printer ++Exec=%%PREFIX%%/bin/system-config-printer + Terminal=false + Type=Application + Icon=printer diff --git a/print/system-config-printer/files/patch-system-config-printer.py b/print/system-config-printer/files/patch-system-config-printer.py new file mode 100644 index 000000000..b87180c9d --- /dev/null +++ b/print/system-config-printer/files/patch-system-config-printer.py @@ -0,0 +1,38 @@ +--- system-config-printer.py.orig 2008-03-20 11:58:46.000000000 -0400 ++++ system-config-printer.py 2008-03-20 12:01:44.000000000 -0400 +@@ -72,7 +72,7 @@ + import gettext + gettext.textdomain (domain) + gtk.glade.bindtextdomain (domain) +-pkgdata = '/usr/share/' + domain ++pkgdata = '%%PREFIX%%/share/' + domain + glade_file = pkgdata + '/' + domain + '.glade' + sys.path.append (pkgdata) + +@@ -2987,7 +2987,7 @@ + # Try to get make and model via SNMP + if host: + os.environ["HOST"] = host +- cmd = '/usr/lib/cups/backend/snmp "${HOST}" 2>/dev/null' ++ cmd = '%%LOCALBASE%%/libexec/cups/backend/snmp "${HOST}" 2>/dev/null' + debugprint (host + ": " + cmd) + p = os.popen(cmd, 'r') + output = p.read() +@@ -4055,7 +4055,7 @@ + os.environ["PPD"] = filename + # We want this to be in the current natural language, + # so we intentionally don't set LC_ALL=C here. +- p = os.popen ('/usr/bin/cupstestppd -rvv "$PPD"', 'r') ++ p = os.popen ('%%LOCALBASE%%/bin/cupstestppd -rvv "$PPD"', 'r') + output = p.readlines () + p.close () + err += reduce (lambda x, y: x + y, output) +@@ -4345,7 +4345,7 @@ + (pkgs, exes) = cupshelpers.missingPackagesAndExecutables (ppd) + if len (pkgs) > 0 or len (exes) > 0: + # We didn't find a necessary executable. Complain. +- install = "/usr/bin/system-install-packages" ++ install = "/usr/bin/true" + if len (pkgs) > 0 and os.access (install, os.X_OK): + pkg = pkgs[0] + install_text = ('' + diff --git a/print/system-config-printer/pkg-descr b/print/system-config-printer/pkg-descr new file mode 100644 index 000000000..3dcfd9461 --- /dev/null +++ b/print/system-config-printer/pkg-descr @@ -0,0 +1,7 @@ +CUPS configuration Gtk+2.0 GUI + +Configures a CUPS server. It uses the CUPS API (bound to Python with pycups) +to do this. The communication with the server is performed using IPP. As a +result, it is equally able to configure a remote CUPS server as a local one. + +WWW: http://cyberelk.net/tim/software/system-config-printer/ diff --git a/print/system-config-printer/pkg-plist b/print/system-config-printer/pkg-plist new file mode 100644 index 000000000..647780f7d --- /dev/null +++ b/print/system-config-printer/pkg-plist @@ -0,0 +1,124 @@ +bin/my-default-printer +bin/system-config-printer-applet +etc/dbus-1/system.d/newprinternotification.conf +etc/xdg/autostart/redhat-print-applet.desktop +sbin/system-config-printer +share/applications/redhat-manage-print-jobs.desktop +share/applications/redhat-my-default-printer.desktop +share/applications/redhat-system-config-printer.desktop +share/locale/ar/LC_MESSAGES/system-config-printer.mo +share/locale/as/LC_MESSAGES/system-config-printer.mo +share/locale/bg/LC_MESSAGES/system-config-printer.mo +share/locale/bn/LC_MESSAGES/system-config-printer.mo +share/locale/bn_IN/LC_MESSAGES/system-config-printer.mo +share/locale/bs/LC_MESSAGES/system-config-printer.mo +share/locale/ca/LC_MESSAGES/system-config-printer.mo +share/locale/cs/LC_MESSAGES/system-config-printer.mo +share/locale/cy/LC_MESSAGES/system-config-printer.mo +share/locale/da/LC_MESSAGES/system-config-printer.mo +share/locale/de/LC_MESSAGES/system-config-printer.mo +share/locale/el/LC_MESSAGES/system-config-printer.mo +share/locale/en_GB/LC_MESSAGES/system-config-printer.mo +share/locale/es/LC_MESSAGES/system-config-printer.mo +share/locale/et/LC_MESSAGES/system-config-printer.mo +share/locale/fa/LC_MESSAGES/system-config-printer.mo +share/locale/fi/LC_MESSAGES/system-config-printer.mo +share/locale/fr/LC_MESSAGES/system-config-printer.mo +share/locale/gu/LC_MESSAGES/system-config-printer.mo +share/locale/hi/LC_MESSAGES/system-config-printer.mo +share/locale/hr/LC_MESSAGES/system-config-printer.mo +share/locale/hu/LC_MESSAGES/system-config-printer.mo +share/locale/hy/LC_MESSAGES/system-config-printer.mo +share/locale/id/LC_MESSAGES/system-config-printer.mo +share/locale/is/LC_MESSAGES/system-config-printer.mo +share/locale/it/LC_MESSAGES/system-config-printer.mo +share/locale/ja/LC_MESSAGES/system-config-printer.mo +share/locale/ka/LC_MESSAGES/system-config-printer.mo +share/locale/kn/LC_MESSAGES/system-config-printer.mo +share/locale/ko/LC_MESSAGES/system-config-printer.mo +share/locale/lo/LC_MESSAGES/system-config-printer.mo +share/locale/lv/LC_MESSAGES/system-config-printer.mo +share/locale/mk/LC_MESSAGES/system-config-printer.mo +share/locale/ml/LC_MESSAGES/system-config-printer.mo +share/locale/mr/LC_MESSAGES/system-config-printer.mo +share/locale/ms/LC_MESSAGES/system-config-printer.mo +share/locale/my/LC_MESSAGES/system-config-printer.mo +share/locale/nb/LC_MESSAGES/system-config-printer.mo +share/locale/nl/LC_MESSAGES/system-config-printer.mo +share/locale/nn/LC_MESSAGES/system-config-printer.mo +share/locale/or/LC_MESSAGES/system-config-printer.mo +share/locale/pa/LC_MESSAGES/system-config-printer.mo +share/locale/pl/LC_MESSAGES/system-config-printer.mo +share/locale/pt/LC_MESSAGES/system-config-printer.mo +share/locale/pt_BR/LC_MESSAGES/system-config-printer.mo +share/locale/ro/LC_MESSAGES/system-config-printer.mo +share/locale/ru/LC_MESSAGES/system-config-printer.mo +share/locale/si/LC_MESSAGES/system-config-printer.mo +share/locale/sk/LC_MESSAGES/system-config-printer.mo +share/locale/sl/LC_MESSAGES/system-config-printer.mo +share/locale/sr/LC_MESSAGES/system-config-printer.mo +share/locale/sr@Latn/LC_MESSAGES/system-config-printer.mo +share/locale/sv/LC_MESSAGES/system-config-printer.mo +share/locale/ta/LC_MESSAGES/system-config-printer.mo +share/locale/te/LC_MESSAGES/system-config-printer.mo +share/locale/tr/LC_MESSAGES/system-config-printer.mo +share/locale/uk/LC_MESSAGES/system-config-printer.mo +share/locale/vi/LC_MESSAGES/system-config-printer.mo +share/locale/zh_CN/LC_MESSAGES/system-config-printer.mo +share/locale/zh_TW/LC_MESSAGES/system-config-printer.mo +%%DATADIR%%/applet.glade +%%DATADIR%%/applet.py +%%DATADIR%%/config.py +%%DATADIR%%/cupshelpers.py +%%DATADIR%%/gtk_label_autowrap.py +%%DATADIR%%/gtk_treeviewtooltips.py +%%DATADIR%%/my-default-printer.py +%%DATADIR%%/openprinting.py +%%DATADIR%%/options.py +%%DATADIR%%/optionwidgets.py +%%DATADIR%%/ppds.py +%%DATADIR%%/probe_printer.py +%%DATADIR%%/pysmb.py +%%DATADIR%%/statereason.py +%%DATADIR%%/system-config-printer.glade +%%DATADIR%%/system-config-printer.py +%%DATADIR%%/troubleshoot/CheckNetworkServerSanity.py +%%DATADIR%%/troubleshoot/CheckPrinterSanity.py +%%DATADIR%%/troubleshoot/ChooseNetworkPrinter.py +%%DATADIR%%/troubleshoot/ChoosePrinter.py +%%DATADIR%%/troubleshoot/ErrorLogCheckpoint.py +%%DATADIR%%/troubleshoot/ErrorLogFetch.py +%%DATADIR%%/troubleshoot/ErrorLogParse.py +%%DATADIR%%/troubleshoot/LocalOrRemote.py +%%DATADIR%%/troubleshoot/NetworkCUPSPrinterShared.py +%%DATADIR%%/troubleshoot/PrintTestPage.py +%%DATADIR%%/troubleshoot/PrinterStateReasons.py +%%DATADIR%%/troubleshoot/QueueNotEnabled.py +%%DATADIR%%/troubleshoot/QueueRejectingJobs.py +%%DATADIR%%/troubleshoot/RemoteAddress.py +%%DATADIR%%/troubleshoot/SchedulerNotRunning.py +%%DATADIR%%/troubleshoot/ServerFirewalled.py +%%DATADIR%%/troubleshoot/Shrug.py +%%DATADIR%%/troubleshoot/Welcome.py +%%DATADIR%%/troubleshoot/__init__.py +%%DATADIR%%/troubleshoot/base.py +@dirrm %%DATADIR%%/troubleshoot +@dirrm %%DATADIR%% +@dirrmtry share/locale/te/LC_MESSAGES +@dirrmtry share/locale/te +@dirrmtry share/locale/si/LC_MESSAGES +@dirrmtry share/locale/si +@dirrmtry share/locale/my/LC_MESSAGES +@dirrmtry share/locale/my +@dirrmtry share/locale/mr/LC_MESSAGES +@dirrmtry share/locale/mr +@dirrmtry share/locale/lo/LC_MESSAGES +@dirrmtry share/locale/lo +@dirrmtry share/locale/hy/LC_MESSAGES +@dirrmtry share/locale/hy +@dirrmtry share/locale/bn_IN/LC_MESSAGES +@dirrmtry share/locale/bn_IN +@dirrmtry share/locale/as/LC_MESSAGES +@dirrmtry share/locale/as +@dirrmtry share/applications +@dirrmtry etc/xdg/autostart -- cgit v1.2.3