git: add subpackage for http(s)/ftp(s) commands 1000/head
authorLuiz Angelo Daros de Luca <luizluca@gmail.com>
Sun, 8 Mar 2015 08:46:46 +0000 (05:46 -0300)
committerLuiz Angelo Daros de Luca <luizluca@gmail.com>
Sat, 14 Mar 2015 17:47:43 +0000 (14:47 -0300)
This patch add a new package, git-http, that contains all
http related commands (and ftp as extra). All http/ftp
depends on libcurl. Even without SSL suport in libcurl,
git compiles and it returns an informative error only
at runtime.

The use of symlinks now are trigged using NO_INSTALL_HARDLINKS env
and not based only on Makefile patch.

imap-send was kept builtin and idependent of curl (just as it was
before)

Template files, which are not necessary, where removed.

Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
net/git/Makefile
net/git/patches/100-convert_builtin.patch
net/git/patches/400-imapsend_without_curl.patch [new file with mode: 0644]

index 30f8ebd5730e8221bf1954fc55bd0af676fb1719..6c3ac796e46d9055256d6337abf73ea024d5677b 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=git
 PKG_VERSION:=2.3.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/software/scm/git/
@@ -21,7 +21,7 @@ PKG_FIXUP:=autoreconf
 
 include $(INCLUDE_DIR)/package.mk
 
-define Package/git
+define Package/git/Default
   SECTION:=net
   CATEGORY:=Network
   SUBMENU:=Version Control Systems
@@ -31,18 +31,35 @@ define Package/git
   MAINTAINER:=Peter Wagner <tripolar@gmx.at>
 endef
 
+define Package/git
+$(call Package/git/Default)
+  DEPENDS:=+libopenssl +libpthread +librt
+  TITLE:=The fast version control system
+endef
+
 define Package/git/description
  Git is a free & open source, distributed version control system
  designed to handle everything from small to very large projects
  with speed and efficiency.
 endef
 
+define Package/git-http
+$(call Package/git/Default)
+  DEPENDS:=git +libcurl +ca-certificates
+  TITLE:=Git HTTP commands
+endef
+
+define Package/git-http/description
+$(call Package/git/description)
+
+ This package allows git push/fetch over http(s) and ftp(s)
+endef
+
 MAKE_FLAGS := \
        CC="$(TARGET_CC)" \
        CFLAGS="$(TARGET_CFLAGS)" \
        CPPFLAGS="$(TARGET_CPPFLAGS)" \
        LDFLAGS="$(TARGET_LDFLAGS)" \
-       NO_CURL="YesPlease" \
        NO_EXPAT="YesPlease" \
        NO_MKSTEMPS="YesPlease" \
        NO_GETTEXT="YesPlease" \
@@ -52,7 +69,11 @@ MAKE_FLAGS := \
        NO_NSEC="YesPlease" \
        NO_PERL="YesPlease" \
        NO_PYTHON="YesPlease" \
-       NO_TCLTK="YesPlease"
+       NO_TCLTK="YesPlease" \
+       NO_INSTALL_HARDLINKS="yes" \
+
+CONFIGURE_ARGS += \
+       --without-iconv \
 
 define Build/Configure
        $(MAKE) -C $(PKG_BUILD_DIR) \
@@ -62,9 +83,32 @@ define Build/Configure
 endef
 
 define Package/git/install
-       $(INSTALL_DIR) $(1)
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/git   $(1)/usr/bin
        $(RM) $(PKG_INSTALL_DIR)/usr/bin/git-cvsserver
