Comment 1 for bug 1668555

Revision history for this message
Jon Edvardsson (jonedv) wrote :

I've just hit this bug when snapping a project. Part1 works fine, but part2 fails with RecursionError.

    parts:
      part1:
        plugin: dump
        source: src
        organize:
          lib: lib2

      part2:
        plugin: dump
        source: src
        organize:
          lib: lib/lib

When investigating this I came a cross another odd behavior: the organize section seems to be applied in the stage step and not in the install step.

    $ snapcraft clean && snapcraft build part1
    Cleaning up priming area
    Cleaning up staging area
    Cleaning up parts directory
    Preparing to pull part1
    Pulling part1
    Preparing to build part1
    Building part1
    $ find parts stage -type f
    parts/part1/src/lib/hello.txt
    parts/part1/state/pull
    parts/part1/state/build
    parts/part1/build/lib/hello.txt
    parts/part1/install/lib/hello.txt

Note the directory install/lib. I would expect it to be install/lib2 after build.

    $ snapcraft clean && snapcraft stage part1
    Cleaning up priming area
    Cleaning up staging area
    Cleaning up parts directory
    Preparing to pull part1
    Pulling part1
    Preparing to build part1
    Building part1
    Staging part1
    $ find parts stage -type f
    parts/part1/src/lib/hello.txt
    parts/part1/state/pull
    parts/part1/state/build
    parts/part1/state/stage
    parts/part1/build/lib/hello.txt
    parts/part1/install/lib2/hello.txt
    stage/lib2/hello.txt

Now, after staging the install dir has been renamed to install/lib2. This can't be right that stage modifies what is produced when building parts. However, the effect is that stage/lib2 comes out ok.

When staging part2 snapcraft fails with a RecursionError.

    $ snapcraft clean && snapcraft stage part2
    Cleaning up priming area
    Cleaning up staging area
    Cleaning up parts directory
    Preparing to pull part2
    Pulling part2
    Preparing to build part2
    Building part2
    Staging part2
    Traceback (most recent call last):
      File "/usr/bin/snapcraft", line 9, in <module>
        load_entry_point('snapcraft==2.34', 'console_scripts', 'snapcraft')()
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point
        return get_distribution(dist).load_entry_point(group, name)
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point
        return ep.load()
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2229, in load
        return self.resolve()
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2235, in resolve
    ... trace removed ...
      File "/usr/lib/python3.5/os.py", line 416, in walk
        new_path = join(top, dirname)
      File "/usr/lib/python3.5/posixpath.py", line 76, in join
        sep = _get_sep(a)
    RecursionError: maximum recursion depth exceeded