You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Carlos Martín Nieto <cm...@elego.de> on 2015/03/30 16:58:57 UTC

[PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Hi,

The git RA layer still expects to be built against v0.20 of libgit2, which has been
unsupported for quite a while now. This patch brings the code up to date to work
against the v0.22 API.

[[[
On the 'ra-git' branch: update to libgit2 v0.22

* BRANCH-README:
  Specify we build against libgit2 v0.22.

* autogen.sh:
  Fix the LIBTOOL_CONFIG replacement when overriding the config file path

* subversion/libsvn_ra_git/ra_plugin.c:
 (do_libgit_init): the init function was renamed to git_libgit2_init().
 (split_url): remotes which are not in the config are now called anonymous.
 (do_git_fetch): pass NULL to git_remote_fetch() to get default reflog entries.
 (svn_ra_git__open): git_remote_load() was renamed git_remote_lookup().
 (remote_progress_cb, svn_ra_git__open): the progress callback has been
   renamed to sideband_progress. Rename our callback function to
   remote_sideband_progress_cb to match libgit2 naming.
 (compare_git_tree_entries): git_tree_entry_byoid is now git_tree_entry_byid.

* subversion/libsvn_ra_git/reporter.c:
 (blob_relatedness_cb): delta file field oid has been renamed to id.
]]]

   cmn


Re: [PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Posted by Philip Martin <ph...@wandisco.com>.
Julian Foad <ju...@btopenworld.com> writes:

> export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/.local/libgit2-0.20.0/lib
> configure [...] --with-libgit2=$HOME/.local/libgit2-0.20.0
>
> works.
>
> configure [...] --with-libgit2=$HOME/.local/libgit2-0.20.0 \
>   LDFLAGS=-Wl,-rpath,$HOME/.local/libgit2-0.20.0/lib
>
> also works.
>
> Can we make 'configure --with-libgit2' do one of those automatically?

Note we have a similar problem with serf, and possibly other libraries.

Modifying LD_LIBRARY_PATH is probably wrong, it would not persist beyond
the build.

Setting LDFLAGS=-Wl,-rpath might work but portability is an issue, it's
a bit like trying to reinventing libtool and we might break systems we
don't use.  Perhaps we should pass "-rpath $(libgit2)/lib" to libtool.
On my system that breaks linking executables so we would need to do it
just when linking libraries.

-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Re: [PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Posted by Julian Foad <ju...@btopenworld.com>.
Julian Foad wrote:
> I'll try doing a catch-up merge from trunk as well, now.

I did a catch-up as far as trunk@1664077 (which is a few weeks ago),
resolving the few minor conflicts. One of the changes this merge
brought in from trunk was a re-working of the part of autogen.sh that
you fixed in your patch.

The next commit on trunk, r1664078, changed the repos 'open' method
signature. I'll leave that for you or someone else to resolve.

[[[
r1664078 | rhuijben | 2015-03-04 17:23:46 +0000 (Wed, 04 Mar 2015) | 74 lines

Following up on r1609499, which made all ra layers change the auth baton in a
way that affects all ra session using it, make it possible to create a slave
auth baton that shares everything with the parent baton except for the
parameters.

Each ra session gets its own slave parameters, and thereby allows
applying their own settings from the server group (and other origins),
without affecting other ra sessions.

[...]

* subversion/libsvn_ra/ra_loader.h
  (svn_ra__vtable_t.open_session): Add auth_baton argument and split pools.

[...]
]]]

- Julian

Re: [PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Posted by Julian Foad <ju...@btopenworld.com>.
Carlos, I committed your patch in r1670647 (without the quoting style
change in autogen.sh).

Thanks!

I'll try doing a catch-up merge from trunk as well, now.

- Julian

Re: [PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Posted by Julian Foad <ju...@btopenworld.com>.
Philip Martin wrote:
> Julian Foad <ju...@btopenworld.com> writes:
>
>> --with-libgit2=/home/julianfoad/.local/libgit2-0.20.0
>
>> /usr/bin/ld: warning: libgit2.so.0, needed by
>> //nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0,
>> not found (try using -rpath or -rpath-link)
>> //nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
>> undefined reference to `git_remote_load'
>
> If you run
>
>   objdump -x subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so
>
> I think you will see a NEEDED for libgit2 but that the RPATH does not
> include /home/julianfoad/.local/libgit2-0.20.0/lib.

You're right.

> You can fix it by setting LD_LIBRARY_PATH.  Or by using something like
> LDFLAGS=-Wl,-rpath,/home/julianfoad/.local/libgit2-0.20.0/lib when you
> invoke configure.  Or by installing libgit2 somewhere the linker looks
> by default.

Thanks for debugging my build problems again, Philip.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/.local/libgit2-0.20.0/lib
configure [...] --with-libgit2=$HOME/.local/libgit2-0.20.0

works.

configure [...] --with-libgit2=$HOME/.local/libgit2-0.20.0 \
  LDFLAGS=-Wl,-rpath,$HOME/.local/libgit2-0.20.0/lib

also works.

Can we make 'configure --with-libgit2' do one of those automatically?

- Julian

Re: [PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Posted by Philip Martin <ph...@wandisco.com>.
Julian Foad <ju...@btopenworld.com> writes:

> --with-libgit2=/home/julianfoad/.local/libgit2-0.20.0

> /usr/bin/ld: warning: libgit2.so.0, needed by
> //nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0,
> not found (try using -rpath or -rpath-link)
> //nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
> undefined reference to `git_remote_load'

If you run

  objdump -x subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so 

I think you will see a NEEDED for libgit2 but that the RPATH does not
include /home/julianfoad/.local/libgit2-0.20.0/lib.

You can fix it by setting LD_LIBRARY_PATH.  Or by using something like
LDFLAGS=-Wl,-rpath,/home/julianfoad/.local/libgit2-0.20.0/lib when you
invoke configure.  Or by installing libgit2 somewhere the linker looks
by default.


-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Re: [PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Posted by Carlos Martín Nieto <cm...@elego.de>.
On Tue, 2015-03-31 at 12:25 +0100, Julian Foad wrote:
> On 31 March 2015 at 12:19, Julian Foad <ju...@btopenworld.com> wrote:
> > I wanted to commit this, but first I tried to build it and I'm getting
> > link failure on Linux
> 
> Of course you want to see the specifics of the link failure.
> 
> [[[
> Start -- /home/julianfoad/src/subversion-p/configure
> --enable-maintainer-mode --prefix=/home/julianfoad/.local/subversion-p
> --disable-static
> --with-ruby-sitedir=/home/julianfoad/.local/subversion-p/site_ruby
> --with-apache-libexecdir=/home/julianfoad/.local/subversion-p/lib/apache2/modules
> --disable-mod-activation --with-serf=/usr
> --with-sqlite=/home/julianfoad/src/sqlite-amalgamation-3071300/sqlite3.c
> --with-berkeley-db=db.h:::db --with-gnome-keyring --with-apr=/usr
> --with-apr-util=/usr --with-ctypesgen=/usr/local/bin --enable-javahl
> --with-junit=/usr/share/java/junit4.jar
> --with-jdk=/usr/lib/jvm/default-java
> --with-libgit2=/home/julianfoad/.local/libgit2-0.20.0

...

> ../../subversion/libsvn_client/libsvn_client-1.la
> ../../subversion/libsvn_wc/libsvn_wc-1.la
> ../../subversion/libsvn_ra/libsvn_ra-1.la
> ../../subversion/libsvn_delta/libsvn_delta-1.la
> ../../subversion/libsvn_diff/libsvn_diff-1.la
> ../../subversion/libsvn_subr/libsvn_subr-1.la
> -L/usr/lib/x86_64-linux-gnu -laprutil-1 -L/usr/lib/x86_64-linux-gnu
> -lapr-1
> /usr/bin/ld: warning: libgit2.so.0, needed by
> //nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0,
> not found (try using -rpath or -rpath-link)

Interesting. I can reproduce this on Debian Sid and Wheezy (unsable and
stable resp), but it builds fine with OS X Mavericks. The only changes
would be on the system tools, but I'm not sure what's changed; ld is
from 2011 on Wheezy and libtool is also from 2011 on both.

It also builds fine if libgit2 is installed in /usr/local/ (just tested
with 0.22) so it looks like the looking for the library elsewhere is the
bit that's not working.

   cmn



Re: [PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Posted by Julian Foad <ju...@btopenworld.com>.
On 31 March 2015 at 12:19, Julian Foad <ju...@btopenworld.com> wrote:
> I wanted to commit this, but first I tried to build it and I'm getting
> link failure on Linux

Of course you want to see the specifics of the link failure.

[[[
Start -- /home/julianfoad/src/subversion-p/configure
--enable-maintainer-mode --prefix=/home/julianfoad/.local/subversion-p
--disable-static
--with-ruby-sitedir=/home/julianfoad/.local/subversion-p/site_ruby
--with-apache-libexecdir=/home/julianfoad/.local/subversion-p/lib/apache2/modules
--disable-mod-activation --with-serf=/usr
--with-sqlite=/home/julianfoad/src/sqlite-amalgamation-3071300/sqlite3.c
--with-berkeley-db=db.h:::db --with-gnome-keyring --with-apr=/usr
--with-apr-util=/usr --with-ctypesgen=/usr/local/bin --enable-javahl
--with-junit=/usr/share/java/junit4.jar
--with-jdk=/usr/lib/jvm/default-java
--with-libgit2=/home/julianfoad/.local/libgit2-0.20.0
configure: Configuring Subversion 1.9.0
configure: creating config.nice
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking if gcc accepts -std=c90... yes
checking if gcc accepts -w... yes
checking if gcc accepts -Werror=unknown-warning-option... no
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking if g++ accepts -std=c++98... yes
checking if g++ accepts -w... yes
checking if g++ accepts -Werror=unknown-warning-option... no
checking how to run the C preprocessor... gcc -E
checking for a sed that does not truncate output... /bin/sed
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking whether ln -s works... yes
checking for a BSD-compatible install... /usr/bin/install -c
configure: Apache Portable Runtime (APR) library configuration
checking for APR... yes
checking APR version... 1.5.1
configure: Apache Portable Runtime Utility (APRUTIL) library configuration
checking for APR-util... yes
checking APRUTIL version... 1.5.3
checking for pkg-config... /usr/bin/pkg-config
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
configure: serf library configuration via pkg-config
checking for serf-2 library... no
checking for serf-1 library... yes
checking serf library version... 1.3.7
checking serf version is suitable... yes
checking was serf enabled... yes
configure: looking for apr_memcache as part of apr-util
checking apr_memcache.h usability... yes
checking apr_memcache.h presence... yes
checking for apr_memcache.h... yes
checking for apr_memcache_create in -laprutil-1... yes
checking for Apache module support via DSO through APXS... found at
/usr/bin/apxs2
checking httpd version... recent enough
checking whether Apache version is compatible with APR version... yes
checking mod_dav version... acceptable
==================================================================
WARNING: You have chosen to compile Subversion with a different
         compiler than the one used to compile Apache.

    Current compiler:      gcc
   Apache's compiler:      x86_64-linux-gnu-gcc -std=gnu99

This could cause some problems.
==================================================================
configure: checking sqlite library
checking sqlite amalgamation... yes
checking sqlite amalgamation file version... amalgamation found and is okay
checking for shl_load... no
checking for shl_load in -ldld... no
checking for dlopen... no
checking for dlopen in -ldl... yes
checking additional libraries for sqlite... -ldl
checking whether the compiler provides atomic builtins... yes
configure: configuring libtool now
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) /bin/sed
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to
x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to
toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking for gawk... gawk
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports
shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports
shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports
shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
configure: building shared libraries only
checking whether libtool needs -no-undefined... no
checking whether to avoid circular linkage at all costs... no
checking for trang... /usr/bin/trang
checking for doxygen... /usr/bin/doxygen
checking for Expat... yes
checking for socket in -lsocket... no
checking for availability of Berkeley DB... yes
checking whether to look for SASL... yes
configure: Looking in default locations
checking sasl/sasl.h usability... no
checking sasl/sasl.h presence... no
checking for sasl/sasl.h... no
checking for sasl/sasl.h... (cached) no
checking for availability of Cyrus SASL v2... no
checking for Mach-O dynamic module iteration functions... no
checking for Mac OS property list utilities... no
checking for Mac OS KeyChain Services... no
checking whether APR has support for DSOs... yes
checking for D-Bus .pc file... yes
checking D-Bus version... 1.6.18
checking for D-Bus... yes
checking whether to support GPG-Agent... yes
checking whether to look for GNOME Keyring... yes
checking for GLib and GNOME Keyring .pc files... yes
checking gnome-keyring.h usability... yes
checking gnome-keyring.h presence... yes
checking for gnome-keyring.h... yes
checking for GNOME Keyring... yes
checking whether use Googlemock... no
checking for msgfmt... /usr/bin/msgfmt
checking for msgmerge... /usr/bin/msgmerge
checking for xgettext... /usr/bin/xgettext
checking for library containing bindtextdomain... none required
checking for bind_textdomain_codeset... yes
checking if we are using GNU gettext... yes
checking magic.h usability... no
checking magic.h presence... no
checking for magic.h... no
checking whether to look for KWallet... no
checking for ANSI C header files... (cached) yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking for working memcmp... yes
checking for vprintf... yes
checking for _doprnt... no
checking for symlink... yes
checking for readlink... yes
checking sys/utsname.h usability... yes
checking sys/utsname.h presence... yes
checking for sys/utsname.h... yes
checking for uname... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking for tcgetattr... yes
checking for tcsetattr... yes
checking for -Wl,--no-undefined... yes
configure: maintainer-mode: adding GCC warning flags
checking if gcc accepts -Werror=implicit-function-declaration... yes
checking if gcc accepts -Werror=declaration-after-statement... yes
checking if gcc accepts -Wextra-tokens... no
checking if gcc accepts -Wnewline-eof... no
checking if gcc accepts -Wshorten-64-to-32... no
checking if gcc accepts -Wold-style-definition... yes
checking if gcc accepts -Wno-system-headers... yes
checking if gcc accepts -Wno-format-nonliteral... yes
checking if gcc accepts -Wno-string-plus-int... yes
checking if gcc accepts -Wmissing-variable-declarations... no
configure: maintainer-mode: adding G++ warning flags
checking if g++ accepts -Wextra-tokens... no
checking if g++ accepts -Wnewline-eof... no
checking if g++ accepts -Wshorten-64-to-32... no
checking if g++ accepts -Wno-system-headers... yes
configure: Disabling optimizations for debugging
configure: Enabling debugging for C++
checking if g++ accepts -fno-inline... yes
checking if g++ accepts -fno-omit-frame-pointer... yes
checking if g++ accepts -g3... yes
configure: C compiler flags: -g -Wcast-qual -Wundef
-Wno-deprecated-declarations -Wno-unreachable-code
-Wno-format-nonliteral -fmessage-length=0 -fdiagnostics-show-option
-pthread  -DSVN_DEBUG -DAP_DEBUG
configure:     user-defined: -g   -Wcast-qual -Wundef
-Wno-deprecated-declarations -Wno-unreachable-code
-Wno-format-nonliteral -fmessage-length=0 -fdiagnostics-show-option
configure:  maintainer-mode: -Wall -Wpointer-arith -Wwrite-strings
-Wshadow -Wformat=2 -Wunused -Waggregate-return -Wstrict-prototypes
-Wmissing-prototypes -Wmissing-declarations -Wno-multichar
-Wredundant-decls -Wnested-externs -Winline -Wno-long-long
-Wno-string-plus-int -Wno-format-nonliteral -Wno-system-headers
-Wold-style-definition -Werror=declaration-after-statement
-Werror=implicit-function-declaration
configure: C++ compiler flags: -g3 -fno-omit-frame-pointer -fno-inline
  -DSVN_DEBUG -DAP_DEBUG
configure:       user-defined:
configure:    maintainer-mode: -Wall -Wpointer-arith -Wwrite-strings
-Wshadow -Wunused -Wunreachable-code -Wno-system-headers
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking for inflate in -lz... yes
configure: libgit2 library configuration
checking git2.h usability... yes
checking git2.h presence... yes
checking for git2.h... yes
checking for git_libgit2_version in -lgit2... yes
configure: Disabling apache module activation
checking for python... /usr/bin/python
checking for JDK... /usr/lib/jvm/default-java/include/jni.h
checking for perl... /usr/bin/perl
checking for ruby... /usr/bin/ruby
checking rb_hash_foreach... yes
checking for rdoc... /usr/bin/rdoc
checking for Ruby major version... 1
checking for Ruby minor version... 9
checking for Ruby teeny version... 3
configure: WARNING: WARNING: The detected Ruby is 1.9.3
configure: WARNING: WARNING: Only 1.8.x releases are fully supported,
1.9.3 support is new
checking for swig... /usr/bin/swig
checking swig version... 2.0.11
configure: Configuring python swig binding
checking for Python includes... -I/usr/include/python2.7
checking for compiling Python extensions... x86_64-linux-gnu-gcc -pthread -fPIC
checking for linking Python extensions... x86_64-linux-gnu-gcc
-pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions
-Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g
-fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g
-fstack-protector --param=ssp-buffer-size=4 -Wformat
-Werror=format-security
checking for linking Python libraries... -Wl,-O1
-Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro
checking for apr_int64_t Python/C API format string... l
checking perl version... 5018002
configure: Configuring Ruby SWIG binding
checking for Ruby include path... -I. -I/usr/include/ruby-1.9.1
-I/usr/include/ruby-1.9.1/ruby -I/usr/include/ruby-1.9.1/ruby/backward
-I/usr/include/ruby-1.9.1/x86_64-linux
checking how to compile Ruby extensions... gcc -g -Wcast-qual -Wundef
-Wno-deprecated-declarations -Wno-unreachable-code
-Wno-format-nonliteral -fmessage-length=0 -fdiagnostics-show-option
-pthread  -DSVN_DEBUG -DAP_DEBUG
checking how to link Ruby extensions... gcc -shared -shrext .so
checking how to link Ruby libraries... -lruby-1.9.1 -lpthread -lrt
-ldl -lcrypt -lm
checking for rb_errinfo... yes
checking where to install Ruby scripts...
/home/julianfoad/.local/subversion-p/site_ruby/1.9.1
checking where to install Ruby extensions...
/home/julianfoad/.local/subversion-p/site_ruby/1.9.1/x86_64-linux
checking how to use output level for Ruby bindings tests... normal
checking for ctypesgen.py... /usr/local/bin/ctypesgen.py
checking for additional flags to link C++ libraries... -lstdc++
checking stdbool.h usability... yes
checking stdbool.h presence... yes
checking for stdbool.h... yes
checking for inttypes.h... (cached) yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating
subversion/libsvn_auth_gnome_keyring/libsvn_auth_gnome_keyring.pc
config.status: creating subversion/libsvn_auth_kwallet/libsvn_auth_kwallet.pc
config.status: creating subversion/libsvn_client/libsvn_client.pc
config.status: creating subversion/libsvn_delta/libsvn_delta.pc
config.status: creating subversion/libsvn_diff/libsvn_diff.pc
config.status: creating subversion/libsvn_fs/libsvn_fs.pc
config.status: creating subversion/libsvn_fs_base/libsvn_fs_base.pc
config.status: creating subversion/libsvn_fs_fs/libsvn_fs_fs.pc
config.status: creating subversion/libsvn_fs_util/libsvn_fs_util.pc
config.status: creating subversion/libsvn_fs_x/libsvn_fs_x.pc
config.status: creating subversion/libsvn_ra/libsvn_ra.pc
config.status: creating subversion/libsvn_ra_git/libsvn_ra_git.pc
config.status: creating subversion/libsvn_ra_local/libsvn_ra_local.pc
config.status: creating subversion/libsvn_ra_serf/libsvn_ra_serf.pc
config.status: creating subversion/libsvn_ra_svn/libsvn_ra_svn.pc
config.status: creating subversion/libsvn_repos/libsvn_repos.pc
config.status: creating subversion/libsvn_subr/libsvn_subr.pc
config.status: creating subversion/libsvn_wc/libsvn_wc.pc
config.status: creating tools/backup/hot-backup.py
config.status: creating tools/hook-scripts/commit-access-control.pl
config.status: creating subversion/bindings/swig/perl/native/Makefile.PL
config.status: creating subversion/svn_private_config.h.tmp
config.status: executing libtool commands
config.status: executing svn_private_config.h.tmp commands
Exit 0 - /home/julianfoad/src/subversion-p/configure
--enable-maintainer-mode --prefix=/home/julianfoad/.local/subversion-p
--disable-static
--with-ruby-sitedir=/home/julianfoad/.local/subversion-p/site_ruby
--with-apache-libexecdir=/home/julianfoad/.local/subversion-p/lib/apache2/modules
--disable-mod-activation --with-serf=/usr
--with-sqlite=/home/julianfoad/src/sqlite-amalgamation-3071300/sqlite3.c
--with-berkeley-db=db.h:::db --with-gnome-keyring --with-apr=/usr
--with-apr-util=/usr --with-ctypesgen=/usr/local/bin --enable-javahl
--with-junit=/usr/share/java/junit4.jar
--with-jdk=/usr/lib/jvm/default-java
--with-libgit2=/home/julianfoad/.local/libgit2-0.20.0

$ (cd obj-dir/ && make)
[...]
cd subversion/libsvn_client && /bin/bash
"/nobackup/home/julianfoad/build/subversion-p/libtool" --tag=CC
--silent --mode=link gcc -shared  -g -Wcast-qual -Wundef
-Wno-deprecated-declarations -Wno-unreachable-code
-Wno-format-nonliteral -fmessage-length=0 -fdiagnostics-show-option
-pthread  -DSVN_DEBUG -DAP_DEBUG -g   -Wcast-qual -Wundef
-Wno-deprecated-declarations -Wno-unreachable-code
-Wno-format-nonliteral -fmessage-length=0 -fdiagnostics-show-option
-L/home/julianfoad/.local/libgit2-0.20.0/lib  -rpath
/home/julianfoad/.local/subversion-p/lib -version-info 0
-Wl,--no-undefined -o libsvn_client-1.la  add.lo blame.lo cat.lo
changelist.lo checkout.lo cleanup.lo cmdline.lo commit.lo
commit_util.lo compat_providers.lo copy.lo copy_foreign.lo ctx.lo
delete.lo deprecated.lo diff.lo diff_local.lo diff_summarize.lo
export.lo externals.lo import.lo info.lo iprops.lo list.lo
locking_commands.lo log.lo merge.lo mergeinfo.lo mtcc.lo patch.lo
prop_commands.lo ra.lo relocate.lo repos_diff.lo resolved.lo revert.lo
revisions.lo status.lo switch.lo update.lo upgrade.lo url.lo util.lo
version.lo ../../subversion/libsvn_wc/libsvn_wc-1.la
../../subversion/libsvn_ra/libsvn_ra-1.la
../../subversion/libsvn_delta/libsvn_delta-1.la
../../subversion/libsvn_diff/libsvn_diff-1.la
../../subversion/libsvn_subr/libsvn_subr-1.la
-L/usr/lib/x86_64-linux-gnu -laprutil-1 -L/usr/lib/x86_64-linux-gnu
-lapr-1
cd subversion/svn && /bin/bash
"/nobackup/home/julianfoad/build/subversion-p/libtool" --tag=CC
--silent --mode=link gcc -shared  -g -Wcast-qual -Wundef
-Wno-deprecated-declarations -Wno-unreachable-code
-Wno-format-nonliteral -fmessage-length=0 -fdiagnostics-show-option
-pthread  -DSVN_DEBUG -DAP_DEBUG -g   -Wcast-qual -Wundef
-Wno-deprecated-declarations -Wno-unreachable-code
-Wno-format-nonliteral -fmessage-length=0 -fdiagnostics-show-option
-L/home/julianfoad/.local/libgit2-0.20.0/lib  -rpath
/home/julianfoad/.local/subversion-p/lib  -o svn  add-cmd.lo
auth-cmd.lo blame-cmd.lo cat-cmd.lo changelist-cmd.lo checkout-cmd.lo
cl-conflicts.lo cleanup-cmd.lo commit-cmd.lo conflict-callbacks.lo
copy-cmd.lo delete-cmd.lo deprecated.lo diff-cmd.lo export-cmd.lo
file-merge.lo help-cmd.lo import-cmd.lo info-cmd.lo list-cmd.lo
lock-cmd.lo log-cmd.lo merge-cmd.lo mergeinfo-cmd.lo mkdir-cmd.lo
move-cmd.lo notify.lo patch-cmd.lo propdel-cmd.lo propedit-cmd.lo
propget-cmd.lo proplist-cmd.lo props.lo propset-cmd.lo relocate-cmd.lo
resolve-cmd.lo resolved-cmd.lo revert-cmd.lo status-cmd.lo status.lo
svn.lo switch-cmd.lo unlock-cmd.lo update-cmd.lo upgrade-cmd.lo
util.lo youngest-cmd.lo
../../subversion/libsvn_client/libsvn_client-1.la
../../subversion/libsvn_wc/libsvn_wc-1.la
../../subversion/libsvn_ra/libsvn_ra-1.la
../../subversion/libsvn_delta/libsvn_delta-1.la
../../subversion/libsvn_diff/libsvn_diff-1.la
../../subversion/libsvn_subr/libsvn_subr-1.la
-L/usr/lib/x86_64-linux-gnu -laprutil-1 -L/usr/lib/x86_64-linux-gnu
-lapr-1
/usr/bin/ld: warning: libgit2.so.0, needed by
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0,
not found (try using -rpath or -rpath-link)
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_remote_load'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_entry_name'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `giterr_detach'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_remote_fetch'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_blob_id'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_diff_blobs'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_remote_set_callbacks'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_revwalk_sorting'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_remote_create_with_fetchspec'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_object_free'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_oid_tostr'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_diff_foreach'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_entry_byindex'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_entry_byoid'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_remote_stop'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_commit_message'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_revwalk_next'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_oid_iszero'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_threads_init'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_repository_init'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_remote_connect'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_blob_lookup'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_commit_lookup'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_oid_cpy'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_entry_bypath'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_entry_filemode'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_revwalk_simplify_first_parent'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_remote_free'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_commit_time'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_commit_tree'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_entry_free'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_commit_parent'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_remote_url'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_object_lookup'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_entrycount'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_revwalk_reset'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_commit_free'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_entry_id'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_diff_find_similar'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_free'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `giterr_clear'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_entry_type'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_commit_parentcount'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_blob_rawsize'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_revwalk_push_ref'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_revwalk_new'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_owner'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_remote_create_inmemory'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_entry_to_object'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_tree_walk'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_commit_author'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_object_type'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_blob_rawcontent'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_diff_tree_to_tree'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_oid_cmp'
//nobackup/home/julianfoad/build/subversion-p/subversion/libsvn_ra_git/.libs/libsvn_ra_git-1.so.0:
undefined reference to `git_blob_free'
collect2: error: ld returned 1 exit status
make: *** [subversion/svn/svn] Error 1
]]]

- Julian

Re: [PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Posted by Julian Foad <ju...@btopenworld.com>.
I wanted to commit this, but first I tried to build it and I'm getting
link failure on Linux, both with (the patch and libgit2-0.22) and also
with (no patch and libgit2-0.20). The wierd thing is, last April I
successfully built it with libgit2-0.20, and my installation of
libgit2-0.20 hasn't been touched since then, and the ra-git branch
branch hasn't been touched since then.

What has changed? My build script has changed (the options I pass to
Subversion's 'configure', for instance), and I've upgraded my OS from
Ubuntu 12.04 to Ubuntu 14.04.

One approach I could take is to debug what's going wrong in the
linking, and figure out the root cause from there. But before
bothering with that, can anyone else build it? It seems likely it's a
problem local to me.

- Julian


On 31 March 2015 at 00:28, James McCoy <ja...@debian.org> wrote:
> On Tue, Mar 31, 2015 at 12:13:09AM +0200, Branko Čibej wrote:
>> On 30.03.2015 20:26, Daniel Shahaf wrote:
>> > Carlos Martín Nieto wrote on Mon, Mar 30, 2015 at 16:58:57 +0200:
>> >> +++ autogen.sh     (working copy)
>> >> -        configfile=${LIBTOOL_CONFIG-`cd $ltpath/../share/libtool/config ; pwd`/$file}
>> >> +        configfile=${LIBTOOL_CONFIG-$(cd $ltpath/../share/libtool/config ; pwd)}/$file
>> > Is it safe to use $(...)?
>>
>> It is not. autogen.sh must not require bash.
>
> $(...) isn't a bash-ism.  It's specified by POSIX[0].
>
> [0]: http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_03
>
> Cheers,
> --
> James
> GPG Key: 4096R/331BA3DB 2011-12-05 James McCoy <ja...@debian.org>
>

Re: [PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Posted by James McCoy <ja...@debian.org>.
On Tue, Mar 31, 2015 at 12:13:09AM +0200, Branko Čibej wrote:
> On 30.03.2015 20:26, Daniel Shahaf wrote:
> > Carlos Martín Nieto wrote on Mon, Mar 30, 2015 at 16:58:57 +0200:
> >> +++ autogen.sh	(working copy)
> >> -        configfile=${LIBTOOL_CONFIG-`cd $ltpath/../share/libtool/config ; pwd`/$file}
> >> +        configfile=${LIBTOOL_CONFIG-$(cd $ltpath/../share/libtool/config ; pwd)}/$file
> > Is it safe to use $(...)?
> 
> It is not. autogen.sh must not require bash.

$(...) isn't a bash-ism.  It's specified by POSIX[0].

[0]: http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_03

Cheers,
-- 
James
GPG Key: 4096R/331BA3DB 2011-12-05 James McCoy <ja...@debian.org>


Re: [PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Posted by Ben Reser <be...@reser.org>.
On 3/30/15 3:13 PM, Branko Čibej wrote:
> It is not. autogen.sh must not require bash.

$() is not a bash'ism.  It's actually in POSIX.  But for whatever reason
Solaris' sh does not support it so both of you are correct we can't use it.

Re: [PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Posted by Branko Čibej <br...@wandisco.com>.
On 30.03.2015 20:26, Daniel Shahaf wrote:
> Carlos Martín Nieto wrote on Mon, Mar 30, 2015 at 16:58:57 +0200:
>> +++ autogen.sh	(working copy)
>> -        configfile=${LIBTOOL_CONFIG-`cd $ltpath/../share/libtool/config ; pwd`/$file}
>> +        configfile=${LIBTOOL_CONFIG-$(cd $ltpath/../share/libtool/config ; pwd)}/$file
> Is it safe to use $(...)?

It is not. autogen.sh must not require bash.

-- Brane


Re: [PATCH] On the 'ra-git' branch: update to libgit2 v0.22

Posted by Daniel Shahaf <d....@daniel.shahaf.name>.
Carlos Martín Nieto wrote on Mon, Mar 30, 2015 at 16:58:57 +0200:
> +++ autogen.sh	(working copy)
> -        configfile=${LIBTOOL_CONFIG-`cd $ltpath/../share/libtool/config ; pwd`/$file}
> +        configfile=${LIBTOOL_CONFIG-$(cd $ltpath/../share/libtool/config ; pwd)}/$file

Is it safe to use $(...)?  At least Solaris sh doesn't support it, and
there are only two uses in configure — one is in dead code and one is in
a string only used for error messages.  I suppose it would be safer to
retain the `...`.

Also, please use a text/* MIME type for patch attachments, rather than
text/plain.

Looks good otherwise.

Cheers,

Daniel