commit:     a1653a76ea0e27dc05a9b0e7c55fe6d8e813f86e
Author:     Michael Palimaka <kensington <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 26 03:27:01 2017 +0000
Commit:     Michael Palimaka <kensington <AT> gentoo <DOT> 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 <[email protected]>
+#
+# 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())

Reply via email to