I've inherited a project that has a codebase in src/
, but it also has precompiled binaries of dependency software in bin/
. I would like to move away from having precompiled software as part of our repository, since (1) it doesn't work for all users and (2) they won't be updated when the source code of their own repo changes.
I have two options:
- Use
git submodule
to have the source code of the dependency projects present in my repository in a way that keeps them updated. I like this idea, however it requires users to have to build not only our project but the external ones as well. Additionally, I'm not sure where to put the external projects. I'm thinkingexternal/
as suggested by the PFL - Require the users to build the dependencies themselves. This option keeps our repository and may be less confusing to users (who already submit issues to our repo when dependency software is failing). This is a minor gain since its not really a big deal to tend to these.
It seems to me like option 1 is the clear winner, however another post suggests otherwise. Am I missing something? What do people usually do in practice?
-
2Why don't those precompiled binaries don't work for all users? Why can't the update process for those binaries not automated? And is it necessary to get each update to the "dependendent" software source code automatically? Having precompiled binaries in a repo for libs which don't change too often is a well-known approach to keep the build times reasonable, I would think twice before throwing that over board.Doc Brown– Doc Brown2020年02月01日 12:54:16 +00:00Commented Feb 1, 2020 at 12:54
-
The binaries don’t work for all users because we don’t have them for all OS types, just Debian and OS X. I suppose the obvious solution here is to make them for all OS types... Also one of the packages is a lib that is currently under development so it is changing frequently.Throckmorton– Throckmorton2020年02月01日 16:27:11 +00:00Commented Feb 1, 2020 at 16:27
-
1I am not an expert on git and submodules, but I guess option 1 and keeping the binaries in the repo are not mutually exclusive.Doc Brown– Doc Brown2020年02月02日 17:30:43 +00:00Commented Feb 2, 2020 at 17:30
-
1Are these external dependencies used in other projects, or just this one? Are these external dependencies open source or just available to people in your organization?Greg Burghardt– Greg Burghardt2020年02月10日 15:06:27 +00:00Commented Feb 10, 2020 at 15:06
-
If a developer on Windows is not able to build one of the dependencies, what do they do? They probably can't even run the binaries either, right? So what good is the entire code base to a developer running Windows?Greg Burghardt– Greg Burghardt2020年02月12日 19:57:07 +00:00Commented Feb 12, 2020 at 19:57