svn commit: r403982 - in head: devel/py-pykde4 games/kajongg x11/kdelibs4 x11/kdelibs4/files x11/plasma-scriptengine-python

Raphael Kubo da Costa rakuco at FreeBSD.org
Fri Dec 18 18:10:27 UTC 2015


Author: rakuco
Date: Fri Dec 18 18:10:24 2015
New Revision: 403982
URL: https://svnweb.freebsd.org/changeset/ports/403982

Log:
  Remove ${STAGEDIR} from pyc/pyo files installed with kdelibs's CMake macros.
  
  Bug 200018 is caused by the .pyc/.pyo files installed by devel/py-pykde4
  containing references to the stage directory in them. When
  editors/kate-plugin-pate is built by a user with write-access to those
  PyKDE4 .pyc/.pyo files, they are rewritten automatically by Python to point
  to their current location, which most of the times is different from the
  staging location of where devel/py-pykde4 was built. This at the very least
  leads to a filesystem violation in Poudriere.
  
  The fix I landed upstream involves making kdelibs's PythonCompile.py accept
  a --destination-dir parameter with the directory we want to register in the
  .pyc/.pyo files, just like several ports do in their build or post-install
  targets by calling Python's compileall.py module with -d.
  
  The patches in files/ look somewhat confusing because we already patch
  PythonMacros.cmake to build .pyo files and had to integrate the other
  patches into it. At least I have added some context to
  patch-cmake_modules_PythonMacros.cmake to reduce the confusion.
  
  Bump PORTREVISION in affected ports:
  - devel/py-pykde4: Install .pyc/.pyo files with ${STAGEDIR} in them.
  - games/kajongg: The plist now includes .pyo files, and was adjusted to work
                   with Python 3 in the future if necessary.
  - x11/kdelibs4: Install new CMake files.
  - x11/plasma-scriptengine-python: Install .pyc/.pyo files with ${STAGEDIR}
                                    in them.
  
  PR:		200018
  MFH:		2015Q4

Added:
  head/x11/kdelibs4/files/patch-git_016841a   (contents, props changed)
  head/x11/kdelibs4/files/patch-git_94f1d2f   (contents, props changed)
Modified:
  head/devel/py-pykde4/Makefile
  head/games/kajongg/Makefile
  head/games/kajongg/pkg-plist
  head/x11/kdelibs4/Makefile
  head/x11/kdelibs4/files/patch-cmake_modules_PythonMacros.cmake
  head/x11/plasma-scriptengine-python/Makefile

Modified: head/devel/py-pykde4/Makefile
==============================================================================
--- head/devel/py-pykde4/Makefile	Fri Dec 18 17:53:40 2015	(r403981)
+++ head/devel/py-pykde4/Makefile	Fri Dec 18 18:10:24 2015	(r403982)
@@ -2,6 +2,7 @@
 
 PORTNAME=	pykde4
 PORTVERSION=	${KDE4_VERSION}
+PORTREVISION=	1
 CATEGORIES=	devel kde python
 MASTER_SITES=	KDE/${KDE4_BRANCH}/${PORTVERSION}/src
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}

Modified: head/games/kajongg/Makefile
==============================================================================
--- head/games/kajongg/Makefile	Fri Dec 18 17:53:40 2015	(r403981)
+++ head/games/kajongg/Makefile	Fri Dec 18 18:10:24 2015	(r403982)
@@ -2,6 +2,7 @@
 
 PORTNAME=	kajongg
 PORTVERSION=	${KDE4_VERSION}
+PORTREVISION=	1
 CATEGORIES=	games kde
 MASTER_SITES=	KDE/${KDE4_BRANCH}/${PORTVERSION}/src
 DIST_SUBDIR=	KDE/${PORTVERSION}

