[buildout] extends = ../cpio/buildout.cfg ../rpm2cpio/buildout.cfg parts = libreoffice-bin find-links = http://www.nexedi.org/static/packages/source/ [libreoffice-bin] recipe = slapos.recipe.build # here, two %s are used, first one is for directory name (eg. x86_64), and second one is for filename (eg. x86-64). version = 3.5.3 url = http://download.documentfoundation.org/libreoffice/stable/${:version}/rpm/%s/LibO_${:version}_Linux_%s_install-rpm_en-US.tar.gz # supported architectures md5sums md5sum_x86 = 73d5d1cdaebd58e97cabc91506b9da5b md5sum_x86-64 = 4d20c18c799c565e22b0b06418abe2c3 # where office code can be found? officedir = libreoffice3.5 # script to install script = location = %(location)r self.failIfPathExists(location) import sys ARCH_DIR_MAP = { 'x86': 'x86', 'x86-64': 'x86_64' } platform = guessPlatform() url = self.options['url'] %% (ARCH_DIR_MAP[platform], platform) md5sum = self.options['md5sum_' + platform] extract_dir = self.extract(self.download(url, md5sum)) workdir = guessworkdir(extract_dir) storagedir = os.path.join(workdir, 'storage') os.mkdir(storagedir) rpmsdir = os.path.join(workdir, [q for q in os.listdir(workdir) if q == 'RPMS'][0]) rpmlist = [os.path.join(rpmsdir, q) for q in os.listdir(rpmsdir) if q.endswith('.rpm') and 'javafilter' not in q and 'xsltfilter' not in q] [self.pipeCommand([[sys.executable, '${:rpm2cpio}', rpm], ['${:cpio}', '-idum']], cwd=storagedir) for rpm in rpmlist] self.copyTree(os.path.join(storagedir, 'opt', '${:officedir}'), location, ['ure-link']) os.symlink('ure', os.path.join(location, 'ure-link')) # backward compatibility for cloudooo configuration os.mkdir(os.path.join(location, 'basis-link')) os.symlink(os.path.join('..', 'program'), os.path.join(location, 'basis-link', 'program')) # helper binaries cpio = ${cpio:location}/bin/cpio rpm2cpio = ${rpm2cpio:target}