Summary: | editors/kate-plugin-pate: Poudriere build fails: Filesystem touched during build | ||
---|---|---|---|
Product: | Ports & Packages | Reporter: | Yuri Victorovich <yuri> |
Component: | Individual Port(s) | Assignee: | freebsd-kde (group) <kde> |
Status: | Closed FIXED | ||
Severity: | Affects Only Me | Flags: | rakuco:
maintainer-feedback+
koobs: merge-quarterly? |
Priority: | --- | ||
Version: | Latest | ||
Hardware: | Any | ||
OS: | Any |
Still a problem. Confirmed, marking as Open. This is caused by kdelibs's PythonMacros.cmake creating .pyc and .pyo files with ${STAGEDIR} in them. devel/py-pykde4's files (__init__.pyc and pykdeconfig.pyc) are installed with ${STAGEDIR} hardcoded, kate-plugin-pate is built with write permissions to the directory py-pykde4's files were installed, writes them with the right paths and causes a filesystem violation. I am trying to solve this upstream with https://git.reviewboard.kde.org/r/126345/. If that lands, we'll need to bump PORTREVISION in kdelibs4 and other ports that use the PYTHON_INSTALL() CMake macro (checking lxr.kde.org lists at least the affected KDE ports). https://git.reviewboard.kde.org/r/126413/ was needed as a follow-up. Both review requests have been landed, they need to be backported to the affected ports now. A commit references this bug: Author: rakuco Date: Fri Dec 18 18:10:25 UTC 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 Changes: 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/kdelibs4/files/patch-git_016841a head/x11/kdelibs4/files/patch-git_94f1d2f head/x11/plasma-scriptengine-python/Makefile A commit references this bug: Author: rakuco Date: Sat Dec 19 12:58:27 UTC 2015 New revision: 404014 URL: https://svnweb.freebsd.org/changeset/ports/404014 Log: 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) Changes: _U branches/2015Q4/ branches/2015Q4/devel/py-pykde4/Makefile branches/2015Q4/games/kajongg/Makefile branches/2015Q4/games/kajongg/pkg-plist branches/2015Q4/x11/kdelibs4/Makefile branches/2015Q4/x11/kdelibs4/files/patch-cmake_modules_PythonMacros.cmake branches/2015Q4/x11/kdelibs4/files/patch-git_016841a branches/2015Q4/x11/kdelibs4/files/patch-git_94f1d2f branches/2015Q4/x11/plasma-scriptengine-python/Makefile |
> ====>> Checking for filesystem violations... done > ====>> Error: Filesystem touched during build: > usr/local/lib/python2.7/site-packages/PyKDE4/pykdeconfig.pyc: > size (6747, 5835) > usr/local/lib/python2.7/site-packages/PyKDE4/__init__.pyc: > size (247, 245) > ====>> Cleaning up wrkdir