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:

  1. 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 thinking external/ as suggested by the PFL
  2. 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?

  • 2
    Why 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
    Commented 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. Commented Feb 1, 2020 at 16:27
  • 1
    I 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
    Commented Feb 2, 2020 at 17:30
  • 1
    Are 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? Commented 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? Commented Feb 12, 2020 at 19:57


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.