Open msva opened 9 years ago
Howdy,
thanks for taking the time to think about this and raise an issue...
1) that's by design, because bootstrap takes care to use the exact gnulib hash that the lyaml source checkout has been tested against -- and --skip-git is there if you are sure you know you want to bypass that care; 2) I'm not convinced, the slingshot repo is tiny, and consequently easy and fast to use as a submodule, gnulib on the other hand is gigantic, especially when you also checkout the history - hence gnulib-srcdir allows you to set up a local gnulib repo (even from a different project's submodule gnulib) for bootstrap using projects to clone from instead of clogging up the network. slingshot, by comparison is barely a gnat!
You might be able to convince me with some benchmarks and a patch though :-)
Cheers, Gary
2) yeah, slingshot repo is tiny, but the problem is in impossibility of offline-installation (with fetching both slingshot and package sources in advance) ;)
// Also, you have not .gitmodules in, for example, luaposix
, so there is actually no submodules there, until ./bootstrap
do some magic, so package manager can't prefetch them before the build ;)
Well .gitmodules format is amazingly simple:
[submodule "foo"]
path=subdirectoryname
url=git://github.com/projectowner/projectname.git
...and repeat for each module.
All that bootstrap
does is see what modules are needed (gnulib and slingshot in the case of luaposix) and then call:
git submodule init -- foo
git submodule update -- foo
for each module. No magic required :)
well, as I previously said, repos are fetching in distfiles as bare repos, and touching anything there manually is prohibited by the policy. But I'll try to search for some dirty hooks for adding submodules without .gitmodules in the repo...
Sorry for the delay... busy week!
Ah yes, I keep forgetting about your non-networked install requirement... so, if I simply commit the .gitmodules file in bootstrap using projects until I find the time to migrate to a new build system, will that solve your problems?
Actually, yes, it will solve (although, I'll test it tomorrow or a day after), but it will also trigger to double-fetch gnulib and ignore system-wide installed one (although, AFAIR, it anyway behaviour recommended by you, since even bleeding egde gnulib can be either too old or too new) ;)
you needn't double fetch, you just need to have a (possibly shared) git checkout of gnulib, and then use --gnulib-src to point each bootstrap using project at that shared checkout... that will cause the local copy in the bootstrapped project to use the already checked out gnulib rather than hitting the network for another copy.
Anyway, let me know if your testing reveals that it would be helpful for me to check in the .gitmodules files, and what projects you'd like me to do that for.
Hi, @gvvaughan!
Sorry, that it is still not a Pull Request, buy an issue, but for now I have ideas about "what" to do, but still not "how" ;)
So,
1) it is already
--gnulib-srcdir
switch forbootstrap
. But it has an issue, that until user specifies--skip-git
it (bootstrap
) wants thatsrcdir
should be a git repo, despite thatsrcdir
is completely gnulib dir even without it.2) I think, it will also be nice to have same switch for slingshot dir (to be able to install it system-wide and then use it to build&install packages using it.