Re: [PATCH 1/2] Add expat and expat-devel dependencies (for http-push) to RPM spec.
From: Linus Torvalds <torvalds@osdl.org>
Date: 2016-06-15 22:42:11
On Sun, 13 Nov 2005, Andreas Ericsson wrote:
This would get rid of expat and curl dependencies. ssh, rsync and git protocols use external programs so they aren't exactly required (from the rpm point of view anyways, they'll just fail if rsync or ssh isn't installed).
Actually, the "git://" protocol (and local filesystem ones) doesn't need any external programs. So if you just want to follow another repository, you can do so even without ssh or rsync installed. But yes, the nice thing about ssh(+git):// and rsync:// is that since we don't link against them or depend on them in general, you can certainly install git without having them, and don't need to make a dependency of it. If there's some way to "suggest" ssh when installing git, that would be good, but I don't think rpm has that. And if somebody doesn't have ssh installed, they probably don't have a network, so maybe even that is unnecessary. So depending on the curl _program_ would fall under the same harmless case as depending on ssh and rsync, but the thing is, we depend on it as a library, which is why we should split things up.
Moving out the {cvs,arch,svn}-import scripts made sense because they
were only faintly related to git day-to-day operations and forced some
really ridiculous dependencies down users throats (git requiring
subversion was a funny one...).Yes. NOTE! Git does actually require the "merge" program, which sometimes comes with the diff3 package, and more often comes with rcs. As with ssh and rsync, it's an external program and only really required if you do development (you can fast-forward something that you're only tracking read-only without it), so in theory you don't absolutely need it, but we do have a dependency on RCS right now due to that. Which is a bit strange, and sometimes wrong (the same machine that doesn't have curl installed also doesn't have rcs installed, but I compile git on it anyway, and it works fine, since I use that machine only as a backup thing to receive git packs - in case kernel.org goes down _and_ all my home machines magically turn into pumpkins, I'll still have another site I can get my git repos from).
While we're on the subject of confusing; How about not naming non-core packages git-core? It feels wrong to have git-core-http, git-core-cvs and git-core-svn since they, strictly speaking, aren't required for core operations.
Yeah, that "git-core-xxx" thing is a bit strange, but on the other hand, it does make it clear that they all come from the same SRPM (the "git-core" SRPM) so in the end I think it's actually a good idea. Linus