New issue
Advanced search Search tips

Issue 651146 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jan 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug

Blocking:
issue 318996



Sign in to add a comment

loman: rewrite manifest loading logic to use lib.git.Manifest (to support <include>)

Project Member Reported by gwendal@chromium.org, Sep 28 2016

Issue description

I updated depot tool, create a new minilayout repo:

When I workon start a new package, repo is not asking to sync.
repo sync does not extract the new package code.

Created a directory:
gwendal/cave_firmware/
Repo init with:
repo init \
-u https://chrome-internal.googlesource.com/chromeos/manifest-internal.git \
--repo-url='https://chromium.googlesource.com/external/repo.git' \
-g minilayout -b firmware-glados-7820.B

Set went fine, installing base packages, but it would not set up new packages:
cros_workon start --board cave sys-boot/depthcharge
10:11:55: INFO: Started working on 'sys-boot/depthcharge' for 'cave'


Log in older minilayout repo, the expected behavior works:
Compare a samus repo:
cros_workon start --board samus chromeos-base/autotest-tests-cryptohome
WARNING: 'portageq envvar PORTDIR_OVERLAY' is deprecated. Use 'portageq repositories_configuration' instead.
Please run "repo sync" now.
INFO    : Started working on 'chromeos-base/autotest-tests-cryptohome' for 'samus'

With newer one:
cros_workon start --board cave chromeos-base/autotest-tests-cryptohome
Usage: loman add [options] <name> <--workon | <path> --remote <remote> >

loman: error: No project named 'chromiumos/third_party/autotest' in the default manifest.
cros_workon: Unhandled exception:
Traceback (most recent call last):
  File "/mnt/host/source/chromite/bin/cros_workon", line 164, in <module>
    commandline.ScriptWrapperMain(FindTarget)
  File "/mnt/host/source/chromite/lib/commandline.py", line 834, in ScriptWrapperMain
    ret = target(argv[1:])
  File "/mnt/host/source/chromite/scripts/cros_workon.py", line 89, in main
    use_workon_only=options.workon_only)
  File "/mnt/host/source/chromite/lib/workon_helper.py", line 562, in StartWorkingOnPackages
    self._AddProjectsToPartialManifests(new_atoms)
  File "/mnt/host/source/chromite/lib/workon_helper.py", line 494, in _AddProjectsToPartialManifests
    cros_build_lib.RunCommand(cmd, print_cmd=False)
  File "/mnt/host/source/chromite/lib/cros_build_lib.py", line 619, in RunCommand
    raise RunCommandError(msg, cmd_result)
chromite.lib.cros_build_lib.RunCommandError: return code: 2; command: loman add --workon chromiumos/third_party/autotest
cwd=None

BTW, in loman.py, I can see some code like "active_manifest == 'minilayout.xml'"
But none of my minilayout repo uses minilayout.xml. I can not even find this file.

Calling the loman command manually:
 loman add --workon chromiumos/platform/ec
Usage: loman add [options] <name> <--workon | <path> --remote <remote> >

loman: error: No project named 'chromiumos/platform/ec' in the default manifest.

Although it is in .repo/manifests/external_full.xml, included by .repo/manifest.xml.
Interestingly, the manifest.xml file for cave minilayout is different from the samus minilayout, where .repo/manifest.xml there is more complete.



 

Comment 1 by vapier@chromium.org, Sep 28 2016

Blocking: 318996
Status: Available (was: Untriaged)
Summary: loman: rewrite manifest loading logic to use lib.git.Manifest (to support <include>) (was: depottool: minilayout regression)
ignore the minilayout.xml logic ... it's irrelevant here

loman has long had its own xml parsing logic for manifests and it has never supported the <include> directive.  in the past this didn't matter, but it broke about a year ago when the external_full.xml fragment was created.  no one really noticed since.

so this shows up when using an internal manifest and you try to cros_workon start an external project.  external manifest should be fine, as well as an internal projects.

the fix is to gut loman's ad-hoc Manifest implementation and switch to lib.git.Manifest instead.
Owner: gwendal@chromium.org
Status: Started (was: Available)
Project Member

Comment 3 by bugdroid1@chromium.org, Oct 10 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/chromite/+/f9d6d36884a299da02ed2cb031b83821a8131379

commit f9d6d36884a299da02ed2cb031b83821a8131379
Author: Gwendal Grignou <gwendal@chromium.org>
Date: Fri Sep 30 16:29:20 2016

loman: remove autoupdate from minilayout.xml

Given minilayout has not been used for a while, remove ability to
automatically migrate out of it.
It simplifes migration of loman manifest handling to lib/git XML
library.

BUG= chromium:651146 
TEST=Unit test.

Change-Id: I2d0bee59cf27ffb4384316be2ea938f88ba961b2
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/391237
Reviewed-by: Mike Frysinger <vapier@chromium.org>

[modify] https://crrev.com/f9d6d36884a299da02ed2cb031b83821a8131379/scripts/loman_unittest.py
[modify] https://crrev.com/f9d6d36884a299da02ed2cb031b83821a8131379/scripts/loman.py

Project Member

Comment 4 by bugdroid1@chromium.org, Oct 10 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/chromite/+/89afc0851eeac5c5a76cf72bd9ecd571e4501041

commit 89afc0851eeac5c5a76cf72bd9ecd571e4501041
Author: Gwendal Grignou <gwendal@chromium.org>
Date: Fri Sep 30 04:03:20 2016

loman: Add support for <include> in xml file

Use lib/git XML parser for parsing the main XML files.
Keep using standalone XML parser for local_manifest.
Add mock to increase unit test coverage.

BUG= chromium:651146 
TEST=Check minilayout work again in Cave branch.

Change-Id: I03b996d6c9b5eec2fd34c8f339ae6490686818fb
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/391311
Reviewed-by: Mike Frysinger <vapier@chromium.org>

[modify] https://crrev.com/89afc0851eeac5c5a76cf72bd9ecd571e4501041/scripts/loman_unittest.py
[modify] https://crrev.com/89afc0851eeac5c5a76cf72bd9ecd571e4501041/scripts/loman.py

Status: Fixed (was: Started)

Sign in to add a comment