Modified: head/games/kajongg/pkg-plist
==============================================================================
--- head/games/kajongg/pkg-plist	Fri Dec 18 17:53:40 2015	(r403981)
+++ head/games/kajongg/pkg-plist	Fri Dec 18 18:10:24 2015	(r403982)
@@ -2,128 +2,187 @@ bin/kajongg
 bin/kajonggserver
 share/applications/kde4/kajongg.desktop
 share/apps/kajongg/about.py
-share/apps/kajongg/about.pyc
+share/apps/kajongg/%%PYCACHE%%about.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%about.%%PYO_SUFFIX%%
 share/apps/kajongg/altint.py
-share/apps/kajongg/altint.pyc
+share/apps/kajongg/%%PYCACHE%%altint.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%altint.%%PYO_SUFFIX%%
 share/apps/kajongg/animation.py
-share/apps/kajongg/animation.pyc
+share/apps/kajongg/%%PYCACHE%%animation.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%animation.%%PYO_SUFFIX%%
 share/apps/kajongg/background.py
-share/apps/kajongg/background.pyc
+share/apps/kajongg/%%PYCACHE%%background.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%background.%%PYO_SUFFIX%%
 share/apps/kajongg/backgroundselector.py
-share/apps/kajongg/backgroundselector.pyc
+share/apps/kajongg/%%PYCACHE%%backgroundselector.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%backgroundselector.%%PYO_SUFFIX%%
 share/apps/kajongg/backgroundselector.ui
 share/apps/kajongg/board.py
-share/apps/kajongg/board.pyc
+share/apps/kajongg/%%PYCACHE%%board.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%board.%%PYO_SUFFIX%%
 share/apps/kajongg/chat.py
-share/apps/kajongg/chat.pyc
+share/apps/kajongg/%%PYCACHE%%chat.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%chat.%%PYO_SUFFIX%%
 share/apps/kajongg/client.py
-share/apps/kajongg/client.pyc
+share/apps/kajongg/%%PYCACHE%%client.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%client.%%PYO_SUFFIX%%
 share/apps/kajongg/common.py
-share/apps/kajongg/common.pyc
+share/apps/kajongg/%%PYCACHE%%common.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%common.%%PYO_SUFFIX%%
 share/apps/kajongg/config.py
-share/apps/kajongg/config.pyc
+share/apps/kajongg/%%PYCACHE%%config.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%config.%%PYO_SUFFIX%%
 share/apps/kajongg/configdialog.py
-share/apps/kajongg/configdialog.pyc
+share/apps/kajongg/%%PYCACHE%%configdialog.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%configdialog.%%PYO_SUFFIX%%
 share/apps/kajongg/deferredutil.py
-share/apps/kajongg/deferredutil.pyc
+share/apps/kajongg/%%PYCACHE%%deferredutil.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%deferredutil.%%PYO_SUFFIX%%
 share/apps/kajongg/dialogs.py
-share/apps/kajongg/dialogs.pyc
+share/apps/kajongg/%%PYCACHE%%dialogs.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%dialogs.%%PYO_SUFFIX%%
 share/apps/kajongg/differ.py
-share/apps/kajongg/differ.pyc
+share/apps/kajongg/%%PYCACHE%%differ.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%differ.%%PYO_SUFFIX%%
 share/apps/kajongg/game.py
-share/apps/kajongg/game.pyc
+share/apps/kajongg/%%PYCACHE%%game.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%game.%%PYO_SUFFIX%%
 share/apps/kajongg/games.py
-share/apps/kajongg/games.pyc
+share/apps/kajongg/%%PYCACHE%%games.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%games.%%PYO_SUFFIX%%
 share/apps/kajongg/genericdelegates.py
-share/apps/kajongg/genericdelegates.pyc
+share/apps/kajongg/%%PYCACHE%%genericdelegates.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%genericdelegates.%%PYO_SUFFIX%%
 share/apps/kajongg/guiutil.py
-share/apps/kajongg/guiutil.pyc
+share/apps/kajongg/%%PYCACHE%%guiutil.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%guiutil.%%PYO_SUFFIX%%
 share/apps/kajongg/hand.py
