Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugal-tweak.git;a=commitdiff;h=31eeabc52a4f945211eb2085089ee482fc8fc239

commit 31eeabc52a4f945211eb2085089ee482fc8fc239
Author: bouleetbil <[email protected]>
Date:   Fri Jan 6 20:09:27 2012 +0100

pyfpminstall
*can remove packages

diff --git a/py-pacman/pyfpm/src/pyfpminstall.py 
b/py-pacman/pyfpm/src/pyfpminstall.py
index 85385a0..7e1c332 100644
--- a/py-pacman/pyfpm/src/pyfpminstall.py
+++ b/py-pacman/pyfpm/src/pyfpminstall.py
@@ -79,7 +79,12 @@ class GUIINST:
pypacman.initPacman()
self.pacman_install_pkgs()
pypacman.pacman_finally()
-
+               if bo_remove==1:
+                       pypacman.initPacman()
+                       for pkg in tab_pkgs:
+                               self.pacman_remove_pkg (pkg)
+                       pypacman.pacman_finally()
+
def destroy(window, self):
Gtk.main_quit()

@@ -109,6 +114,47 @@ class GUIINST:
pacman_trans_release()
return 1

+       def pacman_remove_pkg(self,packagename,removedep=0):
+               #TODO : can remove group pacman_db_readgrp  pacman_grp_getinfo
+               if pacman_package_is_installed(packagename)==0 :
+                       print_info("Package "+packagename+" is not installed")
+                       #it's not an error
+                       return 1
+               pm_trans_flag = PM_TRANS_FLAG_NOCONFLICTS
+               if removedep == 1 :
+                       pm_trans_flag=PM_TRANS_FLAG_CASCADE
+               if pacman_trans_init(PM_TRANS_TYPE_REMOVE,pm_trans_flag, 
pacman_trans_cb_event(fpm_progress_event), 
pacman_trans_cb_conv(fpm_trans_conv), 
pacman_trans_cb_progress(fpm_progress_install)) == -1 :
+                       print_info("pacman_trans_init 
failed\n"+pacman_get_error())
+                       return -1
+               if pacman_trans_addtarget(packagename)==-1 :
+                       print_info("Can't remove " 
+packagename+"\n"+pacman_get_error())
+                       return -1
+               data=PM_LIST()
+               if pacman_trans_prepare(data)==-1:
+                       if pacman_get_pm_error() == 
pacman_c_long_to_int(PM_ERR_UNSATISFIED_DEPS) :
+                               str_text=packagename+" is required by :\n"
+                               str_text=str_text+"Uninstall this packages ?\n"
+                               i=pacman_list_first(data)
+                               while i != 0:
+                                       spkg = pacman_list_getdata(i)
+                                       pkg = 
pointer_to_string(pacman_dep_getinfo(spkg, PM_DEP_NAME))
+                                       str_text=str_text+pkg+"\n"
+                                       i=pacman_list_next(i)
+                               if print_question(str_text)==-1:
+                                       return -1
+                                       pacman_trans_release()
+                               #restart transaction
+                               return self.pacman_remove_pkg(packagename,1)
+                       else:
+                               print_info("pacman_trans_prepare 
failed\n"+pacman_get_error())
+                               return -1
+               if pacman_trans_commit(data)==-1:
+                       print_info("pacman_trans_commit 
failed\n"+pacman_get_error())
+                       return -1
+               pacman_trans_release()
+               return 1
+
+
def main(*args):
if check_user()==0:
print_info("only root can use it.")
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to