Hi all,
My team and I are trying to use SwiftPM to develop a relatively complex app
with multiple dependencies, all of which are being developed locally and in
parallel. The reason for this is compatibility with an existing module/import
structure used by our iOS app. Maybe I’m doing something very wrong but my
experience so far (2 months in) is that this is extremely difficult with
SwiftPM.
What I’d love to be able to do is to just run `git add submodule
http://blah.com/mysubmodule.git` <http://blah.com/mysubmodule.git%60> in the
Packages subdirectory and SwiftPM would just let me manage dependencies from
there myself.
I was excited to see that SwiftPM 4 has a "Top of Tree" development option for
this purpose. So far my experience with this has not been good. Firstly because
SwiftPM still unnecessarily tries to clone my repos itself (some of which are
huge), and secondly because this creates an absolute path dependency in
`.build/dependencies-state.json`, meaning this setup isn’t sharable within our
dev team.
Attempting this with "local" git urls adds an almost absurd level of
complexity, having to tag each commit for SwiftPM to build. The fact that we'd
need to make a commit to test whether the project even builds is insane enough
as is, let alone the tagging and trying to tell the base project to use a newer
minor version etc etc.
Adding multiple subtargets is also not an option because the dependencies (as
dynamic libraries) really are shared between multiple targets/sub-dependencies,
which SwiftPM seems to deal with quite well.
tldr; *Please* let us manage dependencies ourselves. It’d be so easy if
Package.swift had an option along the lines of .Package.local(named: "XYZ")
that it then looked for in ./Packages/XYZ. Again, maybe I’m overlooking
something but this seems like an obvious and vital option to have. It’d also
simplify the introductory SwiftPM docs significantly.
Is anyone else having this issue? Would this change really be as simple and
painless as it sounds? I would be prepared to make a pull request along these
lines.
Best Regards,
Geordie
PS. In SwiftPM 3 we had been using a hack that worked great: by filling in the
dependencies' "basedOn" key in `workspace-state.json`, SwiftPM just left us
alone.. We were able to commit `workspace-state.json` into our base project’s
git repo and the rest Just Worked™. Now with the absolute paths being checked
for this doesn’t seem to be an option.
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users