-share/apps/kajongg/hand.pyc
+share/apps/kajongg/%%PYCACHE%%hand.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%hand.%%PYO_SUFFIX%%
 share/apps/kajongg/handboard.py
-share/apps/kajongg/handboard.pyc
+share/apps/kajongg/%%PYCACHE%%handboard.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%handboard.%%PYO_SUFFIX%%
 share/apps/kajongg/humanclient.py
-share/apps/kajongg/humanclient.pyc
+share/apps/kajongg/%%PYCACHE%%humanclient.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%humanclient.%%PYO_SUFFIX%%
 share/apps/kajongg/intelligence.py
-share/apps/kajongg/intelligence.pyc
+share/apps/kajongg/%%PYCACHE%%intelligence.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%intelligence.%%PYO_SUFFIX%%
 share/apps/kajongg/kajongg.py
 share/apps/kajongg/kajonggserver.py
 share/apps/kajongg/kajonggui.rc
 share/apps/kajongg/kde.py
-share/apps/kajongg/kde.pyc
+share/apps/kajongg/%%PYCACHE%%kde.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%kde.%%PYO_SUFFIX%%
 share/apps/kajongg/kdestub.py
-share/apps/kajongg/kdestub.pyc
+share/apps/kajongg/%%PYCACHE%%kdestub.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%kdestub.%%PYO_SUFFIX%%
 share/apps/kajongg/log.py
-share/apps/kajongg/log.pyc
+share/apps/kajongg/%%PYCACHE%%log.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%log.%%PYO_SUFFIX%%
 share/apps/kajongg/login.py
-share/apps/kajongg/login.pyc
+share/apps/kajongg/%%PYCACHE%%login.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%login.%%PYO_SUFFIX%%
 share/apps/kajongg/mainwindow.py
-share/apps/kajongg/mainwindow.pyc
+share/apps/kajongg/%%PYCACHE%%mainwindow.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%mainwindow.%%PYO_SUFFIX%%
 share/apps/kajongg/meld.py
-share/apps/kajongg/meld.pyc
+share/apps/kajongg/%%PYCACHE%%meld.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%meld.%%PYO_SUFFIX%%
 share/apps/kajongg/message.py
-share/apps/kajongg/message.pyc
+share/apps/kajongg/%%PYCACHE%%message.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%message.%%PYO_SUFFIX%%
 share/apps/kajongg/modeltest.py
-share/apps/kajongg/modeltest.pyc
+share/apps/kajongg/%%PYCACHE%%modeltest.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%modeltest.%%PYO_SUFFIX%%
 share/apps/kajongg/move.py
-share/apps/kajongg/move.pyc
+share/apps/kajongg/%%PYCACHE%%move.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%move.%%PYO_SUFFIX%%
 share/apps/kajongg/permutations.py
-share/apps/kajongg/permutations.pyc
+share/apps/kajongg/%%PYCACHE%%permutations.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%permutations.%%PYO_SUFFIX%%
 share/apps/kajongg/player.py
-share/apps/kajongg/player.pyc
+share/apps/kajongg/%%PYCACHE%%player.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%player.%%PYO_SUFFIX%%
 share/apps/kajongg/playerlist.py
-share/apps/kajongg/playerlist.pyc
+share/apps/kajongg/%%PYCACHE%%playerlist.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%playerlist.%%PYO_SUFFIX%%
 share/apps/kajongg/predefined.py
-share/apps/kajongg/predefined.pyc
+share/apps/kajongg/%%PYCACHE%%predefined.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%predefined.%%PYO_SUFFIX%%
 share/apps/kajongg/qstring.py
-share/apps/kajongg/qstring.pyc
+share/apps/kajongg/%%PYCACHE%%qstring.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%qstring.%%PYO_SUFFIX%%
 share/apps/kajongg/qt.py
