travis: Add build with frozen versions for dependencies
This commit is contained in:
		
							
								
								
									
										38
									
								
								.travis/linux-frozen/install_package.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								.travis/linux-frozen/install_package.py
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
#!/usr/bin/python
 | 
			
		||||
 | 
			
		||||
import sys, re, subprocess
 | 
			
		||||
from launchpadlib.launchpad import Launchpad
 | 
			
		||||
 | 
			
		||||
cachedir = '/.launchpadlib/cache/'
 | 
			
		||||
launchpad = Launchpad.login_anonymously('grab build info', 'production', cachedir, version='devel')
 | 
			
		||||
 | 
			
		||||
processed_packages = []
 | 
			
		||||
deb_file_list = []
 | 
			
		||||
 | 
			
		||||
def get_url(pkg, distro):
 | 
			
		||||
    build_link = launchpad.archives.getByReference(reference='ubuntu').getPublishedBinaries(binary_name=pkg[0], distro_arch_series='https://api.launchpad.net/devel/ubuntu/'+distro+'/amd64', version=pkg[1], exact_match=True, order_by_date=True).entries[0]['build_link']
 | 
			
		||||
    deb_name = pkg[0] + '_' + pkg[1] + '_amd64.deb'
 | 
			
		||||
    deb_link = build_link + '/+files/' + deb_name
 | 
			
		||||
    return [deb_link, deb_name]
 | 
			
		||||
 | 
			
		||||
def list_dependencies(deb_file):
 | 
			
		||||
    t=subprocess.check_output(['bash', '-c', 'dpkg -I ' + deb_file + ' | grep -oP "^ Depends\: \K.*$"'])
 | 
			
		||||
    deps=[i.strip() for i in t.split(',')]
 | 
			
		||||
    equals_re = re.compile(r'^(.*) \(= (.*)\)$')
 | 
			
		||||
    return [equals_re.sub(r'\1=\2', i).split('=') for i in filter(equals_re.match, deps)]
 | 
			
		||||
 | 
			
		||||
def get_package(pkg, distro):
 | 
			
		||||
    if pkg in processed_packages:
 | 
			
		||||
        return
 | 
			
		||||
    print 'Getting ' + pkg[0] + '...'
 | 
			
		||||
    url = get_url(pkg, distro)
 | 
			
		||||
    subprocess.check_call(['wget', '--quiet', url[0], '-O', url[1]])
 | 
			
		||||
    for dep in list_dependencies(url[1]):
 | 
			
		||||
        get_package(dep, distro)
 | 
			
		||||
    processed_packages.append(pkg)
 | 
			
		||||
    deb_file_list.append('./' + url[1])
 | 
			
		||||
 | 
			
		||||
for i in xrange(1, len(sys.argv), 3):
 | 
			
		||||
    get_package([sys.argv[i], sys.argv[i + 1]], sys.argv[i + 2])
 | 
			
		||||
 | 
			
		||||
subprocess.check_call(['apt-get', 'install', '-y'] + deb_file_list)
 | 
			
		||||
		Reference in New Issue
	
	Block a user