/** * Deserialize a package from its representation as a protocol message. The inverse of {@link * PackageSerializer#serialize}. * * @throws IOException * @throws InterruptedException */ private void deserializeInternal( Build.Package packagePb, StoredEventHandler eventHandler, Package.Builder builder, InputStream in) throws PackageDeserializationException, IOException, InterruptedException { Path buildFile = packageDeserializationEnvironment.getPath(packagePb.getBuildFilePath()); Preconditions.checkNotNull(buildFile); DeserializationContext context = new DeserializationContext(builder); builder.setFilename(buildFile); if (packagePb.hasDefaultVisibilitySet() && packagePb.getDefaultVisibilitySet()) { builder.setDefaultVisibility( PackageFactory.getVisibility( deserializeLabels(packagePb.getDefaultVisibilityLabelList()))); } // It's important to do this after setting the default visibility, since that implicitly sets // this bit to true builder.setDefaultVisibilitySet(packagePb.getDefaultVisibilitySet()); if (packagePb.hasDefaultTestonly()) { builder.setDefaultTestonly(packagePb.getDefaultTestonly()); } if (packagePb.hasDefaultDeprecation()) { builder.setDefaultDeprecation(packagePb.getDefaultDeprecation()); } builder.setDefaultCopts(packagePb.getDefaultCoptList()); if (packagePb.hasDefaultHdrsCheck()) { builder.setDefaultHdrsCheck(packagePb.getDefaultHdrsCheck()); } if (packagePb.hasDefaultLicense()) { builder.setDefaultLicense(deserializeLicense(packagePb.getDefaultLicense())); } builder.setDefaultDistribs(deserializeDistribs(packagePb.getDefaultDistribList())); for (String subinclude : packagePb.getSubincludeLabelList()) { Label label = deserializeLabel(subinclude); builder.addSubinclude(label, null); } ImmutableList.Builder<Label> skylarkFileDependencies = ImmutableList.builder(); for (String skylarkFile : packagePb.getSkylarkLabelList()) { skylarkFileDependencies.add(deserializeLabel(skylarkFile)); } builder.setSkylarkFileDependencies(skylarkFileDependencies.build()); MakeEnvironment.Builder makeEnvBuilder = new MakeEnvironment.Builder(); for (Build.MakeVar makeVar : packagePb.getMakeVariableList()) { for (Build.MakeVarBinding binding : makeVar.getBindingList()) { makeEnvBuilder.update( makeVar.getName(), binding.getValue(), binding.getPlatformSetRegexp()); } } builder.setMakeEnv(makeEnvBuilder); for (Build.Event event : packagePb.getEventList()) { deserializeEvent(eventHandler, event); } if (packagePb.hasContainsErrors() && packagePb.getContainsErrors()) { builder.setContainsErrors(); } builder.setWorkspaceName(packagePb.getWorkspaceName()); deserializeTargets(in, context); }