Lifecycle: Check to see if prerequisite is already built. (#431)
Currently, if one specifies a part to be built, the lifecycle checks to see if that part has any dependencies. If so, it
immediately errors out if those dependencies are not in the list to be built. This commit checks to make sure the dependencies are not already built before erroring.
Currently the copy plugin copies all symlinks (using a hard link to them if possible). It should do its best to ensure symlinks will be valid when snapped, however, and follow the ones that aren't. This commit does a relatively conservative check for invalid symlinks. The symlink will be followed if any of the following conditions are true:
- The symlink is absolute.
- The symlink is pointing outside of the part's install
directory.
It's possible to still get broken symlinks into a snap using this plugin with certain special cases, but this should catch the majority of use-cases.
On github for instance, the https URL for a repo ends with .git: https://github.com/…/….git.
Detecting this pattern as source_type = 'git' enables us to support http{,s}
git repo distribution without having to mention it explicitely in snapcraft.yaml.
Currently the copy plugin can only be used for local assets and pulling down build- or stage-packages. With this commit, the copy plugin can also be used for remote sources with no build system.
This also means that the functionality contained within the tar-content plugin is now duplicated in the copy plugin, so this commit deprecated the tar-content plugin.