Mercurial > gub
changeset 257:8d1a70e8f4cc
Activate build number incrementing. Install from gub if available.
author | janneke <janneke@gnu.org> |
---|---|
date | Sun, 18 Dec 2005 09:24:53 +0100 |
parents | 42420350d064 |
children | 8ff55760882d |
files | GNUmakefile cyg-apt.py.in driver.py specs/cpm.py specs/framework.py specs/gub.py |
diffstat | 6 files changed, 130 insertions(+), 100 deletions(-) [+] |
line wrap: on
line diff
--- a/GNUmakefile Sat Dec 17 21:40:50 2005 +0100 +++ b/GNUmakefile Sun Dec 18 09:24:53 2005 +0100 @@ -61,7 +61,7 @@ ./cyg-apt.py list gpm-install: test-gub - -./cyg-apt.py install $$(./cyg-apt.py available) + -./cyg-apt.py install $$(./cyg-apt.py search .) mkdir -p target/i686-mingw32/status mkdir -p target/i686-mingw32/tools touch target/i686-mingw32/status/binutils-2.16.1-0-{untar,patch,configure,compile,install,package,clean}
--- a/cyg-apt.py.in Sat Dec 17 21:40:50 2005 +0100 +++ b/cyg-apt.py.in Sun Dec 18 09:24:53 2005 +0100 @@ -232,9 +232,6 @@ cpm = Cpm (ROOT) -def debug (s): - s - def uri_get (dir, uri): if uri[:7] == 'file://': return system ('cp -pv "%s" "%s"/' % (uri[7:], dir)) @@ -249,58 +246,17 @@ print __main__.__dict__[packagename].__doc__ -dists = 0 distnames = ('curr', 'test', 'prev') -def get_setup_ini (): - global dists - if dists: - return - dists = {'test': {}, 'curr': {}, 'prev' : {}} - chunks = string.split (open (setup_ini).read (), '\n\n@ ') - for i in chunks[1:]: - lines = string.split (i, '\n') - name = string.strip (lines[0]) - debug ('package: ' + name) - packages = dists['curr'] - records = {'sdesc': name} - j = 1 - while j < len (lines) and string.strip (lines[j]): - debug ('raw: ' + lines[j]) - if lines[j][0] == '#': - j = j + 1 - continue - elif lines[j][0] == '[': - debug ('dist: ' + lines[j][1:5]) - packages[name] = records.copy () - packages = dists[lines[j][1:5]] - j = j + 1 - continue - try: - key, value = map (string.strip, - string.split (lines[j], ': ', 1)) - except: - print lines[j] - raise 'URG' - if value.startswith ('"') and value.find ('"', 1) == -1: - while 1: - j = j + 1 - value += '\n' + lines[j] - if lines[j].find ('"') != -1: - break - records[key] = value - j = j + 1 - packages[name] = records - def get_url (): - if not dists[distname].has_key (packagename) \ - or not dists[distname][packagename].has_key (INSTALL): + if not cpm.dists ()[distname].has_key (packagename) \ + or not cpm.dists ()[distname][packagename].has_key (INSTALL): no_package () install = 0 for d in distnames: - if dists[d].has_key (packagename) \ - and dists[d][packagename].has_key (INSTALL): - install = dists[d][packagename][INSTALL] + if cpm.dists ()[d].has_key (packagename) \ + and cpm.dists ()[d][packagename].has_key (INSTALL): + install = cpm.dists ()[d][packagename][INSTALL] sys.stderr.write ("warning: using [%s]\n" % d) break if not install: @@ -308,7 +264,7 @@ % packagename) return 0 else: - install = dists[distname][packagename][INSTALL] + install = cpm.dists ()[distname][packagename][INSTALL] file, size, md5 = string.split (install) return file, md5 @@ -354,8 +310,8 @@ sys.stderr.write ("%s: %s not in [%s]\n" % (s, packagename, distname)) def get_requires (): - dist = dists[distname] - if not dists[distname].has_key (packagename): + dist = cpm.dists ()[distname] + if not cpm.dists ()[distname].has_key (packagename): no_package ('error') #return [] sys.exit (1) @@ -395,9 +351,9 @@ def get_field (field, default=''): for d in (distname,) + distnames: - if dists[d].has_key (packagename) \ - and dists[d][packagename].has_key (field): - return dists[d][packagename][field] + if cpm.dists ()[d].has_key (packagename) \ + and cpm.dists ()[d][packagename].has_key (field): + return cpm.dists ()[d][packagename][field] return default def psort (lst): @@ -412,8 +368,8 @@ for packagename in psort (cpm.installed ().keys ()): ins = cpm.version (packagename) new = 0 - if dists[distname].has_key (packagename) \ - and dists[distname][packagename].has_key (INSTALL): + if cpm.dists ()[distname].has_key (packagename) \ + and cpm.dists ()[distname][packagename].has_key (INSTALL): new = get_version () s = '%-20s%-15s' % (packagename, version_to_string (ins)) if new and new != ins: @@ -435,12 +391,12 @@ system ('cp -pf "%s/setup.ini" "%s/"' % (downloads, config)) def get_version (): - if not dists[distname].has_key (packagename) \ - or not dists[distname][packagename].has_key (INSTALL): + if not cpm.dists ()[distname].has_key (packagename) \ + or not cpm.dists ()[distname][packagename].has_key (INSTALL): no_package () return (0, 0) - package = dists[distname][packagename] + package = cpm.dists ()[distname][packagename] if not package.has_key ('ver'): file = string.split (package[INSTALL])[0] ball = os.path.split (file)[1] @@ -509,11 +465,11 @@ regexp = packagename packages = [] keys = [] - if distname in dists: - keys = dists[distname].keys () + if distname in cpm.dists (): + keys = cpm.dists ()[distname].keys () else: - for i in dists.keys (): - for j in dists[i].keys (): + for i in cpm.dists ().keys (): + for j in cpm.dists ()[i].keys (): if not j in keys: keys.append (j) for i in keys: @@ -522,8 +478,8 @@ if not regexp or re.search (regexp, i) \ or re.search (regexp, get_field ('sdesc')) \ or re.search (regexp, get_field ('ldesc')): - if distname in dists: - if dists[distname][i].has_key (INSTALL): + if distname in cpm.dists (): + if cpm.dists ()[distname][i].has_key (INSTALL): packages.append (i) else: packages.append (i) @@ -534,13 +490,6 @@ s += ' - %s' % d[1:-1] print s -def available (): - '''print all installable package names''' - global name_p - name_p = 1 - packagename = '' - search () - def show (): '''print information for package''' s = packagename @@ -774,7 +723,7 @@ sys.stderr.write ('error: run %(basename)s setup?\n' % vars ()) sys.exit (2) -get_setup_ini () +cpm.dists () cpm.installed () if command and command in __main__.__dict__:
--- a/driver.py Sat Dec 17 21:40:50 2005 +0100 +++ b/driver.py Sun Dec 18 09:24:53 2005 +0100 @@ -122,14 +122,30 @@ def build_packages (settings, packages): + def is_installed (p): + """Return true if package P is installed by system_gpm.""" + return (p.system_gpm.is_installed (p.name()) + and p.system_gpm.version (p.name ()) + == cpm.string_to_version (p.full_version ())) + def skip (p): - # FIXME: next step might be to download/install using - # system_gpm unless --rebuild is set, or somesuch. - """Return true if package P is installed by system_gpm. - """ - return p.system_gpm.is_installed (p.name()) \ - and p.system_gpm.version (p.name ()) \ - == cpm.string_to_version (p.full_version ()) + """Return true if package P must not be built.""" + # If you want to force rebuilding a package, uninstall + # it (remove the system root) and (re)move the .gub + # package + + if (not is_installed (p) + and p.system_gpm.dists ()['curr'].has_key (p.name ()) + and p.system_gpm.dists ()['curr'][p.name ()] .has_key ('install')): + ball, size, md5 = string.split (p.system_gpm.dists ()['curr'][p.name ()]['install']) + try: + p.system_gpm.install (p.name (), + os.path.join (p.settings.uploads, + ball), + p.depends) + except: + pass + return is_installed (p) for i in packages: # skip download for installed package
--- a/specs/cpm.py Sat Dec 17 21:40:50 2005 +0100 +++ b/specs/cpm.py Sun Dec 18 09:24:53 2005 +0100 @@ -23,6 +23,9 @@ pass +def debug (s): + s + # cygwin stuff def run_script (self, file_name): @@ -89,8 +92,10 @@ self.root = root self.config = self.root + '/etc/setup' self._installed_db = self.config + '/installed.db' + self._setup_ini = self.config + '/setup.ini' self._installed = None self._depends = {} + self._dists = None self.installed () self.setup () @@ -111,7 +116,9 @@ ##self._installed[int (status)][name] = ball self._installed[name] = ball - def setup (self): + def setup (self, setup_ini=None): + if setup_ini: + self._setup_ini = setup_ini if not os.path.isdir (self.config): sys.stderr.write ('creating %s\n' % self.config) os.makedirs (self.config) @@ -205,6 +212,49 @@ def run_scripts (self): run_all (self.root + '/etc/postinstall') + def dists (self): + if not self._dists: + self._read_setup_ini (self._setup_ini) + return self._dists + + def _read_setup_ini (self, setup_ini): + self._dists = {'test': {}, 'curr': {}, 'prev' : {}} + chunks = string.split (open (setup_ini).read (), '\n\n@ ') + for i in chunks[1:]: + lines = string.split (i, '\n') + name = string.strip (lines[0]) + debug ('package: ' + name) + packages = self._dists['curr'] + records = {'sdesc': name} + j = 1 + while j < len (lines) and string.strip (lines[j]): + debug ('raw: ' + lines[j]) + if lines[j][0] == '#': + j = j + 1 + continue + elif lines[j][0] == '[': + debug ('dist: ' + lines[j][1:5]) + packages[name] = records.copy () + packages = self._dists[lines[j][1:5]] + j = j + 1 + continue + + try: + key, value = map (string.strip, + string.split (lines[j], ': ', 1)) + except: + print lines[j] + raise 'URG' + if value.startswith ('"') and value.find ('"', 1) == -1: + while 1: + j = j + 1 + value += '\n' + lines[j] + if lines[j].find ('"') != -1: + break + records[key] = value + j = j + 1 + packages[name] = records + class Gpm (Cpm): '''Gub package manager. @@ -223,7 +273,7 @@ else: self._installed = pickle.load (open (self._installed_db)) - def read_setup_ini (self, setup_ini): + def xxxsimple_read_setup_ini (self, setup_ini): packages = {} if os.path.exists (setup_ini): chunks = string.split (open (setup_ini).read (), @@ -238,7 +288,7 @@ now = now[:now.find ('.')] s = '''setup-timestamp: %(now)s ''' % locals () - packages = self.read_setup_ini (setup_ini) + packages = self._read_setup_ini (setup_ini) for name in packages.keys (): if name not in self.installed ().keys (): s += '\n\n@ ' + packages[name]
--- a/specs/framework.py Sat Dec 17 21:40:50 2005 +0100 +++ b/specs/framework.py Sun Dec 18 09:24:53 2005 +0100 @@ -238,7 +238,8 @@ def gub_name (self): nv = self.name_version () b = self.build () - return '%(nv)s-%(b)s.%(platform)s.gub' + p = self.settings.platform + return '%(nv)s-%(b)s.%(p)s.gub' % locals () class LilyPond__mingw (LilyPond): def __init__ (self, settings): @@ -679,9 +680,32 @@ def get_installers (settings): installers = { + # Comment out to build the windows installer, + # see below. + 'darwin' : [installer.Darwin_bundle (settings)], - # breaks what?! - 'darwin' : [installer.Darwin_bundle (settings)], + # rm -rf target/* + # make mingw ... BOOM (just before installer is to be made) + +# *** Stage: install_gub (lilypond) +# invoking mkdir -p /home/janneke/bzr/gub/target/i686-mingw32/installer +# invoking tar -C /home/janneke/bzr/gub/target/i686-mingw32/installer -zxf /home/janneke/bzr/gub/uploads/gub/lilypond-2.7.24-0.mingw.gub +# Traceback (most recent call last): +# File "driver.py", line 267, in ? +# main () +# File "driver.py", line 264, in main +# make_installers (settings, packages) +# File "driver.py", line 161, in make_installers +# for p in framework.get_installers (settings): +# File "specs/framework.py", line 682, in get_installers +# installers = { +# File "specs/installer.py", line 125, in __init__ +# self.ignore_libs = self.get_ignore_libs () +# File "specs/installer.py", line 156, in get_ignore_libs +# (root, dirs, files) = os.walk (self.settings.installdir + '/darwin-sdk-root/usr/lib').next () +# StopIteration +# make: *** [mingw] Fout 1 + 'linux' : [ installer.Tgz (settings), installer.Deb (settings),
--- a/specs/gub.py Sat Dec 17 21:40:50 2005 +0100 +++ b/specs/gub.py Sun Dec 18 09:24:53 2005 +0100 @@ -116,7 +116,8 @@ def __init__ (self, settings): if self.system_gpm.root == 'ugh': self.system_gpm.__init__ (settings.system_root) - self.system_gpm.setup () + self.system_gpm.setup (setup_ini=settings.uploads + + '/setup.ini') self.system_gpm.installed () self.settings = settings self.url = '' @@ -384,17 +385,7 @@ # FIXME: should do this right after successful package () # but then sysinstall uses bumped version number builds = self.get_builds () - - ## Hmm, when/how to bump build number? Manually? - ## Cygwin just uses the -BUILD from the srcdir name, - ## bumping is done my mv'ing the srcdir to -BUILD+1 - - ## Bumping here does not work, it will trigger a - ## rebuild each time, because we save a higher build - ## version than we have installed and in status/* files. - ##builds[self.name_version ()] = '%d' % (int (self.build ()) + 1) - - builds[self.name_version ()] = '%d' % (int (self.build ()) + 0) + builds[self.name_version ()] = '%d' % (int (self.build ()) + 1) pickle.dump (builds, open (self.build_db, 'w')) def clean (self):