diff --git a/sm/infra b/sm/infra index 3bfc913e..b0e02165 160000 --- a/sm/infra +++ b/sm/infra @@ -1 +1 @@ -Subproject commit 3bfc913ed88ef6000f8393a58bf142061b68d61a +Subproject commit b0e02165a733c268c4891e51da6edc3d5ae9ffbb diff --git a/tools/onlpm.py b/tools/onlpm.py index 1b32b738..7a5bfc7c 100755 --- a/tools/onlpm.py +++ b/tools/onlpm.py @@ -352,14 +352,14 @@ class OnlPackage(object): # FPM doesn't seem to have a doc option so we copy documentation # files directly into place. # + docpath = os.path.join(root, "usr/share/doc/%(name)s" % self.pkg) + if not os.path.exists(docpath): + os.makedirs(docpath) + for src in self.pkg.get('docs', []): if not os.path.exists(src): raise OnlPackageError("Documentation source file '%s' does not exist." % src) - - dstpath = os.path.join(root, "usr/share/doc/%(name)s" % self.pkg) - if not os.path.exists(dstpath): - os.makedirs(dstpath) - shutil.copy(src, dstpath) + shutil.copy(src, docpath) changelog = os.path.join(workdir, 'changelog') copyright_ = os.path.join(workdir, 'copyright') @@ -399,6 +399,18 @@ class OnlPackage(object): for provides in onlu.sflatten(self.pkg.get('provides', [])): command = command + "--provides %s " % provides + for conflicts in onlu.sflatten(self.pkg.get('conflicts', [])): + command = command + "--conflicts %s " % conflicts + + for replaces in onlu.sflatten(self.pkg.get('replaces', [])): + command = command + "--replaces %s " % replaces + + if 'virtual' in self.pkg: + command = command + "--provides %(v)s --conflicts %(v)s --replaces %(v)s " % dict(v=self.pkg['virtual']) + + if 'priority' in self.pkg: + command = command + "--deb-priority %s " % self.pkg['priority'] + if 'init' in self.pkg: if not os.path.exists(self.pkg['init']): raise OnlPackageError("Init script '%s' does not exist." % self.pkg['init']) @@ -410,6 +422,16 @@ class OnlPackage(object): if self.pkg.get('init-after-remove', True): command = command + "--after-remove %s " % OnlPackageAfterRemoveScript(self.pkg['init'], dir=workdir).name + if self.pkg.get('asr', True): + # Generate the ASR documentation for this package. + sys.path.append("%s/sm/infra/tools" % os.getenv('ONL')) + import asr + asro = asr.AimSyslogReference() + asro.extract(workdir) + asro.format(os.path.join(docpath, asr.AimSyslogReference.ASR_NAME), 'json') + + ############################################################ + if logger.level < logging.INFO: command = command + "--verbose " diff --git a/tools/onlrfs.py b/tools/onlrfs.py index 440bf49f..8152731f 100755 --- a/tools/onlrfs.py +++ b/tools/onlrfs.py @@ -410,7 +410,7 @@ rm -f /usr/sbin/policy-rc.d logger.info("Cleaning Filesystem...") onlu.execute('sudo chroot %s /usr/bin/apt-get clean' % dir_) onlu.execute('sudo chroot %s /usr/sbin/localepurge' % dir_ ) - onlu.execute('sudo chroot %s find /usr/share/doc -type f -delete' % dir_) + onlu.execute('sudo chroot %s find /usr/share/doc -type f -not -name asr.json -delete' % dir_) onlu.execute('sudo chroot %s find /usr/share/man -type f -delete' % dir_) if 'PermitRootLogin' in options: @@ -458,6 +458,14 @@ rm -f /usr/sbin/policy-rc.d ua.chmod('go-w', f) ua.chmod('go-w', os.path.dirname(f)) + if options.get('asr', None): + asropts = options.get('asr') + logger.info("Gathering ASR documentation...") + sys.path.append("%s/sm/infra/tools" % os.getenv('ONL')) + import asr + asro = asr.AimSyslogReference() + asro.merge(dir_) + asro.format(os.path.join(dir_, asropts['file']), fmt=asropts['format']) for (mf, fields) in Configure.get('manifests', {}).iteritems(): logger.info("Configuring manifest %s..." % mf) @@ -520,6 +528,8 @@ rm -f /usr/sbin/policy-rc.d f.write("%s" % issue) onlu.execute("sudo chmod a-w %s" % fn) + + finally: onlu.execute("sudo umount -l %s %s" % (os.path.join(dir_, "dev"), os.path.join(dir_, "proc")))