Commit e01b5fb8 authored by Luca Giambonini's avatar Luca Giambonini

kde applications 18.08 RC

parent fb921993
# Include global configuration
pkgname=akonadi-calendar-tools
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="CLI tools to manage akonadi calendars"
arch=(x86_64)
......@@ -12,7 +12,7 @@ makedepends=(extra-cmake-modules kdoctools kdesignerplugin boost python3)
options=(docs debug)
groups=(kde kde-uninstall kde-applications kdepim)
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('034d87738efa54a3589b352ef5c25f22fe1d1f0e773548aa3a10683caada023f'
sha256sums=('19ab2b7e266d3196c61690eb9e4c94e81d2dbac985e70303c117a28724815181'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=akonadi-calendar
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Akonadi calendar integration"
arch=('x86_64')
......@@ -11,7 +11,7 @@ depends=(kmailtransport kcalutils akonadi-contacts)
makedepends=(extra-cmake-modules kdoctools python3 boost)
options=('debug')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('85e9e8fa479d9583c148881e0492196defd0a462cbdd4b18bf46895b79edc965'
sha256sums=('74febb460fee7f39d6df562202f0626819256e78070bc9130cd24c5f47978ba4'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=akonadi-contacts
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Libraries and daemons to implement Contact Management in Akonadi"
arch=(x86_64)
......@@ -13,7 +13,7 @@ replaces=(akonadi-contact)
provides=(akonadi-contact)
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('deeee41c3e10c26147cffb9d4ecd302585b71ea04a2fc0114d259303696c4d06'
sha256sums=('9d3f367b643e3c0a5839005c7c185b5952abd2330290145730b0c054e26ed7cf'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=akonadi-import-wizard
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Import data from other mail clients to KMail"
arch=(x86_64)
......@@ -13,7 +13,7 @@ conflicts=('kmail<16.11')
options=(docs debug)
groups=(kde kde-uninstall kde-applications kdepim)
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('b00f2ae58184b5868bd37641d6b92100d81c42574b2c83c8349cb987bd491882'
sha256sums=('1b4bdf6a840a4acc10a3dd5a6f3f05fa875830c23e53512541763fbaac03d9f4'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=akonadi-mime
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Libraries and daemons to implement basic email handling"
arch=(x86_64)
......@@ -11,7 +11,7 @@ depends=(akonadi kmime)
makedepends=(extra-cmake-modules python kdoctools boost kdelibs4support kdesignerplugin)
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('f00ccc21c6acb19cba6e1abf20aa4a44b6881c65aa33f4e1fa109f724f4ede32'
sha256sums=('70f071deb82f1d2660c6fb39a161352e803958b242b354389dd2fa633c1ae2ff'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=akonadi-notes
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Libraries and daemons to implement management of notes in Akonadi"
arch=(x86_64)
......@@ -11,7 +11,7 @@ depends=(kmime)
makedepends=(extra-cmake-modules python akonadi kdelibs4support kdesignerplugin kdoctools boost)
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('87bde2af6bbbf4120d6c1c9917c546b57164d3362f55a7855e346ef32983c194'
sha256sums=('83eec74ab38c33044ade5b5057ac9d5927760279b1aed58559d428cf9776d230'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
pkgname=akonadi-search
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Libraries and daemons to implement searching in Akonadi"
url='https://projects.kde.org/akonadi-search'
......@@ -14,7 +14,7 @@ replaces=('baloo4-akonadi')
provides=('baloo4-akonadi')
conflicts=('baloo4-akonadi')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('3e3af77bb393e9f9356b37c61f8660ac7e01234048c0268ab1c9a0fb943a51cf'
sha256sums=('6896ac7afb7ad7acac0788d5f8049de3e5b9fd5ea5c7f7426f0c04ac6a82e77f'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=akonadi
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="PIM layer, which provides an asynchronous API to access all kind of PIM data"
arch=('x86_64')
......@@ -17,7 +17,7 @@ conflicts=('akonadi-client')
provides=('akonadi-client' 'akonadi-qt4')
replaces=('akonadi-client' 'akonadi-qt4')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('325075cac616f25a9773be54b1a29f3dcd0bbfba2509536a0f91fa952a1b66e7'
sha256sums=('09f0b4c95e23a30a7a4b07c9d86a59c7484216f5b59146bd37c592a2144ba42f'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=akonadiconsole
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Akonadi management and debugging console"
arch=(x86_64)
......@@ -12,7 +12,7 @@ makedepends=(extra-cmake-modules kdoctools kdesignerplugin boost python3)
options=(docs debug)
groups=(kde kde-uninstall kde-applications kdepim)
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('fd37b8145b5202fb21ba52bced905c8fb5c93ee815a86f193df741800881a8bf'
sha256sums=('b8b9fd4437cd2d234064ac366743d7a1be0f51329c0607bec5b3e92179376bf7'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=akregator
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="A Feed Reader by KDE"
arch=(x86_64)
......@@ -13,7 +13,7 @@ optdepends=('kdepim-addons: additional plugins')
options=(docs debug)
groups=(kde kde-uninstall kde-applications kdepim)
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('6b2f7149047338b77c43f247ae296771a0738a350c95a304e240b037ea218c66'
sha256sums=('5a67dc5c947cfcbaaa17332aa68f167851432e344575e5662362d0cf621a692a'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
......
# Contributions from Arch: https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/analitza
pkgname=analitza
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Shared math libraries from Kalgebra"
url="https://projects.kde.org/projects/kde/kdeedu/analitza"
......@@ -15,7 +15,7 @@ conflicts=('kdeedu-analitza')
groups=("kde" "kdeedu" "kde-uninstall")
categories=('education')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('e858659ad2a88a981e1114045e1c7edc406d69289beb626e75306933e77657c8'
sha256sums=('eb08bae150e7085ab6fca88e75bd086b3974883be526c7adc545ff42ddf37598'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
......@@ -2,7 +2,7 @@
pkgname=ark
arch=('x86_64')
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Archiver for various compression formats"
url="http://www.kde.org"
......@@ -20,7 +20,7 @@ replaces=(kdeutils-ark)
groups=('kde' 'kde-uninstall' 'kde-applications' 'kdeutils')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('cbaf1c6391a6e4db388c4ab6d25cf99bae021d3144c00284465e41cc773cf7cd'
sha256sums=('d8798501df78475b461fd14977ac69bc8502c26e6ebe6351e450ad2d69659966'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=artikulate
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Improve your pronunciation by listening to native speakers"
url="https://projects.kde.org/projects/kde/kdeedu/artikulate"
......@@ -14,7 +14,7 @@ conflicts=(kdeedu-artikulate)
replaces=(kdeedu-artikulate)
options=('docs' 'debug')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('cbb0a82ec24ce2e4e3f8425a73284dea6733b677bba73e8a703ffd04511d2ed0'
sha256sums=('21bfae4611a3b368fe3e11be60a99b08d5a803fa400eefea6bd9e3394e930d29'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=audiocd-kio
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Kioslave for accessing audio CDs"
url='https://www.kde.org/applications/multimedia/'
......@@ -13,7 +13,7 @@ groups=(kde kde-uninstall kde-applications kdemultimedia)
replaces=(kdemultimedia-audiocd-kio)
conflicts=(kdemultimedia-audiocd-kio)
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('9e4e577a1e81b22d1f657f7bd77902856b41287419876c9781824f11b07907cb'
sha256sums=('430527275455592aacb1bcf5a2722f675ea8ddab62d23698fbcc1f29d5a8e066'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=baloo-widgets
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Widgets for the baloo framework for searching and managing metadata"
arch=('x86_64')
......@@ -11,7 +11,7 @@ depends=('baloo' 'kdelibs4support' 'kemoticons')
makedepends=('extra-cmake-modules' 'kdoctools')
options=('docs' 'debug')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('2305149a03235bc4e0c50f94ac3c87ecd98e90cd8006948dc81c43997771b3c9'
sha256sums=('5ff242a496606567a0081db6ef5b8fad6a9dac929aef67e66ce25f1be7cc385d'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
......@@ -2,7 +2,7 @@
# Include global configuration
pkgname=blinken
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Memory enhancement game"
url="http://kde.org/applications/education/blinken/"
......@@ -16,7 +16,7 @@ replaces=('kdeedu-blinken')
conflicts=('kdeedu-blinken')
options=('docs' 'debug')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('50b1ed554ea3536925d20808b9a1c5c0d9246d663113dfb215b81b5a9eca1fe8'
sha256sums=('3e02a22eada67fec9b31249527f335bcf292d7496bbd338b1a94ca9c57848f92'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
......@@ -2,7 +2,7 @@
# Include global configuration
pkgname=bomber
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Arcade Bombing Game"
arch=('x86_64')
......@@ -15,7 +15,7 @@ replaces=('kdegames-bomber')
conflicts=('kdegames-bomber')
options=('docs' 'debug')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('19e903409b3972d6a8dd7b13560099f6c39b5de8eefd8fcf6bb039d98db0d3c5'
sha256sums=('3ef4ad03898c460681f6e9743a5ee59ae0b32000e652c72e1f9db41134ddb7df'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
......@@ -2,7 +2,7 @@
# Include global configuration
pkgname=bovo
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Five-in-a-row Board Game"
arch=('x86_64')
......@@ -15,7 +15,7 @@ replaces=('kdegames-bovo')
conflicts=('kdegames-bovo')
options=('docs' 'debug')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('c0b1a5f64a0ae0078faea329c63e07d41a562388e3e226e69865af6ce3b59cde'
sha256sums=('9de627174403c798245cf50023e7bcfe8679e3e43ba5631ced4032e5f6ea820e'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=calendarsupport
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="This lib provides calendar support"
arch=('x86_64')
......@@ -12,7 +12,7 @@ makedepends=('extra-cmake-modules' 'kdoctools' 'qt5-tools')
groups=(kde kde-applications kdeedu kde-uninstall)
options=('docs' 'debug')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('53c2030f88196f31a7300eb4b84ab24e2e0f484ecc8f092f9f201281845f7b81'
sha256sums=('7efd182058b462a8350c163ce110bb3054a9b7668097e73f88fb4b6e7b184f7b'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
......@@ -2,7 +2,7 @@
# Include global configuration
pkgname=cantor
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="KDE frontend to mathematical software"
url="http://kde.org/applications/education/cantor/"
......@@ -24,7 +24,7 @@ conflicts=('kdeedu-cantor')
groups=('kde' 'kde-uninstall' 'kde-applications' 'kdeedu')
options=('docs' 'debug')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('319b75e463e222278568ac16f706f6072857237d284f29956812091e532af3b1'
sha256sums=('af8887e684123554d4aa646b2698352b1e6ba24f77a231c1db7833034a1c28d6'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
......@@ -2,7 +2,7 @@
pkgname=cervisia
arch=('x86_64')
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="A CVS GUI frontend for KDE"
url="http://www.kde.org"
......@@ -16,7 +16,7 @@ groups=('kde' 'kde-uninstall' 'kde-applications' 'kdesdk')
options=('docs' 'debug')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('26db00a4ab4da78298392ad6680268492ab6ec410b1a2eaf72f7859d6cd02ad7'
sha256sums=('f3fd2d06a083e183cd77bef34bba94d0968e505ce5504c57ddab96505945c780'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
......@@ -2,7 +2,7 @@
pkgname=chakra-common
arch=('x86_64')
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="Common configuration files, scripts and artwork"
url="http://chakralinux.org"
......
#!/usr/bin/env python3
import os
import sys
import re
import itertools as itools
import argparse
from collections import defaultdict
import subprocess
import webbrowser
import shutil
import functools
from jinja2 import Environment
import elftools.elf.structs
from elftools.elf.structs import ELFStructs
@functools.lru_cache(maxsize=8) # 4 __should__ be sufficiant, but 8 cannot hurt
class CachingELFStructs(ELFStructs):
def __init__(self, little_endian=True, elfclass=32):
super().__init__(little_endian, elfclass)
elftools.elf.structs.ELFStructs = CachingELFStructs
try:
from termcolor import colored
except ImportError:
print("termcolor is not installed; output will be lacking colours", file=sys.stderr)
def colored(*args, **kwargs):
return args[0]
try:
from tqdm import tqdm
except ImportError:
print("tqdm is not installed. Progress bars are disabled")
def tqdm(iterable):
return iterable
from elftools.elf.elffile import ELFFile
from elftools.elf.dynamic import DynamicSection, DynamicSegment
from elftools.common.exceptions import ELFError
from elftools.common.py3compat import bytes2str
TEMPLATE = """
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdnjs.cloudflare.com/ajax/libs/foundation/6.2.0/foundation-flex.min.css" rel="stylesheet">
<title>Broken package report</title>
</head>
<body>
<div id="packagelist" class="row">
<h1>Broken package report</h1>
<table id="pkgtable" class="hover" border="1">
<thead>
<tr>
<th>Broken package</th>
<th>Broken file</th>
<th>Missing .so files</th>
</tr>
</thead>
<tbody>
{% for broken_package, missing_so_files in broken_packages.items() | sort %}
{% for missing_so, broken_file in missing_so_files %}
<tr>
{% if loop.first %}
<td rowspan="{{loop.length}}" >{{broken_package}}</td>
{% endif %}
<td>{{broken_file}}</td>
<td>{{missing_so}}</td>
</tr>
{% endfor %}
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
"""
# utilities
def warn(text):
warning = colored("Warning: >>", 'red')
text = colored(text, 'white')
print(warning, text, file=sys.stderr)
def highlight(text):
return colored(text, 'white', attrs=['bold', 'dark'])
def walk_multi_dir(dirs):
yield from itools.chain(*(os.walk(d) for d in dirs))
class BrokenFinder():
def __init__(self):
self.found = set() # 'shared libraries' (could also be symlinks) that we found so far
self.lib2required_by = defaultdict(list)
# get all directories in PATH; if unset, use "/usr/bin" as a default
self.bindirs = os.environ.get("PATH", "/usr/bin").split(":")
self.libdirs = ["/usr"]
if os.path.exists("/opt"):
self.libdirs.append("/opt")
def enumerate_shared_libs(self):
somatching = re.compile(r""".*\.so\Z # normal shared object
|.*\.so(\.\d+)+ # versioned shared object""", re.VERBOSE)
for dpath, dnames, fnames in walk_multi_dir(self.libdirs):
for fullname, fname in ((os.path.join(dpath, fname),fname) for fname in fnames if re.match(somatching ,fname)):
self.found.add(fname)
if not os.path.islink(fullname):
yield fullname
def enumerate_binaries(self):
for dpath, dnames, fnames in walk_multi_dir(self.bindirs):
for fname in fnames:
fullname = os.path.join(dpath, fname)
if not os.path.islink(fullname):
yield fullname
def collect_needed(self, sofile):
try:
with open(sofile, 'rb') as f:
try:
elffile = ELFFile(f)
# we try to avoid superfluous work by not calling
# elffile.itersections() directly
# Instead we use the lower level API and continue
# if the section type is not SHT_DYNAMIC
# We can thus avoid to construct Section objects
for i in range(elffile.num_sections()):
section_header = elffile._get_section_header(i)
sectype = section_header['sh_type']
if sectype != 'SHT_DYNAMIC':
continue
name = elffile._get_section_name(section_header)
section = DynamicSection(section_header, name,
elffile.stream,
elffile)
for tag in section.iter_tags('DT_NEEDED'):
self.lib2required_by[tag.needed].append(sofile)
break # there should only be one dyanmic section
except ELFError:
pass # not an ELF file
except PermissionError:
warn("Could not open {}; please check permissions".format(sofile))
def check(self):
print("Checking libraries and binaries")
for lib_or_bin in tqdm(list(itools.chain(self.enumerate_shared_libs(), self.enumerate_binaries()))):
self.collect_needed(lib_or_bin)
missing_libs = self.lib2required_by.keys() - self.found
broken_package = defaultdict(set)
print("Determining broken packages")
for missing_lib in tqdm(missing_libs):
demanders = self.lib2required_by[missing_lib]
try:
out = subprocess.check_output(["pacman", "-Qoq"] + demanders)
except subprocess.CalledProcessError:
warn("Could not get owner for %s" % ", ".join(demanders))
out = b""
for index, pkg in enumerate(out.strip().decode("utf-8").split()):
broken_package[pkg].add((missing_lib, demanders[index]))
return missing_libs, broken_package
def report(self):
missing_libs, broken_packages = self.check()
template = Environment().from_string(TEMPLATE)
html = template.render(broken_packages=broken_packages)
return html
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--cli-only", "-c",
action="store_true",
help="Do not display report in browser"
)
parser.add_argument("--out", "-o",
help="Path were report should be stored. Default: /tmp",
default="/tmp"
)
parser.add_argument("--gui-only", "-g",
action="store_true",
help="only show gui output")
args = parser.parse_args()
if args.gui_only and args.cli_only:
print("Only means that there is only one. Defaulting to cli")
args.gui_only = False
cliviewer = shutil.which("elinks")
cliviewer = cliviewer or shutil.which("html2text")
if args.cli_only and not cliviewer:
warn("To show the output in your terminal, please install either elinks or html2text")
warn("Exiting now")
sys.exit(1)
b = BrokenFinder()
htmlreport = b.report()
out_name = "out.html"
out_path = os.path.join(args.out, out_name)
with open(out_path, "w") as f:
f.write(htmlreport)
if cliviewer and not args.gui_only:
if "elinks" in cliviewer:
subprocess.check_call([cliviewer, "--dump", out_path])
else:
subprocess.check_call([cliviewer, out_path])
if not args.cli_only:
webbrowser.open(out_path)
# Include global configuration
pkgname=dolphin-plugins
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc='Dolphin plugins'
url="http://www.kde.org"
......@@ -14,7 +14,7 @@ replaces=('kdesdk-dolphin-plugins')
groups=('kde' 'kde-uninstall' 'kde-applications' 'kdesdk')
options=('docs' 'debug')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('e1988c6fbb17ddc28f0b3e27d79cc7e74c4e4942a498dc06edfa36199514176a'
sha256sums=('1c6a51384bee58fcde46c42636d47adb2246e593b8a6b07e5c0755fe338210e3'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......
# Include global configuration
pkgname=dolphin
pkgver=18.07.80
pkgver=18.07.90
pkgrel=1
pkgdesc="File Manager"
arch=('x86_64')
......@@ -14,7 +14,7 @@ replaces=(kde-baseapps-dolphin)
groups=('kde' 'kde-uninstall' 'kde-applications' 'kdebase')
options=('docs' 'debug')
source=("https://download.kde.org/unstable/applications/$pkgver/src/$pkgname-$pkgver.tar.xz"{,.sig})
sha256sums=('5d231e76ee54fe768d798a9a33488f29fb42ee4e4c7480be63de9d504978c78a'
sha256sums=('bd93e67e498f2613b7ea31b6e7a0580c6c40e494a0d40ec8fe4c894ec5fa4140'
'SKIP')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87) # Christoph Feck <cfeck@kde.org>
......