Closed Bug 950332 Opened 11 years ago Closed 11 years ago

[trunk] Thunderbird build process is broken while processing codegen.pp : no such file or directory.

Categories

(Thunderbird :: Build Config, defect)

x86_64
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: fredbezies, Unassigned)

References

Details

Noticed this "bug" very recently.

I'm using an external objdir directory to get a "clean" trunk source code for Thunderbird.

Here is the .mozconfig I'm using :

mk_add_options PYTHON=/usr/bin/python2
mk_add_options AUTOCONF=autoconf-2.13

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../objdir-tb

ac_add_options --enable-application=mail
ac_add_options --enable-optimize
ac_add_options --with-ccache
ac_add_options --disable-debug
ac_add_options --disable-tests
ac_add_options --disable-crashreporter
ac_add_options --disable-installer
ac_add_options --disable-warnings-as-errors
ac_add_options --disable-debug-symbols

When I type this morning make -f client.mk depend, it ends with this error log :

"Traceback (most recent call last):
  File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/fred/logs/mail/src/mozilla/python/mozbuild/mozbuild/action/webidl.py", line 17, in <module>
    sys.exit(main(sys.argv[1:]))
  File "/home/fred/logs/mail/src/mozilla/python/mozbuild/mozbuild/action/webidl.py", line 12, in main
    manager = BuildSystemWebIDL.from_environment().manager
  File "/home/fred/logs/mail/src/mozilla/python/mozbuild/mozbuild/base.py", line 175, in from_environment
    if not samepath(topobjdir, config_topobjdir) \
  File "/home/fred/logs/mail/src/mozilla/python/mozbuild/mozbuild/base.py", line 41, in samepath
    return os.path.samefile(path1, path2)
  File "/home/fred/logs/mail/objdir-tb/mozilla/_virtualenv/lib/python2.7/posixpath.py", line 163, in samefile
    s2 = os.stat(f2)
OSError: [Errno 2] No such file or directory: '/home/fred/logs/mail/src/objdir-tb'
Creating makedepend file .deps/xpcAccEvents.pp"

After looking at last changes for both python/mozbuild/mozbuild/base.py and python/mozbuild/mozbuild/action/webidl.py I found that bug 928195 could be "guilty".
I built it today successfully. Did you forget delete the old build dir first?
Old obj dir (if it wasn't clear). I think if in-tree obj dirs arenät even supported anymore, so your setup isn't unusual.
Removed old objdir, cleaned ccache. Tried and failed again before I report this bug.
Tried again. Still broken at the same point. Could it be related to python3 as usual on archlinux ?
And I'm getting into trouble with Mozilla Firefox too. Got this in ehe end of mozilla firefox building process :

44:01.94 /home/fred/logs/fox/src/browser/locales/en-US/searchplugins/yahoo.xml: WARNING: no preprocessor directives found
44:01.95 /home/fred/logs/fox/src/browser/locales/en-US/searchplugins/wikipedia.xml: WARNING: no preprocessor directives found
44:05.99 firefox
44:06.67 xpcshell
44:06.67 plugin-container
44:22.29 Traceback (most recent call last):
44:22.29   File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main
44:22.30     "__main__", fname, loader, pkg_name)
44:22.30   File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
44:22.30     exec code in run_globals
44:22.30   File "/home/fred/logs/fox/src/python/mozbuild/mozbuild/action/webidl.py", line 17, in <module>
44:22.30     sys.exit(main(sys.argv[1:]))
44:22.30   File "/home/fred/logs/fox/src/python/mozbuild/mozbuild/action/webidl.py", line 13, in main
44:22.30     manager.generate_build_files()
44:22.30   File "/home/fred/logs/fox/src/dom/bindings/mozwebidlcodegen/__init__.py", line 287, in generate_build_files
44:22.30     written = self.generate_example_files(interface)
44:22.30   File "/home/fred/logs/fox/src/dom/bindings/mozwebidlcodegen/__init__.py", line 308, in generate_example_files
44:22.30     root = CGExampleRoot(self.config, interface)
44:22.30   File "/home/fred/logs/fox/src/dom/bindings/Codegen.py", line 10314, in __init__
44:22.30     descriptor = config.getDescriptor(interfaceName, False)
44:22.30   File "/home/fred/logs/fox/src/dom/bindings/Configuration.py", line 176, in getDescriptor
44:22.30     for d in self.descriptorsByName[interfaceName]:
44:22.30 KeyError: u'TestExampleProxyInterface'

