All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Fix compilation when NO_CURL is defined
@ 2007-10-15 23:48 Shawn O. Pearce
  2007-10-16  0:05 ` Johannes Schindelin
  0 siblings, 1 reply; 2+ messages in thread
From: Shawn O. Pearce @ 2007-10-15 23:48 UTC (permalink / raw)
  To: Junio C Hamano, Johannes Schindelin, Lars Hjemli; +Cc: git

From: Johannes Schindelin <Johannes.Schindelin@gmx.de>

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>
---

 I think this is a better version of Dscho's original attempt at
 making NO_CURL=YesPlease actually work again with the builtin
 fetch series.

 Makefile    |    6 +++---
 transport.c |   23 +++++++----------------
 2 files changed, 10 insertions(+), 19 deletions(-)

diff --git a/Makefile b/Makefile
index 62bdac6..40f10b7 100644
--- a/Makefile
+++ b/Makefile
@@ -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
 	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)
 	$(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
 
diff --git a/transport.c b/transport.c
index 6fe6ec8..46da754 100644
--- a/transport.c
+++ b/transport.c
@@ -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)
 	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
 	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,
 	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)
 	} 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)) {
-- 
1.5.3.4.1155.gfe96ee

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] Fix compilation when NO_CURL is defined
  2007-10-15 23:48 [PATCH] Fix compilation when NO_CURL is defined Shawn O. Pearce
@ 2007-10-16  0:05 ` Johannes Schindelin
  0 siblings, 0 replies; 2+ messages in thread
From: Johannes Schindelin @ 2007-10-16  0:05 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: Junio C Hamano, Lars Hjemli, git

Hi,

On Mon, 15 Oct 2007, Shawn O. Pearce wrote:

> From: Johannes Schindelin <Johannes.Schindelin@gmx.de>

Hehe, hardly ;-)

> 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>
> ---
> 
>  I think this is a better version of Dscho's original attempt at
>  making NO_CURL=YesPlease actually work again with the builtin
>  fetch series.
> 
>  Makefile    |    6 +++---
>  transport.c |   23 +++++++----------------
>  2 files changed, 10 insertions(+), 19 deletions(-)

Nice!

I like it.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2007-10-16  0:05 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-15 23:48 [PATCH] Fix compilation when NO_CURL is defined Shawn O. Pearce
2007-10-16  0:05 ` Johannes Schindelin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.