-share/apps/kajongg/qt.pyc
+share/apps/kajongg/%%PYCACHE%%qt.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%qt.%%PYO_SUFFIX%%
 share/apps/kajongg/qt4.py
-share/apps/kajongg/qt4.pyc
+share/apps/kajongg/%%PYCACHE%%qt4.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%qt4.%%PYO_SUFFIX%%
 share/apps/kajongg/qt4reactor.py
-share/apps/kajongg/qt4reactor.pyc
+share/apps/kajongg/%%PYCACHE%%qt4reactor.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%qt4reactor.%%PYO_SUFFIX%%
 share/apps/kajongg/qt5.py
-share/apps/kajongg/qt5.pyc
+share/apps/kajongg/%%PYCACHE%%qt5.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%qt5.%%PYO_SUFFIX%%
 share/apps/kajongg/query.py
-share/apps/kajongg/query.pyc
+share/apps/kajongg/%%PYCACHE%%query.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%query.%%PYO_SUFFIX%%
 share/apps/kajongg/rule.py
-share/apps/kajongg/rule.pyc
+share/apps/kajongg/%%PYCACHE%%rule.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%rule.%%PYO_SUFFIX%%
 share/apps/kajongg/rulecode.py
-share/apps/kajongg/rulecode.pyc
+share/apps/kajongg/%%PYCACHE%%rulecode.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%rulecode.%%PYO_SUFFIX%%
 share/apps/kajongg/rulesetselector.py
-share/apps/kajongg/rulesetselector.pyc
+share/apps/kajongg/%%PYCACHE%%rulesetselector.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%rulesetselector.%%PYO_SUFFIX%%
 share/apps/kajongg/scene.py
-share/apps/kajongg/scene.pyc
+share/apps/kajongg/%%PYCACHE%%scene.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%scene.%%PYO_SUFFIX%%
 share/apps/kajongg/scoring.py
-share/apps/kajongg/scoring.pyc
+share/apps/kajongg/%%PYCACHE%%scoring.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%scoring.%%PYO_SUFFIX%%
 share/apps/kajongg/scoringdialog.py
-share/apps/kajongg/scoringdialog.pyc
+share/apps/kajongg/%%PYCACHE%%scoringdialog.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%scoringdialog.%%PYO_SUFFIX%%
 share/apps/kajongg/server.py
-share/apps/kajongg/server.pyc
+share/apps/kajongg/%%PYCACHE%%server.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%server.%%PYO_SUFFIX%%
 share/apps/kajongg/sound.py
-share/apps/kajongg/sound.pyc
+share/apps/kajongg/%%PYCACHE%%sound.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%sound.%%PYO_SUFFIX%%
 share/apps/kajongg/statesaver.py
-share/apps/kajongg/statesaver.pyc
+share/apps/kajongg/%%PYCACHE%%statesaver.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%statesaver.%%PYO_SUFFIX%%
 share/apps/kajongg/tables.py
-share/apps/kajongg/tables.pyc
+share/apps/kajongg/%%PYCACHE%%tables.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%tables.%%PYO_SUFFIX%%
 share/apps/kajongg/tile.py
-share/apps/kajongg/tile.pyc
+share/apps/kajongg/%%PYCACHE%%tile.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%tile.%%PYO_SUFFIX%%
 share/apps/kajongg/tileset.py
-share/apps/kajongg/tileset.pyc
+share/apps/kajongg/%%PYCACHE%%tileset.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%tileset.%%PYO_SUFFIX%%
 share/apps/kajongg/tilesetselector.py
-share/apps/kajongg/tilesetselector.pyc
+share/apps/kajongg/%%PYCACHE%%tilesetselector.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%tilesetselector.%%PYO_SUFFIX%%
 share/apps/kajongg/tilesetselector.ui
 share/apps/kajongg/tree.py
