Update to py-cxfreeze 5.0.1
Version 5.0.1 (January 2017) * Added support for Python 3.6. * Corrected hooks for the pythoncom and pywintypes modules. * Use realpath() to get the absolute path of the executable; this resolves symbolic links and ensures that changing the path before all imports are complete does not result in the executable being unable to find modules. Version 5.0 (November 2016) * Added support for Python 3.5. * Switched from using C compiled frozen modules which embed part of the standard library to using the default named zip file and library file locations. This eliminates the need to recompile cx_Freeze for each new Python version as no parts of the standard library are included in the installation now. This also implies that appending a zip file to the executable is no longer supported since the standard name and location are used. * Removed unnecessary options and parameters from cx_Freeze. * Added support for Win32Service base with Python 3.x. * Add __version__ as an alias to version. * Updated hooks for PyQt, h5py. * Reallow including modules with non-identifier names. * Fix –add-to-path writing to the per-user instead of system environment * Do not import excluded submodules. * Add pyzmq hook * Add copyright and trademarks to version information * Fix compilation on Ubuntu * Set defaults in class directly, rather than as defaults in the function signature. * Added support for storing packages in the file system instead of in the zip file. There are a number of packages that assume that they are found in the file system and if found in a zip file instead produce strange errors. * Significantly simplified startup code. * Added logging statements for improved debugging. * Updated samples to handle recent updates to packages. * Avoid infinite loop for deferred imports which are cycles of one another. Version 4.3.4 (December 2014) * Rebuilt for Python 3.4.2. Dropped support for Python versions less than 2.6. * Correct stale comment. * Fix processing path specs from config when targets are not explicit. * Tweaks to improve compiling with MSVC 10 (2010) on Windows. * Added support for using the –deep and –resource-rules options when code signing through cx_Freeze on OS X. * Catch error if GetDependentFiles() is called on a non-library * Added FAQ entry on single file executables * Only look one level deep for implicit relative imports * Removed statement that was filtering out the ntpath module. Version 4.3.3 (May 2014) * Added support for release version of 3.4 * Added support for code signing in bdist_mac * Added custom Info.plist and Framework suport to bdist_mac * Added support for resolving dependencies on OS X where paths are relative * Added hook for QtWebKit module * Added support for finding packages inside zip files * Ensure that syntax errors in code do not prevent freezing from taking place but simply ignore those modules * Init scripts now use code that works in both Python 2 and 3 * Simplify service sample * Fix documentation for bdist_dmg * All options that accept multiple values are split on commas as documented Version 4.3.2 (October 2013) * Added support for Python 3.4. * Added hooks for PyQt4, PyQt5 and PySide to handle their plugins. * Added support for creating a shortcut/alias to the Applications directory within distributed DMG files for OS X. * Improve missing modules output. * Avoid polluting the extension module namespace when using the bootstrap module to load the extension. * Added support for using setuptools and pip if such tools are available. * Added first tests; nose and mock are required to run them. * Remove –bundle-iconfile in favor of –iconfile as a more generic method of including the icon for bdist_mac. * Documentation improved and FAQ added. * Converted samples to follow PEP 8. Version 4.3.1 (November 2012) * Added support for the final release of Python 3.3. * Added support for copying the MSVC runtime DLLs and manifest if desired by using the –include-msvcr switch. * Clarified the documentation on the –replace-paths option. Version 4.3 (July 2012) * Added options to build Mac OS X application bundles and DMG packages using bdist_mac and bdist_dmg distutils commands. * The documentation is now using Sphinx, and is available on ReadTheDocs.org. * Added support for Python 3.3 which uses a different compiled file format than earlier versions of Python. * Added support for Windows services which start automatically and which are capable of monitoring changes in sessions such as lock and unlock. * New cxfreeze-quickstart wizard to create a basic setup.py file. Initially written by Thomas Kluyver. * Included files under their original name can now be passed to include_files as a tuple with an empty second element. * File inclusions/exclusions can now be specified using a full path, or a shared library name with a version number suffix.
This commit is contained in:
parent
48478b2438
commit
6bd6940a94
4 changed files with 122 additions and 64 deletions
|
@ -1,10 +1,10 @@
|
|||
# $NetBSD: Makefile,v 1.7 2016/08/28 15:48:32 wiz Exp $
|
||||
# $NetBSD: Makefile,v 1.8 2017/02/14 09:54:30 markd Exp $
|
||||
|
||||
VERS= 4.2.3
|
||||
VERS= 5.0.1
|
||||
DISTNAME= cx_Freeze-${VERS}
|
||||
PKGNAME= ${PYPKGPREFIX}-cxfreeze-${VERS}
|
||||
CATEGORIES= devel
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=cx-freeze/}
|
||||
MASTER_SITES= ${MASTER_SITE_PYPI:=c/cx-freeze/}
|
||||
|
||||
MAINTAINER= helgoman@users.sourceforge.net
|
||||
HOMEPAGE= http://cx-freeze.sourceforge.net/
|
||||
|
@ -15,7 +15,8 @@ USE_LANGUAGES= c c++
|
|||
|
||||
post-extract:
|
||||
${MV} ${WRKSRC}/cxfreeze ${WRKSRC}/cxfreeze${PYVERSSUFFIX}
|
||||
${MV} ${WRKSRC}/cxfreeze-quickstart ${WRKSRC}/cxfreeze-quickstart${PYVERSSUFFIX}
|
||||
|
||||
.include "../../lang/python/application.mk"
|
||||
.include "../../lang/python/distutils.mk"
|
||||
.include "../../lang/python/egg.mk"
|
||||
.include "../../mk/bsd.pkg.mk"
|
||||
|
|
|
@ -1,64 +1,126 @@
|
|||
@comment $NetBSD: PLIST,v 1.3 2012/05/22 08:28:47 obache Exp $
|
||||
@comment $NetBSD: PLIST,v 1.4 2017/02/14 09:54:30 markd Exp $
|
||||
bin/cxfreeze-quickstart${PYVERSSUFFIX}
|
||||
bin/cxfreeze${PYVERSSUFFIX}
|
||||
${PYSITELIB}/${EGG_FILE}
|
||||
${PYSITELIB}/${EGG_INFODIR}/PKG-INFO
|
||||
${PYSITELIB}/${EGG_INFODIR}/SOURCES.txt
|
||||
${PYSITELIB}/${EGG_INFODIR}/dependency_links.txt
|
||||
${PYSITELIB}/${EGG_INFODIR}/top_level.txt
|
||||
${PYSITELIB}/cx_Freeze/__init__.py
|
||||
${PYSITELIB}/cx_Freeze/__init__.pyc
|
||||
${PYSITELIB}/cx_Freeze/__init__.pyo
|
||||
${PYSITELIB}/cx_Freeze/bases/Console
|
||||
${PYSITELIB}/cx_Freeze/bases/ConsoleKeepPath
|
||||
${PYSITELIB}/cx_Freeze/dist.py
|
||||
${PYSITELIB}/cx_Freeze/dist.pyc
|
||||
${PYSITELIB}/cx_Freeze/__init__.pyc
|
||||
${PYSITELIB}/cx_Freeze/common.pyo
|
||||
${PYSITELIB}/cx_Freeze/common.pyc
|
||||
${PYSITELIB}/cx_Freeze/dist.pyo
|
||||
${PYSITELIB}/cx_Freeze/finder.py
|
||||
${PYSITELIB}/cx_Freeze/finder.pyc
|
||||
${PYSITELIB}/cx_Freeze/dist.pyc
|
||||
${PYSITELIB}/cx_Freeze/finder.pyo
|
||||
${PYSITELIB}/cx_Freeze/freezer.py
|
||||
${PYSITELIB}/cx_Freeze/freezer.pyc
|
||||
${PYSITELIB}/cx_Freeze/finder.pyc
|
||||
${PYSITELIB}/cx_Freeze/freezer.pyo
|
||||
${PYSITELIB}/cx_Freeze/hooks.py
|
||||
${PYSITELIB}/cx_Freeze/hooks.pyc
|
||||
${PYSITELIB}/cx_Freeze/freezer.pyc
|
||||
${PYSITELIB}/cx_Freeze/hooks.pyo
|
||||
${PYSITELIB}/cx_Freeze/hooks.pyc
|
||||
${PYSITELIB}/cx_Freeze/macdist.pyo
|
||||
${PYSITELIB}/cx_Freeze/macdist.pyc
|
||||
${PYSITELIB}/cx_Freeze/main.pyo
|
||||
${PYSITELIB}/cx_Freeze/main.pyc
|
||||
${PYSITELIB}/cx_Freeze/setupwriter.pyo
|
||||
${PYSITELIB}/cx_Freeze/setupwriter.pyc
|
||||
${PYSITELIB}/cx_Freeze/windist.pyo
|
||||
${PYSITELIB}/cx_Freeze/windist.pyc
|
||||
${PYSITELIB}/cx_Freeze/bases/Console
|
||||
${PYSITELIB}/cx_Freeze/common.py
|
||||
${PYSITELIB}/cx_Freeze/dist.py
|
||||
${PYSITELIB}/cx_Freeze/finder.py
|
||||
${PYSITELIB}/cx_Freeze/freezer.py
|
||||
${PYSITELIB}/cx_Freeze/hooks.py
|
||||
${PYSITELIB}/cx_Freeze/initscripts/Console.py
|
||||
${PYSITELIB}/cx_Freeze/initscripts/Console3.py
|
||||
${PYSITELIB}/cx_Freeze/initscripts/ConsoleKeepPath.py
|
||||
${PYSITELIB}/cx_Freeze/initscripts/ConsoleKeepPath3.py
|
||||
${PYSITELIB}/cx_Freeze/initscripts/ConsoleSetLibPath.py
|
||||
${PYSITELIB}/cx_Freeze/initscripts/SharedLib.py
|
||||
${PYSITELIB}/cx_Freeze/initscripts/SharedLibSource.py
|
||||
${PYSITELIB}/cx_Freeze/initscripts/Console.pyo
|
||||
${PYSITELIB}/cx_Freeze/initscripts/Console.pyc
|
||||
${PYSITELIB}/cx_Freeze/initscripts/ConsoleSetLibPath.pyo
|
||||
${PYSITELIB}/cx_Freeze/initscripts/ConsoleSetLibPath.pyc
|
||||
${PYSITELIB}/cx_Freeze/initscripts/SharedLib.pyo
|
||||
${PYSITELIB}/cx_Freeze/initscripts/SharedLib.pyc
|
||||
${PYSITELIB}/cx_Freeze/initscripts/SharedLibSource.pyo
|
||||
${PYSITELIB}/cx_Freeze/initscripts/SharedLibSource.pyc
|
||||
${PYSITELIB}/cx_Freeze/initscripts/__startup__.pyo
|
||||
${PYSITELIB}/cx_Freeze/initscripts/__startup__.pyc
|
||||
${PYSITELIB}/cx_Freeze/initscripts/__startup__.py
|
||||
${PYSITELIB}/cx_Freeze/macdist.py
|
||||
${PYSITELIB}/cx_Freeze/main.py
|
||||
${PYSITELIB}/cx_Freeze/main.pyc
|
||||
${PYSITELIB}/cx_Freeze/main.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/PyQt4/PyQt4app.py
|
||||
${PYSITELIB}/cx_Freeze/samples/PyQt4/PyQt4app.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/PyQt4/PyQt4app.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/PyQt4/setup.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/PyQt4/setup.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/PyQt4/setup.py
|
||||
${PYSITELIB}/cx_Freeze/samples/Tkinter/SimpleTkApp.py
|
||||
${PYSITELIB}/cx_Freeze/samples/Tkinter/SimpleTkApp.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/Tkinter/SimpleTkApp.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/Tkinter/setup.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/Tkinter/setup.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/Tkinter/setup.py
|
||||
${PYSITELIB}/cx_Freeze/samples/advanced/advanced_1.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/advanced/advanced_1.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/advanced/advanced_2.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/advanced/advanced_2.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/advanced/setup.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/advanced/setup.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/advanced/advanced_1.py
|
||||
${PYSITELIB}/cx_Freeze/samples/advanced/advanced_2.py
|
||||
${PYSITELIB}/cx_Freeze/samples/advanced/modules/testfreeze_1.py
|
||||
${PYSITELIB}/cx_Freeze/samples/advanced/modules/testfreeze_2.py
|
||||
${PYSITELIB}/cx_Freeze/samples/advanced/setup.py
|
||||
${PYSITELIB}/cx_Freeze/samples/asmodule/asmodule.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/asmodule/asmodule.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/asmodule/setup.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/asmodule/setup.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/asmodule/asmodule.py
|
||||
${PYSITELIB}/cx_Freeze/samples/asmodule/setup.py
|
||||
${PYSITELIB}/cx_Freeze/samples/matplotlib/matplotlib_eg.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/matplotlib/matplotlib_eg.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/matplotlib/setup.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/matplotlib/setup.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/matplotlib/matplotlib_eg.py
|
||||
${PYSITELIB}/cx_Freeze/samples/matplotlib/setup.py
|
||||
${PYSITELIB}/cx_Freeze/samples/matplotlib/test_matplotlib.py
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/pkg1/__init__.py
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/pkg1/pkg2/__init__.py
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/pkg1/pkg2/sub3.py
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/pkg1/pkg2/sub5.py
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/pkg1/sub1.py
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/pkg1/sub2.py
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/pkg1/sub4.py
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/pkg1/sub6.py
|
||||
${PYSITELIB}/cx_Freeze/samples/openpyxl/setup.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/openpyxl/setup.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/openpyxl/test_openpyxl.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/openpyxl/test_openpyxl.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/openpyxl/setup.py
|
||||
${PYSITELIB}/cx_Freeze/samples/openpyxl/test_openpyxl.py
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/relimport.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/relimport.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/setup.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/setup.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/relimport.py
|
||||
${PYSITELIB}/cx_Freeze/samples/relimport/setup.py
|
||||
${PYSITELIB}/cx_Freeze/samples/service/Config.py
|
||||
${PYSITELIB}/cx_Freeze/samples/service/ServiceHandler.py
|
||||
${PYSITELIB}/cx_Freeze/samples/service/Config.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/service/Config.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/service/ServiceHandler.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/service/ServiceHandler.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/service/setup.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/service/setup.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/service/setup.py
|
||||
${PYSITELIB}/cx_Freeze/samples/simple/hello.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/simple/hello.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/simple/setup.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/simple/setup.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/simple/hello.py
|
||||
${PYSITELIB}/cx_Freeze/samples/simple/setup.py
|
||||
${PYSITELIB}/cx_Freeze/samples/wx/setup.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/wx/setup.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/wx/wxapp.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/wx/wxapp.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/wx/setup.py
|
||||
${PYSITELIB}/cx_Freeze/samples/wx/wxapp.py
|
||||
${PYSITELIB}/cx_Freeze/samples/zope/qotd.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/zope/qotd.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/zope/setup.pyo
|
||||
${PYSITELIB}/cx_Freeze/samples/zope/setup.pyc
|
||||
${PYSITELIB}/cx_Freeze/samples/zope/qotd.py
|
||||
${PYSITELIB}/cx_Freeze/samples/zope/setup.py
|
||||
${PYSITELIB}/cx_Freeze/setupwriter.py
|
||||
${PYSITELIB}/cx_Freeze/util.so
|
||||
${PYSITELIB}/cx_Freeze/windist.py
|
||||
${PYSITELIB}/cx_Freeze/windist.pyc
|
||||
${PYSITELIB}/cx_Freeze/windist.pyo
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$NetBSD: distinfo,v 1.5 2015/11/03 22:50:41 agc Exp $
|
||||
$NetBSD: distinfo,v 1.6 2017/02/14 09:54:30 markd Exp $
|
||||
|
||||
SHA1 (cx_Freeze-4.2.3.tar.gz) = 860de723365f2994f94f242f1147f89e09ed1ee9
|
||||
RMD160 (cx_Freeze-4.2.3.tar.gz) = 92dbdd14315bc4b02d98649b8c6b2982b06ad2e7
|
||||
SHA512 (cx_Freeze-4.2.3.tar.gz) = 21d9637924cb193ae1a321be1f4a7c16cca1f296b58fc931b70f3adc2f2a51b2e48c9600428d0d8eb692d518da94cdf25602b6e49b791f72005a4958f72edcdc
|
||||
Size (cx_Freeze-4.2.3.tar.gz) = 62436 bytes
|
||||
SHA1 (patch-aa) = a2e592b9de2a59cac2563a02cdac8bed1385d2cd
|
||||
SHA1 (cx_Freeze-5.0.1.tar.gz) = c652cc99c7ba7aff8b6db82495d782f5256a80bc
|
||||
RMD160 (cx_Freeze-5.0.1.tar.gz) = e6486b3a5f44d861f4f3ab8d96f084d29c1cc908
|
||||
SHA512 (cx_Freeze-5.0.1.tar.gz) = 26c60d4970a602abac7ac2fdf19222187921b25e85898902fa13644d4f7ede28ab7c28bbcad732eb07dfc17a59878278af5c802d1c85b483bba6df5955a865cc
|
||||
Size (cx_Freeze-5.0.1.tar.gz) = 60127 bytes
|
||||
SHA1 (patch-aa) = 970bcecf2c7d687826e945f1020427b9229f9f02
|
||||
|
|
|
@ -1,26 +1,21 @@
|
|||
$NetBSD: patch-aa,v 1.3 2015/03/21 19:26:47 joerg Exp $
|
||||
$NetBSD: patch-aa,v 1.4 2017/02/14 09:54:30 markd Exp $
|
||||
|
||||
--- setup.py.orig 2011-03-19 17:27:27.000000000 +0000
|
||||
--- setup.py.orig 2017-01-07 16:04:26.000000000 +0000
|
||||
+++ setup.py
|
||||
@@ -61,6 +61,7 @@ class build_ext(distutils.command.build_
|
||||
@@ -71,6 +71,7 @@ class build_ext(distutils.command.build_
|
||||
fileName = os.path.splitext(self.get_ext_filename(ext.name))[0]
|
||||
fullName = os.path.join(self.build_lib, fileName)
|
||||
libraryDirs = ext.library_dirs or []
|
||||
+ runtimeLibraryDirs = ext.runtime_library_dirs or []
|
||||
libraries = self.get_libraries(ext)
|
||||
extraArgs = ext.extra_link_args or []
|
||||
if sys.platform != "win32":
|
||||
@@ -78,6 +79,9 @@ class build_ext(distutils.command.build_
|
||||
extraArgs.extend(vars["BASEMODLIBS"].split())
|
||||
if vars["LOCALMODLIBS"]:
|
||||
extraArgs.extend(vars["LOCALMODLIBS"].split())
|
||||
+ else:
|
||||
+ runtimeLibraryDirs.append(sys.prefix + "/lib")
|
||||
+ libraryDirs.append(sys.prefix + "/lib")
|
||||
if sys.platform == "win32":
|
||||
@@ -96,10 +97,12 @@ class build_ext(distutils.command.build_
|
||||
if vars["LOCALMODLIBS"]:
|
||||
extraArgs.extend(vars["LOCALMODLIBS"].split())
|
||||
extraArgs.append("-s")
|
||||
elif ext.name.find("Win32GUI") > 0 \
|
||||
and self.compiler.compiler_type == "mingw32":
|
||||
@@ -85,7 +89,7 @@ class build_ext(distutils.command.build_
|
||||
+ runtimeLibraryDirs.append(sys.prefix + "/lib")
|
||||
+ libraryDirs.append(sys.prefix + "/lib")
|
||||
self.compiler.link_executable(objects, fullName,
|
||||
libraries = libraries,
|
||||
library_dirs = libraryDirs,
|
||||
|
@ -29,12 +24,12 @@ $NetBSD: patch-aa,v 1.3 2015/03/21 19:26:47 joerg Exp $
|
|||
extra_postargs = extraArgs,
|
||||
debug = self.debug)
|
||||
|
||||
@@ -238,7 +242,7 @@ setup(name = "cx_Freeze",
|
||||
maintainer="Anthony Tuininga",
|
||||
maintainer_email="anthony.tuininga@gmail.com",
|
||||
url = "http://cx-freeze.sourceforge.net",
|
||||
- scripts = ["cxfreeze"],
|
||||
+ scripts = ["cxfreeze" + sys.version[:3]],
|
||||
classifiers = classifiers,
|
||||
keywords = "freeze",
|
||||
license = "Python Software Foundation License")
|
||||
@@ -142,7 +145,7 @@ utilModule = Extension("cx_Freeze.util",
|
||||
|
||||
# build base executables
|
||||
docFiles = "README.txt"
|
||||
-scripts = ["cxfreeze", "cxfreeze-quickstart"]
|
||||
+scripts = ["cxfreeze" + sys.version[:3], "cxfreeze-quickstart" + sys.version[:3]]
|
||||
options = dict(bdist_rpm = dict(doc_files = docFiles),
|
||||
install = dict(optimize = 1))
|
||||
depends = ["source/bases/Common.c"]
|
||||
|
|
Loading…
Reference in a new issue