#!/usr/bin/env python import json import os import re from subprocess import call import shutil import MySQLdb from git import Repo PLATFORMS = ['linux32', 'linux64', 'mac', 'win32', 'win64'] os.chdir('/tmp') db = MySQLdb.connect(host="db", user="clpm", passwd="clpm", db="clpmdb") pcur = db.cursor() vcur = db.cursor() pcur.execute('SELECT `id`,`name`,`git_url` FROM `package`') for pkg in pcur.fetchall(): print(pkg[1]) known_versions = [] vcur.execute('SELECT `major`,`minor`,`revision` FROM `version` ' + \ 'WHERE `package_id`=%d' % pkg[0]) for ver in vcur.fetchall(): known_versions.append((ver[0], ver[1], ver[2])) try: shutil.rmtree(pkg[1]) except: pass repo = Repo.clone_from(pkg[2], pkg[1]) for tag in repo.tags: mat = re.match(r'v(\d+)\.(\d+)\.(\d+)', str(tag)) if mat: [vmaj, vmin, vrev] = [int(mat.group(i)) for i in [1,2,3]] if (vmaj, vmin, vrev) in known_versions: continue repo.head.reference = tag repo.head.reset(index=True, working_tree=True) os.makedirs('/repo/%s/%d.%d.%d' % (pkg[1], vmaj, vmin, vrev)) for pf in PLATFORMS: print(str(tag) + '-' + pf) call(['make', '-C', pkg[1], pf + '.tar.gz']) shutil.move( '/tmp/%s/%s.tar.gz' % (pkg[1], pf), '/repo/%s/%d.%d.%d/%s.tar.gz' % (pkg[1], vmaj, vmin, vrev, pf)) call(['make', '-C', pkg[1], 'clean']) depends = [] with open('/tmp/%s/clpm.json' % pkg[1], 'r') as clpm: depends = json.load(clpm)['depends'] vcur.execute('INSERT INTO `version` ' + \ '(`package_id`,`major`,`minor`,`revision`,`depends`) ' + \ 'VALUES (%d,%d,%d,%d,\'%s\')' % (pkg[0], vmaj, vmin, vrev, json.dumps(depends))) try: shutil.rmtree(pkg[1]) except: pass db.commit() db.close()