Scripts to regularly update things off the OBS
This commit is contained in:
parent
8035d21a27
commit
6fa4bc7aea
3 changed files with 480 additions and 0 deletions
200
kde_unstable_applications.csv
Normal file
200
kde_unstable_applications.csv
Normal file
|
@ -0,0 +1,200 @@
|
||||||
|
akonadi akonadi-server
|
||||||
|
akonadi-calendar akonadi-calendar
|
||||||
|
akonadi-calendar-tools akonadi-calendar-tools
|
||||||
|
akonadi-contacts akonadi-contacts
|
||||||
|
akonadi-import-wizard akonadi-import-wizard
|
||||||
|
akonadi-mime akonadi-mime
|
||||||
|
akonadi-notes akonadi-notes
|
||||||
|
akonadi-search akonadi-search
|
||||||
|
akonadiconsole akonadiconsole
|
||||||
|
akregator akregator
|
||||||
|
analitza analitza
|
||||||
|
ark ark
|
||||||
|
artikulate artikulate
|
||||||
|
baloo-widgets baloo5-widgets
|
||||||
|
blinken blinken
|
||||||
|
blogilo blogilo
|
||||||
|
bomber bomber
|
||||||
|
bovo bovo
|
||||||
|
calendarsupport calendarsupport
|
||||||
|
cantor cantor
|
||||||
|
cervisia cervisia
|
||||||
|
dolphin dolphin
|
||||||
|
dolphin-plugins dolphin-plugins
|
||||||
|
dragon dragonplayer
|
||||||
|
eventviews eventviews
|
||||||
|
ffmpegthumbs ffmpegthumbs
|
||||||
|
filelight filelight
|
||||||
|
gpgmepp gpgmepp5
|
||||||
|
granatier granatier
|
||||||
|
grantlee-editor grantlee-editor
|
||||||
|
grantleetheme grantleetheme
|
||||||
|
gwenview gwenview5
|
||||||
|
incidenceeditor incidenceeditor
|
||||||
|
kaccounts-integration kaccounts-integration
|
||||||
|
kaccounts-providers kaccounts-providers
|
||||||
|
kaddressbook kaddressbook
|
||||||
|
kalarm kalarm
|
||||||
|
kalarmcal kalarmcal
|
||||||
|
kalgebra kalgebra
|
||||||
|
kalzium kalzium
|
||||||
|
kanagram kanagram
|
||||||
|
kapman kapman
|
||||||
|
kapptemplate kapptemplate
|
||||||
|
kate kate
|
||||||
|
katomic katomic
|
||||||
|
kblackbox kblackbox
|
||||||
|
kblocks kblocks
|
||||||
|
kblog kblog
|
||||||
|
kbounce kbounce
|
||||||
|
kbreakout kbreakout
|
||||||
|
kbruch kbruch
|
||||||
|
kcachegrind kcachegrind
|
||||||
|
kcalc kcalc
|
||||||
|
kcalcore kcalcore
|
||||||
|
kcalutils kcalutils
|
||||||
|
kcharselect kcharselect
|
||||||
|
kcontacts kcontacts
|
||||||
|
kcron kcron
|
||||||
|
kde-baseapps kde-baseapps
|
||||||
|
kde-dev-scripts kde-dev-scripts
|
||||||
|
kdebugsettings kdebugsettings
|
||||||
|
kdeedu-data kdeedu-data
|
||||||
|
kdegraphics-thumbnailers kdegraphics-thumbnailers
|
||||||
|
kdenlive kdenlive
|
||||||
|
kdepim-addons kdepim-addons
|
||||||
|
kdepim-apps-libs kdepim-apps-libs
|
||||||
|
kdepim-runtime kdepim-runtime
|
||||||
|
kdesdk-thumbnailers kdesdk-thumbnailers
|
||||||
|
kdf kdf
|
||||||
|
kdgantt2 kdgantt2
|
||||||
|
kdiamond kdiamond
|
||||||
|
kdnssd kdnssd
|
||||||
|
kfloppy kfloppy
|
||||||
|
kfourinline kfourinline
|
||||||
|
kgeography kgeography
|
||||||
|
kget kget
|
||||||
|
kgoldrunner kgoldrunner
|
||||||
|
kgpg kgpg
|
||||||
|
khangman khangman
|
||||||
|
khelpcenter khelpcenter5
|
||||||
|
kholidays kholidays
|
||||||
|
kidentitymanagement kidentitymanagement
|
||||||
|
kig kig
|
||||||
|
kigo kigo
|
||||||
|
killbots killbots
|
||||||
|
kimap kimap
|
||||||
|
kio-extras kio-extras
|
||||||
|
kiriki kiriki
|
||||||
|
kiten kiten
|
||||||
|
kjumpingcube kjumpingcube
|
||||||
|
kldap kldap
|
||||||
|
kleopatra kleopatra5
|
||||||
|
klettres klettres
|
||||||
|
klickety klickety
|
||||||
|
klines klines
|
||||||
|
kmag kmag
|
||||||
|
kmahjongg kmahjongg
|
||||||
|
kmail kmail
|
||||||
|
kmail-account-wizard kmail-account-wizard
|
||||||
|
kmailtransport kmailtransport
|
||||||
|
kmbox kmbox
|
||||||
|
kmime kmime
|
||||||
|
kmines kmines
|
||||||
|
kmix kmix
|
||||||
|
kmousetool kmousetool
|
||||||
|
kmouth kmouth
|
||||||
|
kmplot kmplot
|
||||||
|
knavalbattle knavalbattle
|
||||||
|
knetwalk knetwalk
|
||||||
|
knotes knotes
|
||||||
|
kolf kolf
|
||||||
|
kollision kollision
|
||||||
|
kolourpaint kolourpaint
|
||||||
|
kompare kompare
|
||||||
|
konquest konquest
|
||||||
|
konsole konsole
|
||||||
|
kontact kontact
|
||||||
|
kontactinterface kontactinterface
|
||||||
|
kopete kopete
|
||||||
|
korganizer korganizer
|
||||||
|
kpat kpat
|
||||||
|
kpimtextedit kpimtextedit
|
||||||
|
kqtquickcharts kqtquickcharts
|
||||||
|
krdc krdc
|
||||||
|
kreversi kreversi
|
||||||
|
krfb krfb
|
||||||
|
kross-interpreters kross-interpreters
|
||||||
|
kruler kruler
|
||||||
|
kscd kscd
|
||||||
|
kshisen kshisen
|
||||||
|
ksirk ksirk
|
||||||
|
ksnakeduel ksnakeduel
|
||||||
|
kspaceduel kspaceduel
|
||||||
|
ksquares ksquares
|
||||||
|
kstars kstars
|
||||||
|
ksudoku ksudoku
|
||||||
|
ksystemlog ksystemlog
|
||||||
|
kteatime kteatime
|
||||||
|
ktimer ktimer
|
||||||
|
ktp-accounts-kcm ktp-accounts-kcm
|
||||||
|
ktp-approver ktp-approver
|
||||||
|
ktp-auth-handler ktp-auth-handler
|
||||||
|
ktp-common-internals ktp-common-internals
|
||||||
|
ktp-contact-list ktp-contact-list
|
||||||
|
ktp-contact-runner ktp-contact-runner
|
||||||
|
ktp-desktop-applets ktp-desktop-applets
|
||||||
|
ktp-filetransfer-handler ktp-filetransfer-handler
|
||||||
|
ktp-kded-module ktp-kded-module
|
||||||
|
ktp-send-file ktp-send-file
|
||||||
|
ktp-text-ui ktp-text-ui
|
||||||
|
ktuberling ktuberling
|
||||||
|
kturtle kturtle
|
||||||
|
kubrick kubrick
|
||||||
|
kuser kuser
|
||||||
|
kwordquiz kwordquiz
|
||||||
|
libgravatar libgravatar
|
||||||
|
libgravatar libgravatar
|
||||||
|
libkcddb libkcddb5
|
||||||
|
libkdcraw libkdcraw
|
||||||
|
libkdegames libkdegames
|
||||||
|
libkdepim libkdepim
|
||||||
|
libkeduvocdocument libkeduvocdocument
|
||||||
|
libkexiv2 libkexiv2
|
||||||
|
libkface libkface
|
||||||
|
libkgapi libkgapi
|
||||||
|
libkgeomap libkgeomap
|
||||||
|
libkipi libkipi
|
||||||
|
libkleo libkleo
|
||||||
|
libkmahjongg libkmahjongg
|
||||||
|
libkomparediff2 libkomparediff2
|
||||||
|
libksane libksane
|
||||||
|
libksieve libksieve
|
||||||
|
ktnef libktnef
|
||||||
|
prison libprison
|
||||||
|
lokalize lokalize
|
||||||
|
lskat lskat
|
||||||
|
mailcommon mailcommon
|
||||||
|
mailimporter mailimporter
|
||||||
|
marble marble
|
||||||
|
mbox-importer mbox-importer
|
||||||
|
messagelib messagelib
|
||||||
|
okteta okteta
|
||||||
|
okular okular5 frameworks
|
||||||
|
pairs pairs
|
||||||
|
palapeli palapeli
|
||||||
|
parley parley
|
||||||
|
picmi picmi
|
||||||
|
pim-data-exporter pim-data-exporter
|
||||||
|
pim-sieve-editor pim-sieve-editor
|
||||||
|
pim-storage-service-manager pim-storage-service-manager
|
||||||
|
pimcommon pimcommon
|
||||||
|
pimcommon pimcommon
|
||||||
|
print-manager kde-print-manager
|
||||||
|
rocs rocs
|
||||||
|
signon-kwallet-extension signon-kwallet-extension
|
||||||
|
spectacle spectacle
|
||||||
|
step step
|
||||||
|
svgpart svgpart
|
||||||
|
syndication syndication
|
||||||
|
umbrello umbrello frameworks
|
|
148
kde_unstable_frameworks.csv
Normal file
148
kde_unstable_frameworks.csv
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
attica-qt5
|
||||||
|
baloo5
|
||||||
|
bluedevil5
|
||||||
|
bluez-qt
|
||||||
|
breeze
|
||||||
|
breeze4-style
|
||||||
|
breeze5-icons
|
||||||
|
breeze-gtk
|
||||||
|
cmake
|
||||||
|
cmake-gui
|
||||||
|
discover
|
||||||
|
extra-cmake-modules
|
||||||
|
frameworkintegration
|
||||||
|
gpgmepp5
|
||||||
|
grub2-theme-breeze
|
||||||
|
hack-fonts
|
||||||
|
kaccounts-aggregate
|
||||||
|
kactivities5
|
||||||
|
kactivities-stats
|
||||||
|
kactivitymanagerd
|
||||||
|
kapidox
|
||||||
|
karchive
|
||||||
|
kauth
|
||||||
|
kbookmarks
|
||||||
|
kcm_sddm
|
||||||
|
kcmutils
|
||||||
|
kcodecs
|
||||||
|
kcompletion
|
||||||
|
kconfig
|
||||||
|
kconfigwidgets
|
||||||
|
kcoreaddons
|
||||||
|
kcrash
|
||||||
|
kdbusaddons
|
||||||
|
kdeclarative
|
||||||
|
kde-cli-tools5
|
||||||
|
kded
|
||||||
|
kde-gtk-config5
|
||||||
|
kdelibs4support
|
||||||
|
kde-oxygen-fonts
|
||||||
|
kdesignerplugin
|
||||||
|
kdesu
|
||||||
|
kde-user-manager
|
||||||
|
kdewebkit
|
||||||
|
kdnssd-framework
|
||||||
|
kdoctools
|
||||||
|
kemoticons
|
||||||
|
kf5-filesystem
|
||||||
|
kfilemetadata5
|
||||||
|
kgamma5
|
||||||
|
kglobalaccel
|
||||||
|
kguiaddons
|
||||||
|
khelpcenter5
|
||||||
|
khotkeys5
|
||||||
|
khtml
|
||||||
|
ki18n
|
||||||
|
kiconthemes
|
||||||
|
kidletime
|
||||||
|
kimageformats
|
||||||
|
kinfocenter5
|
||||||
|
kinit
|
||||||
|
kio
|
||||||
|
kio-extras5
|
||||||
|
kirigami
|
||||||
|
kitemmodels
|
||||||
|
kitemviews
|
||||||
|
kjobwidgets
|
||||||
|
kjs
|
||||||
|
kjsembed
|
||||||
|
kmediaplayer
|
||||||
|
kmenuedit5
|
||||||
|
knewstuff
|
||||||
|
knotifications
|
||||||
|
knotifyconfig
|
||||||
|
kpackage
|
||||||
|
kparts
|
||||||
|
kpeople5
|
||||||
|
kplotting
|
||||||
|
kpty
|
||||||
|
kross
|
||||||
|
krunner
|
||||||
|
kscreen5
|
||||||
|
kscreenlocker
|
||||||
|
kservice
|
||||||
|
ksshaskpass5
|
||||||
|
ksysguard5
|
||||||
|
ktexteditor
|
||||||
|
ktextwidgets
|
||||||
|
kunitconversion
|
||||||
|
kwallet
|
||||||
|
kwalletmanager5
|
||||||
|
kwayland
|
||||||
|
kwayland-integration
|
||||||
|
kwidgetsaddons
|
||||||
|
kwin5
|
||||||
|
kwindowsystem
|
||||||
|
kwrited5
|
||||||
|
kxmlgui
|
||||||
|
kxmlrpcclient5
|
||||||
|
libepoxy
|
||||||
|
libkdecoration2
|
||||||
|
libKF5ModemManagerQt
|
||||||
|
libKF5NetworkManagerQt
|
||||||
|
libkscreen2
|
||||||
|
libksysguard5
|
||||||
|
libraw
|
||||||
|
milou5
|
||||||
|
oxygen4
|
||||||
|
oxygen5
|
||||||
|
oxygen5-icon-theme
|
||||||
|
PackageKit-Qt5
|
||||||
|
phonon4qt5
|
||||||
|
phonon4qt5-backend-gstreamer
|
||||||
|
phonon4qt5-backend-vlc
|
||||||
|
plasma5-addons
|
||||||
|
plasma5-desktop
|
||||||
|
plasma5-integration
|
||||||
|
plasma5-mediacenter
|
||||||
|
plasma5-openSUSE
|
||||||
|
plasma5-pa
|
||||||
|
plasma5-pk-updates
|
||||||
|
plasma5-sdk
|
||||||
|
plasma5-session
|
||||||
|
plasma5-workspace
|
||||||
|
plasma5-workspace-wallpapers
|
||||||
|
plasma-framework
|
||||||
|
plasma-nm5
|
||||||
|
plymouth-theme-breeze
|
||||||
|
polkit-default-privs
|
||||||
|
polkit-kde-agent-5
|
||||||
|
polkit-qt5-1
|
||||||
|
poppler
|
||||||
|
poppler-qt
|
||||||
|
poppler-qt5
|
||||||
|
powerdevil5
|
||||||
|
purpose
|
||||||
|
rpmlint
|
||||||
|
rpmlint-Factory
|
||||||
|
rpmlint-mini
|
||||||
|
sddm
|
||||||
|
sni-qt
|
||||||
|
solid
|
||||||
|
solid-power
|
||||||
|
sonnet
|
||||||
|
sprinter
|
||||||
|
sprinter-plugins
|
||||||
|
systemsettings5
|
||||||
|
taglib
|
||||||
|
threadweaver
|
|
132
update_unstable.py
Normal file
132
update_unstable.py
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import csv
|
||||||
|
import logging
|
||||||
|
from pathlib import Path
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
import git
|
||||||
|
import sarge
|
||||||
|
|
||||||
|
logging.basicConfig(format='%(levelname)s:%(message)s',
|
||||||
|
level=logging.DEBUG)
|
||||||
|
|
||||||
|
class GitHashCache:
|
||||||
|
|
||||||
|
def __init__(self, cache_file):
|
||||||
|
self.cache = cache_file
|
||||||
|
self._data = dict()
|
||||||
|
|
||||||
|
def __getitem__(self, key):
|
||||||
|
|
||||||
|
if key not in self._data:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
return self._data[key]
|
||||||
|
|
||||||
|
def __setitem__(self, key, value):
|
||||||
|
self._data[key] = value
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
logging.debug("Saving pickled data")
|
||||||
|
with open(self.cache, "wb") as handle:
|
||||||
|
pickle.dump(self._data, handle, pickle.HIGHEST_PROTOCOL)
|
||||||
|
|
||||||
|
def load(self):
|
||||||
|
|
||||||
|
if not Path(self.cache).exists():
|
||||||
|
logging.debug("File cache not found, not loading")
|
||||||
|
return
|
||||||
|
|
||||||
|
logging.debug("Saving pickled data")
|
||||||
|
with open(self.cache, "rb") as handle:
|
||||||
|
self._data = pickle.load(handle)
|
||||||
|
|
||||||
|
|
||||||
|
def lsremote(url):
|
||||||
|
|
||||||
|
remote_refs = {}
|
||||||
|
g = git.cmd.Git()
|
||||||
|
for ref in g.ls_remote(url).split('\n'):
|
||||||
|
hash_ref_list = ref.split('\t')
|
||||||
|
remote_refs[hash_ref_list[1]] = hash_ref_list[0]
|
||||||
|
|
||||||
|
return remote_refs
|
||||||
|
|
||||||
|
|
||||||
|
def get_remote_hash(url, branch="master"):
|
||||||
|
refs = "refs/heads/{}".format(branch)
|
||||||
|
return lsremote(url)[refs]
|
||||||
|
|
||||||
|
|
||||||
|
def run_osc(repository, package_name):
|
||||||
|
|
||||||
|
cmd = "osc service remoterun {0} {1}"
|
||||||
|
cmd = cmd.format(repository, package_name)
|
||||||
|
|
||||||
|
logging.debug("Running {}".format(cmd))
|
||||||
|
|
||||||
|
# pid = sarge.run(cmd)
|
||||||
|
|
||||||
|
# if pid.returncode != 0:
|
||||||
|
# logging.error("Error during service run, package {}".format(
|
||||||
|
# package_name))
|
||||||
|
|
||||||
|
logging.debug("Package {} complete".format(package_name))
|
||||||
|
|
||||||
|
|
||||||
|
def update_package(hash_data, package_name, remote_name, obs_repository,
|
||||||
|
branch):
|
||||||
|
|
||||||
|
repo_name = "kde:{}".format(remote_name)
|
||||||
|
|
||||||
|
remote_hash = get_remote_hash(repo_name, branch)
|
||||||
|
current_hash = hash_data[remote_name]
|
||||||
|
|
||||||
|
logging.debug("Package {}, theirs {}, ours {}".format(remote_name,
|
||||||
|
remote_hash, current_hash))
|
||||||
|
|
||||||
|
if remote_hash != current_hash:
|
||||||
|
logging.debug("Hash doesn't match, updating")
|
||||||
|
run_osc(obs_repository, package_name)
|
||||||
|
# hash_data[remote_name] = remote_hash
|
||||||
|
|
||||||
|
|
||||||
|
def update_packages(cache_file, obs_repository, repo_mapping_file):
|
||||||
|
|
||||||
|
hash_data = GitHashCache(cache_file)
|
||||||
|
hash_data.load()
|
||||||
|
|
||||||
|
logging.info("Updating packages for {}".format(obs_repository))
|
||||||
|
with open(repo_mapping_file, "r") as mapping:
|
||||||
|
reader = csv.reader(mapping, delimiter="\t")
|
||||||
|
for row in reader:
|
||||||
|
kde_name, obs_name, branch = row
|
||||||
|
branch = "master" if not branch else branch
|
||||||
|
logging.debug("Updating package {} ({})".format(kde_name,
|
||||||
|
obs_name))
|
||||||
|
logging.debug("Using branch {}".format(branch))
|
||||||
|
update_package(hash_data, obs_name, kde_name, obs_repository,
|
||||||
|
branch)
|
||||||
|
|
||||||
|
logging.debug("Saving data")
|
||||||
|
hash_data.save()
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("repository", help="OBS repository to use")
|
||||||
|
parser.add_argument("mapping_file", help="KDE:OBS repository mapping file")
|
||||||
|
|
||||||
|
options = parser.parse_args()
|
||||||
|
|
||||||
|
cache_file = Path.home() / ".local/share/obs_{}_cache".format(options.repository)
|
||||||
|
cache_file = str(cache_file)
|
||||||
|
|
||||||
|
update_packages(cache_file, options.repository, options.mapping_file)
|
||||||
|
logging.info("Complete")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Add table
Reference in a new issue