-share/apps/kajongg/tree.pyc
+share/apps/kajongg/%%PYCACHE%%tree.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%tree.%%PYO_SUFFIX%%
 share/apps/kajongg/uitile.py
-share/apps/kajongg/uitile.pyc
+share/apps/kajongg/%%PYCACHE%%uitile.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%uitile.%%PYO_SUFFIX%%
 share/apps/kajongg/uiwall.py
-share/apps/kajongg/uiwall.pyc
+share/apps/kajongg/%%PYCACHE%%uiwall.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%uiwall.%%PYO_SUFFIX%%
 share/apps/kajongg/util.py
-share/apps/kajongg/util.pyc
+share/apps/kajongg/%%PYCACHE%%util.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%util.%%PYO_SUFFIX%%
 share/apps/kajongg/visible.py
-share/apps/kajongg/visible.pyc
+share/apps/kajongg/%%PYCACHE%%visible.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%visible.%%PYO_SUFFIX%%
 share/apps/kajongg/voices/female1/COPYRIGHT
 share/apps/kajongg/voices/female1/b1.ogg
 share/apps/kajongg/voices/female1/b2.ogg
@@ -300,7 +359,8 @@ share/apps/kajongg/voices/male2/wn.ogg
 share/apps/kajongg/voices/male2/ws.ogg
 share/apps/kajongg/voices/male2/ww.ogg
 share/apps/kajongg/wall.py
-share/apps/kajongg/wall.pyc
+share/apps/kajongg/%%PYCACHE%%wall.%%PYC_SUFFIX%%
+share/apps/kajongg/%%PYCACHE%%wall.%%PYO_SUFFIX%%
 share/doc/HTML/en/kajongg/chat.png
 share/doc/HTML/en/kajongg/common
 share/doc/HTML/en/kajongg/config_background.png

Modified: head/x11/kdelibs4/Makefile
==============================================================================
--- head/x11/kdelibs4/Makefile	Fri Dec 18 17:53:40 2015	(r403981)
+++ head/x11/kdelibs4/Makefile	Fri Dec 18 18:10:24 2015	(r403982)
@@ -3,7 +3,7 @@
 
 PORTNAME=	kdelibs
 PORTVERSION=	${KDE4_VERSION}
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	x11 kde
 MASTER_SITES=	KDE/${KDE4_BRANCH}/${PORTVERSION}/src
 DIST_SUBDIR=	KDE/${PORTVERSION}

