From 9c2ca52382d50dc259eaf230bee92b32c0cb97e5 Mon Sep 17 00:00:00 2001 From: Tim Kersten Date: Mon, 16 Jan 2012 23:50:12 +0000 Subject: [PATCH] When removing a ppa, don't forget deb-src line (Also remove the [ppa-name].list file if empty.) --- .../__apt_ppa/files/remove-apt-repository | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/conf/type/__apt_ppa/files/remove-apt-repository b/conf/type/__apt_ppa/files/remove-apt-repository index b57a07f6..3eb7d491 100755 --- a/conf/type/__apt_ppa/files/remove-apt-repository +++ b/conf/type/__apt_ppa/files/remove-apt-repository @@ -7,13 +7,19 @@ # 1: if not # 2: on other error - +import os import sys from aptsources import distro, sourceslist from softwareproperties import ppa from softwareproperties.SoftwareProperties import SoftwareProperties +def remove_if_empty(file_name): + with open(file_name, 'r') as f: + if f.read().strip(): + return + os.unlink(file_name) + def remove_repository(repository): #print 'repository:', repository codename = distro.get_distro().codename @@ -21,11 +27,18 @@ def remove_repository(repository): (line, file) = ppa.expand_ppa_line(repository.strip(), codename) #print 'line:', line #print 'file:', file - source_entry = sourceslist.SourceEntry(line, file) + deb_source_entry = sourceslist.SourceEntry(line, file) + src_source_entry = sourceslist.SourceEntry('deb-src{}'.format(line[3:]), file) try: sp = SoftwareProperties() - sp.remove_source(source_entry) + sp.remove_source(deb_source_entry) + try: + # If there's a deb-src entry, remove that too + sp.remove_source(src_source_entry) + except: + pass + remove_if_empty(file) return True except ValueError: print >> sys.stderr, "Error: '%s' doesn't exists in a sourcelist file" % line