From: Thomas Leonard Date: Sun, 5 May 2013 18:47:24 +0000 (+0100) Subject: Use 0repo's merge code rather than 0publish's X-Git-Tag: v0.15~2 X-Git-Url: https://repo.or.cz/w/0release.git/commitdiff_plain/c775a01f6acecae10eafec291e1b2c429b029b6b Use 0repo's merge code rather than 0publish's 0repo's version has a better API and is more up-to-date. --- diff --git a/0release.xml b/0release.xml index 4dcb551..09cfbe8 100644 --- a/0release.xml +++ b/0release.xml @@ -36,6 +36,7 @@ + diff --git a/release.py b/release.py index d750648..2e06841 100644 --- a/release.py +++ b/release.py @@ -2,13 +2,14 @@ # See the README file for details, or visit http://0install.net. import os, subprocess, shutil, sys +from xml.dom import minidom from zeroinstall import SafeException from zeroinstall.injector import model from zeroinstall.support import ro_rmtree from logging import info, warn sys.path.insert(0, os.environ['RELEASE_0REPO']) -from repo import registry +from repo import registry, merge import support, compile from scm import get_scm @@ -353,10 +354,15 @@ def do_release(local_feed, options): # Merge the source and binary feeds together first, so # that we update the master feed atomically and only # have to sign it once. - new_impls_feed = 'merged.xml' - shutil.copyfile(src_feed_name, new_impls_feed) + with open(src_feed_name, 'rb') as stream: + doc = minidom.parse(stream) for b in compiler.get_binary_feeds(): - support.publish(new_impls_feed, local = b) + with open(b, 'rb') as stream: + bin_doc = minidom.parse(b) + merge.merge(doc, bin_doc) + new_impls_feed = 'merged.xml' + with open(new_impls_feed, 'wb') as stream: + doc.writexml(stream) # TODO: support uploading to a sub-feed (requires support in 0repo too) master_feed, = local_feed.feed_for diff --git a/support.py b/support.py index 399129e..9dfeb2a 100644 --- a/support.py +++ b/support.py @@ -252,3 +252,4 @@ def make_archives_relative(feed): elem.setAttribute('href', href.rsplit('/', 1)[1]) with open(feed, 'wb') as stream: doc.writexml(stream) + stream.write(b'\n')