Modified: head/x11/kdelibs4/files/patch-cmake_modules_PythonMacros.cmake
==============================================================================
--- head/x11/kdelibs4/files/patch-cmake_modules_PythonMacros.cmake	Fri Dec 18 17:53:40 2015	(r403981)
+++ head/x11/kdelibs4/files/patch-cmake_modules_PythonMacros.cmake	Fri Dec 18 18:10:24 2015	(r403982)
@@ -1,6 +1,13 @@
---- cmake/modules/PythonMacros.cmake.orig	2013-01-23 22:44:16.000000000 +0100
-+++ cmake/modules/PythonMacros.cmake	2013-02-27 13:39:48.000000000 +0100
-@@ -43,9 +43,11 @@
+The pyo-related changes are (at least for now) FreeBSD-specific and are present
+in order to install .pyo files in addition to .pyc files when installing Python
+modules.
+
+The "--destination-dir" changes are required to fix PR 200018 and come from a
+change landed upstream, 94f1d2f ("PythonMacros: specify destination directory
+in byte-compiled files"). See patch-git_94f1d2f for more information.
+--- cmake/modules/PythonMacros.cmake
++++ cmake/modules/PythonMacros.cmake
+@@ -41,16 +41,18 @@ macro(PYTHON_INSTALL SOURCE_FILE DESTINATION_DIR)
      if(PYTHON_VERSION_STRING VERSION_GREATER 3.1)
        # To get the right version for suffix
        set(_bin_pyc "${CMAKE_CURRENT_BINARY_DIR}/${_basepath}/__pycache__/${_filenamebase}.cpython-${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}.pyc")
@@ -12,25 +19,37 @@
        set(_py_install_dir "${DESTINATION_DIR}")
      endif()
  
-@@ -60,6 +62,7 @@
-         TARGET compile_python_files
+     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_basepath})
+ 
+     # Setting because it will be displayed later, in compile_python_files
+-    set(_message "Byte-compiling ${_bin_py} to ${_bin_pyc}")
++    set(_message "Byte-compiling ${_bin_py} to ${_bin_pyc} and ${_bin_pyo}")
+ 
+     string(REPLACE "/" "_" _rule_name "${_basepath}/${_bin_pyc}")
+     add_custom_target("${_rule_name}" ALL)
+@@ -60,7 +62,8 @@ macro(PYTHON_INSTALL SOURCE_FILE DESTINATION_DIR)
+       add_custom_command(
+         TARGET "${_rule_name}"
          COMMAND "${CMAKE_COMMAND}" -E echo "${_message}"
-         COMMAND "${PYTHON_EXECUTABLE}" "${_python_compile_py}" "${_bin_py}"
-+        COMMAND "${PYTHON_EXECUTABLE}" -O "${_python_compile_py}" "${_bin_py}"
+-        COMMAND "${PYTHON_EXECUTABLE}" "${_python_compile_py}" "${_bin_py}"
++        COMMAND "${PYTHON_EXECUTABLE}" "${_python_compile_py}" "--destination-dir" "${DESTINATION_DIR}" "${_bin_py}"
++        COMMAND "${PYTHON_EXECUTABLE}" -O "${_python_compile_py}" "--destination-dir" "${DESTINATION_DIR}" "${_bin_py}"
          DEPENDS "${_absfilename}"
        )
      else()
-@@ -68,11 +71,13 @@
+@@ -68,12 +71,13 @@ macro(PYTHON_INSTALL SOURCE_FILE DESTINATION_DIR)
+         TARGET "${_rule_name}"
          COMMAND "${CMAKE_COMMAND}" -E echo "${_message}"
          COMMAND "${CMAKE_COMMAND}" -E copy "${_absfilename}" "${_bin_py}"
-         COMMAND "${PYTHON_EXECUTABLE}" "${_python_compile_py}" "${_bin_py}"
-+        COMMAND "${PYTHON_EXECUTABLE}" -O "${_python_compile_py}" "${_bin_py}"
+-        COMMAND "${PYTHON_EXECUTABLE}" "${_python_compile_py}" "${_bin_py}"
++        COMMAND "${PYTHON_EXECUTABLE}" "${_python_compile_py}" "--destination-dir" "${DESTINATION_DIR}" "${_bin_py}"
++        COMMAND "${PYTHON_EXECUTABLE}" -O "${_python_compile_py}" "--destination-dir" "${DESTINATION_DIR}" "${_bin_py}"
          DEPENDS "${_absfilename}"
        )
      endif()
  
-     install(FILES ${_bin_pyc} DESTINATION "${_py_install_dir}")
-+    install(FILES ${_bin_pyo} DESTINATION "${_py_install_dir}")
+-    install(FILES ${_bin_pyc} DESTINATION "${_py_install_dir}")
++    install(FILES ${_bin_pyc} ${_bin_pyo} DESTINATION "${_py_install_dir}")
      unset(_py_install_dir)
      unset(_message)
  

