Gary Benson writes:
Andrew Haley wrote:
> Jason L Tibbitts III writes:
> > I'm having problems reviewing a package for some software written
> > in Java. The problem is that the debuginfo package is generated
> > without any source.
>
> The fix is to change /usr/lib/python2.5/site-packages/aotcompile.py,
> which doesn't put the right pathnames into the object files.
>
> I've attached a patch. gbenson, please look this over. This is
> my first ever Python hack, so You Have Been Warned. Input about
> my (doubtless execrable) Python style welcome.
I'd prefer to see this in aot-compile-rpm rather than aotcompile.py,
my reason being that it relies on the fact that the sources are in the
current directory which is true for rpm builds but not necessarily so
otherwise. Something like the attached?
That works just as well as my patch for the RPM case, but is still
broken for non-RPM builds. However, I will go along with this if it's
the only way to get the fix in. We must stop generating bad debuginfo
for gcj-compiled packages.
Andrew.
Cheers,
Gary
PS I don't read fedora-devel-list so please Cc me.
--- aot-compile-rpm.orig 2007-10-12 09:05:38.000000000 +0100
+++ aot-compile-rpm 2007-11-27 10:41:44.000000000 +0000
@@ -28,6 +28,17 @@
raise aotcompile.Error, "%s: unexpected output" % cmd
return dir
+def 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, path
+ dstdir = 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))
@@ -72,6 +83,10 @@
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)
--
Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SL4 1TE, UK
Registered in England and Wales No. 3798903