From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 6897D138AE9 for ; Tue, 26 Dec 2017 03:27:47 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 74DA3E0F1A; Tue, 26 Dec 2017 03:27:46 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 45275E0F1A for ; Tue, 26 Dec 2017 03:27:43 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 7239133DDA5 for ; Tue, 26 Dec 2017 03:27:42 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 104E1AE8B for ; Tue, 26 Dec 2017 03:27:41 +0000 (UTC) From: "Michael Palimaka" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Michael Palimaka" Message-ID: <1514258850.a1653a76ea0e27dc05a9b0e7c55fe6d8e813f86e.kensington@gentoo> Subject: [gentoo-commits] proj/kde:master commit in: Documentation/maintainers/ X-VCS-Repository: proj/kde X-VCS-Files: Documentation/maintainers/cmake-dep-check.py X-VCS-Directories: Documentation/maintainers/ X-VCS-Committer: kensington X-VCS-Committer-Name: Michael Palimaka X-VCS-Revision: a1653a76ea0e27dc05a9b0e7c55fe6d8e813f86e X-VCS-Branch: master Date: Tue, 26 Dec 2017 03:27:41 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 9897ada1-ae3b-4978-824a-1fed85c83b81 X-Archives-Hash: 4eb06d76f46ccaf38498ab4474997ba4 commit: a1653a76ea0e27dc05a9b0e7c55fe6d8e813f86e Author: Michael Palimaka gentoo org> AuthorDate: Tue Dec 26 03:27:01 2017 +0000 Commit: Michael Palimaka gentoo org> CommitDate: Tue Dec 26 03:27:30 2017 +0000 URL: https://gitweb.gentoo.org/proj/kde.git/commit/?id=a1653a76 Documentation: add script to map find_package calls to Gentoo packages Documentation/maintainers/cmake-dep-check.py | 349 +++++++++++++++++++++++++++ 1 file changed, 349 insertions(+) diff --git a/Documentation/maintainers/cmake-dep-check.py b/Documentation/maintainers/cmake-dep-check.py new file mode 100755 index 0000000000..09ba701756 --- /dev/null +++ b/Documentation/maintainers/cmake-dep-check.py @@ -0,0 +1,349 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2017 Michael Palimaka +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +import os +import sys + +import parse_cmake.parsing as cmp + +IGNORE_ARGS = ['COMPONENTS', 'CONFIG', 'MODULE', 'NO_MODULE', 'OPTIONAL_COMPONENTS', 'REQUIRED', 'QUIET'] +COMPONENT_PACKAGES = ['KF5', 'Poppler', 'Qt5', 'XCB'] +PACKAGE_MAP = { + 'AccountsQt5': 'net-libs/accounts-qt', + 'ACL': 'virtual/acl', + 'Analitza5': 'kde-apps/analitza', + 'AppStreamQt': 'dev-libs/appstream[qt5]', + 'AvogadroLibs': 'sci-chemistry/avogadro', + 'Boost': 'dev-libs/boost', + 'Breeze': 'kde-plasma/breeze', + 'Canberra': 'media-libs/libcanberra', + 'CatDoc': 'app-text/catdoc', + 'DBus': 'sys-apps/dbus', + 'DBusGLib': 'dev-libs/dbus-glib', + 'dbusmenu-qt5': 'dev-libs/libdbusmenu-qt', + 'DDCUtil': 'app-misc/ddcutil', + 'Doxygen': 'app-doc/doxygen', + 'DvdRead': 'media-libs/libdvdread', + 'ECM': 'kde-frameworks/extra-cmake-modules', + 'EGL': 'media-libs/mesa[egl]', + 'Eigen3': 'dev-cpp/eigen:3', + 'epoxy': 'media-libs/libepoxy', + 'EPub': 'app-text/ebook-tools', + 'Exiv2': 'media-gfx/exiv2', + 'FFmpeg': 'media-video/ffmpeg', + 'Flac': 'media-libs/flac', + 'Flac++': 'media-libs/flac[cxx]', + 'Fontconfig': 'media-libs/fontconfig', + 'FontHack': 'media-fonts/hack', + 'FontNotoSans': 'media-fonts/noto', + 'Freetype': 'media-libs/freetype', + 'GIO': 'dev-libs/glib', + 'GLEW': 'media-libs/glew:0', + 'GLIB2': 'dev-libs/glib', + 'GObject': 'dev-libs/glib', + 'Gpgmepp': 'app-crypt/gpgme[cxx]', + 'GSL': 'sci-libs/gsl', + 'GSSAPI': 'virtual/krb5', + 'IBus': 'app-i18n/ibus', + 'Iconv': 'virtual/libiconv', + 'IsoCodes': 'app-text/iso-codes', + 'Julia': 'dev-lang/julia', + 'KDb': 'dev-db/kdb', + 'KDecoration2': 'kde-plasma/kdecoration', + 'KDED': 'kde-frameworks/kded', + 'KDEExperimentalPurpose': 'dev-libs/purpose', + 'KF5Akonadi': 'kde-apps/akonadi', + 'KF5AkonadiMime': 'kde-apps/akonadi-mime', + 'KF5Attica': 'kde-frameworks/attica', + 'KF5Baloo': 'kde-frameworks/baloo', + 'KF5BluezQt': 'kde-frameworks/bluez-qt', + 'KF5Cddb': 'kde-apps/libkcddb', + 'KF5Contacts': 'kde-apps/kcontacts', + 'KF5FrameworkIntegration': 'kde-frameworks/frameworkintegration', + 'KF5Activities': 'kde-frameworks/kactivities', + 'KF5ActivitiesStats': 'kde-frameworks/kactivities-stats', + 'KF5Archive': 'kde-frameworks/karchive', + 'KF5Auth': 'kde-frameworks/kauth', + 'KF5Bookmarks': 'kde-frameworks/kbookmarks', + 'KF5KCMUtils': 'kde-frameworks/kcmutils', + 'KF5Codecs': 'kde-frameworks/kcodecs', + 'KF5Completion': 'kde-frameworks/kcompletion', + 'KF5Config': 'kde-frameworks/kconfig', + 'KF5ConfigWidgets': 'kde-frameworks/kconfigwidgets', + 'KF5CoreAddons': 'kde-frameworks/kcoreaddons', + 'KF5Crash': 'kde-frameworks/kcrash', + 'KF5DBusAddons': 'kde-frameworks/kdbusaddons', + 'KF5Declarative': 'kde-frameworks/kdeclarative', + 'KF5KDE4Support': 'kde-frameworks/kdelibs4support', + 'KF5KDELibs4Support': 'kde-frameworks/kdelibs4support', + 'KF5DesignerPlugin': 'kde-frameworks/kdesignerplugin', + 'KF5Su': 'kde-frameworks/kdesu', + 'KF5WebKit': 'kde-frameworks/kdewebkit', + 'KF5DNSSD': 'kde-frameworks/kdnssd', + 'KF5DocTools': 'kde-frameworks/kdoctools', + 'KF5Emoticons': 'kde-frameworks/kemoticons', + 'KF5FileMetaData': 'kde-frameworks/kfilemetadata', + 'KF5GlobalAccel': 'kde-frameworks/kglobalaccel', + 'KF5GuiAddons': 'kde-frameworks/kguiaddons', + 'KF5KHtml': 'kde-frameworks/khtml', + 'KF5Holidays': 'kde-apps/kholidays', + 'KF5I18n': 'kde-frameworks/ki18n', + 'KF5IconThemes': 'kde-frameworks/kiconthemes', + 'KF5IdleTime': 'kde-frameworks/kidletime', + 'KF5Init': 'kde-frameworks/kinit', + 'KF5KDEGames': 'kde-apps/libkdegames', + 'KF5KIO': 'kde-frameworks/kio', + 'KF5Kirigami2': 'kde-frameworks/kirigami', + 'KF5ItemModels': 'kde-frameworks/kitemmodels', + 'KF5ItemViews': 'kde-frameworks/kitemviews', + 'KF5JobWidgets': 'kde-frameworks/kjobwidgets', + 'KF5JS': 'kde-frameworks/kjs', + 'KF5JsEmbed': 'kde-frameworks/kjsembed', + 'KF5MediaWiki': 'net-libs/libmediawiki', + 'KF5Mime': 'kde-apps/kmime', + 'KF5ModemManagerQt': 'kde-frameworks/modemmanager-qt', + 'KF5NewStuff': 'kde-frameworks/knewstuff', + 'KF5NewStuffCore': 'kde-frameworks/knewstuff', + 'KF5NewStuffQuick': 'kde-frameworks/knewstuff', + 'KF5Notifications': 'kde-frameworks/knotifications', + 'KF5NotifyConfig': 'kde-frameworks/knotifyconfig', + 'KF5Package': 'kde-frameworks/kpackage', + 'KF5Parts': 'kde-frameworks/kparts', + 'KF5People': 'kde-frameworks/kpeople', + 'KF5Plotting': 'kde-frameworks/kplotting', + 'KF5Prison': 'kde-frameworks/prison', + 'KF5Pty': 'kde-frameworks/kpty', + 'KF5Kross': 'kde-frameworks/kross', + 'KF5Runner': 'kde-frameworks/krunner', + 'KF5Service': 'kde-frameworks/kservice', + 'KF5SysGuard': 'kde-plasma/libksysguard', + 'KF5TextEditor': 'kde-frameworks/ktexteditor', + 'KF5TextWidgets': 'kde-frameworks/ktextwidgets', + 'KF5Torrent': 'net-libs/libktorrent', + 'KF5UnitConversion': 'kde-frameworks/kunitconversion', + 'KF5Wallet': 'kde-frameworks/kwallet', + 'KF5Wayland': 'kde-frameworks/kwayland', + 'KF5WidgetsAddons': 'kde-frameworks/kwidgetsaddons', + 'KF5WindowSystem': 'kde-frameworks/kwindowsystem', + 'KF5XmlGui': 'kde-frameworks/kxmlgui', + 'KF5XmlRpcClient': 'kde-frameworks/kxmlrpcclient', + 'KF5NetworkManagerQt': 'kde-frameworks/networkmanager-qt', + 'KF5Plasma': 'kde-frameworks/plasma', + 'KF5PlasmaQuick': 'kde-frameworks/plasma', + 'KF5Screen': 'kde-plasma/libkscreen', + 'KF5Solid': 'kde-frameworks/solid', + 'KF5Sonnet': 'kde-frameworks/sonnet', + 'KF5SyntaxHighlighting': 'kde-frameworks/syntax-highlighting', + 'KF5ThreadWeaver': 'kde-frameworks/threadweaver', + 'KPropertyCore': 'dev-libs/kproperty', + 'KPropertyWidgets': 'dev-libs/kproperty', + 'KReport': 'dev-libs/kreport', + 'KScreenLocker': 'kde-plasma/kscreenlocker', + 'KWinDBusInterface': 'kde-plasma/kwin', + 'Lame': 'media-sound/lame', + 'LibAccountsGlib': 'net-libs/libaccounts-glib', + 'Libcap': 'sys-libs/libcap', + 'Libdrm': 'x11-libs/libdrm', + 'Libfacile': 'dev-ml/facile', + 'LibGcrypt': 'dev-libs/libgcrypt:0=', + 'libgps': 'sci-geosciences/gpsd', + 'Libinput': 'dev-libs/libinput', + 'LibKWorkspace': 'kde-plasma/plasma-workspace', + 'LibSpectre': 'app-text/libspectre', + 'LibTaskManager': 'kde-plasma/plasma-workspace', + 'LibTidy': 'app-text/htmltidy', + 'LibXml2': 'dev-libs/libxml2', + 'LibXslt': 'dev-libs/libxslt', + 'loginctl': '|| ( sys-auth/elogind sys-apps/systemd )', + 'LuaJIT': 'dev-lang/luajit', + 'Mad': 'media-libs/libmad', + 'MobileBroadbandProviderInfo': 'net-misc/mobile-broadband-provider-info', + 'MusicBrainz': 'media-libs/musicbrainz', + 'MySQL': 'dev-db/mysql', + 'NetworkManager': 'net-misc/networkmanager', + 'OpenBabel2': 'sci-chemistry/openbabel', + 'OpenConnect': 'net-vpn/openconnect:=', + 'OpenGL': 'virtual/opengl', + 'OpenSSL': 'dev-libs/openssl:0=', + 'Phonon4Qt5': 'media-libs/phonon', + 'PkgConfig': 'virtual/pkgconfig', + 'Polkit': 'sys-auth/polkit', + 'PopplerQt5': 'app-text/poppler[qt5]', + 'PostgreSQL': 'dev-db/postgresql', + 'PulseAudio': 'media-sound/pulseaudio', + 'PWQuality': 'dev-libs/libpwquality', + 'PythonInterp': 'dev-lang/python', + 'PythonLibrary': 'dev-lang/python', + 'PythonLibs': 'dev-lang/python', + 'PythonLibs3': 'dev-lang/python', + 'R': 'dev-lang/R', + 'Ruby': 'dev-lang/ruby', + 'SharedMimeInfo': 'x11-misc/shared-mime-info', + 'Samplerate': 'media-libs/libsamplerate', + 'SCIM': 'app-i18n/scim', + 'ScreenSaverDBusInterface': 'kde-plasma/kscreenlocker', + 'Seccomp': 'sys-libs/libseccomp', + 'SignOnQt5': 'net-libs/signond', + 'Sndfile': 'media-libs/libsndfile', + 'Synaptics': 'x11-drivers/xf86-input-synaptics', + 'Taglib': 'media-libs/taglib', + 'TelepathyGlib': 'net-libs/telepathy-glib', + 'TelepathyLogger': 'net-im/telepathy-logger', + 'TelepathyQt5': 'net-libs/telepathy-qt', + 'Threads': '', + 'Qalculate': 'sci-libs/libqalculate', + 'Qca-qt5': 'app-crypt/qca[qt5]', + 'Qt5Bluetooth': 'dev-qt/qtbluetooth', + 'Qt5Concurrent': 'dev-qt/qtconcurrent', + 'Qt5Core': 'dev-qt/qtcore', + 'Qt5DBus': 'dev-qt/qtdbus', + 'Qt5Designer': 'dev-qt/designer', + 'Qt5GStreamer': 'media-libs/qt-gstreamer', + 'Qt5Gui': 'dev-qt/qtgui', + 'Qt5Help': 'dev-qt/qthelp', + 'Qt5LinguistTools': 'dev-qt/linguist-tools', + 'Qt5Location': 'dev-qt/qtlocation', + 'Qt5Multimedia': 'dev-qt/qtmultimedia', + 'Qt5MultimediaWidgets': 'dev-qt/qtmultimedia', + 'Qt5Network': 'dev-qt/qtnetwork', + 'Qt5OpenGL': 'dev-qt/qtopengl', + 'Qt5OpenGLExtensions': 'dev-qt/qtgui', + 'Qt5Positioning': 'dev-qt/qtpositioning', + 'Qt5PrintSupport': 'dev-qt/qtprintsupport', + 'Qt5Qml': 'dev-qt/qtdeclarative', + 'Qt5QuickControls2': 'dev-qt/qtquickcontrols2', + 'Qt5QuickControls': 'dev-qt/qtquickcontrols', + 'Qt5Quick': 'dev-qt/qtdeclarative', + 'Qt5QuickTest': 'dev-qt/qtdeclarative', + 'Qt5QuickWidgets': 'dev-qt/qtdeclarative', + 'Qt5Script': 'dev-qt/qtscript', + 'Qt5ScriptTools': 'dev-qt/qtscript', + 'Qt5Scxml': 'dev-qt/qtscxml', + 'Qt5Sensors': 'dev-qt/qtsensors', + 'Qt5SerialPort': 'dev-qt/qtserialport', + 'Qt5Sql': 'dev-qt/qtsql', + 'Qt5Svg': 'dev-qt/qtsvg', + 'Qt5Test': 'dev-qt/qttest', + 'Qt5TextToSpeech': 'dev-qt/qtspeech', + 'Qt5UiPlugin': 'dev-qt/designer', + 'Qt5UiTools': 'dev-qt/designer', + 'Qt5WaylandClient': 'dev-qt/qtwayland', + 'Qt5WaylandCompositor': 'dev-qt/qtwayland', + 'Qt5WebChannel': 'dev-qt/qtwebchannel', + 'Qt5WebEngineCore': 'dev-qt/qtwebengine', + 'Qt5WebEngine': 'dev-qt/qtwebengine', + 'Qt5WebEngineWidgets': 'dev-qt/qtwebengine', + 'Qt5WebKit': 'dev-qt/qtwebkit', + 'Qt5WebKitWidgets': 'dev-qt/qtwebkit', + 'Qt5WebSockets': 'dev-qt/qtwebsockets', + 'Qt5WebView': 'dev-qt/qtwebview', + 'Qt5Widgets': 'dev-qt/qtwidgets', + 'Qt5X11Extras': 'dev-qt/qtx11extras', + 'Qt5Xml': 'dev-qt/qtxml', + 'Qt5XmlPatterns': 'dev-qt/qtxmlpatterns', + 'UDev': 'virtual/udev', + 'Wayland': 'dev-libs/wayland', + 'WaylandScanner': 'dev-libs/wayland', + 'X11': 'x11-libs/libX11', + 'Xattr': 'sys-apps/attr', + 'XCBCOMPOSITE': 'x11-libs/libxcb', + 'XCBDAMAGE': 'x11-libs/libxcb', + 'XCBDPMS': 'x11-libs/libxcb', + 'XCBIMAGE': 'x11-libs/xcb-util-image', + 'XCBKEYSYMS': 'x11-libs/xcb-util-keysyms', + 'XCBMODULE': 'x11-libs/libxcb', + 'XCBRANDR': 'x11-libs/libxcb', + 'XCBRENDER': 'x11-libs/libxcb', + 'XCBSHAPE': 'x11-libs/libxcb', + 'XCBSHM': 'x11-libs/libxcb', + 'XCBUTIL': 'x11-libs/xcb-util', + 'XCBXCB': 'x11-libs/libxcb', + 'XCBXFIXES': 'x11-libs/libxcb', + 'XCBXTEST': 'x11-libs/libxcb', + 'ZLIB': 'sys-libs/zlib', +} + + +def findCmakeFiles(path): + cmakeFiles = [] + for root, dirs, files in os.walk(path): + for file in files: + if file == 'CMakeLists.txt': + cmakeFiles.append(os.path.join(root, file)) + + return cmakeFiles + + +def parseCmakeFile(file): + with open(file) as f: + contents = f.read() + + parsed = cmp.parse(contents) + + packages = [] + + for x in parsed: + if x.__class__.__name__ == 'Command' and x.name == 'find_package': + package = [] + for arg in x.body: + if arg.contents in IGNORE_ARGS or arg.contents.startswith('$') or arg.contents[0].isdigit(): + continue + package.append(arg.contents) + + packages.append(package) + + return packages + + +def getMapping(package): + if package in PACKAGE_MAP: + if len(PACKAGE_MAP[package]) >= 1: + return PACKAGE_MAP[package] + else: + return '' + else: + return 'ERROR: could not find a mapping for ' + package + + +def main(): + cmakeFiles = findCmakeFiles('.') + + mappings = {} + for file in cmakeFiles: + find_packages = parseCmakeFile(file) + mappings[file] = [] + + for package in find_packages: + if package[0] in COMPONENT_PACKAGES: + for component in package[1:]: + mappings[file].append(getMapping(package[0] + component)) + else: + mappings[file].append(getMapping(package[0])) + for key, value in mappings.items(): + if len(value) >= 1: + for package in sorted(set(value)): + if package: + print(' ' + package) + + +if __name__ == '__main__': + sys.exit(main())