Opening another bug could be useful I think...
Other news. Now it tells me it is broken in codegen.pp

Creating makedepend file .deps/event_impl_gen.pp
Makefile:69: codegen.pp: No such file or directory
Traceback (most recent call last):
  File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/fred/logs/mail/src/mozilla/python/mozbuild/mozbuild/action/webidl.py", line 17, in <module>
    sys.exit(main(sys.argv[1:]))
  File "/home/fred/logs/mail/src/mozilla/python/mozbuild/mozbuild/action/webidl.py", line 12, in main
    manager = BuildSystemWebIDL.from_environment().manager
  File "/home/fred/logs/mail/src/mozilla/python/mozbuild/mozbuild/base.py", line 175, in from_environment
    if not samepath(topobjdir, config_topobjdir) \
  File "/home/fred/logs/mail/src/mozilla/python/mozbuild/mozbuild/base.py", line 41, in samepath
    return os.path.samefile(path1, path2)
  File "/home/fred/logs/mail/objdir-tb/mozilla/_virtualenv/lib/python2.7/posixpath.py", line 163, in samefile
    s2 = os.stat(f2)
OSError: [Errno 2] No such file or directory: '/home/fred/logs/mail/src/objdir-tb'
Makefile:72: recipe for target 'codegen.pp' failed
make[5]: *** [codegen.pp] Error 1
/home/fred/logs/mail/src/mozilla/config/recurse.mk:189: recipe for target 'bindings_export' failed
make[4]: *** [bindings_export] Error 2
make[4]: *** Waiting for unfinished jobs....
/home/fred/logs/mail/src/mozilla/config/recurse.mk:189: recipe for target 'export' failed
make[3]: *** [export] Error 2
/home/fred/logs/mail/src/mozilla/config/recurse.mk:161: recipe for target 'export' failed
make[2]: *** [export] Error 2
Makefile:52: recipe for target 'export' failed
make[1]: *** [export] Error 2
client.mk:374: recipe for target 'depend' failed
make: *** [depend] Error 2
Summary: Since landing of bug 928195, build process cannot use an external objdir directory → [trunk] Thunderbird build process is broken while processing codegen.pp : no such file or directory.
Replacing in my .mozconfig 

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../objdir-tb

by mk_add_options MOZ_OBJDIR=/home/fred/logs/mail/objdir-tb removed the bug, even if I still get Makefile:69: codegen.pp: No such file or directory
Comment #5 is due to --disable-tests and was fixed in bug 950736.

The other stacks with os.stat() in them seem interesting. Comment #7 is *very* interesting. Seems like an error in environment resolution.

Go to the dom/bindings directory in your objdir and run |mach environment|. Do you see anything unexpected?
Blocks: 928195
Flags: needinfo?(fredbezies)
I know about bug in comment #5. I followed it.

I had to copy mach.

Here is the result :

[fred@fredo-arch bindings]$ python2 mach environment
platform:
	Linux-3.12.5-1-ARCH-x86_64-with-glibc2.2.5
python version:
	2.7.6 (default, Nov 26 2013, 12:52:49) 
[GCC 4.8.2]
python prefix:
	/usr
mach cwd:
	/home/fred/logs/mail/objdir-tb/mozilla/dom/bindings
os cwd:
	/home/fred/logs/mail/objdir-tb/mozilla/dom/bindings
