def output_path(self): if self.installed: return ObjDirPath( self._context, '!/' + mozpath.join(self.install_target, self.program)) else: return ObjDirPath(self._context, '!' + self.program)
def test_objdir_path(self): config = self.config ctxt = Context(config=config) ctxt.push_source(mozpath.join(config.topsrcdir, 'foo', 'moz.build')) path = ObjDirPath(ctxt, '!qux') self.assertEqual(path, '!qux') self.assertEqual(path.full_path, mozpath.join(config.topobjdir, 'foo', 'qux')) path = ObjDirPath(ctxt, '!../bar/qux') self.assertEqual(path, '!../bar/qux') self.assertEqual(path.full_path, mozpath.join(config.topobjdir, 'bar', 'qux')) path = ObjDirPath(ctxt, '!/qux/qux') self.assertEqual(path, '!/qux/qux') self.assertEqual(path.full_path, mozpath.join(config.topobjdir, 'qux', 'qux')) with self.assertRaises(ValueError): path = ObjDirPath(ctxt, '../bar/qux') with self.assertRaises(ValueError): path = ObjDirPath(ctxt, '/qux/qux') path = ObjDirPath(path) self.assertIsInstance(path, ObjDirPath) self.assertEqual(path, '!/qux/qux') self.assertEqual(path.full_path, mozpath.join(config.topobjdir, 'qux', 'qux')) path = Path(path) self.assertIsInstance(path, ObjDirPath)
def test_objdir_path(self): config = self.config ctxt = Context(config=config) ctxt.push_source(mozpath.join(config.topsrcdir, "foo", "moz.build")) path = ObjDirPath(ctxt, "!qux") self.assertEqual(path, "!qux") self.assertEqual(path.full_path, mozpath.join(config.topobjdir, "foo", "qux")) path = ObjDirPath(ctxt, "!../bar/qux") self.assertEqual(path, "!../bar/qux") self.assertEqual(path.full_path, mozpath.join(config.topobjdir, "bar", "qux")) path = ObjDirPath(ctxt, "!/qux/qux") self.assertEqual(path, "!/qux/qux") self.assertEqual(path.full_path, mozpath.join(config.topobjdir, "qux", "qux")) with self.assertRaises(ValueError): path = ObjDirPath(ctxt, "../bar/qux") with self.assertRaises(ValueError): path = ObjDirPath(ctxt, "/qux/qux") path = ObjDirPath(path) self.assertIsInstance(path, ObjDirPath) self.assertEqual(path, "!/qux/qux") self.assertEqual(path.full_path, mozpath.join(config.topobjdir, "qux", "qux")) path = Path(path) self.assertIsInstance(path, ObjDirPath)
def consume_object(self, obj): self._configs.add(obj.config) if isinstance(obj, XPIDLModule): # TODO bug 1240134 tracks not processing XPIDL files during # artifact builds. self._idl_manager.link_module(obj) elif isinstance(obj, ConfigFileSubstitution): # Do not handle ConfigFileSubstitution for Makefiles. Leave that # to other if mozpath.basename(obj.output_path) == 'Makefile': return False with self._get_preprocessor(obj) as pp: pp.do_include(obj.input_path) self.backend_input_files.add(obj.input_path) elif isinstance(obj, WebIDLCollection): self._handle_webidl_collection(obj) elif isinstance(obj, IPDLCollection): self._handle_generated_sources( mozpath.join(obj.objdir, f) for f in obj.all_generated_sources()) self._write_unified_files(obj.unified_source_mapping, obj.objdir, poison_windows_h=False) self._handle_ipdl_sources( obj.objdir, list(sorted(obj.all_sources())), list(sorted(obj.all_preprocessed_sources())), list(sorted(obj.all_regular_sources())), obj.unified_source_mapping) elif isinstance(obj, XPCOMComponentManifests): self._handle_xpcom_collection(obj) elif isinstance(obj, UnifiedSources): # Unified sources aren't relevant to artifact builds. if self.environment.is_artifact_build: return True if obj.have_unified_mapping: self._write_unified_files(obj.unified_source_mapping, obj.objdir) if hasattr(self, '_process_unified_sources'): self._process_unified_sources(obj) elif isinstance(obj, BaseProgram): self._binaries.programs.append(obj) return False elif isinstance(obj, SharedLibrary): self._binaries.shared_libraries.append(obj) return False elif isinstance(obj, (GeneratedSources, HostGeneratedSources)): self._handle_generated_sources(obj.files) return False elif isinstance(obj, GeneratedFile): if obj.required_for_compile: for f in obj.required_for_compile: fullpath = ObjDirPath(obj._context, '!' + f).full_path self._handle_generated_sources([fullpath]) return False elif isinstance(obj, Exports): objdir_files = [ f.full_path for path, files in obj.files.walk() for f in files if isinstance(f, ObjDirPath) ] if objdir_files: self._handle_generated_sources(objdir_files) return False elif isinstance(obj, GnProjectData): # These are only handled by special purpose build backends, # ignore them here. return True else: return False return True
def _format_generated_file_output_name(self, path, obj): if not isinstance(path, Path): path = ObjDirPath(obj._context, '!' + path) return self._pretty_path(path.full_path, obj)