Added: head/x11/kdelibs4/files/patch-git_016841a
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11/kdelibs4/files/patch-git_016841a	Fri Dec 18 18:10:24 2015	(r403982)
@@ -0,0 +1,78 @@
+commit 016841aeb0b180981122085e9b1d49ae66951670
+Author: Raphael Kubo da Costa <rakuco at FreeBSD.org>
+Date:   Fri Dec 18 13:35:35 2015 +0100
+
+    FindPyKDE4: Make PYKDE4_INSTALL_PYTHON_FILES use PYTHON_INSTALL.
+
+    Commit 94f1d2f ("PythonMacros: specify destination directory in
+    byte-compiled files") broke Kajongg's build because it uses the
+    PYKDE4_INSTALL_PYTHON_FILES() macro, whose use of PythonCompile.py had
+    not been updated.
+
+    Instead of just passing --destination-dir in FindPyKDE4.cmake, rewrite
+    the PYKDE4_INSTALL_PYTHON_FILES() macro to use PythonMacros's
+    PYTHON_INSTALL(). Not only does this fix Kajongg's build, but it also
+    removes a lot of code duplication and makes
+    PYKDE4_INSTALL_PYTHON_FILES() work with Python 3.2+'s different .pyc
+    location.
+
+    REVIEW:             126413
+
+Required for PR 200018.
+--- cmake/modules/FindPyKDE4.cmake
++++ cmake/modules/FindPyKDE4.cmake
+@@ -9,6 +9,7 @@
+ # This file is in the public domain.
+ 
+ INCLUDE(FindPythonInterp)
++include(PythonMacros)
+ 
+ SET(PYKDE4_FOUND FALSE)
+ 
+@@ -104,45 +105,8 @@ ENDIF(PYTHONINTERP_FOUND)
+ # project..
+ #
+ MACRO(PYKDE4_INSTALL_PYTHON_FILES)
+-
+-    ADD_CUSTOM_TARGET(pysupport ALL)
+     FOREACH (_current_file ${ARGN})
+-
+-        # Install the source file.
+-        INSTALL(FILES ${_current_file} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME})
+-
+-        # Byte compile and install the .pyc file.        
+-        GET_FILENAME_COMPONENT(_absfilename ${_current_file} ABSOLUTE)
+-        GET_FILENAME_COMPONENT(_filename ${_current_file} NAME)
+-        GET_FILENAME_COMPONENT(_filenamebase ${_current_file} NAME_WE)
+-        GET_FILENAME_COMPONENT(_basepath ${_current_file} PATH)
+-        SET(_bin_py ${CMAKE_BINARY_DIR}/${_basepath}/${_filename})
+-        SET(_bin_pyc ${CMAKE_BINARY_DIR}/${_basepath}/${_filenamebase}.pyc)
+-
+-        FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_basepath})
+-
+-        SET(_message "-DMESSAGE=Byte-compiling ${_bin_py}")
+-
+-        GET_FILENAME_COMPONENT(_abs_bin_py ${_bin_py} ABSOLUTE)
+-        IF(_abs_bin_py STREQUAL ${_absfilename})    # Don't copy the file onto itself.
+-            ADD_CUSTOM_COMMAND(
+-                TARGET pysupport
+-                COMMAND ${CMAKE_COMMAND} -E echo ${message}
+-                COMMAND ${PYTHON_EXECUTABLE} ${current_module_dir}/PythonCompile.py ${_bin_py}
+-                DEPENDS ${_absfilename}
+-            )
+-        ELSE(_abs_bin_py STREQUAL ${_absfilename})
+-            ADD_CUSTOM_COMMAND(
+-                TARGET pysupport
+-                COMMAND ${CMAKE_COMMAND} -E echo ${message}
+-                COMMAND ${CMAKE_COMMAND} -E copy ${_absfilename} ${_bin_py}
+-                COMMAND ${PYTHON_EXECUTABLE} ${current_module_dir}/PythonCompile.py ${_bin_py}
+-                DEPENDS ${_absfilename}
+-            )
+-        ENDIF(_abs_bin_py STREQUAL ${_absfilename})
+-
+-        INSTALL(FILES ${_bin_pyc} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME})
+-
++        python_install(${_current_file} ${DATA_INSTALL_DIR}/${PROJECT_NAME})
+     ENDFOREACH (_current_file)
+ ENDMACRO(PYKDE4_INSTALL_PYTHON_FILES)
+ 

