Browse Source

Fix compilation when NO_CURL is defined

There were a few places which did not cope well without curl.  This
fixes all of them.  We still need to link against the walker.o part
of the library as some parts of transport.o still call into there
even though we don't have HTTP support enabled.

If compiled with NO_CURL=1 we now get the following useful error
message:

  $ git-fetch http://www.example.com/git
  error: git was compiled without libcurl support.
  fatal: Don't know how to fetch from http://www.example.com/git

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
maint
Johannes Schindelin 17 years ago committed by Shawn O. Pearce
parent
commit
ccfc02a300
  1. 6
      Makefile
  2. 23
      transport.c

6
Makefile

@ -310,7 +310,7 @@ LIB_OBJS = \ @@ -310,7 +310,7 @@ LIB_OBJS = \
alloc.o merge-file.o path-list.o help.o unpack-trees.o $(DIFF_OBJS) \
color.o wt-status.o archive-zip.o archive-tar.o shallow.o utf8.o \
convert.o attr.o decorate.o progress.o mailmap.o symlinks.o remote.o \
transport.o bundle.o
transport.o bundle.o walker.o

BUILTIN_OBJS = \
builtin-add.o \
@ -528,7 +528,7 @@ else @@ -528,7 +528,7 @@ else
endif
BUILTIN_OBJS += builtin-http-fetch.o
EXTLIBS += $(CURL_LIBCURL)
LIB_OBJS += http.o walker.o http-walker.o
LIB_OBJS += http.o http-walker.o
curl_check := $(shell (echo 070908; curl-config --vernum) | sort -r | sed -ne 2p)
ifeq "$(curl_check)" "070908"
ifndef NO_EXPAT
@ -905,7 +905,7 @@ git-http-push$X: revision.o http.o http-push.o $(GITLIBS) @@ -905,7 +905,7 @@ git-http-push$X: revision.o http.o http-push.o $(GITLIBS)
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
$(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)

$(LIB_OBJS) $(BUILTIN_OBJS) walker.o: $(LIB_H)
$(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H)
$(patsubst git-%$X,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h)
$(DIFF_OBJS): diffcore.h


23
transport.c

@ -1,7 +1,9 @@ @@ -1,7 +1,9 @@
#include "cache.h"
#include "transport.h"
#include "run-command.h"
#ifndef NO_CURL
#include "http.h"
#endif
#include "pkt-line.h"
#include "fetch-pack.h"
#include "walker.h"
@ -368,6 +370,7 @@ static int disconnect_walker(struct transport *transport) @@ -368,6 +370,7 @@ static int disconnect_walker(struct transport *transport)
return 0;
}

#ifndef NO_CURL
static int curl_transport_push(struct transport *transport, int refspec_nr, const char **refspec, int flags) {
const char **argv;
int argc;
@ -400,7 +403,6 @@ static int curl_transport_push(struct transport *transport, int refspec_nr, cons @@ -400,7 +403,6 @@ static int curl_transport_push(struct transport *transport, int refspec_nr, cons
return !!err;
}

#ifndef NO_CURL
static int missing__target(int code, int result)
{
return /* file:// URL -- do we ever use one??? */
@ -504,21 +506,6 @@ static int fetch_objs_via_curl(struct transport *transport, @@ -504,21 +506,6 @@ static int fetch_objs_via_curl(struct transport *transport,
return fetch_objs_via_walker(transport, nr_objs, to_fetch);
}

#else

static struct ref *get_refs_via_curl(const struct transport *transport)
{
die("Cannot fetch from '%s' without curl ...", transport->url);
return NULL;
}

static int fetch_objs_via_curl(struct transport *transport,
int nr_objs, struct ref **to_fetch)
{
die("Cannot fetch from '%s' without curl ...", transport->url);
return -1;
}

#endif

struct bundle_transport_data {
@ -733,9 +720,13 @@ struct transport *transport_get(struct remote *remote, const char *url) @@ -733,9 +720,13 @@ struct transport *transport_get(struct remote *remote, const char *url)
} else if (!prefixcmp(url, "http://")
|| !prefixcmp(url, "https://")
|| !prefixcmp(url, "ftp://")) {
#ifdef NO_CURL
error("git was compiled without libcurl support.");
#else
ret->get_refs_list = get_refs_via_curl;
ret->fetch = fetch_objs_via_curl;
ret->push = curl_transport_push;
#endif
ret->disconnect = disconnect_walker;

} else if (is_local(url) && is_file(url)) {

Loading…
Cancel
Save