-       $(CP) $(PKG_INSTALL_DIR)/* $(1)/
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/git-* $(1)/usr/bin
+       $(INSTALL_DIR) $(1)/usr/lib/git-core
+       ( cd $(PKG_INSTALL_DIR); $(TAR) \
+               --exclude=usr/lib/git-core/git-http-backend \
+               --exclude=usr/lib/git-core/git-http-fetch \
+               --exclude=usr/lib/git-core/git-remote-ftp \
+               --exclude=usr/lib/git-core/git-remote-ftps \
+               --exclude=usr/lib/git-core/git-remote-http \
+               --exclude=usr/lib/git-core/git-remote-https \
+               -cf - \
+               usr/lib/git-core \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/git-http/install
+       $(INSTALL_DIR) $(1)/usr/lib/git-core
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/git-core/git-http-backend $(1)/usr/lib/git-core
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/git-core/git-http-fetch $(1)/usr/lib/git-core
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/git-core/git-remote-ftp $(1)/usr/lib/git-core
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/git-core/git-remote-ftps $(1)/usr/lib/git-core
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/git-core/git-remote-http $(1)/usr/lib/git-core
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/git-core/git-remote-https $(1)/usr/lib/git-core
 endef
 
 $(eval $(call BuildPackage,git))
+$(eval $(call BuildPackage,git-http))
index 20199611c73856f8d1e9468776ee3d8f44383a42..52bebaa6ce07f895b54cae4652e711c7ef63b9c8 100644 (file)
 -PROGRAM_OBJS += show-index.o
 -PROGRAM_OBJS += upload-pack.o
 -PROGRAM_OBJS += remote-testsvn.o
-+PROGRAM_OBJS =
++PROGRAM_OBJS += http-backend.o
  
  # Binary suffix, set to .exe for Windows builds
  X =
-@@ -896,6 +887,12 @@ BUILTIN_OBJS += builtin/verify-commit.o
+@@ -896,6 +887,11 @@ BUILTIN_OBJS += builtin/verify-commit.o
  BUILTIN_OBJS += builtin/verify-pack.o
  BUILTIN_OBJS += builtin/verify-tag.o
  BUILTIN_OBJS += builtin/write-tree.o
 +BUILTIN_OBJS += builtin/daemon.o
 +BUILTIN_OBJS += builtin/fast-import.o
-+BUILTIN_OBJS += builtin/http-backend.o
 +BUILTIN_OBJS += builtin/imap-send.o
 +BUILTIN_OBJS += builtin/shell.o
 +BUILTIN_OBJS += builtin/upload-pack.o
@@ -51,7 +50,7 @@
  git-http-fetch$X: http.o http-walker.o http-fetch.o GIT-LDFLAGS $(GITLIBS)
        $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
                $(LIBS) $(CURL_LIBCURL)
-@@ -2254,24 +2247,22 @@ endif
+@@ -2254,10 +2247,11 @@ endif
        bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \
        execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \
        { test "$$bindir/" = "$$execdir/" || \
 +        for p in $(filter $(install_bindir_programs),$(ALL_PROGRAMS)); do \
                $(RM) "$$execdir/$$p" && \
                test -z "$(NO_INSTALL_HARDLINKS)$(NO_CROSS_DIRECTORY_HARDLINKS)" && \
--              ln "$$bindir/$$p" "$$execdir/$$p" 2>/dev/null || \
+               ln "$$bindir/$$p" "$$execdir/$$p" 2>/dev/null || \
 +              ln -s git "$$execdir/$$p" 2>/dev/null || \
                cp "$$bindir/$$p" "$$execdir/$$p" || exit; \
          done; \
        } && \
-       for p in $(filter $(install_bindir_programs),$(BUILT_INS)); do \
-               $(RM) "$$bindir/$$p" && \
-               test -z "$(NO_INSTALL_HARDLINKS)" && \
--              ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \
-               ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \
-               cp "$$bindir/git$X" "$$bindir/$$p" || exit; \
-       done && \
-       for p in $(BUILT_INS); do \
-               $(RM) "$$execdir/$$p" && \
-               test -z "$(NO_INSTALL_HARDLINKS)" && \
--              ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \
-               ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \
-               cp "$$execdir/git$X" "$$execdir/$$p" || exit; \
-       done && \
 --- a/builtin.h
 +++ b/builtin.h
-@@ -138,5 +138,11 @@ extern int cmd_verify_pack(int argc, con
+@@ -138,5 +138,10 @@ extern int cmd_verify_pack(int argc, con
  extern int cmd_show_ref(int argc, const char **argv, const char *prefix);
  extern int cmd_pack_refs(int argc, const char **argv, const char *prefix);
  extern int cmd_replace(int argc, const char **argv, const char *prefix);
 +extern int cmd_daemon(int argc, char **argv, const char *prefix);
 +extern int cmd_fast_import(int argc, char **argv, const char *prefix);
-+extern int cmd_http_backend(int argc, char **argv, const char *prefix);
 +extern int cmd_imap_send(int argc, char **argv, const char *prefix);
 +extern int cmd_shell(int argc, char **argv, const char *prefix);
 +extern int cmd_upload_pack(int argc, char **argv, const char *prefix);
 @@ -0,0 +1 @@
 +#include "../fast-import.c"
 --- /dev/null
-+++ b/builtin/http-backend.c
-@@ -0,0 +1 @@
-+#include "../http-backend.c"
---- /dev/null
 +++ b/builtin/imap-send.c
 @@ -0,0 +1 @@
 +#include "../imap-send.c"
        { "describe", cmd_describe, RUN_SETUP },
        { "diff", cmd_diff },
        { "diff-files", cmd_diff_files, RUN_SETUP | NEED_WORK_TREE },
-@@ -411,6 +412,8 @@ static struct cmd_struct commands[] = {
+@@ -411,6 +412,7 @@ static struct cmd_struct commands[] = {
        { "grep", cmd_grep, RUN_SETUP_GENTLY },
        { "hash-object", cmd_hash_object },
        { "help", cmd_help },
-+      { "http-backend", cmd_http_backend },
 +      { "imap-send", cmd_imap_send },
        { "index-pack", cmd_index_pack, RUN_SETUP_GENTLY },
        { "init", cmd_init_db, NO_SETUP },
        { "var", cmd_var, RUN_SETUP_GENTLY },
        { "verify-commit", cmd_verify_commit, RUN_SETUP },
        { "verify-pack", cmd_verify_pack },
---- a/http-backend.c
-+++ b/http-backend.c
-@@ -557,7 +557,7 @@ static struct service_cmd {
-       {"POST", "/git-receive-pack$", service_rpc}
- };
--int main(int argc, char **argv)
-+int cmd_http_backend(int argc, char **argv, const char *prefix)
- {
-       char *method = getenv("REQUEST_METHOD");
-       char *dir;
 --- a/imap-send.c
 +++ b/imap-send.c
 @@ -1484,7 +1484,7 @@ static int curl_append_msgs_to_imap(stru
diff --git a/net/git/patches/400-imapsend_without_curl.patch b/net/git/patches/400-imapsend_without_curl.patch
new file mode 100644 (file)
index 0000000..1b5dff3
--- /dev/null
@@ -0,0 +1,11 @@
+--- git-2.3.0/Makefile.old     2015-03-08 02:14:42.857845824 -0300
++++ git-2.3.0/Makefile 2015-03-08 02:15:06.697451372 -0300
+@@ -1039,7 +1039,7 @@
+       endif
+       curl_check := $(shell (echo 072200; curl-config --vernum) 2>/dev/null | sort -r | sed -ne 2p)
+       ifeq "$(curl_check)" "072200"
+-              USE_CURL_FOR_IMAP_SEND = YesPlease
++#             USE_CURL_FOR_IMAP_SEND = YesPlease
+       endif
+       ifdef USE_CURL_FOR_IMAP_SEND
+               BASIC_CFLAGS += -DUSE_CURL_FOR_IMAP_SEND