Added: head/x11/kdelibs4/files/patch-git_94f1d2f
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11/kdelibs4/files/patch-git_94f1d2f	Fri Dec 18 18:10:24 2015	(r403982)
@@ -0,0 +1,67 @@
+commit 94f1d2fa9582a2942d5154b85c849cc3c6140e31
+Author: Raphael Kubo da Costa <rakuco at FreeBSD.org>
+Date:   Wed Dec 16 18:25:13 2015 +0100
+
+    PythonMacros: specify destination directory in byte-compiled files.
+
+    The PYTHON_INSTALL() macro is a wrapper around the py_compile Python
+    module that also installs the byte-code (.pyc) file it generates.
+
+    However, when a .py file is passed to py_compile without any additional
+    arguments, its full path is recorded in the .pyc file. This is
+    problematic, as most distributions install all files into a build root
+    instead of simply copying files to / as part of the packaging process.
+    In this case, the generated .pyc file will have something like
+        /wrkdir/buildroot/usr/lib/python2.7/site-packages/Foo/my_module.py
+    in it. Not only does this show up in exception tracebacks, but if the
+    user later invokes my_module.py and has write access to my_module's
+    directory, my_module.pyc will be rewritten with the right path to
+    my_module.py (without the build root). This can lead to uninstallation
+    errors if the package management system checks each file before removal,
+    for example.
+
+    Fix it by rewritting the PythonCompile.py script so that it takes a
+    --destination-dir argument that we use to pass the full path to
+    my_module.py instead of letting it be (wrongly) deduced.
+
+    It is important to note that PythonCompile.py now uses the argparse
+    module, which is not present in Python <= 2.6, Python 3.0 and Python
+    3.1.
+
+    REVIEW:             126345
+
+Required for PR 200018. Part of this commit is in patch-cmake_modules_PythonMacros.py.
+--- cmake/modules/PythonCompile.py
++++ cmake/modules/PythonCompile.py
+@@ -1,4 +1,29 @@
+ # By Simon Edwards <simon at simonzone.com>
+ # This file is in the public domain.
+-import py_compile, sys
+-sys.exit(py_compile.main())
++
++"""
++Byte-compiles a given Python source file, generating a .pyc file or, if the
++Python executable was invoked with -O, a .pyo file from it.
++It uses the --destination-dir option to set the path to the source file (which
++will appear in tracebacks, for example), so that if the .py file was in a build
++root will appear with the right path.
++"""
++
++import argparse
++import os
++import py_compile
++
++
++if __name__ == '__main__':
++    parser = argparse.ArgumentParser('Byte-compiles a Python source file.')
++    parser.add_argument('-d', '--destination-dir', required=True,
++                        help='Location where the source file will be '
++                        'installed, without any build roots.')
++    parser.add_argument('source_file',
++                        help='Source file to byte-compile.')
++
++    args = parser.parse_args()
++
++    dfile = os.path.join(args.destination_dir,
++                         os.path.basename(args.source_file))
++    py_compile.compile(args.source_file, dfile=dfile)

Modified: head/x11/plasma-scriptengine-python/Makefile
==============================================================================
--- head/x11/plasma-scriptengine-python/Makefile	Fri Dec 18 17:53:40 2015	(r403981)
+++ head/x11/plasma-scriptengine-python/Makefile	Fri Dec 18 18:10:24 2015	(r403982)
@@ -2,6 +2,7 @@
 
 PORTNAME=	plasma-scriptengine-python
 PORTVERSION=	${KDE4_WORKSPACE_VERSION}
+PORTREVISION=	1
 CATEGORIES=	x11 kde
 MASTER_SITES=	KDE/${KDE4_BRANCH}/${KDE4_VERSION}/src
 DISTNAME=	kde-workspace-${PORTVERSION}


More information about the svn-ports-head mailing list