diff options
-rw-r--r-- | app-portage/sisyphus/Manifest | 2 | ||||
-rw-r--r-- | app-portage/sisyphus/files/sisyphus-0.1709-r1.patch | 371 | ||||
-rw-r--r-- | app-portage/sisyphus/sisyphus-1.1709.ebuild (renamed from app-portage/sisyphus/sisyphus-0.1709-r1.ebuild) | 10 |
3 files changed, 6 insertions, 377 deletions
diff --git a/app-portage/sisyphus/Manifest b/app-portage/sisyphus/Manifest index 75d0428a..a07649a6 100644 --- a/app-portage/sisyphus/Manifest +++ b/app-portage/sisyphus/Manifest @@ -1 +1 @@ -DIST sisyphus-0.1709.tar.gz 181405 SHA256 e6b3969a8cb699f1e98f42f7812672ed312ef10675a01ab9eb44d838fb8b05dc SHA512 c582992fead2eed6e0378ee6b348e30f33409c0bc956ab0805af106798cd2d500a13593a1e5c191196e3e65bb3d518e7c2fc154f6e52e5011bf891c0c69f82fa WHIRLPOOL 3f878f52b9a60ed0bcfdf1b15a8329efd10555c7bcb84b184fc76ed0b0c3da61c3c5a2321e5f6526e04e28228fba0373e97365ac0070bab880b0463d34c403db +DIST sisyphus-1.1709.tar.gz 181658 SHA256 b9178adc2acc9104c5a2f07eb34a9ca4cedc1ae6bcd4b9fc3cb77f6e5b342ace SHA512 1f56b1c098ad3fac6bedb52148aab6dd51dc517570ba0a8d4f031d2f21dca1a508bdc27d484222d4098fd0ac91c28031d9fb9ce0e6dd6b2c01e3b96f5df4879a WHIRLPOOL 1c9305999d7d82907b416e8c285d8eb78b854d37d9fff63a97a190b49443678003645f864938f4473a0a0a0afe7d42757262aede178cb480d5508f2ba661b41f diff --git a/app-portage/sisyphus/files/sisyphus-0.1709-r1.patch b/app-portage/sisyphus/files/sisyphus-0.1709-r1.patch deleted file mode 100644 index 206b3cc7..00000000 --- a/app-portage/sisyphus/files/sisyphus-0.1709-r1.patch +++ /dev/null @@ -1,371 +0,0 @@ -diff --git a/src/backend/libsisyphus.py b/src/backend/libsisyphus.py -index 8516a3d..120e268 100755 ---- a/src/backend/libsisyphus.py -+++ b/src/backend/libsisyphus.py -@@ -1,16 +1,16 @@ - #!/usr/bin/python3 - -+import animation -+import atexit - import csv - import filecmp - import os - import shutil - import sqlite3 --import sys --import urllib3 - import subprocess --import animation -+import sys - import time --import atexit -+import urllib3 - - redcore_portage_tree_path = '/usr/portage' - redcore_desktop_overlay_path = '/var/lib/layman/redcore-desktop' -@@ -19,13 +19,14 @@ - sisyphus_remote_csv_url = 'http://mirror.math.princeton.edu/pub/redcorelinux/csv/remote_preinst.csv' - sisyphus_remote_csv_path_pre = '/var/lib/sisyphus/csv/remote_preinst.csv' - sisyphus_remote_csv_path_post = '/var/lib/sisyphus/csv/remote_postinst.csv' -+sisyphus_removeable_csv_url = 'http://mirror.math.princeton.edu/pub/redcorelinux/csv/removeable_preinst.csv' -+sisyphus_removeable_csv_path_pre = '/var/lib/sisyphus/csv/removeable_preinst.csv' -+sisyphus_removeable_csv_path_post = '/var/lib/sisyphus/csv/removeable_postinst.csv' - sisyphus_local_csv_path_pre = '/var/lib/sisyphus/csv/local_preinst.csv' - sisyphus_local_csv_path_post = '/var/lib/sisyphus/csv/local_postinst.csv' - sisyphus_spm_csv_path = '/var/lib/sisyphus/csv/spmsync.csv' - sisyphus_database_path = '/var/lib/sisyphus/db/sisyphus.db' - --BLACKHOLE = open(os.devnull, 'w') -- - def check_if_root(): - if not os.getuid() == 0: - sys.exit("\nYou need root permissions to do this, exiting!\n") -@@ -47,36 +48,6 @@ def check_system_mode(): - print("\nThe system is not set to binmode or mixedmode, refusing to run!\n") - sys.exit(1) - --def check_redcore_portage_tree(): -- os.chdir(redcore_portage_tree_path) -- subprocess.call(['git', 'remote', 'update'], stdout=BLACKHOLE, stderr=subprocess.STDOUT) -- redcore_portage_tree_local_hash = subprocess.check_output(['git', 'rev-parse', '@']) -- redcore_portage_tree_remote_hash = subprocess.check_output(['git', 'rev-parse', '@{u}']) -- -- if not redcore_portage_tree_local_hash == redcore_portage_tree_remote_hash: -- print("\nPortage tree is out-of-date, run 'sisyphus update' first!\n") -- sys.exit(1) -- --def check_redcore_desktop_overlay(): -- os.chdir(redcore_desktop_overlay_path) -- subprocess.check_call(['git', 'remote', 'update'], stdout=BLACKHOLE, stderr=subprocess.STDOUT) -- redcore_desktop_overlay_local_hash = subprocess.check_output(['git', 'rev-parse', '@']) -- redcore_desktop_overlay_remote_hash = subprocess.check_output(['git', 'rev-parse', '@{u}']) -- -- if not redcore_desktop_overlay_local_hash == redcore_desktop_overlay_remote_hash: -- print("\nOverlay is out-of-date, run 'sisyphus update' first!\n") -- sys.exit(1) -- --def check_redcore_portage_config(): -- os.chdir(redcore_portage_config_path) -- subprocess.check_call(['git', 'remote', 'update'], stdout=BLACKHOLE, stderr=subprocess.STDOUT) -- redcore_portage_config_local_hash = subprocess.check_output(['git', 'rev-parse', '@']) -- redcore_portage_config_remote_hash = subprocess.check_output(['git', 'rev-parse', '@{u}']) -- -- if not redcore_portage_config_local_hash == redcore_portage_config_remote_hash: -- print("\nPortage config is out-of-date, run 'sisyphus update' first!\n") -- sys.exit(1) -- - def fetch_sisyphus_remote_packages_table_csv(): - http = urllib3.PoolManager() - -@@ -88,35 +59,24 @@ def fetch_sisyphus_remote_packages_table_csv(): - with http.request('GET', sisyphus_remote_csv_url, preload_content=False) as tmp_buffer, open(sisyphus_remote_csv_path_post, 'wb') as output_file: - shutil.copyfileobj(tmp_buffer, output_file) - --def check_sisyphus_remote_packages_table_csv(): -- if not filecmp.cmp(sisyphus_remote_csv_path_pre, sisyphus_remote_csv_path_post): -- print("\nSisyphus database is out-of-date, run 'sisyphus update' first!\n") -- os.remove(sisyphus_remote_csv_path_post) -- sys.exit(1) -- else: -- os.remove(sisyphus_remote_csv_path_post) -- --def check_sisyphus_remote_packages_table(): -- fetch_sisyphus_remote_packages_table_csv() -- check_sisyphus_remote_packages_table_csv() -+def fetch_sisyphus_removeable_packages_table_csv(): -+ http = urllib3.PoolManager() - --def check_sync(): -- check_if_root() -- check_redcore_portage_tree() -- check_redcore_desktop_overlay() -- check_redcore_portage_config() -- check_sisyphus_remote_packages_table() -+ if not os.path.isfile(sisyphus_removeable_csv_path_pre): -+ os.mknod(sisyphus_removeable_csv_path_pre) -+ with http.request('GET', sisyphus_removeable_csv_url, preload_content=False) as tmp_buffer, open(sisyphus_removeable_csv_path_post, 'wb') as output_file: -+ shutil.copyfileobj(tmp_buffer, output_file) -+ else: -+ with http.request('GET', sisyphus_removeable_csv_url, preload_content=False) as tmp_buffer, open(sisyphus_removeable_csv_path_post, 'wb') as output_file: -+ shutil.copyfileobj(tmp_buffer, output_file) - --@animation.wait('fetching remote ebuilds') - def sync_redcore_portage_tree_and_desktop_overlay(): - subprocess.check_call(['emerge', '--sync', '--quiet']) - --@animation.wait('fetching remote configs') - def sync_redcore_portage_config(): - os.chdir(redcore_portage_config_path) - subprocess.call(['git', 'pull', '--quiet']) - --@animation.wait('fetching remote database') - def sync_sisyphus_remote_packages_table_csv(): - if not filecmp.cmp(sisyphus_remote_csv_path_pre, sisyphus_remote_csv_path_post): - sisyphusdb = sqlite3.connect(sisyphus_database_path) -@@ -128,16 +88,34 @@ def sync_sisyphus_remote_packages_table_csv(): - sisyphusdb.commit() - sisyphusdb.close() - shutil.move(sisyphus_remote_csv_path_post, sisyphus_remote_csv_path_pre) -+ -+def sync_sisyphus_removeable_packages_table_csv(): -+ if not filecmp.cmp(sisyphus_removeable_csv_path_pre, sisyphus_removeable_csv_path_post): -+ sisyphusdb = sqlite3.connect(sisyphus_database_path) -+ sisyphusdb.cursor().execute('''drop table if exists removeable_packages''') -+ sisyphusdb.cursor().execute('''create table removeable_packages (category TEXT,name TEXT,version TEXT,slot TEXT,description TEXT)''') -+ with open(sisyphus_removeable_csv_path_post) as sisyphus_removeable_csv: -+ for row in csv.reader(sisyphus_removeable_csv): -+ sisyphusdb.cursor().execute("insert into removeable_packages (category, name, version, slot, description) values (?, ?, ?, ?, ?);", row) -+ sisyphusdb.commit() -+ sisyphusdb.close() -+ shutil.move(sisyphus_removeable_csv_path_post, sisyphus_removeable_csv_path_pre) - - def sync_sisyphus_database_remote_packages_table(): - fetch_sisyphus_remote_packages_table_csv() - sync_sisyphus_remote_packages_table_csv() - -+def sync_sisyphus_database_removeable_packages_table(): -+ fetch_sisyphus_removeable_packages_table_csv() -+ sync_sisyphus_removeable_packages_table_csv() -+ -+@animation.wait('syncing remote databases') - def redcore_sync(): - check_if_root() - sync_redcore_portage_tree_and_desktop_overlay() - sync_redcore_portage_config() - sync_sisyphus_database_remote_packages_table() -+ sync_sisyphus_database_removeable_packages_table() - - def generate_sisyphus_local_packages_table_csv_pre(): - subprocess.check_call(['/usr/share/sisyphus/helpers/make_local_csv_pre']) # this is really hard to do in python, so we cheat with a bash helper script -@@ -171,13 +149,13 @@ def sync_sisyphus_spm_csv(): - sisyphusdb.close() - os.remove(sisyphus_spm_csv_path) - --@animation.wait('syncing databases') -+@animation.wait('syncing local databases') - def sisyphus_pkg_spmsync(): - generate_sisyphus_spm_csv() - sync_sisyphus_spm_csv() - - def sisyphus_pkg_install(PKGLIST): -- check_sync() -+ redcore_sync() - generate_sisyphus_local_packages_table_csv_pre() - portage_call = subprocess.Popen(['emerge', '-a'] + PKGLIST) - atexit.register(kill_bg_portage, portage_call) -@@ -195,7 +173,7 @@ def sisyphus_pkg_auto_install(PKGLIST): - sync_sisyphus_local_packages_table_csv() - - def sisyphus_pkg_uninstall(PKGLIST): -- check_sync() -+ redcore_sync() - generate_sisyphus_local_packages_table_csv_pre() - portage_call = subprocess.Popen(['emerge', '--depclean', '-a'] + PKGLIST) - atexit.register(kill_bg_portage, portage_call) -@@ -213,7 +191,7 @@ def sisyphus_pkg_auto_uninstall(PKGLIST): - sync_sisyphus_local_packages_table_csv() - - def sisyphus_pkg_force_uninstall(PKGLIST): -- check_sync() -+ redcore_sync() - generate_sisyphus_local_packages_table_csv_pre() - portage_call = subprocess.Popen(['emerge', '--unmerge', '-a'] + PKGLIST) - atexit.register(kill_bg_portage, portage_call) -@@ -231,7 +209,7 @@ def sisyphus_pkg_auto_force_uninstall(PKGLIST): - sync_sisyphus_local_packages_table_csv() - - def sisyphus_pkg_remove_orphans(): -- check_sync() -+ redcore_sync() - generate_sisyphus_local_packages_table_csv_pre() - portage_call = subprocess.Popen(['emerge', '--depclean', '-a']) - atexit.register(kill_bg_portage, portage_call) -@@ -249,7 +227,7 @@ def sisyphus_pkg_auto_remove_orphans(): - sync_sisyphus_local_packages_table_csv() - - def sisyphus_pkg_system_upgrade(): -- check_sync() -+ redcore_sync() - generate_sisyphus_local_packages_table_csv_pre() - portage_call = subprocess.Popen(['emerge', '-uDaN', '--with-bdeps=y', '@world']) - atexit.register(kill_bg_portage, portage_call) -diff --git a/src/frontend/gui/sisyphus-gui.py b/src/frontend/gui/sisyphus-gui.py -index 0391869..f910bb1 100755 ---- a/src/frontend/gui/sisyphus-gui.py -+++ b/src/frontend/gui/sisyphus-gui.py -@@ -12,29 +12,32 @@ def __init__(self): - self.show() - - self.SEARCHFIELDS = OrderedDict ([ -- ('Category', 'cat'), -- ('Name', 'pn'), -- ('Description', 'descr') -+ ('Search by category', 'cat'), -+ ('Search by description', 'descr'), -+ ('Search by name', 'pn') - ]) - self.selectfield.addItems(self.SEARCHFIELDS.keys()) -- self.selectfield.setCurrentIndex(1) -+ self.selectfield.setCurrentIndex(2) - self.selectfield.currentIndexChanged.connect(self.setSearchField) -- -+ Sisyphus.SEARCHFIELD = self.SEARCHFIELDS['Search by name'] -+ - self.SEARCHFILTERS = OrderedDict ([ -- ('All', ''), -- ('Available', 'AND iv IS NULL'), -- ('Installed', 'AND iv IS NOT NULL'), -- ('Upgradable', 'AND iv < av'), -- ('Downgradable', 'AND iv > av') -+ ('All packages', ''), -+ ('Installed packages', 'AND iv IS NOT NULL'), -+ ('Installable packages', 'AND iv IS NULL'), -+ ('Removable packages', 'AND rmv = "yes"'), -+ ('Upgradable packages', 'AND iv <> av') - ]) -+ Sisyphus.SEARCHFILTER = self.SEARCHFILTERS['All packages'] -+ -+ Sisyphus.SEARCHTERM = "'%%'" -+ - self.selectfilter.addItems(self.SEARCHFILTERS.keys()) - self.selectfilter.setCurrentIndex(0) - self.selectfilter.currentIndexChanged.connect(self.setSearchFilter) -- -- Sisyphus.SEARCHTERM = "'%%'" -- Sisyphus.SEARCHFIELD = self.SEARCHFIELDS['Name'] -- Sisyphus.SEARCHFILTER = self.SEARCHFILTERS['All'] -- -+ -+ self.database.clicked.connect(self.rowClicked) -+ - self.input.textEdited.connect(self.filterDatabase) - - self.updateThread = UpdateThread() -@@ -66,36 +69,52 @@ def __init__(self): - - self.abort.clicked.connect(self.sisyphusExit) - -- def setSearchField(self): -- Sisyphus.SEARCHFIELD = self.SEARCHFIELDS[self.selectfield.currentText()] -- self.loadDatabase(Sisyphus.SEARCHFIELD,Sisyphus.SEARCHTERM,Sisyphus.SEARCHFILTER) -- -- def setSearchFilter(self): -- Sisyphus.SEARCHFILTER = self.SEARCHFILTERS[self.selectfilter.currentText()] -- self.loadDatabase(Sisyphus.SEARCHFIELD,Sisyphus.SEARCHTERM,Sisyphus.SEARCHFILTER) - - def centerOnScreen(self): - resolution = QtWidgets.QDesktopWidget().screenGeometry() - self.move((resolution.width() / 2) - (self.frameSize().width() / 2), - (resolution.height() / 2) - (self.frameSize().height() / 2)) -+ -+ def rowClicked(self): -+ Sisyphus.PKGSELECTED = len(self.database.selectionModel().selectedRows()) -+ self.showPackageCount() -+ -+ def showPackageCount(self): -+ self.statusBar().showMessage("Found: %d, Selected: %d packages" %(Sisyphus.PKGCOUNT, Sisyphus.PKGSELECTED)) -+ -+ def setSearchField(self): -+ Sisyphus.SEARCHFIELD = self.SEARCHFIELDS[self.selectfield.currentText()] -+ self.loadDatabase() -+ -+ def setSearchFilter(self): -+ Sisyphus.SEARCHFILTER = self.SEARCHFILTERS[self.selectfilter.currentText()] -+ self.loadDatabase() - -- def loadDatabase(self,searchField,searchTerm,searchFilter): -- with sqlite3.connect('/var/lib/sisyphus/db/sisyphus.db') as db: -+ def loadDatabase(self): -+ with sqlite3.connect(sisyphus_database_path) as db: - cursor=db.cursor() -+ FILTEROUT = "AND cat NOT LIKE 'virtual'" - cursor.execute('''SELECT - a.category AS cat, - a.name AS pn, - a.version AS av, - i.version AS iv, -- a.description AS descr -+ a.description AS descr, -+ CASE WHEN rm.name ISNULL THEN 'no' ELSE 'yes' END AS rmv - FROM remote_packages AS a - LEFT JOIN local_packages AS i - ON a.category = i.category - AND a.name = i.name - AND a.slot = i.slot -- WHERE %s LIKE %s %s -- ''' % (searchField, searchTerm, searchFilter)) -+ LEFT JOIN removeable_packages as rm -+ ON i.category = rm.category -+ AND i.name = rm.name -+ AND i.slot = rm.slot -+ WHERE %s LIKE %s %s %s -+ ''' % (Sisyphus.SEARCHFIELD, Sisyphus.SEARCHTERM, Sisyphus.SEARCHFILTER, FILTEROUT)) - rows = cursor.fetchall() -+ Sisyphus.PKGCOUNT = len(rows) -+ Sisyphus.PKGSELECTED = 0 - model = QtGui.QStandardItemModel(len(rows), 5) - model.setHorizontalHeaderLabels(['Category', 'Name', 'Available Version', 'Installed Version', 'Description']) - for row in rows: -@@ -104,20 +123,21 @@ def loadDatabase(self,searchField,searchTerm,searchFilter): - item = QtGui.QStandardItem("%s"%(row[column])) - model.setItem(indx, column, item) - self.database.setModel(model) -+ self.showPackageCount() - - def filterDatabase(self): - search = self.input.text() - Sisyphus.SEARCHTERM = "'%" + search + "%'" -- self.loadDatabase(Sisyphus.SEARCHFIELD,Sisyphus.SEARCHTERM,Sisyphus.SEARCHFILTER) -+ self.loadDatabase() - - def updateSystem(self): -- self.loadDatabase(Sisyphus.SEARCHFIELD,Sisyphus.SEARCHTERM,Sisyphus.SEARCHFILTER) -+ self.loadDatabase() - self.updateThread.start() - - def packageInstall(self): - indexes = self.database.selectionModel().selectedRows(1) - if len(indexes) == 0: -- self.input.setText("Please select at least one package!!!") -+ self.statusBar().showMessage("No package selected, please pick at least one!", 3000) - else: - Sisyphus.PKGLIST = [] - for index in sorted(indexes): -@@ -127,7 +147,7 @@ def packageInstall(self): - def packageUninstall(self): - indexes = self.database.selectionModel().selectedRows(1) - if len(indexes) == 0: -- self.input.setText("Please select at least one package!!!") -+ self.statusBar().showMessage("No package selected, please pick at least one!", 3000) - else: - Sisyphus.PKGLIST = [] - for index in sorted(indexes): -@@ -142,7 +162,7 @@ def orphansRemove(self): - - def jobDone(self): - self.hideProgressBar() -- self.loadDatabase(Sisyphus.SEARCHFIELD,Sisyphus.SEARCHTERM,Sisyphus.SEARCHFILTER) -+ self.loadDatabase() - - def showProgressBar(self): - self.hideButtons() diff --git a/app-portage/sisyphus/sisyphus-0.1709-r1.ebuild b/app-portage/sisyphus/sisyphus-1.1709.ebuild index 07a636be..cbf83f20 100644 --- a/app-portage/sisyphus/sisyphus-0.1709-r1.ebuild +++ b/app-portage/sisyphus/sisyphus-1.1709.ebuild @@ -2,7 +2,7 @@ # Distributed under the terms of the GNU General Public License v2 # $Id$ -EAPI=5 +EAPI=6 PYTHON_COMPAT=( python3_4 ) @@ -24,10 +24,6 @@ RDEPEND="${DEPEND} sys-apps/portage[${PYTHON_USEDEP}] gui? ( dev-python/PyQt5[designer,gui,widgets,${PYTHON_USEDEP}] )" -src_prepare() { - epatch ${FILESDIR}/${P}-r1.patch -} - src_install() { default dosym /usr/share/${PN}/${PN}-cli.py /usr/bin/${PN} @@ -43,3 +39,7 @@ src_install() { rm -rf ${ED}usr/share/polkit-1 fi } + +pkg_postinst() { + sisyphus rescue +} |