aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaphael Kubo da Costa <rakuco@FreeBSD.org>2015-12-19 12:58:26 +0000
committerRaphael Kubo da Costa <rakuco@FreeBSD.org>2015-12-19 12:58:26 +0000
commitdb4da5493c830745cc51fdceb84ef5572f34fc15 (patch)
tree06a27031a8d86ec50798cb35cb84028b5eec0bf7
parentae6d69199927c9970a6e99fd41c204d1fb9d4601 (diff)
downloadports-db4da5493c830745cc51fdceb84ef5572f34fc15.tar.gz
ports-db4da5493c830745cc51fdceb84ef5572f34fc15.zip
MFH: r403982
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 Approved by: ports-secteam (feld)
Notes
Notes: svn path=/branches/2015Q4/; revision=404014
-rw-r--r--devel/py-pykde4/Makefile1
-rw-r--r--games/kajongg/Makefile1
-rw-r--r--games/kajongg/pkg-plist180
-rw-r--r--x11/kdelibs4/Makefile2
-rw-r--r--x11/kdelibs4/files/patch-cmake_modules_PythonMacros.cmake43
-rw-r--r--x11/kdelibs4/files/patch-git_016841a78
-rw-r--r--x11/kdelibs4/files/patch-git_94f1d2f67
-rw-r--r--x11/plasma-scriptengine-python/Makefile1
8 files changed, 300 insertions, 73 deletions
diff --git a/devel/py-pykde4/Makefile b/devel/py-pykde4/Makefile
index 92b8c3237386..3b752c1d5a8a 100644
--- a/devel/py-pykde4/Makefile
+++ b/devel/py-pykde4/Makefile
@@ -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}
diff --git a/games/kajongg/Makefile b/games/kajongg/Makefile
index 72727f0f4aa2..a1b8be22498c 100644
--- a/games/kajongg/Makefile
+++ b/games/kajongg/Makefile
@@ -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}
diff --git a/games/kajongg/pkg-plist b/games/kajongg/pkg-plist
index 9f5ff728b6c3..3ea4dc72f3d2 100644
--- a/games/kajongg/pkg-plist
+++ b/games/kajongg/pkg-plist
@@ -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
diff --git a/x11/kdelibs4/Makefile b/x11/kdelibs4/Makefile
index c2d4f914f189..0c0f2c0971cc 100644
--- a/x11/kdelibs4/Makefile
+++ b/x11/kdelibs4/Makefile
@@ -3,7 +3,7 @@
PORTNAME= kdelibs
PORTVERSION= ${KDE4_VERSION}
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= x11 kde
MASTER_SITES= KDE/${KDE4_BRANCH}/${PORTVERSION}/src
DIST_SUBDIR= KDE/${PORTVERSION}
diff --git a/x11/kdelibs4/files/patch-cmake_modules_PythonMacros.cmake b/x11/kdelibs4/files/patch-cmake_modules_PythonMacros.cmake
index d93570912c61..457c4a5741b5 100644
--- a/x11/kdelibs4/files/patch-cmake_modules_PythonMacros.cmake
+++ b/x11/kdelibs4/files/patch-cmake_modules_PythonMacros.cmake
@@ -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)
diff --git a/x11/kdelibs4/files/patch-git_016841a b/x11/kdelibs4/files/patch-git_016841a
new file mode 100644
index 000000000000..d5897fa3a0d6
--- /dev/null
+++ b/x11/kdelibs4/files/patch-git_016841a
@@ -0,0 +1,78 @@
+commit 016841aeb0b180981122085e9b1d49ae66951670
+Author: Raphael Kubo da Costa <rakuco@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)
+
diff --git a/x11/kdelibs4/files/patch-git_94f1d2f b/x11/kdelibs4/files/patch-git_94f1d2f
new file mode 100644
index 000000000000..ee387ceb8a0e
--- /dev/null
+++ b/x11/kdelibs4/files/patch-git_94f1d2f
@@ -0,0 +1,67 @@
+commit 94f1d2fa9582a2942d5154b85c849cc3c6140e31
+Author: Raphael Kubo da Costa <rakuco@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@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)
diff --git a/x11/plasma-scriptengine-python/Makefile b/x11/plasma-scriptengine-python/Makefile
index 379df2c07da3..cb701337d47c 100644
--- a/x11/plasma-scriptengine-python/Makefile
+++ b/x11/plasma-scriptengine-python/Makefile
@@ -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}