From b9bfc7684b94bf052203034cbddfdf01e26205e5 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sat, 9 Jun 2012 17:33:08 +0100 Subject: [PATCH 1/3] pre-compiled sha1ppc.S.obj file with nasty CMake hack instructions as the cross-compile process refuses to build and link this file itself. --- CMakeLists.txt | 2 +- README.amiga | 4 ++++ src/ppc/sha1ppc.S.obj | Bin 0 -> 4471 bytes 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100755 README.amiga create mode 100644 src/ppc/sha1ppc.S.obj diff --git a/CMakeLists.txt b/CMakeLists.txt index 041553fd0..d245109bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ STRING(REGEX REPLACE "^.*LIBGIT2_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" SET(LIBGIT2_VERSION_STRING "${LIBGIT2_VERSION_MAJOR}.${LIBGIT2_VERSION_MINOR}.${LIBGIT2_VERSION_REV}") # Uncomment out the line below to use PowerPC SHA1 -#SET(SHA1_TYPE "ppc") +SET(SHA1_TYPE "ppc") # Find required dependencies INCLUDE_DIRECTORIES(src include deps/http-parser) diff --git a/README.amiga b/README.amiga new file mode 100755 index 000000000..97414dda2 --- /dev/null +++ b/README.amiga @@ -0,0 +1,4 @@ +Nasty build hack: +When setting SHA1 to ppc in CMakeLists.txt, after running initial CMake, +copy src/ppc/sha1ppc.S.obj to build/CMakeFiles/git2.dir/src/ppc/ +Add CMakeFiles/git2.dir/src/ppc/sha1ppc.S.obj to the list in build/CMakeFiles/git2.dir/link.txt diff --git a/src/ppc/sha1ppc.S.obj b/src/ppc/sha1ppc.S.obj new file mode 100644 index 0000000000000000000000000000000000000000..a7dad600fee80b062086f352aa62b87b1755e7ac GIT binary patch literal 4471 zcma)=L1-M;8ONU$(Qct&8Rnpp9Aq%mD}s?i3S(o;Vv-_;QdAMGL6_KT2aHUUAn7o1 zXLc*qml#7q=u*>zBjVBu48h<-)P|}eY(WPfL{TX%LD0}W|Nrm%wuyRZ z1*>@)y*E3*|NDOP-fr*JAN}yy$gwp1IhHcCzjk8G{`ImBr_;C7=*Gz}KltdqH2V9i zDOJCF?l-H~QaXQcVXgPCFUr+hX|(s}&&%F#KPy+?PmRm>-}zPV-G7#=AE)p37XMyW z{e`SLoGI($GkMh?$>v+9FU&WeUa0yvvnowytDmMZp05U-tWL9KJvEzGgOTjD9rP>E zZ?L9*YoiH$MzXrGnAHyl$Z1;pq#n^`Bm-8@H|BsWi^>b#p1JTX|XS=Xu@4 z`zG`opkH&{`n{4~;Q6}1eeAT#>ho4!7w9*E_idnGao74?OA|a_^>H8M$c}PsTEAQA zlyTfPjvpN5*s^}_r_;u33<$~bTzDJ?nQWX`ZUVL*qDilw;rey^_uw$95);8@r|Mw*{UXch%{iGw4nuL(iZ+jWNn#Nf~tK$ciz@pgU)IFoW(KGDHUF@4fjq=FpzQ zIP|-G|Fiex+hI|5myNkf7tyv{m_>Ja%W^>$?PYSUA&0rLyJ5Ul!q^SVggJCKkR#Zc zLwkcvsQZbR%I+g$tvL3P<)I87ZCg#C4%&~%gZgisE4v5AStX1;uq?!Xfc(JB8fYJo z13vEHo}U?Gl`!_1@?KgXFFXNnO;0ed9=anbLu6X4L=9Ij0gp8PLIpVx@r0Va9mwp5<{Rm$Ap*CwBepG{f@yZS7l^f10 zH=LJl)D3t6-Wpy6FTDs}dZ9KwhZl7dPH=wdg!9S?=amyNzjUHlwE3kE&MP0BS3Wo| zeW?0yf%Oa*f|o7?FI@;;dQc5+T0OJ=omchmysCfaW&PI;)IWGx|G~@p4_?-P@T&fs zsDJXZ{)3nGAH1yp;AQ<6>&DCam$ScoUNubzf|(8kGaR^l{}2DD`taazCZ`AFQwH$B zGQjfy9z+Ihd4PK1dOO$z|7xd1U8Vm=72Sx9bMHn3&4x1$kBT@WL{| z_25NhVqT#BxgIy+M=Q_e2e_Gy{7^Qy9{uoa%nx(DF0iicw6KO4JDry&s)-!uk*Vin zp5Q+5tgHI)1-a0d$c4T{F7zdGF<&B=J>?>AJQsQ6xyT#O#k`4J;16=4KamUliCpMU zo{RkQT;!MMVtz#~@C>!^`A{X;4a#>R@^38LRZ=Q>M z^IXig$mO=>Lhm9MdKbCSyU0b};XYL_@Q=B`zhN$LZ zXQ~B^<$C3{AkUmv`?x;*0x$gvUanWcOTU7bepQ1-@yaXbl~>Lyubfx=w+4Iyul8=v ztG%1^YVYQ}+P5{~5qRa1^U5RVl}FAikBT*WCUCuSUiss^^2d4UPt}Jv>rz!+GV0 z^U9B6OT6;JdF6%k$_wYE7gZlVfR{c5FMSAJx)8i{A-|Pc)nHr9^f#D;m&dw+ng^qO z{-h&wLq4+AP1HD;>~kmok9v0=xm@gvfzP9uvtfPW-g{rZl=VJ2m-RlnnDu^LWWArw zWf#-aTYtpo@DK5MJU^LcfBf?_kCCk&D_7E)&hql` zWB>orcpiQDy}-A;FTN2te$U%H#CHZKz5Sg1@AzNrIQ$*`zK=5vy#80e6aVSMYv_6} zvgJQ Date: Sat, 9 Jun 2012 18:13:07 +0100 Subject: [PATCH 2/3] Fix gethostbyname compatibility --- include/git2/common.h | 6 +----- src/netops.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/include/git2/common.h b/include/git2/common.h index 045ba85c4..99018d4f5 100644 --- a/include/git2/common.h +++ b/include/git2/common.h @@ -56,11 +56,7 @@ #endif #ifdef __amigaos4__ -/* Network byte order is big-endian... so is PPC, so these functions are NOP */ -#define htonl(x) x -#define ntohl(x) x -#define htons(x) x -#define ntohs(x) x +#include #endif /** diff --git a/src/netops.c b/src/netops.c index fdbd965b1..6808c8ee7 100644 --- a/src/netops.c +++ b/src/netops.c @@ -382,7 +382,9 @@ int gitno_connect(git_transport *t, const char *host, const char *port) #else int p; struct hostent *hent; + struct servent *sent; struct sockaddr_in saddr; + long port_num = 0; #endif int ret; GIT_SOCKET s = INVALID_SOCKET; @@ -397,6 +399,12 @@ int gitno_connect(git_transport *t, const char *host, const char *port) } #else hent = gethostbyname(host); + sent = getservbyname(port, 0); + + if(sent) + port_num = sent->s_port; + else + port_num = atol(port); #endif #ifndef __amigaos4__ @@ -413,9 +421,9 @@ int gitno_connect(git_transport *t, const char *host, const char *port) #ifndef __amigaos4__ if (connect(s, p->ai_addr, (socklen_t)p->ai_addrlen) == 0) #else - saddr.sin_addr.s_addr = *hent->h_addr_list[p]; + memcpy(&saddr.sin_addr, hent->h_addr_list[p], hent->h_length); saddr.sin_family = hent->h_addrtype; - saddr.sin_port = port; + saddr.sin_port = port_num; if (connect(s, (struct sockaddr *)&saddr, sizeof(struct sockaddr_in)) == 0) #endif break; From 7d1983ebc2312c526057ecedd4cef628a4c33974 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sat, 9 Jun 2012 18:58:11 +0100 Subject: [PATCH 3/3] stop readdir parsing crashing --- src/path.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/path.c b/src/path.c index 056b6b910..eb9bc06f3 100644 --- a/src/path.c +++ b/src/path.c @@ -482,9 +482,14 @@ int git_path_cmp( /* Taken from git.git */ GIT_INLINE(int) is_dot_or_dotdot(const char *name) { +#ifdef __amigaos4__ + /* This is irrelevant on AmigaOS */ + return 0; +#else return (name[0] == '.' && (name[1] == '\0' || (name[1] == '.' && name[2] == '\0'))); +#endif } int git_path_direach( @@ -512,7 +517,11 @@ int git_path_direach( de_buf = git__malloc(sizeof(struct dirent)); #endif +#ifdef __amigaos4__ + while (de = readdir(dir)) { +#else while (p_readdir_r(dir, de_buf, de) == 0 && de != NULL) { +#endif int result; if (is_dot_or_dotdot(de->d_name))