URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [contrib/] [aot-compile-rpm.in] - Rev 821
Go to most recent revision | Compare with Previous | Blame | View Log
#!/usr/bin/env python## Copyright (C) 2005, 2006, 2007, 2011 Free Software Foundation## Written by Gary Benson <gbenson@redhat.com>#### This program is free software; you can redistribute it and/or modify## it under the terms of the GNU General Public License as published by## the Free Software Foundation; either version 2 of the License, or## (at your option) any later version.#### This program is distributed in the hope that it will be useful,## but WITHOUT ANY WARRANTY; without even the implied warranty of## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the## GNU General Public License for more details.import syssys.path.insert(0, "@python_mod_dir_expanded@")import aotcompileimport osdef libdir():cmd = "%s -p" % aotcompile.PATHS["dbtool"]dir = os.path.abspath(os.popen(cmd, "r").readline().rstrip())dir, base = os.path.split(dir)if base != "classmap.db":raise aotcompile.Error, "%s: unexpected output" % cmddir, base = os.path.split(dir)if not base.startswith("gcj-"):raise aotcompile.Error, "%s: unexpected output" % cmdreturn dirdef writeSourceList(srcdir, dstpath):def visit(fp, dir, items):for item in items:path = os.path.join(dir, item)if os.path.isfile(path):print >>fp, pathdstdir = os.path.dirname(dstpath)if not os.path.isdir(dstdir):os.makedirs(dstdir)os.path.walk(srcdir, visit, open(dstpath, "w"))def copy(srcdir, dstdir, suffix):srcdir = os.path.join(srcdir, suffix.lstrip(os.sep))dstdir = os.path.join(dstdir, suffix.lstrip(os.sep))os.makedirs(os.path.dirname(dstdir))aotcompile.system(("/bin/cp", "-a", srcdir, dstdir))try:name = os.environ.get("RPM_PACKAGE_NAME")if name is None:raise aotcompile.Error, "not for use outside rpm specfiles"arch = os.environ.get("RPM_ARCH")if arch == "noarch":raise aotcompile.Error, "cannot be used on noarch packages"srcdir = os.environ.get("RPM_BUILD_ROOT")if srcdir in (None, "/"):raise aotcompile.Error, "bad $RPM_BUILD_ROOT"tmpdir = os.path.join(os.getcwd(), "aot-compile-rpm")if os.path.exists(tmpdir):raise aotcompile.Error, "%s exists" % tmpdirdstdir = os.path.join(libdir(), "gcj", name)compiler = aotcompile.Compiler(srcdir, dstdir, tmpdir)compiler.gcjflags[0:0] = os.environ.get("RPM_OPT_FLAGS", "").split()# XXX: This script should not accept options, because having# them it cannot be integrated into rpm. But, gcj cannot# build each and every jarfile yet, so we must be able to# exclude until it can.# XXX --exclude is also used in the jonas rpm to stop# everything being made a subset of the mammoth client# jarfile. Should adjust the subset checker's bias to# favour many small jarfiles over one big one.try:options, exclusions = sys.argv[1:], []while options:if options.pop(0) != "--exclude":raise ValueErrorcompiler.exclusions.append(os.path.join(srcdir, options.pop(0).lstrip(os.sep)))except:print >>sys.stderr, "usage: %s [--exclude PATH]..." % (os.path.basename(sys.argv[0]))sys.exit(1)sourcelist = os.path.join(tmpdir, "sources.list")writeSourceList(os.getcwd(), sourcelist)compiler.gcjflags.append("-fsource-filename=" + sourcelist)compiler.compile()copy(tmpdir, srcdir, dstdir)except aotcompile.Error, e:print >>sys.stderr, "%s: error: %s" % (os.path.basename(sys.argv[0]), e)sys.exit(1)
Go to most recent revision | Compare with Previous | Blame | View Log
