[package] update and optimize git package
authorFlorian Fainelli <florian@openwrt.org>
Sun, 28 Nov 2010 18:02:17 +0000 (18:02 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Sun, 28 Nov 2010 18:02:17 +0000 (18:02 +0000)
this patch updates the git package to 1.7.3.2 and does two
optimizations to shrink the package size from 45MB to 590KB:

- create symlinks instead of hardlinks when installing (hardlinks get
lost when copying)
- convert the last six non built in tools to built ins

Patch from Bastian Pranzas

SVN-Revision: 24175

net/git/Makefile
net/git/patches/001-convert_builtin.patch [new file with mode: 0644]

index fdc7b28..54167da 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=git
-PKG_VERSION:=1.6.5.6
+PKG_VERSION:=1.7.3.2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@KERNEL/software/scm/git
-PKG_MD5SUM:=03aefaaecae7a236b88d04d1a83698d9
+PKG_MD5SUM:=902f7f07a789fedc0d2ac03656b85969
 
 PKG_INSTALL:=1
 
@@ -24,7 +24,7 @@ define Package/git
   SECTION:=net
   CATEGORY:=Network
   SUBMENU:=Version Control Systems
-  DEPENDS:=+libopenssl +dropbear +libpthread
+  DEPENDS:=+libopenssl +libpthread
   TITLE:=The fast version control system
   URL:=http://git-scm.com
 endef
@@ -49,6 +49,7 @@ MAKE_FLAGS := \
        NO_CURL="YesPlease" \
        NO_TCLTK="YesPlease" \
        NO_MKSTEMPS="YesPlease" \
+       NO_PYTHON="YesPlease" \
 
 define Build/Configure
        $(MAKE) -C $(PKG_BUILD_DIR) \
diff --git a/net/git/patches/001-convert_builtin.patch b/net/git/patches/001-convert_builtin.patch
new file mode 100644 (file)
index 0000000..65a1b41
--- /dev/null
@@ -0,0 +1,235 @@
+diff -Nur git-1.7.3.2-orig/builtin/daemon.c git-1.7.3.2/builtin/daemon.c
+--- git-1.7.3.2-orig/builtin/daemon.c  1970-01-01 01:00:00.000000000 +0100
++++ git-1.7.3.2/builtin/daemon.c       2010-11-17 12:30:47.977921001 +0100
+@@ -0,0 +1 @@
++#include "../daemon.c"
+diff -Nur git-1.7.3.2-orig/builtin/fast-import.c git-1.7.3.2/builtin/fast-import.c
+--- git-1.7.3.2-orig/builtin/fast-import.c     1970-01-01 01:00:00.000000000 +0100
++++ git-1.7.3.2/builtin/fast-import.c  2010-11-17 12:30:47.977921001 +0100
+@@ -0,0 +1 @@
++#include "../fast-import.c"
+diff -Nur git-1.7.3.2-orig/builtin/http-backend.c git-1.7.3.2/builtin/http-backend.c
+--- git-1.7.3.2-orig/builtin/http-backend.c    1970-01-01 01:00:00.000000000 +0100
++++ git-1.7.3.2/builtin/http-backend.c 2010-11-17 12:30:47.977921001 +0100
+@@ -0,0 +1 @@
++#include "../http-backend.c"
+diff -Nur git-1.7.3.2-orig/builtin/imap-send.c git-1.7.3.2/builtin/imap-send.c
+--- git-1.7.3.2-orig/builtin/imap-send.c       1970-01-01 01:00:00.000000000 +0100
++++ git-1.7.3.2/builtin/imap-send.c    2010-11-17 12:30:47.977921001 +0100
+@@ -0,0 +1 @@
++#include "../imap-send.c"
+diff -Nur git-1.7.3.2-orig/builtin/shell.c git-1.7.3.2/builtin/shell.c
+--- git-1.7.3.2-orig/builtin/shell.c   1970-01-01 01:00:00.000000000 +0100
++++ git-1.7.3.2/builtin/shell.c        2010-11-17 12:30:47.977921001 +0100
+@@ -0,0 +1 @@
++#include "../shell.c"
+diff -Nur git-1.7.3.2-orig/builtin/upload-pack.c git-1.7.3.2/builtin/upload-pack.c
+--- git-1.7.3.2-orig/builtin/upload-pack.c     1970-01-01 01:00:00.000000000 +0100
++++ git-1.7.3.2/builtin/upload-pack.c  2010-11-17 12:30:47.977921001 +0100
+@@ -0,0 +1 @@
++#include "../upload-pack.c"
+diff -Nur git-1.7.3.2-orig/builtin.h git-1.7.3.2/builtin.h
+--- git-1.7.3.2-orig/builtin.h 2010-10-22 05:49:16.000000000 +0200
++++ git-1.7.3.2/builtin.h      2010-11-17 12:30:47.977921001 +0100
+@@ -139,5 +139,11 @@
+ 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_shell(int argc, char **argv, const char *prefix);
++extern int cmd_upload_pack(int argc, char **argv, const char *prefix);
++extern int cmd_http_backend(int argc, char **argv, const char *prefix);
++extern int cmd_daemon(int argc, char **argv, const char *prefix);
++extern int cmd_imap_send(int argc, char **argv, const char *prefix);
++extern int cmd_fast_import(int argc, const char **argv, const char *prefix);
+ #endif
+diff -Nur git-1.7.3.2-orig/daemon.c git-1.7.3.2/daemon.c
+--- git-1.7.3.2-orig/daemon.c  2010-10-22 05:49:16.000000000 +0200
++++ git-1.7.3.2/daemon.c       2010-11-17 12:30:47.977921001 +0100
+@@ -963,7 +963,7 @@
+       return service_loop(socknum, socklist);
+ }
+-int main(int argc, char **argv)
++int cmd_daemon(int argc, char **argv, const char *prefix)
+ {
+       int listen_port = 0;
+       char *listen_addr = NULL;
+diff -Nur git-1.7.3.2-orig/fast-import.c git-1.7.3.2/fast-import.c
+--- git-1.7.3.2-orig/fast-import.c     2010-10-22 05:49:16.000000000 +0200
++++ git-1.7.3.2/fast-import.c  2010-11-17 12:30:47.977921001 +0100
+@@ -2912,7 +2912,7 @@
+               read_marks();
+ }
+-int main(int argc, const char **argv)
++int cmd_fast_import(int argc, const char **argv, const char *prefix)
+ {
+       unsigned int i;
+diff -Nur git-1.7.3.2-orig/git.c git-1.7.3.2/git.c
+--- git-1.7.3.2-orig/git.c     2010-10-22 05:49:16.000000000 +0200
++++ git-1.7.3.2/git.c  2010-11-17 12:30:47.977921001 +0100
+@@ -240,11 +240,11 @@
+ struct cmd_struct {
+       const char *cmd;
+-      int (*fn)(int, const char **, const char *);
++      int (*fn)(int, char **, const char *);
+       int option;
+ };
+-static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
++static int run_builtin(struct cmd_struct *p, int argc, char **argv)
+ {
+       int status, help;
+       struct stat st;
+@@ -293,7 +293,7 @@
+       return 0;
+ }
+-static void handle_internal_command(int argc, const char **argv)
++static void handle_internal_command(int argc, char **argv)
+ {
+       const char *cmd = argv[0];
+       static struct cmd_struct commands[] = {
+@@ -405,6 +405,12 @@
+               { "verify-pack", cmd_verify_pack },
+               { "show-ref", cmd_show_ref, RUN_SETUP },
+               { "pack-refs", cmd_pack_refs, RUN_SETUP },
++              { "shell", cmd_shell },
++              { "upload-pack", cmd_upload_pack },
++              { "http-backend", cmd_http_backend },
++              { "daemon", cmd_daemon },
++              { "imap-send", cmd_imap_send },
++              { "fast-import", cmd_fast_import },
+       };
+       int i;
+       static const char ext[] = STRIP_EXTENSION;
+diff -Nur git-1.7.3.2-orig/http-backend.c git-1.7.3.2/http-backend.c
+--- git-1.7.3.2-orig/http-backend.c    2010-10-22 05:49:16.000000000 +0200
++++ git-1.7.3.2/http-backend.c 2010-11-17 12:30:47.977921001 +0100
+@@ -542,7 +542,7 @@
+       {"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;
+diff -Nur git-1.7.3.2-orig/imap-send.c git-1.7.3.2/imap-send.c
+--- git-1.7.3.2-orig/imap-send.c       2010-10-22 05:49:16.000000000 +0200
++++ git-1.7.3.2/imap-send.c    2010-11-17 12:30:47.977921001 +0100
+@@ -1528,7 +1528,7 @@
+       return 0;
+ }
+-int main(int argc, char **argv)
++int cmd_imap_send(int argc, char **argv, const char *prefix)
+ {
+       struct msg_data all_msgs, msg;
+       struct store *ctx = NULL;
+diff -Nur git-1.7.3.2-orig/Makefile git-1.7.3.2/Makefile
+--- git-1.7.3.2-orig/Makefile  2010-10-22 05:49:16.000000000 +0200
++++ git-1.7.3.2/Makefile       2010-11-17 12:46:11.309922603 +0100
+@@ -398,12 +398,7 @@
+ # ... and all the rest that could be moved out of bindir to gitexecdir
+ PROGRAMS += $(EXTRA_PROGRAMS)
+-PROGRAM_OBJS += fast-import.o
+-PROGRAM_OBJS += imap-send.o
+-PROGRAM_OBJS += shell.o
+ PROGRAM_OBJS += show-index.o
+-PROGRAM_OBJS += upload-pack.o
+-PROGRAM_OBJS += http-backend.o
+ PROGRAMS += $(patsubst %.o,git-%$X,$(PROGRAM_OBJS))
+@@ -750,6 +745,12 @@
+ BUILTIN_OBJS += builtin/verify-pack.o
+ BUILTIN_OBJS += builtin/verify-tag.o
+ BUILTIN_OBJS += builtin/write-tree.o
++BUILTIN_OBJS += builtin/shell.o
++BUILTIN_OBJS += builtin/upload-pack.o
++BUILTIN_OBJS += builtin/http-backend.o
++BUILTIN_OBJS += builtin/daemon.o
++BUILTIN_OBJS += builtin/imap-send.o
++BUILTIN_OBJS += builtin/fast-import.o
+ GITLIBS = $(LIB_FILE) $(XDIFF_LIB)
+ EXTLIBS =
+@@ -1244,10 +1245,9 @@
+ EXTLIBS += -lz
+ ifndef NO_POSIX_ONLY_PROGRAMS
+-      PROGRAM_OBJS += daemon.o
+ endif
+ ifndef NO_OPENSSL
+-      OPENSSL_LIBSSL = -lssl
++      EXTLIBS += -lssl
+       ifdef OPENSSLDIR
+               BASIC_CFLAGS += -I$(OPENSSLDIR)/include
+               OPENSSL_LINK = -L$(OPENSSLDIR)/$(lib) $(CC_LD_DYNPATH)$(OPENSSLDIR)/$(lib)
+@@ -1919,10 +1919,6 @@
+ git-%$X: %.o $(GITLIBS)
+       $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
+-git-imap-send$X: imap-send.o $(GITLIBS)
+-      $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
+-              $(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL)
+-
+ git-http-fetch$X: revision.o http.o http-walker.o http-fetch.o $(GITLIBS)
+       $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
+               $(LIBS) $(CURL_LIBCURL)
+@@ -2120,23 +2116,22 @@
+       bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \
+       execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \
++      ln -s ../../bin/git "$$execdir/git" && \
+       { test "$$bindir/" = "$$execdir/" || \
+-        for p in git$X $(filter $(install_bindir_programs),$(ALL_PROGRAMS)); do \
++        for p in $(filter $(install_bindir_programs),$(ALL_PROGRAMS)); do \
+               $(RM) "$$execdir/$$p" && \
+               test -z "$(NO_CROSS_DIRECTORY_HARDLINKS)" && \
+-              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" && \
+-              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" && \
+-              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 && \
+diff -Nur git-1.7.3.2-orig/shell.c git-1.7.3.2/shell.c
+--- git-1.7.3.2-orig/shell.c   2010-10-22 05:49:16.000000000 +0200
++++ git-1.7.3.2/shell.c        2010-11-17 12:30:47.981921001 +0100
+@@ -45,7 +45,7 @@
+       { NULL },
+ };
+-int main(int argc, char **argv)
++int cmd_shell(int argc, char **argv, const char *prefix)
+ {
+       char *prog;
+       struct commands *cmd;
+diff -Nur git-1.7.3.2-orig/upload-pack.c git-1.7.3.2/upload-pack.c
+--- git-1.7.3.2-orig/upload-pack.c     2010-10-22 05:49:16.000000000 +0200
++++ git-1.7.3.2/upload-pack.c  2010-11-17 12:30:47.981921001 +0100
+@@ -676,7 +676,7 @@
+       }
+ }
+-int main(int argc, char **argv)
++int cmd_upload_pack(int argc, char **argv, const char *prefix)
+ {
+       char *dir;
+       int i;