mach directory:
	/home/fred/logs/mail/src/mozilla
state directory:
	/home/fred/.mozbuild
mozconfig path:
	/home/fred/logs/mail/src/.mozconfig
object directory:
	/home/fred/logs/mail/objdir-tb/mozilla
mozconfig configure args:
	--enable-application=mail
	--enable-optimize
	--enable-calendar
	--with-ccache
	--disable-debug
	--disable-tests
	--disable-crashreporter
	--disable-installer
	--disable-warnings-as-errors
	--disable-debug-symbols
mozconfig extra make args:
	PYTHON=/usr/bin/python2
	AUTOCONF=autoconf-2.13
mozconfig make flags:
config topsrcdir:
	/home/fred/logs/mail/src/mozilla
config topobjdir:
	/home/fred/logs/mail/objdir-tb/mozilla
Flags: needinfo?(fredbezies)
OSError: [Errno 2] No such file or directory: '/home/fred/logs/mail/src/objdir-tb'

is worrisome. Looks like something is getting confused about the location of the objdir. That something seems to be in python/mozbuild/mozbuild/base.py:175.

Do you know how to debug Python scripts? Insert the following to enter an interactive debugger at run-time:

  import pdb; pdb.set_trace()

Then print out some variables and tell me what doesn't make sense.

jcranmer can likely help here.
I added  import pdb; pdb.set_trace() in top of python/mozbuild/mozbuild/base.py

Here is the log :

-> from mach.mixin.logging import LoggingMixin
(Pdb) 
Traceback (most recent call last):
  File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/fred/logs/mail/src/mozilla/python/mozbuild/mozbuild/action/webidl.py", line 7, in <module>
    from mozwebidlcodegen import BuildSystemWebIDL
  File "/home/fred/logs/mail/src/mozilla/dom/bindings/mozwebidlcodegen/__init__.py", line 20, in <module>
    from mozbuild.base import MozbuildObject
  File "/home/fred/logs/mail/src/mozilla/python/mozbuild/mozbuild/base.py", line 17, in <module>
    from mach.mixin.logging import LoggingMixin
  File "/home/fred/logs/mail/src/mozilla/python/mozbuild/mozbuild/base.py", line 17, in <module>
    from mach.mixin.logging import LoggingMixin
  File "/usr/lib64/python2.7/bdb.py", line 49, in trace_dispatch
    return self.dispatch_line(frame)
  File "/usr/lib64/python2.7/bdb.py", line 68, in dispatch_line
    if self.quitting: raise BdbQuit
bdb.BdbQuit

I don't know if it is really helpful, but this is what I get.
(In reply to Frederic Bezies from comment #7)
> Replacing in my .mozconfig 
> 
> mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../objdir-tb
> 
> by mk_add_options MOZ_OBJDIR=/home/fred/logs/mail/objdir-tb removed the bug,
> even if I still get Makefile:69: codegen.pp: No such file or directory

So, you have a valid workaround, right? (Don't use relative paths when defining MOZ_OBJDIR.)

The make warning about codegen.pp missing can be safely ignored. You'll see that on first build.

I'm tempted to add this to the long list of bugs on the "comm-central build system integration is fragile" list. The cure is to merge c-c into m-c. That's apparently being worked on.

Can we resolve this WORKSFORME?
(In reply to Gregory Szorc [:gps] from comment #12)
[...]
> So, you have a valid workaround, right? (Don't use relative paths when
> defining MOZ_OBJDIR.)

Yes. Kinda "ugly" but working one !

> 
> The make warning about codegen.pp missing can be safely ignored. You'll see
> that on first build.
> 
> I'm tempted to add this to the long list of bugs on the "comm-central build
> system integration is fragile" list. The cure is to merge c-c into m-c.
> That's apparently being worked on.

Great.

> 
> Can we resolve this WORKSFORME?

Yes. The only solution. Feel free to close it. And thanks for your help !
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.