Modified: subversion/branches/addremove/build.conf URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build.conf?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build.conf (original) +++ subversion/branches/addremove/build.conf Sat May 23 14:16:56 2020 @@ -38,11 +38,14 @@ private-includes = subversion/include/private/*.h subversion/bindings/swig/include/*.swg subversion/libsvn_delta/compose_delta.c - subversion/bindings/cxxhl/include/*.hpp - subversion/bindings/cxxhl/include/svncxxhl/*.hpp - subversion/bindings/cxxhl/src/*.hpp - subversion/bindings/cxxhl/src/aprwrap/*.hpp - subversion/bindings/cxxhl/src/private/*.hpp + subversion/bindings/cxx/include/*.hpp + subversion/bindings/cxx/include/svnxx/*.hpp + subversion/bindings/cxx/include/svnxx/client/*.hpp + subversion/bindings/cxx/include/svnxx/detail/*.hpp + subversion/bindings/cxx/src/*.hpp + subversion/bindings/cxx/src/aprwrap/*.hpp + subversion/bindings/cxx/src/private/*.hpp + subversion/bindings/cxx/tests/*.hpp subversion/bindings/javahl/native/*.hpp subversion/bindings/javahl/native/jniwrapper/jni_*.hpp tools/dev/svnmover/linenoise/linenoise.h @@ -98,9 +101,9 @@ test-scripts = bdb-test-scripts = -swig-python-opts = $(SWIG_CPPFLAGS) -python -classic -swig-perl-opts = $(SWIG_CPPFLAGS) -perl -nopm -noproxy -swig-ruby-opts = $(SWIG_CPPFLAGS) -ruby +swig-python-opts = $(SWIG_FEATURES) $(SWIG_PY_OPTS) $(SWIG_PY_FEATURES) +swig-perl-opts = $(SWIG_FEATURES) -perl $(SWIG_PL_FEATURES) -nopm -noproxy +swig-ruby-opts = $(SWIG_FEATURES) -ruby $(SWIG_RB_FEATURES) swig-languages = python perl ruby swig-dirs = subversion/bindings/swig/python @@ -245,7 +248,7 @@ type = lib path = subversion/libsvn_client libs = libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr apriconv apr install = lib -msvc-export = svn_client.h private/svn_client_mtcc.h private/svn_client_private.h +msvc-export = svn_client.h private/svn_client_mtcc.h private/svn_client_private.h private/svn_client_shelf.h private/svn_client_shelf2.h # Routines for binary diffing and tree-deltas [libsvn_delta] @@ -371,7 +374,8 @@ type = lib install = fsmod-lib path = subversion/libsvn_subr sources = *.c lz4/*.c -libs = aprutil apriconv apr xml zlib apr_memcache sqlite magic intl lz4 utf8proc +libs = aprutil apriconv apr xml zlib apr_memcache + sqlite magic intl lz4 utf8proc macos-plist macos-keychain msvc-libs = kernel32.lib advapi32.lib shfolder.lib ole32.lib crypt32.lib version.lib msvc-export = @@ -392,7 +396,7 @@ msvc-export = private\svn_string_private.h private\svn_magic.h private\svn_subr_private.h private\svn_mutex.h private\svn_packed_data.h private\svn_object_pool.h private\svn_cert.h - private\svn_config_private.h + private\svn_config_private.h private\svn_dirent_uri_private.h # Working copy management lib [libsvn_wc] @@ -438,7 +442,7 @@ description = Subversion FSFS Repository type = exe path = subversion/svnfsfs install = bin -libs = libsvn_repos libsvn_fs libsvn_fs_fs libsvn_delta libsvn_subr apriconv apr +libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr apriconv apr # ---------------------------------------------------------------------------- # @@ -458,7 +462,7 @@ path = subversion/libsvn_fs_x sources = rep-cache-db.sql [wc_queries] -desription = Queries on the WC database +description = Queries on the WC database type = sql-header path = subversion/libsvn_wc sources = wc-queries.sql @@ -608,16 +612,14 @@ msvc-export = ../bindings/swig/ruby/libs [javahl-java] type = java path = subversion/bindings/javahl/src/org/apache/subversion/javahl - subversion/bindings/javahl/src/org/apache/subversion/javahl/callback - subversion/bindings/javahl/src/org/apache/subversion/javahl/remote - subversion/bindings/javahl/src/org/apache/subversion/javahl/types - subversion/bindings/javahl/src/org/apache/subversion/javahl/util -src-root = subversion/bindings/javahl/src sources = *.java +native = CommitItemStateFlags.java NativeResources.java SVNClient.java + SVNRepos.java install = javahl-java link-cmd = $(COMPILE_JAVAHL_JAVAC) classes = subversion/bindings/javahl/classes -package-roots = org +headers = subversion/bindings/javahl/include +package = org.apache.subversion.javahl [javahl-compat-java] type = java @@ -626,10 +628,12 @@ sources = *.java install = javahl-java link-cmd = $(COMPILE_JAVAHL_COMPAT_JAVAC) classes = subversion/bindings/javahl/classes -add-deps = $(javahl_java_DEPS) +add-deps = $(javahl_callback_java_DEPS) $(javahl_remote_java_DEPS) + $(javahl_types_java_DEPS) $(javahl_util_java_DEPS) + $(javahl_java_DEPS) ### Replace JAR call in INSTALL_EXTRA_JAVAHL_JAVA macro Makefile.in. #jar = svn-javahl.jar -package-roots = org +package = org.tigris.subversion.javahl [javahl-tests] type = java @@ -638,10 +642,12 @@ sources = *.java install = javahl-java link-cmd = $(COMPILE_JAVAHL_JAVAC) classes = subversion/bindings/javahl/classes -package-roots = org +package = org.apache.subversion.javahl ### Java targets don't do up-to-date checks yet. #add-deps = javahl-java -add-deps = $(javahl_java_DEPS) +add-deps = $(javahl_callback_java_DEPS) $(javahl_remote_java_DEPS) + $(javahl_types_java_DEPS) $(javahl_util_java_DEPS) + $(javahl_java_DEPS) [javahl-compat-tests] type = java @@ -650,65 +656,59 @@ sources = *.java install = javahl-java link-cmd = $(COMPILE_JAVAHL_COMPAT_JAVAC) classes = subversion/bindings/javahl/classes -package-roots = org +package = org.tigris.subversion.javahl ### Java targets don't do up-to-date checks yet. #add-deps = javahl-compat-java add-deps = $(javahl_compat_java_DEPS) -[javahl-callback-javah] -type = javah +[javahl-callback-java] +type = java path = subversion/bindings/javahl/src/org/apache/subversion/javahl/callback classes = subversion/bindings/javahl/classes headers = subversion/bindings/javahl/include package = org.apache.subversion.javahl.callback sources = *.java -add-deps = $(javahl_java_DEPS) -install = javahl-javah -link-cmd = $(COMPILE_JAVAHL_JAVAH) -force +native = UserPasswordCallback.java +install = javahl-java +link-cmd = $(COMPILE_JAVAHL_JAVAC) -[javahl-remote-javah] -type = javah +[javahl-remote-java] +type = java path = subversion/bindings/javahl/src/org/apache/subversion/javahl/remote classes = subversion/bindings/javahl/classes headers = subversion/bindings/javahl/include package = org.apache.subversion.javahl.remote sources = *.java -add-deps = $(javahl_java_DEPS) -install = javahl-javah -link-cmd = $(COMPILE_JAVAHL_JAVAH) -force +native = CommitEditor.java RemoteFactory.java RemoteSession.java + StateReporter.java +install = javahl-java +link-cmd = $(COMPILE_JAVAHL_JAVAC) -[javahl-types-javah] -type = javah +[javahl-types-java] +type = java path = subversion/bindings/javahl/src/org/apache/subversion/javahl/types classes = subversion/bindings/javahl/classes headers = subversion/bindings/javahl/include package = org.apache.subversion.javahl.types sources = *.java -add-deps = $(javahl_java_DEPS) -install = javahl-javah -link-cmd = $(COMPILE_JAVAHL_JAVAH) -force +native = NativeInputStream.java NativeOutputStream.java Revision.java + RevisionRangeList.java RuntimeVersion.java VersionExtended.java + Version.java +install = javahl-java +link-cmd = $(COMPILE_JAVAHL_JAVAC) -[javahl-util-javah] -type = javah +[javahl-util-java] +type = java path = subversion/bindings/javahl/src/org/apache/subversion/javahl/util classes = subversion/bindings/javahl/classes headers = subversion/bindings/javahl/include package = org.apache.subversion.javahl.util sources = *.java -add-deps = $(javahl_java_DEPS) -install = javahl-javah -link-cmd = $(COMPILE_JAVAHL_JAVAH) -force - -[javahl-javah] -type = javah -path = subversion/bindings/javahl/src/org/apache/subversion/javahl -classes = subversion/bindings/javahl/classes -headers = subversion/bindings/javahl/include -package = org.apache.subversion.javahl -sources = *.java -add-deps = $(javahl_java_DEPS) -install = javahl-javah -link-cmd = $(COMPILE_JAVAHL_JAVAH) -force +native = ConfigImpl.java ConfigLib.java DiffLib.java PropLib.java + RequestChannel.java ResponseChannel.java SubstLib.java + TunnelChannel.java +install = javahl-java +link-cmd = $(COMPILE_JAVAHL_JAVAC) [libsvnjavahl] description = Subversion Java HighLevel binding @@ -717,9 +717,9 @@ path = subversion/bindings/javahl/native libs = libsvn_repos libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr libsvn_fs aprutil apriconv apr java-sdk sources = *.cpp jniwrapper/*.cpp -add-deps = $(javahl_java_DEPS) $(javahl_callback_javah_DEPS) - $(javahl_remote_javah_DEPS) $(javahl_types_javah_DEPS) - $(javahl_util_javah_DEPS) $(javahl_javah_DEPS) +add-deps = $(javahl_java_DEPS) $(javahl_callback_java_DEPS) + $(javahl_remote_java_DEPS) $(javahl_types_java_DEPS) + $(javahl_util_java_DEPS) $(javahl_java_DEPS) install = javahl-lib # need special build rule to include -I$(JDK)/include/jni.h compile-cmd = $(COMPILE_JAVAHL_CXX) @@ -727,48 +727,34 @@ link-cmd = $(LINK_JAVAHL_CXX) # ---------------------------------------------------------------------------- # -# C++HL targets +# SVN++ targets # -[libsvncxxhl] -description = Subversion C++ HighLevel bindings +[libsvnxx] +description = Subversion C++ bindings +when = SVN_BUILD_SVNXX type = lib -path = subversion/bindings/cxxhl +path = subversion/bindings/cxx libs = libsvn_repos libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr libsvn_fs aprutil apriconv apr sources = src/*.cpp src/aprwrap/*.cpp -install = cxxhl-lib +install = svnxx-lib msvc-static = yes -compile-cmd = $(COMPILE_CXXHL_CXX) +compile-cmd = $(COMPILE_SVNXX) link-cmd = $(LINK_CXX_LIB) -[cxxhl-tests] -description = Unit tests for Subversion C++ HighLevel bindings -when = SVN_USE_GOOGLEMOCK -type = exe -path = subversion/bindings/cxxhl -libs = libsvncxxhl libgooglemock libsvn_subr apr +[svnxx-tests] +description = Unit tests for Subversion C++ bindings +when = SVN_BUILD_SVNXX_TESTS +type = exe +path = subversion/bindings/cxx +libs = libsvnxx + libsvn_repos libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_diff + libsvn_subr libsvn_fs aprutil apriconv apr sources = tests/*.cpp -install = cxxhl-tests -compile-cmd = $(COMPILE_CXXHL_GOOGLEMOCK_CXX) -link-cmd = $(LINK_CXX) - - -# ---------------------------------------------------------------------------- -# -# Googlemock targets -# - -[libgooglemock] -description = Googlemock Library -when = SVN_USE_GOOGLEMOCK -type = lib -path = googlemock -sources = googletest/src/gtest-all.cc googlemock/src/gmock-all.cc -install = cxxhl-tests -msvc-static = yes -compile-cmd = $(COMPILE_GOOGLEMOCK_CXX) -link-cmd = $(LINK_CXX_LIB) +install = svnxx-tests +compile-cmd = $(COMPILE_SVNXX_TEST) +link-cmd = $(LINK_SVNXX_TEST) # ---------------------------------------------------------------------------- # @@ -1207,6 +1193,14 @@ sources = window-test.c install = test libs = libsvn_test libsvn_delta libsvn_subr apriconv apr +[svndiff-stream-test] +description = Test svndiff streams +type = exe +path = subversion/tests/libsvn_delta +sources = svndiff-stream-test.c +install = test +libs = libsvn_test libsvn_delta libsvn_subr apriconv apr + # ---------------------------------------------------------------------------- # Tests for libsvn_client @@ -1455,7 +1449,8 @@ external-lib = $(SVN_DB_LIBS) [gnome-keyring] type = lib external-lib = $(SVN_GNOME_KEYRING_LIBS) -pkg-config = gnome-keyring-1 +pkg-config = @SVN_GNOME_KEYRING_PCLIBS@ +pkg-config-private = yes [kwallet] type = lib @@ -1465,6 +1460,14 @@ external-lib = $(SVN_KWALLET_LIBS) type = lib external-lib = $(SVN_MAGIC_LIBS) +[macos-plist] +type = lib +external-lib = $(SVN_MACOS_PLIST_LIBS) + +[macos-keychain] +type = lib +external-lib = $(SVN_MACOS_KEYCHAIN_LIBS) + [sasl] type = lib external-lib = $(SVN_SASL_LIBS) @@ -1579,7 +1582,8 @@ libs = __ALL__ conflict-data-test db-test pristine-store-test entries-compat-test op-depth-test dirent_uri-test wc-queries-test wc-test auth-test - parse-diff-test x509-test xml-test afl-x509 compress-test + parse-diff-test x509-test xml-test afl-x509 afl-svndiff compress-test + svndiff-stream-test [__MORE__] type = project @@ -1620,7 +1624,7 @@ lang = ruby [__JAVAHL__] type = project path = build/win32 -libs = javahl-java javahl-javah libsvnjavahl +libs = javahl-java libsvnjavahl [__JAVAHL_TESTS__] type = project @@ -1739,3 +1743,12 @@ sources = afl-x509.c install = test libs = libsvn_subr apr testing = skip + +[afl-svndiff] +description = AFL fuzzer for svndiff to txdelta parser +type = exe +path = subversion/tests/afl +sources = afl-svndiff.c +install = test +libs = libsvn_delta libsvn_subr apr +testing = skip
Modified: subversion/branches/addremove/build/PrintPath URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/PrintPath?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/PrintPath (original) +++ subversion/branches/addremove/build/PrintPath Sat May 23 14:16:56 2020 @@ -1,22 +1,19 @@ #!/bin/sh # -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # # # Look for program[s] somewhere in $PATH. @@ -32,9 +29,6 @@ # # Initially written by Jim Jagielski for the Apache configuration mechanism # (with kudos to Kernighan/Pike) -# -# This script falls under the Apache License. -# See http://www.apache.org/docs/LICENSE ## # Some "constants" @@ -69,7 +63,7 @@ done # Finally, we try to determine the best flag to use for # test/[] to look for an executable file. OS/2 just has '-r' # but with other OSs, we do some funny stuff to check to see -# if test/[] knows about -x, which is the preferred flag. +# if test/[] knows about -x, which is the prefered flag. ## if [ "x$os" = "xOS/2" ] Modified: subversion/branches/addremove/build/ac-macros/compiler.m4 URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/ac-macros/compiler.m4?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/ac-macros/compiler.m4 (original) +++ subversion/branches/addremove/build/ac-macros/compiler.m4 Sat May 23 14:16:56 2020 @@ -102,7 +102,7 @@ AC_DEFUN([SVN_CXX_MODE_SETUP], if test "$GXX" = "yes"; then dnl Find flags to force C++98 mode dnl g++ and clang++ - SVN_CXXFLAGS_ADD_IFELSE([-std=c++98]) + SVN_CXXFLAGS_ADD_IFELSE([-std=c++11]) fi CXXMODEFLAGS="$CXXFLAGS" @@ -126,18 +126,3 @@ AC_DEFUN([SVN_CXX_MODE_SETUP], SVN_CXXFLAGS_ADD_IFELSE([-Werror=unknown-warning-option]) fi ]) - -dnl The KWallet provider needs to use C++11 mode when using KDE 5 -AC_DEFUN([SVN_CXX_MODE_SETUP11], -[ - CXXFLAGS_KEEP="$CXXFLAGS" - CXXFLAGS="" - - if test "$GXX" = "yes"; then - SVN_CXXFLAGS_ADD_IFELSE([-std=c++11]) - fi - - CXXMODEFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS_KEEP" - AC_SUBST(CXXMODEFLAGS) -]) Modified: subversion/branches/addremove/build/ac-macros/find_apr.m4 URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/ac-macros/find_apr.m4?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/ac-macros/find_apr.m4 (original) +++ subversion/branches/addremove/build/ac-macros/find_apr.m4 Sat May 23 14:16:56 2020 @@ -1,21 +1,19 @@ -dnl =================================================================== -dnl Licensed to the Apache Software Foundation (ASF) under one -dnl or more contributor license agreements. See the NOTICE file -dnl distributed with this work for additional information -dnl regarding copyright ownership. The ASF licenses this file -dnl to you under the Apache License, Version 2.0 (the -dnl "License"); you may not use this file except in compliance -dnl with the License. You may obtain a copy of the License at +dnl -------------------------------------------------------- -*- autoconf -*- +dnl Licensed to the Apache Software Foundation (ASF) under one or more +dnl contributor license agreements. See the NOTICE file distributed with +dnl this work for additional information regarding copyright ownership. +dnl The ASF licenses this file to You under the Apache License, Version 2.0 +dnl (the "License"); you may not use this file except in compliance with +dnl the License. You may obtain a copy of the License at dnl dnl http://www.apache.org/licenses/LICENSE-2.0 dnl -dnl Unless required by applicable law or agreed to in writing, -dnl software distributed under the License is distributed on an -dnl "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -dnl KIND, either express or implied. See the License for the -dnl specific language governing permissions and limitations -dnl under the License. -dnl =================================================================== +dnl Unless required by applicable law or agreed to in writing, software +dnl distributed under the License is distributed on an "AS IS" BASIS, +dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +dnl See the License for the specific language governing permissions and +dnl limitations under the License. + dnl dnl find_apr.m4 : locate the APR include files and libraries dnl @@ -24,7 +22,8 @@ dnl library. It provides a standardized dnl embedding APR into the application source, or locating an installed dnl copy of APR. dnl -dnl APR_FIND_APR(srcdir, builddir, implicit-install-check, acceptable-majors) +dnl APR_FIND_APR(srcdir, builddir, implicit-install-check, acceptable-majors, +dnl detailed-check) dnl dnl where srcdir is the location of the bundled APR source directory, or dnl empty if source is not bundled. @@ -41,6 +40,14 @@ dnl If multiple versions are specified dnl implicit installed search are used, then the first (leftmost) version dnl in the list that is found will be used. Currently defaults to [0 1]. dnl +dnl where detailed-check is an M4 macro which sets the apr_acceptable to +dnl either "yes" or "no". The macro will be invoked for each installed +dnl copy of APR found, with the apr_config variable set appropriately. +dnl Only installed copies of APR which are considered acceptable by +dnl this macro will be considered found. If no installed copies are +dnl considered acceptable by this macro, apr_found will be set to either +dnl either "no" or "reconfig". +dnl dnl Sets the following variables on exit: dnl dnl apr_found : "yes", "no", "reconfig" @@ -64,7 +71,7 @@ dnl AC_DEFUN([APR_FIND_APR], [ apr_found="no" - if test "$ac_cv_emxos2" = "yes"; then + if test "$target_os" = "os2-emx"; then # Scripts don't pass test -x on OS/2 TEST_X="test -f" else @@ -91,8 +98,8 @@ AC_DEFUN([APR_FIND_APR], [ AC_MSG_CHECKING(for APR) AC_ARG_WITH(apr, - [ --with-apr=PATH prefix for installed APR, path to APR build tree, - or the full path to apr-config], + [ --with-apr=PATH prefix for installed APR or the full path to + apr-config], [ if test "$withval" = "no" || test "$withval" = "yes"; then AC_MSG_ERROR([--with-apr requires a directory or file to be provided]) @@ -103,16 +110,28 @@ AC_DEFUN([APR_FIND_APR], [ for lookdir in "$withval/bin" "$withval" do if $TEST_X "$lookdir/$apr_temp_apr_config_file"; then - apr_found="yes" apr_config="$lookdir/$apr_temp_apr_config_file" + ifelse([$5], [], [], [ + apr_acceptable="yes" + $5 + if test "$apr_acceptable" != "yes"; then + AC_MSG_WARN([Found APR in $apr_config, but we think it is considered unacceptable]) + continue + fi]) + apr_found="yes" break 2 fi done done if test "$apr_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then - apr_found="yes" apr_config="$withval" + ifelse([$5], [], [apr_found="yes"], [ + apr_acceptable="yes" + $5 + if test "$apr_acceptable" = "yes"; then + apr_found="yes" + fi]) fi dnl if --with-apr is used, it is a fatal error for its argument @@ -121,9 +140,43 @@ AC_DEFUN([APR_FIND_APR], [ AC_MSG_ERROR([the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.]) fi ],[ - dnl if we have a bundled source directory, use it - if test -d "$1"; then - apr_temp_abs_srcdir="`cd $1 && pwd`" + dnl If we allow installed copies, check those before using bundled copy. + if test -n "$3" && test "$3" = "1"; then + for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config + do + if $apr_temp_apr_config_file --help > /dev/null 2>&1 ; then + apr_config="$apr_temp_apr_config_file" + ifelse([$5], [], [], [ + apr_acceptable="yes" + $5 + if test "$apr_acceptable" != "yes"; then + AC_MSG_WARN([skipped APR at $apr_config, version not acceptable]) + continue + fi]) + apr_found="yes" + break + else + dnl look in some standard places + for lookdir in /usr /usr/local /usr/local/apr /opt/apr; do + if $TEST_X "$lookdir/bin/$apr_temp_apr_config_file"; then + apr_config="$lookdir/bin/$apr_temp_apr_config_file" + ifelse([$5], [], [], [ + apr_acceptable="yes" + $5 + if test "$apr_acceptable" != "yes"; then + AC_MSG_WARN([skipped APR at $apr_config, version not acceptable]) + continue + fi]) + apr_found="yes" + break 2 + fi + done + fi + done + fi + dnl if we have not found anything yet and have bundled source, use that + if test "$apr_found" = "no" && test -d "$1"; then + apr_temp_abs_srcdir="`cd \"$1\" && pwd`" apr_found="reconfig" apr_bundled_major="`sed -n '/#define.*APR_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apr_version.h\"`" case $apr_bundled_major in @@ -143,25 +196,6 @@ AC_DEFUN([APR_FIND_APR], [ apr_config="$1/$apr_temp_apr_config_file" fi fi - if test "$apr_found" = "no" && test -n "$3" && test "$3" = "1"; then - for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config - do - if $apr_temp_apr_config_file --help > /dev/null 2>&1 ; then - apr_found="yes" - apr_config="$apr_temp_apr_config_file" - break - else - dnl look in some standard places (apparently not in builtin/default) - for lookdir in /usr /usr/local /opt/apr /usr/local/apache2 ; do - if $TEST_X "$lookdir/bin/$apr_temp_apr_config_file"; then - apr_found="yes" - apr_config="$lookdir/bin/$apr_temp_apr_config_file" - break 2 - fi - done - fi - done - fi ]) AC_MSG_RESULT($apr_found) Modified: subversion/branches/addremove/build/ac-macros/find_apu.m4 URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/ac-macros/find_apu.m4?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/ac-macros/find_apu.m4 (original) +++ subversion/branches/addremove/build/ac-macros/find_apu.m4 Sat May 23 14:16:56 2020 @@ -1,21 +1,19 @@ -dnl =================================================================== -dnl Licensed to the Apache Software Foundation (ASF) under one -dnl or more contributor license agreements. See the NOTICE file -dnl distributed with this work for additional information -dnl regarding copyright ownership. The ASF licenses this file -dnl to you under the Apache License, Version 2.0 (the -dnl "License"); you may not use this file except in compliance -dnl with the License. You may obtain a copy of the License at +dnl -------------------------------------------------------- -*- autoconf -*- +dnl Licensed to the Apache Software Foundation (ASF) under one or more +dnl contributor license agreements. See the NOTICE file distributed with +dnl this work for additional information regarding copyright ownership. +dnl The ASF licenses this file to You under the Apache License, Version 2.0 +dnl (the "License"); you may not use this file except in compliance with +dnl the License. You may obtain a copy of the License at dnl dnl http://www.apache.org/licenses/LICENSE-2.0 dnl -dnl Unless required by applicable law or agreed to in writing, -dnl software distributed under the License is distributed on an -dnl "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -dnl KIND, either express or implied. See the License for the -dnl specific language governing permissions and limitations -dnl under the License. -dnl =================================================================== +dnl Unless required by applicable law or agreed to in writing, software +dnl distributed under the License is distributed on an "AS IS" BASIS, +dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +dnl See the License for the specific language governing permissions and +dnl limitations under the License. + dnl dnl find_apu.m4 : locate the APR-util (APU) include files and libraries dnl @@ -24,7 +22,8 @@ dnl library. It provides a standardized dnl embedding APU into the application source, or locating an installed dnl copy of APU. dnl -dnl APR_FIND_APU(srcdir, builddir, implicit-install-check, acceptable-majors) +dnl APR_FIND_APU(srcdir, builddir, implicit-install-check, acceptable-majors, +dnl detailed-check) dnl dnl where srcdir is the location of the bundled APU source directory, or dnl empty if source is not bundled. @@ -41,6 +40,14 @@ dnl If multiple versions are specified dnl implicit installed search are used, then the first (leftmost) version dnl in the list that is found will be used. Currently defaults to [0 1]. dnl +dnl where detailed-check is an M4 macro which sets the apu_acceptable to +dnl either "yes" or "no". The macro will be invoked for each installed +dnl copy of APU found, with the apu_config variable set appropriately. +dnl Only installed copies of APU which are considered acceptable by +dnl this macro will be considered found. If no installed copies are +dnl considered acceptable by this macro, apu_found will be set to either +dnl either "no" or "reconfig". +dnl dnl Sets the following variables on exit: dnl dnl apu_found : "yes", "no", "reconfig" @@ -73,7 +80,7 @@ dnl AC_DEFUN([APR_FIND_APU], [ apu_found="no" - if test "$ac_cv_emxos2" = "yes"; then + if test "$target_os" = "os2-emx"; then # Scripts don't pass test -x on OS/2 TEST_X="test -f" else @@ -101,8 +108,8 @@ AC_DEFUN([APR_FIND_APU], [ AC_MSG_CHECKING(for APR-util) AC_ARG_WITH(apr-util, - [ --with-apr-util=PATH prefix for installed APU, path to APU build tree, - or the full path to apu-config], + [ --with-apr-util=PATH prefix for installed APU or the full path to + apu-config], [ if test "$withval" = "no" || test "$withval" = "yes"; then AC_MSG_ERROR([--with-apr-util requires a directory or file to be provided]) @@ -113,16 +120,28 @@ AC_DEFUN([APR_FIND_APU], [ for lookdir in "$withval/bin" "$withval" do if $TEST_X "$lookdir/$apu_temp_apu_config_file"; then - apu_found="yes" apu_config="$lookdir/$apu_temp_apu_config_file" + ifelse([$5], [], [], [ + apu_acceptable="yes" + $5 + if test "$apu_acceptable" != "yes"; then + AC_MSG_WARN([Found APU in $apu_config, but it is considered unacceptable]) + continue + fi]) + apu_found="yes" break 2 fi done done if test "$apu_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then - apu_found="yes" apu_config="$withval" + ifelse([$5], [], [apu_found="yes"], [ + apu_acceptable="yes" + $5 + if test "$apu_acceptable" = "yes"; then + apu_found="yes" + fi]) fi dnl if --with-apr-util is used, it is a fatal error for its argument @@ -131,9 +150,42 @@ AC_DEFUN([APR_FIND_APU], [ AC_MSG_ERROR([the --with-apr-util parameter is incorrect. It must specify an install prefix, a build directory, or an apu-config file.]) fi ],[ - dnl if we have a bundled source directory, use it - if test -d "$1"; then - apu_temp_abs_srcdir="`cd $1 && pwd`" + if test -n "$3" && test "$3" = "1"; then + for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config + do + if $apu_temp_apu_config_file --help > /dev/null 2>&1 ; then + apu_config="$apu_temp_apu_config_file" + ifelse([$5], [], [], [ + apu_acceptable="yes" + $5 + if test "$apu_acceptable" != "yes"; then + AC_MSG_WARN([skipped APR-util at $apu_config, version not acceptable]) + continue + fi]) + apu_found="yes" + break + else + dnl look in some standard places (apparently not in builtin/default) + for lookdir in /usr /usr/local /usr/local/apr /opt/apr; do + if $TEST_X "$lookdir/bin/$apu_temp_apu_config_file"; then + apu_config="$lookdir/bin/$apu_temp_apu_config_file" + ifelse([$5], [], [], [ + apu_acceptable="yes" + $5 + if test "$apu_acceptable" != "yes"; then + AC_MSG_WARN([skipped APR-util at $apu_config, version not acceptable]) + continue + fi]) + apu_found="yes" + break 2 + fi + done + fi + done + fi + dnl if we have not found anything yet and have bundled source, use that + if test "$apu_found" = "no" && test -d "$1"; then + apu_temp_abs_srcdir="`cd \"$1\" && pwd`" apu_found="reconfig" apu_bundled_major="`sed -n '/#define.*APU_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apu_version.h\"`" case $apu_bundled_major in @@ -153,25 +205,6 @@ AC_DEFUN([APR_FIND_APU], [ apu_config="$1/$apu_temp_apu_config_file" fi fi - if test "$apu_found" = "no" && test -n "$3" && test "$3" = "1"; then - for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config - do - if $apu_temp_apu_config_file --help > /dev/null 2>&1 ; then - apu_found="yes" - apu_config="$apu_temp_apu_config_file" - break - else - dnl look in some standard places (apparently not in builtin/default) - for lookdir in /usr /usr/local /opt/apr /usr/local/apache2 ; do - if $TEST_X "$lookdir/bin/$apu_temp_apu_config_file"; then - apu_found="yes" - apu_config="$lookdir/bin/$apu_temp_apu_config_file" - break 2 - fi - done - fi - done - fi ]) AC_MSG_RESULT($apu_found) Modified: subversion/branches/addremove/build/ac-macros/java.m4 URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/ac-macros/java.m4?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/ac-macros/java.m4 (original) +++ subversion/branches/addremove/build/ac-macros/java.m4 Sat May 23 14:16:56 2020 @@ -166,7 +166,7 @@ AC_DEFUN(SVN_FIND_JDK, # The release for "-source" could actually be greater than that # of "-target", if we want to cross-compile for lesser JVMs. if test -z "$JAVAC_FLAGS"; then - JAVAC_FLAGS="-target $JAVA_OLDEST_WORKING_VER -source 1.6" + JAVAC_FLAGS="-target $JAVA_OLDEST_WORKING_VER -source 1.8" if test "$enable_debugging" = "yes"; then JAVAC_FLAGS="-g -Xlint -Xlint:unchecked -Xlint:serial -Xlint:path $JAVAC_FLAGS" if test -z "$JAVAC_COMPAT_FLAGS"; then Modified: subversion/branches/addremove/build/ac-macros/kwallet.m4 URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/ac-macros/kwallet.m4?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/ac-macros/kwallet.m4 (original) +++ subversion/branches/addremove/build/ac-macros/kwallet.m4 Sat May 23 14:16:56 2020 @@ -83,10 +83,6 @@ AC_DEFUN(SVN_LIB_KWALLET, fi fi if test -n "$KDE_CONFIG"; then - if test $kde_config_name = "kf5-config"; then - dnl KF5 does not compile with -std=c++98 - SVN_CXX_MODE_SETUP11 - fi old_CXXFLAGS="$CXXFLAGS" old_LDFLAGS="$LDFLAGS" old_LIBS="$LIBS" Modified: subversion/branches/addremove/build/ac-macros/libsecret.m4 URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/ac-macros/libsecret.m4?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/ac-macros/libsecret.m4 (original) +++ subversion/branches/addremove/build/ac-macros/libsecret.m4 Sat May 23 14:16:56 2020 @@ -54,6 +54,7 @@ AC_DEFUN(SVN_LIB_SECRET, [Is libsecret support enabled?]) SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags libsecret-1`" SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs libsecret-1`" + SVN_GNOME_KEYRING_PCLIBS="libsecret-1" found_gnome_keyring="yes" else if test "$with_gnome_keyring" = "yes"; then @@ -90,4 +91,5 @@ AC_DEFUN(SVN_LIB_SECRET, fi AC_SUBST(SVN_GNOME_KEYRING_INCLUDES) AC_SUBST(SVN_GNOME_KEYRING_LIBS) + AC_SUBST(SVN_GNOME_KEYRING_PCLIBS) ]) Modified: subversion/branches/addremove/build/ac-macros/lz4.m4 URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/ac-macros/lz4.m4?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/ac-macros/lz4.m4 (original) +++ subversion/branches/addremove/build/ac-macros/lz4.m4 Sat May 23 14:16:56 2020 @@ -28,9 +28,21 @@ AC_DEFUN(SVN_LZ4, AC_ARG_WITH([lz4], [AS_HELP_STRING([--with-lz4=PREFIX|internal], [look for lz4 in PREFIX or use the internal code])], - [lz4_prefix="$withval"], + [ + if test "$withval" = internal; then + lz4_prefix=internal + elif test "$withval" = yes; then + lz4_prefix=std + else + lz4_prefix="$withval" + fi + ], [lz4_prefix=std]) + if test "$lz4_prefix" = "no"; then + dnl The user has tried to disable LZ4 + AC_MSG_ERROR([Subversion requires LZ4]) + fi if test "$lz4_prefix" = "internal"; then AC_MSG_NOTICE([using internal lz4]) AC_DEFINE([SVN_INTERNAL_LZ4], [1], @@ -42,28 +54,36 @@ AC_DEFUN(SVN_LZ4, SVN_LZ4_PREFIX fi if test "$lz4_found" != "yes"; then - AC_MSG_ERROR([Subversion requires LZ4]) + AC_MSG_ERROR([Subversion requires LZ4 >= r129, or use --with-lz4=internal]) fi fi AC_SUBST(SVN_LZ4_INCLUDES) AC_SUBST(SVN_LZ4_LIBS) ]) +dnl LZ4 changed versioning schemes after r131, the next version being 1.7.3, so +dnl we need to check for both schemes. We can't use "--atleast-version=1.7.3" +dnl because that will result in a >= 1 check for the older versioning scheme. +dnl Instead, fallback to --max-version=3 if the old scheme fails. This gives a +dnl little room for major version changes, but won't falsely identify old +dnl versions as supported. AC_DEFUN(SVN_LZ4_STD, [ if test -n "$PKG_CONFIG"; then AC_MSG_CHECKING([for lz4 library via pkg-config]) - if $PKG_CONFIG liblz4 --exists; then + if $PKG_CONFIG liblz4 --atleast-version=129 || $PKG_CONFIG liblz4 --max-version=3; then AC_MSG_RESULT([yes]) lz4_found=yes SVN_LZ4_INCLUDES=`$PKG_CONFIG liblz4 --cflags` SVN_LZ4_LIBS=`$PKG_CONFIG liblz4 --libs` SVN_LZ4_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($SVN_LZ4_LIBS)`" + else + AC_MSG_RESULT([no]) fi - else + fi + if test "$lz4_found" != "yes"; then AC_MSG_NOTICE([lz4 configuration without pkg-config]) - AC_CHECK_LIB(lz4, LZ4_decompress_safe, [ - AC_MSG_RESULT([yes]) + AC_CHECK_LIB(lz4, LZ4_compress_default, [ lz4_found=yes SVN_LZ4_LIBS="-llz4" ]) @@ -77,8 +97,7 @@ AC_DEFUN(SVN_LZ4_PREFIX, CPPFLAGS="$CPPFLAGS -I$lz4_prefix/include" save_ldflags="$LDFLAGS" LDFLAGS="$LDFLAGS -L$lz4_prefix/lib" - AC_CHECK_LIB(lz4, LZ4_decompress_safe, [ - AC_MSG_RESULT([yes]) + AC_CHECK_LIB(lz4, LZ4_compress_default, [ lz4_found=yes SVN_LZ4_INCLUDES="-I$lz4_prefix/include" SVN_LZ4_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS(-L$lz4_prefix/lib)` -llz4" Modified: subversion/branches/addremove/build/ac-macros/macosx.m4 URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/ac-macros/macosx.m4?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/ac-macros/macosx.m4 (original) +++ subversion/branches/addremove/build/ac-macros/macosx.m4 Sat May 23 14:16:56 2020 @@ -55,19 +55,8 @@ AC_DEFUN(SVN_LIB_MACOS_PLIST, #error ProperyList API unavailable. #endif ]],[[]])],[ - dnl ### Hack. We should only need to pass the -framework options when - dnl linking libsvn_subr, since it is the only library that uses Keychain. - dnl - dnl Unfortunately, libtool 1.5.x doesn't track transitive dependencies for - dnl OS X frameworks like it does for normal libraries, so we need to - dnl explicitly pass the option to all the users of libsvn_subr to allow - dnl static builds to link successfully. - dnl - dnl This does mean that all executables we link will be linked directly - dnl to these frameworks - even when building shared libraries - but that - dnl shouldn't cause any problems. - - LIBS="$LIBS -framework CoreFoundation" + SVN_MACOS_PLIST_LIBS="-framework CoreFoundation" + AC_SUBST(SVN_MACOS_PLIST_LIBS) AC_DEFINE([SVN_HAVE_MACOS_PLIST], [1], [Is Mac OS property list API available?]) AC_MSG_RESULT([yes]) @@ -97,9 +86,8 @@ AC_DEFUN(SVN_LIB_MACOS_KEYCHAIN, #error KeyChain API unavailable. #endif ]],[[]])],[ - dnl ### Hack, see SVN_LIB_MACOS_PLIST - LIBS="$LIBS -framework Security" - LIBS="$LIBS -framework CoreServices" + SVN_MACOS_KEYCHAIN_LIBS="-framework Security -framework CoreServices" + AC_SUBST(SVN_MACOS_KEYCHAIN_LIBS) AC_DEFINE([SVN_HAVE_KEYCHAIN_SERVICES], [1], [Is Mac OS KeyChain support enabled?]) AC_MSG_RESULT([yes]) ],[ Modified: subversion/branches/addremove/build/ac-macros/serf.m4 URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/ac-macros/serf.m4?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/ac-macros/serf.m4 (original) +++ subversion/branches/addremove/build/ac-macros/serf.m4 Sat May 23 14:16:56 2020 @@ -168,8 +168,8 @@ AC_DEFUN(SVN_SERF_PKG_CONFIG, if $PKG_CONFIG $serf_pc_arg --atleast-version=$serf_check_version; then AC_MSG_RESULT([yes]) serf_found=yes - SVN_SERF_INCLUDES=[`$PKG_CONFIG $serf_pc_arg --cflags | $SED -e 's/ -D[^ ]*//g' -e 's/^-D[^ ]*//g'`] - SVN_SERF_LIBS=`$PKG_CONFIG $serf_pc_arg --libs-only-l` + SVN_SERF_INCLUDES=[`$PKG_CONFIG $serf_pc_arg --cflags-only-I`] + SVN_SERF_LIBS=[`$PKG_CONFIG $serf_pc_arg --libs-only-l`] dnl don't use --libs-only-L because then we might miss some options LDFLAGS=["$LDFLAGS `$PKG_CONFIG $serf_pc_arg --libs | $SED -e 's/-l[^ ]*//g'`"] break Modified: subversion/branches/addremove/build/ac-macros/swig.m4 URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/ac-macros/swig.m4?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/ac-macros/swig.m4 (original) +++ subversion/branches/addremove/build/ac-macros/swig.m4 Sat May 23 14:16:56 2020 @@ -98,209 +98,255 @@ AC_DEFUN(SVN_FIND_SWIG, AC_MSG_WARN([Detected SWIG version $SWIG_VERSION_RAW]) AC_MSG_WARN([Subversion requires SWIG >= 1.3.24]) fi + fi + + SWIG_PY_COMPILE="none" + SWIG_PY_LINK="none" + SWIG_PY_OPTS="none" + SWIG_PY_ERRMSG="check config.log for details" + if test "$PYTHON" != "none"; then + AC_MSG_NOTICE([Configuring python swig binding]) + + AC_CACHE_CHECK([for Python includes], [ac_cv_python_includes],[ + ac_cv_python_includes="`$PYTHON ${abs_srcdir}/build/get-py-info.py --includes`" + ]) + SWIG_PY_INCLUDES="\$(SWIG_INCLUDES) $ac_cv_python_includes" + + if test "$ac_cv_python_includes" = "none"; then + SWIG_PY_ERRMSG="no distutils found" + AC_MSG_WARN([python bindings cannot be built without distutils module]) + else + + python_header_found="no" + + save_cppflags="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $ac_cv_python_includes" + AC_CHECK_HEADER(Python.h, [ + python_header_found="yes" + ]) + CPPFLAGS="$save_cppflags" + + if test "$python_header_found" = "no"; then + SWIG_PY_ERRMSG="no Python.h found" + AC_MSG_WARN([Python.h not found; disabling python swig bindings]) + else + SVN_PY3C() - SWIG_PY_COMPILE="none" - SWIG_PY_LINK="none" - if test "$PYTHON" != "none"; then - AC_MSG_NOTICE([Configuring python swig binding]) - - AC_CACHE_CHECK([for Python includes], [ac_cv_python_includes],[ - ac_cv_python_includes="`$PYTHON ${abs_srcdir}/build/get-py-info.py --includes`" - ]) - SWIG_PY_INCLUDES="\$(SWIG_INCLUDES) $ac_cv_python_includes" - - if test "$ac_cv_python_includes" = "none"; then - AC_MSG_WARN([python bindings cannot be built without distutils module]) + if test "$py3c_found" = "no"; then + SWIG_PY_ERRMSG="py3c library not found" + AC_MSG_WARN([py3c library not found; disabling python swig bindings]) + else + AC_CACHE_CHECK([for compiling Python extensions], [ac_cv_python_compile],[ + ac_cv_python_compile="`$PYTHON ${abs_srcdir}/build/get-py-info.py --compile`" + ]) + SWIG_PY_COMPILE="$ac_cv_python_compile $CFLAGS" + + AC_CACHE_CHECK([for linking Python extensions], [ac_cv_python_link],[ + ac_cv_python_link="`$PYTHON ${abs_srcdir}/build/get-py-info.py --link`" + ]) + SWIG_PY_LINK="$ac_cv_python_link" + + AC_CACHE_CHECK([for linking Python libraries], [ac_cv_python_libs],[ + ac_cv_python_libs="`$PYTHON ${abs_srcdir}/build/get-py-info.py --libs`" + ]) + SWIG_PY_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_python_libs)`" + + if test "$SWIG" = "none"; then + SWIG_PY_ERRMSG="" + else + # Look more closely at the SWIG and Python versions to + # determine SWIG_PY_OPTS. We can skip this if we already + # have the SWIG-generated files. + AC_CACHE_CHECK([for Python >= 3], [ac_cv_python_is_py3],[ + ac_cv_python_is_py3="no" + $PYTHON -c 'import sys; sys.exit(0x3000000 > sys.hexversion)' && \ + ac_cv_python_is_py3="yes" + ]) + + if test "$ac_cv_python_is_py3" = "yes"; then + if test "$SWIG_VERSION" -ge "300010"; then + dnl SWIG Python bindings successfully configured, clear the error message dnl + SWIG_PY_ERRMSG="" + else + SWIG_PY_ERRMSG="SWIG version is not suitable" + AC_MSG_WARN([Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer]) + fi + if test "$SWIG_VERSION" -lt "400000"; then + SWIG_PY_OPTS="-python -py3 -nofastunpack -modern" + else + SWIG_PY_OPTS="-python -py3 -nofastunpack" + fi + else + if test "$SWIG_VERSION" -lt "400000"; then + SWIG_PY_OPTS="-python -classic" + dnl SWIG Python bindings successfully configured, clear the error message dnl + SWIG_PY_ERRMSG="" + else + SWIG_PY_OPTS="-python -nofastunpack" + SWIG_PY_ERRMSG="SWIG version is not suitable" + AC_MSG_WARN([Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0]) + fi + fi + fi + fi fi + fi - AC_CACHE_CHECK([for compiling Python extensions], [ac_cv_python_compile],[ - ac_cv_python_compile="`$PYTHON ${abs_srcdir}/build/get-py-info.py --compile`" - ]) - SWIG_PY_COMPILE="$ac_cv_python_compile $CFLAGS" - - AC_CACHE_CHECK([for linking Python extensions], [ac_cv_python_link],[ - ac_cv_python_link="`$PYTHON ${abs_srcdir}/build/get-py-info.py --link`" - ]) - SWIG_PY_LINK="$ac_cv_python_link" - - AC_CACHE_CHECK([for linking Python libraries], [ac_cv_python_libs],[ - ac_cv_python_libs="`$PYTHON ${abs_srcdir}/build/get-py-info.py --libs`" - ]) - SWIG_PY_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_python_libs)`" + fi - dnl Sun Forte adds an extra space before substituting APR_INT64_T_FMT - dnl gcc-2.95 adds an extra space after substituting APR_INT64_T_FMT - dnl thus the egrep patterns have a + in them. - SVN_PYCFMT_SAVE_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES" - AC_CACHE_CHECK([for apr_int64_t Python/C API format string], - [svn_cv_pycfmt_apr_int64_t], [ - if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then - AC_EGREP_CPP([MaTcHtHiS +\"lld\" +EnDeNd], - [#include <apr.h> - MaTcHtHiS APR_INT64_T_FMT EnDeNd], - [svn_cv_pycfmt_apr_int64_t="L"]) - fi - if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then - AC_EGREP_CPP([MaTcHtHiS +\"ld\" +EnDeNd],r - [#include <apr.h> - MaTcHtHiS APR_INT64_T_FMT EnDeNd], - [svn_cv_pycfmt_apr_int64_t="l"]) - fi - if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then - AC_EGREP_CPP([MaTcHtHiS +\"d\" +EnDeNd], - [#include <apr.h> - MaTcHtHiS APR_INT64_T_FMT EnDeNd], - [svn_cv_pycfmt_apr_int64_t="i"]) - fi - ]) - CPPFLAGS="$SVN_PYCFMT_SAVE_CPPFLAGS" - if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then - AC_MSG_ERROR([failed to recognize APR_INT64_T_FMT on this platform]) - fi - AC_DEFINE_UNQUOTED([SVN_APR_INT64_T_PYCFMT], - ["$svn_cv_pycfmt_apr_int64_t"], - [Define to the Python/C API format character suitable] - [ for apr_int64_t]) + SWIG_PL_ERRMSG="check config.log for details" + if test "$PERL" != "none"; then + AC_MSG_CHECKING([perl version]) + dnl Note that the q() bit is there to avoid unbalanced brackets + dnl which m4 really doesn't like. + PERL_VERSION="`$PERL -e 'q([[); print $]] * 1000000,$/;'`" + AC_MSG_RESULT([$PERL_VERSION]) + if test "$PERL_VERSION" -ge "5008000"; then + SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$PERL -MExtUtils::Embed -e ccopts`" + SWIG_PL_LINK="`$PERL -MExtUtils::Embed -e ldopts`" + SWIG_PL_LINK="`SVN_REMOVE_STANDARD_LIB_DIRS($SWIG_PL_LINK)`" + + dnl SWIG Perl bindings successfully configured, clear the error message + SWIG_PL_ERRMSG="" + else + AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.]) fi + fi - if test "$PERL" != "none"; then - AC_MSG_CHECKING([perl version]) - dnl Note that the q() bit is there to avoid unbalanced brackets - dnl which m4 really doesn't like. - PERL_VERSION="`$PERL -e 'q([[); print $]] * 1000000,$/;'`" - AC_MSG_RESULT([$PERL_VERSION]) - if test "$PERL_VERSION" -ge "5008000"; then - SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$PERL -MExtUtils::Embed -e ccopts`" - SWIG_PL_LINK="`$PERL -MExtUtils::Embed -e ldopts`" - else - AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.]) - fi + SWIG_RB_COMPILE="none" + SWIG_RB_LINK="none" + SWIG_RB_ERRMSG="check config.log for details" + if test "$RUBY" != "none"; then + if test x"$SWIG_VERSION" = x"3""00""008"; then + # Use a local variable to escape the '#' sign. + ruby_swig_issue_602='https://subversion.apache.org/docs/release-notes/1.11#ruby-swig-issue-602' + AC_MSG_WARN([Ruby bindings are known not to support swig 3.0.8; see $ruby_swig_issue_602]) fi + rbconfig="$RUBY -rrbconfig -e " - SWIG_RB_COMPILE="none" - SWIG_RB_LINK="none" - if test "$RUBY" != "none"; then - rbconfig="$RUBY -rrbconfig -e " - - for var_name in arch archdir CC LDSHARED DLEXT LIBS LIBRUBYARG \ - rubyhdrdir rubyarchhdrdir sitedir sitelibdir sitearchdir libdir - do - rbconfig_tmp=`$rbconfig "print RbConfig::CONFIG@<:@'$var_name'@:>@"` - eval "rbconfig_$var_name=\"$rbconfig_tmp\"" - done - - AC_MSG_NOTICE([Configuring Ruby SWIG binding]) - - AC_CACHE_CHECK([for Ruby include path], [svn_cv_ruby_includes],[ - if test -d "$rbconfig_rubyhdrdir"; then - dnl Ruby >=1.9 - svn_cv_ruby_includes="-I. -I$rbconfig_rubyhdrdir -I$rbconfig_rubyhdrdir/ruby -I$rbconfig_rubyhdrdir/ruby/backward" - if test -d "$rbconfig_rubyarchhdrdir"; then - dnl Ruby >=2.0 - svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyarchhdrdir" - else - svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyhdrdir/$rbconfig_arch" - fi + for var_name in arch archdir CC LDSHARED DLEXT LIBS LIBRUBYARG \ + rubyhdrdir rubyarchhdrdir sitedir sitelibdir sitearchdir libdir + do + rbconfig_tmp=`$rbconfig "print RbConfig::CONFIG@<:@'$var_name'@:>@"` + eval "rbconfig_$var_name=\"$rbconfig_tmp\"" + done + + AC_MSG_NOTICE([Configuring Ruby SWIG binding]) + + AC_CACHE_CHECK([for Ruby include path], [svn_cv_ruby_includes],[ + if test -d "$rbconfig_rubyhdrdir"; then + dnl Ruby >=1.9 + svn_cv_ruby_includes="-I. -I$rbconfig_rubyhdrdir" + if test -d "$rbconfig_rubyarchhdrdir"; then + dnl Ruby >=2.0 + svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyarchhdrdir" else - dnl Ruby 1.8 - svn_cv_ruby_includes="-I. -I$rbconfig_archdir" + svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyhdrdir/$rbconfig_arch" fi - ]) - SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes" - - AC_CACHE_CHECK([how to compile Ruby extensions], [svn_cv_ruby_compile],[ - svn_cv_ruby_compile="$rbconfig_CC $CFLAGS" - ]) - SWIG_RB_COMPILE="$svn_cv_ruby_compile" - SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-ansi]) - SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c89]) - SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c90]) - dnl FIXME: Check that the compiler for Ruby actually supports this flag - SWIG_RB_COMPILE="$SWIG_RB_COMPILE -Wno-int-to-pointer-cast" - - AC_CACHE_CHECK([how to link Ruby extensions], [svn_cv_ruby_link],[ - svn_cv_ruby_link="`$RUBY -e 'ARGV.shift; print ARGV.join(%q( ))' \ - $rbconfig_LDSHARED`" - svn_cv_ruby_link="$rbconfig_CC $svn_cv_ruby_link" - svn_cv_ruby_link="$svn_cv_ruby_link -shrext .$rbconfig_DLEXT" - ]) - SWIG_RB_LINK="$svn_cv_ruby_link" - - AC_CACHE_CHECK([how to link Ruby libraries], [ac_cv_ruby_libs], [ - ac_cv_ruby_libs="$rbconfig_LIBRUBYARG $rbconfig_LIBS" - ]) - SWIG_RB_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_ruby_libs)`" + else + dnl Ruby 1.8 + svn_cv_ruby_includes="-I. -I$rbconfig_archdir" + fi + ]) + SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes" - AC_MSG_CHECKING([for rb_errinfo]) - old_CFLAGS="$CFLAGS" - old_LIBS="$LIBS" - CFLAGS="$CFLAGS $svn_cv_ruby_includes" - SVN_STRIP_FLAG([CFLAGS], [-ansi]) - SVN_STRIP_FLAG([CFLAGS], [-std=c89]) - SVN_STRIP_FLAG([CFLAGS], [-std=c90]) - LIBS="$SWIG_RB_LIBS" - AC_LINK_IFELSE([AC_LANG_SOURCE([[ + AC_CACHE_CHECK([how to compile Ruby extensions], [svn_cv_ruby_compile],[ + svn_cv_ruby_compile="$rbconfig_CC $CFLAGS" + ]) + SWIG_RB_COMPILE="$svn_cv_ruby_compile" + SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-ansi]) + SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c89]) + SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c90]) + dnl FIXME: Check that the compiler for Ruby actually supports this flag + SWIG_RB_COMPILE="$SWIG_RB_COMPILE -Wno-int-to-pointer-cast" + + AC_CACHE_CHECK([how to link Ruby extensions], [svn_cv_ruby_link],[ + svn_cv_ruby_link="`$RUBY -e 'ARGV.shift; print ARGV.join(%q( ))' \ + $rbconfig_LDSHARED`" + svn_cv_ruby_link="$rbconfig_CC $svn_cv_ruby_link" + svn_cv_ruby_link="$svn_cv_ruby_link -shrext .$rbconfig_DLEXT" + ]) + SWIG_RB_LINK="$svn_cv_ruby_link" + + AC_CACHE_CHECK([how to link Ruby libraries], [ac_cv_ruby_libs], [ + ac_cv_ruby_libs="$rbconfig_LIBRUBYARG $rbconfig_LIBS" + ]) + SWIG_RB_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_ruby_libs)`" + + AC_MSG_CHECKING([for rb_errinfo]) + old_CFLAGS="$CFLAGS" + old_LIBS="$LIBS" + CFLAGS="$CFLAGS $svn_cv_ruby_includes" + SVN_STRIP_FLAG([CFLAGS], [-ansi]) + SVN_STRIP_FLAG([CFLAGS], [-std=c89]) + SVN_STRIP_FLAG([CFLAGS], [-std=c90]) + LIBS="$SWIG_RB_LIBS" + AC_LINK_IFELSE([AC_LANG_SOURCE([[ #include <ruby.h> int main() {rb_errinfo();}]])], have_rb_errinfo="yes", have_rb_errinfo="no") - if test "$have_rb_errinfo" = "yes"; then - AC_MSG_RESULT([yes]) - AC_DEFINE([HAVE_RB_ERRINFO], [1], - [Define to 1 if you have the `rb_errinfo' function.]) - else - AC_MSG_RESULT([no]) - fi - CFLAGS="$old_CFLAGS" - LIBS="$old_LIBS" - - AC_CACHE_VAL([svn_cv_ruby_sitedir],[ - svn_cv_ruby_sitedir="$rbconfig_sitedir" - ]) - AC_ARG_WITH([ruby-sitedir], - AS_HELP_STRING([--with-ruby-sitedir=SITEDIR], - [install Ruby bindings in SITEDIR - (default is same as ruby's one)]), - [svn_ruby_installdir="$withval"], - [svn_ruby_installdir="$svn_cv_ruby_sitedir"]) - - AC_MSG_CHECKING([where to install Ruby scripts]) - AC_CACHE_VAL([svn_cv_ruby_sitedir_libsuffix],[ - svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ - $SED -e "s,^$rbconfig_sitedir,,"`" - ]) - SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}" - AC_MSG_RESULT([$SWIG_RB_SITE_LIB_DIR]) + if test "$have_rb_errinfo" = "yes"; then + AC_MSG_RESULT([yes]) + AC_DEFINE([HAVE_RB_ERRINFO], [1], + [Define to 1 if you have the `rb_errinfo' function.]) + else + AC_MSG_RESULT([no]) + fi + CFLAGS="$old_CFLAGS" + LIBS="$old_LIBS" - AC_MSG_CHECKING([where to install Ruby extensions]) - AC_CACHE_VAL([svn_cv_ruby_sitedir_archsuffix],[ - svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ - $SED -e "s,^$rbconfig_sitedir,,"`" - ]) - SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}" - AC_MSG_RESULT([$SWIG_RB_SITE_ARCH_DIR]) + AC_CACHE_VAL([svn_cv_ruby_sitedir],[ + svn_cv_ruby_sitedir="$rbconfig_sitedir" + ]) + AC_ARG_WITH([ruby-sitedir], + AS_HELP_STRING([--with-ruby-sitedir=SITEDIR], + [install Ruby bindings in SITEDIR + (default is same as ruby's one)]), + [svn_ruby_installdir="$withval"], + [svn_ruby_installdir="$svn_cv_ruby_sitedir"]) + + AC_MSG_CHECKING([where to install Ruby scripts]) + AC_CACHE_VAL([svn_cv_ruby_sitedir_libsuffix],[ + svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \ + $SED -e "s,^$rbconfig_sitedir,,"`" + ]) + SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}" + AC_MSG_RESULT([$SWIG_RB_SITE_LIB_DIR]) + + AC_MSG_CHECKING([where to install Ruby extensions]) + AC_CACHE_VAL([svn_cv_ruby_sitedir_archsuffix],[ + svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \ + $SED -e "s,^$rbconfig_sitedir,,"`" + ]) + SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}" + AC_MSG_RESULT([$SWIG_RB_SITE_ARCH_DIR]) + + AC_MSG_CHECKING([how to use output level for Ruby bindings tests]) + AC_CACHE_VAL([svn_cv_ruby_test_verbose],[ + svn_cv_ruby_test_verbose="normal" + ]) + AC_ARG_WITH([ruby-test-verbose], + AS_HELP_STRING([--with-ruby-test-verbose=LEVEL], + [how to use output level for Ruby bindings tests + (default is normal)]), + [svn_ruby_test_verbose="$withval"], + [svn_ruby_test_verbose="$svn_cv_ruby_test_verbose"]) + SWIG_RB_TEST_VERBOSE="$svn_ruby_test_verbose" + AC_MSG_RESULT([$SWIG_RB_TEST_VERBOSE]) - AC_MSG_CHECKING([how to use output level for Ruby bindings tests]) - AC_CACHE_VAL([svn_cv_ruby_test_verbose],[ - svn_cv_ruby_test_verbose="normal" - ]) - AC_ARG_WITH([ruby-test-verbose], - AS_HELP_STRING([--with-ruby-test-verbose=LEVEL], - [how to use output level for Ruby bindings tests - (default is normal)]), - [svn_ruby_test_verbose="$withval"], - [svn_ruby_test_verbose="$svn_cv_ruby_test_verbose"]) - SWIG_RB_TEST_VERBOSE="$svn_ruby_test_verbose" - AC_MSG_RESULT([$SWIG_RB_TEST_VERBOSE]) - fi + dnl SWIG Ruby bindings successfully configured, clear the error message + SWIG_RB_ERRMSG="" fi AC_SUBST(SWIG) AC_SUBST(SWIG_PY_INCLUDES) AC_SUBST(SWIG_PY_COMPILE) AC_SUBST(SWIG_PY_LINK) AC_SUBST(SWIG_PY_LIBS) + AC_SUBST(SWIG_PY_OPTS) + AC_SUBST(SWIG_PY_ERRMSG) AC_SUBST(SWIG_PL_INCLUDES) AC_SUBST(SWIG_PL_LINK) + AC_SUBST(SWIG_PL_ERRMSG) AC_SUBST(SWIG_RB_LINK) AC_SUBST(SWIG_RB_LIBS) AC_SUBST(SWIG_RB_INCLUDES) @@ -308,4 +354,5 @@ int main() AC_SUBST(SWIG_RB_SITE_LIB_DIR) AC_SUBST(SWIG_RB_SITE_ARCH_DIR) AC_SUBST(SWIG_RB_TEST_VERBOSE) + AC_SUBST(SWIG_RB_ERRMSG) ]) Modified: subversion/branches/addremove/build/ac-macros/utf8proc.m4 URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/ac-macros/utf8proc.m4?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/ac-macros/utf8proc.m4 (original) +++ subversion/branches/addremove/build/ac-macros/utf8proc.m4 Sat May 23 14:16:56 2020 @@ -28,9 +28,21 @@ AC_DEFUN(SVN_UTF8PROC, AC_ARG_WITH([utf8proc], [AS_HELP_STRING([--with-utf8proc=PREFIX|internal], [look for utf8proc in PREFIX or use the internal code])], - [utf8proc_prefix="$withval"], + [ + if test "$withval" = internal; then + utf8proc_prefix=internal + elif test "$withval" = yes; then + utf8proc_prefix=std + else + utf8proc_prefix="$withval" + fi + ], [utf8proc_prefix=std]) + if test "$utf8proc_prefix" = "no"; then + dnl The user has tried to disable UTF8PROC + AC_MSG_ERROR([Subversion requires UTF8PROC]) + fi if test "$utf8proc_prefix" = "internal"; then AC_MSG_NOTICE([using internal utf8proc]) AC_DEFINE([SVN_INTERNAL_UTF8PROC], [1], @@ -42,7 +54,7 @@ AC_DEFUN(SVN_UTF8PROC, SVN_UTF8PROC_PREFIX fi if test "$utf8proc_found" != "yes"; then - AC_MSG_ERROR([Subversion requires UTF8PROC]) + AC_MSG_ERROR([Subversion requires UTF8PROC; install it or re-run configure with "--with-utf8proc=internal"]) fi fi AC_SUBST(SVN_UTF8PROC_INCLUDES) @@ -53,7 +65,6 @@ AC_DEFUN(SVN_UTF8PROC_STD, [ AC_MSG_NOTICE([utf8proc configuration without pkg-config]) AC_CHECK_LIB(utf8proc, utf8proc_version, [ - AC_MSG_RESULT([yes]) utf8proc_found=yes SVN_UTF8PROC_LIBS="-lutf8proc" ]) @@ -67,7 +78,6 @@ AC_DEFUN(SVN_UTF8PROC_PREFIX, save_ldflags="$LDFLAGS" LDFLAGS="$LDFLAGS -L$utf8proc_prefix/lib" AC_CHECK_LIB(utf8proc, utf8proc_version, [ - AC_MSG_RESULT([yes]) utf8proc_found=yes SVN_UTF8PROC_INCLUDES="-I$utf8proc_prefix/include" SVN_UTF8PROC_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS(-L$utf8proc_prefix/lib)` -lutf8proc" Modified: subversion/branches/addremove/build/buildcheck.sh URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/buildcheck.sh?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/buildcheck.sh (original) +++ subversion/branches/addremove/build/buildcheck.sh Sat May 23 14:16:56 2020 @@ -76,26 +76,12 @@ fi echo "buildcheck: autoheader version $ah_version (ok)" #-------------------------------------------------------------------------- -# libtool 1.4 or newer +# libtool 2.0 or newer # -LIBTOOL_WANTED_MAJOR=1 -LIBTOOL_WANTED_MINOR=4 +LIBTOOL_WANTED_MAJOR=2 +LIBTOOL_WANTED_MINOR=0 LIBTOOL_WANTED_PATCH= -LIBTOOL_WANTED_VERSION=1.4 - -# The minimum version for source releases is 1.4.3, -# because it's required by (at least) Solaris. -if test "$VERSION_CHECK" = "--release"; then - LIBTOOL_WANTED_PATCH=3 - LIBTOOL_WANTED_VERSION=1.4.3 -else - case `uname -sr` in - SunOS\ 5.*) - LIBTOOL_WANTED_PATCH=3 - LIBTOOL_WANTED_VERSION=1.4.3 - ;; - esac -fi +LIBTOOL_WANTED_VERSION=2.0 # Much like APR except we do not prefer libtool 1 over libtool 2. libtoolize=${LIBTOOLIZE:-`./build/PrintPath glibtoolize libtoolize glibtoolize1 libtoolize15 libtoolize14`} Modified: subversion/branches/addremove/build/generator/extractor.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/extractor.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/extractor.py (original) +++ subversion/branches/addremove/build/generator/extractor.py Sat May 23 14:16:56 2020 @@ -69,4 +69,6 @@ if __name__ == '__main__': if os.path.basename(fname) == 'svn_ctype.h': print('svn_ctype_table = svn_ctype_table_internal CONSTANT') elif os.path.basename(fname) == 'svn_wc_private.h': + # svn_wc__internal_walk_children() is now internal to libsvn_wc + # but entries-dump.c still calls it print('svn_wc__internal_walk_children') Modified: subversion/branches/addremove/build/generator/gen_base.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/gen_base.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/gen_base.py (original) +++ subversion/branches/addremove/build/generator/gen_base.py Sat May 23 14:16:56 2020 @@ -331,7 +331,8 @@ class GeneratorBase: '\n'.join(lines)) def errno_filter(self, codes): - return codes + # list() to force the generator under python3 + return list(codes) class FileSectionOptionEnum(object): # These are accessed via getattr() later on @@ -662,7 +663,7 @@ class TargetExe(TargetLinked): TargetLinked.add_dependencies(self) # collect test programs - if 'svnauthz' in self.name: # special case + if 'svnauthz' in self.name or 'svnmover' in self.name: # special case self.gen_obj.test_deps.append(self.filename) self.gen_obj.test_helpers.append(self.filename) elif self.install == 'test': @@ -899,115 +900,67 @@ class TargetJava(TargetLinked): def __init__(self, name, options, gen_obj): TargetLinked.__init__(self, name, options, gen_obj) self.link_cmd = options.get('link-cmd') - self.packages = options.get('package-roots', '').split() + self.package = options.get('package') self.jar = options.get('jar') self.deps = [ ] - -class TargetJavaHeaders(TargetJava): - def __init__(self, name, options, gen_obj): - TargetJava.__init__(self, name, options, gen_obj) self.objext = '.class' - self.javah_objext = '.h' self.headers = options.get('headers') self.classes = options.get('classes') - self.package = options.get('package') - self.output_dir = self.headers + self.native = options.get('native', '') + self.output_dir = self.classes + self.headers_dir = self.headers def add_dependencies(self): sources = _collect_paths(self.sources, self.path) + native = _collect_paths(self.native, self.path) + + class_pkg_list = self.package.split('.') + sourcepath = build_path_split(self.path)[:-len(class_pkg_list)] + sourcepath = build_path_join(*sourcepath) for src, reldir in sources: if src[-5:] != '.java': raise GenError('ERROR: unknown file extension on ' + src) + sfile = SourceFile(src, reldir) + sfile.sourcepath = sourcepath + class_name = build_path_basename(src[:-5]) - class_header = build_path_join(self.headers, class_name + '.h') - class_header_win = build_path_join(self.headers, - self.package.replace(".", "_") - + "_" + class_name + '.h') - class_pkg_list = self.package.split('.') class_pkg = build_path_join(*class_pkg_list) class_file = ObjectFile(build_path_join(self.classes, class_pkg, class_name + self.objext), - self.when) + self.compile_cmd, self.when) class_file.source_generated = 1 class_file.class_name = class_name - hfile = HeaderFile(class_header, self.package + '.' + class_name, - self.compile_cmd) - hfile.filename_win = class_header_win - hfile.source_generated = 1 - self.gen_obj.graph.add(DT_OBJECT, hfile, class_file) - self.deps.append(hfile) - - # target (a linked item) depends upon object - self.gen_obj.graph.add(DT_LINK, self.name, hfile) - - - # collect all the paths where stuff might get built - ### we should collect this from the dependency nodes rather than - ### the sources. "what dir are you going to put yourself into?" - self.gen_obj.target_dirs.append(self.path) - self.gen_obj.target_dirs.append(self.classes) - self.gen_obj.target_dirs.append(self.headers) - for pattern in self.sources.split(): - dirname = build_path_dirname(pattern) - if dirname: - self.gen_obj.target_dirs.append(build_path_join(self.path, dirname)) - self.gen_obj.graph.add(DT_INSTALL, self.name, self) + self.gen_obj.graph.add(DT_OBJECT, class_file, sfile) + self.gen_obj.graph.add(DT_LINK, self.name, class_file) + self.deps.append(class_file) + + if (src, reldir) in native: + class_header = build_path_join(self.headers, class_name + '.h') + class_header_win = build_path_join(self.headers, + self.package.replace(".", "_") + + "_" + class_name + '.h') + hfile = HeaderFile(class_header, self.package + '.' + class_name, + self.compile_cmd) + hfile.filename_win = class_header_win + hfile.source_generated = 1 + self.gen_obj.graph.add(DT_OBJECT, hfile, sfile) + self.deps.append(hfile) -class TargetJavaClasses(TargetJava): - def __init__(self, name, options, gen_obj): - TargetJava.__init__(self, name, options, gen_obj) - self.objext = '.class' - self.lang = 'java' - self.classes = options.get('classes') - self.output_dir = self.classes + # target (a linked item) depends upon object + self.gen_obj.graph.add(DT_LINK, self.name, hfile) - def add_dependencies(self): - sources = [] - for p in self.path.split(): - sources.extend(_collect_paths(self.sources, p)) - - for src, reldir in sources: - if src[-5:] == '.java': - objname = src[:-5] + self.objext - - # As .class files are likely not generated into the same - # directory as the source files, the object path may need - # adjustment. To this effect, take "target_ob.classes" into - # account. - dirs = build_path_split(objname) - sourcedirs = dirs[:-1] # Last element is the .class file name. - while sourcedirs: - if sourcedirs.pop() in self.packages: - sourcepath = build_path_join(*sourcedirs) - objname = build_path_join(self.classes, *dirs[len(sourcedirs):]) - break - else: - raise GenError('Unable to find Java package root in path "%s"' % objname) - else: - raise GenError('ERROR: unknown file extension on "' + src + '"') - - ofile = ObjectFile(objname, self.compile_cmd, self.when) - sfile = SourceFile(src, reldir) - sfile.sourcepath = sourcepath - - # object depends upon source - self.gen_obj.graph.add(DT_OBJECT, ofile, sfile) - - # target (a linked item) depends upon object - self.gen_obj.graph.add(DT_LINK, self.name, ofile) - - # Add the class file to the dependency tree for this target - self.deps.append(ofile) # collect all the paths where stuff might get built ### we should collect this from the dependency nodes rather than ### the sources. "what dir are you going to put yourself into?" - self.gen_obj.target_dirs.extend(self.path.split()) + self.gen_obj.target_dirs.append(self.path) self.gen_obj.target_dirs.append(self.classes) + if self.headers: + self.gen_obj.target_dirs.append(self.headers) for pattern in self.sources.split(): dirname = build_path_dirname(pattern) if dirname: @@ -1056,8 +1009,7 @@ _build_types = { 'apache-mod': TargetApacheMod, 'shared-only-lib': TargetSharedOnlyLib, 'shared-only-cxx-lib': TargetSharedOnlyCxxLib, - 'javah' : TargetJavaHeaders, - 'java' : TargetJavaClasses, + 'java' : TargetJava, 'i18n' : TargetI18N, 'sql-header' : TargetSQLHeader, } @@ -1321,7 +1273,8 @@ class IncludeDependencyInfo: Return a dictionary with included full file names as keys and None as values.""" hdrs = { } - for line in fileinput.input(fname): + + for line in fileinput.FileInput(fname, openhook=fileinput.hook_encoded("utf-8")): match = self._re_include.match(line) if not match: continue Modified: subversion/branches/addremove/build/generator/gen_make.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/gen_make.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/gen_make.py (original) +++ subversion/branches/addremove/build/generator/gen_make.py Sat May 23 14:16:56 2020 @@ -208,7 +208,9 @@ class Generator(gen_base.GeneratorBase): swig_lang_deps[objname.lang].append(str(objname)) for lang in self.swig.langs: - data.swig_langs.append(_eztdata(short=self.swig.short[lang], + data.swig_langs.append(_eztdata(name=lang, + short=self.swig.short[lang], + short_upper=self.swig.short[lang].upper(), deps=swig_lang_deps[lang])) ######################################## @@ -309,6 +311,8 @@ class Generator(gen_base.GeneratorBase): ezt_target.link_cmd = target_ob.link_cmd if hasattr(target_ob, 'output_dir'): ezt_target.output_dir = target_ob.output_dir + if hasattr(target_ob, 'headers_dir'): + ezt_target.headers_dir = target_ob.headers_dir # Add additional install dependencies if necessary if target_ob.add_install_deps: @@ -443,7 +447,7 @@ class Generator(gen_base.GeneratorBase): ### we should turn AREA into an object, then test it instead of this if area[:5] == 'swig-' and area[-4:] != '-lib' \ or area[:7] == 'javahl-' \ - or area[:6] == 'cxxhl-' \ + or area[:6] == 'svnxx-' \ or area == 'tools': ezt_area.extra_install = 'yes' @@ -507,7 +511,10 @@ class Generator(gen_base.GeneratorBase): standalone.write('top_srcdir = .\n') standalone.write('top_builddir = .\n') standalone.write('SWIG = swig\n') - standalone.write('PYTHON = python\n') + swig_py_opts = os.environ.get('SWIG_PY_OPTS', + '-python -py3 -nofastunpack -modern') + standalone.write('SWIG_PY_OPTS = %s\n' % (swig_py_opts)) + standalone.write('PYTHON = ' + sys.executable + '\n') standalone.write('\n') standalone.write(open("build-outputs.mk","r").read()) standalone.close() @@ -631,9 +638,10 @@ DIR=`pwd` lib_deps=[], lib_required=[], lib_required_private=[], + version=self.version, ) - # libsvn_foo -> -lsvn_foo - data.lib_deps.append('-l%s' % lib_name.replace('lib', '', 1)) + # libsvn_foo -> -lsvn_foo-1 + data.lib_deps.append('-l%s-%s' % (lib_name.replace('lib', '', 1), data.version)) for lib_dep in lib_deps.split(): if lib_dep == 'apriconv': # apriconv is part of apr-util, skip it Modified: subversion/branches/addremove/build/generator/gen_vcnet_vcproj.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/gen_vcnet_vcproj.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/gen_vcnet_vcproj.py (original) +++ subversion/branches/addremove/build/generator/gen_vcnet_vcproj.py Sat May 23 14:16:56 2020 @@ -120,10 +120,13 @@ class Generator(gen_win.WinGeneratorBase 'instrument_purify_quantify' : self.instrument_purify_quantify, 'version' : self.vcproj_version, 'toolset_version' : 'v' + self.vcproj_version.replace('.',''), + 'user_macros': self.user_macros, } if self.vcproj_extension == '.vcproj': self.write_with_template(fname, 'templates/vcnet_vcproj.ezt', data) + self.write_with_template(os.path.splitext(fname)[0] + '.vsprops', + 'templates/vcnet_vsprops.ezt', data) else: self.write_with_template(fname, 'templates/vcnet_vcxproj.ezt', data) self.write_with_template(fname + '.filters', 'templates/vcnet_vcxproj_filters.ezt', data) @@ -283,3 +286,11 @@ class Generator(gen_win.WinGeneratorBase } self.write_with_template('subversion_vcnet.sln', 'templates/vcnet_sln.ezt', data) + + def quote_define(self, value): + "Properly quote special characters in a define (if needed)" + + if self.vcproj_extension == '.vcproj': + return value.replace('"', '""') + else: + return value Modified: subversion/branches/addremove/build/generator/gen_win.py URL: http://svn.apache.org/viewvc/subversion/branches/addremove/build/generator/gen_win.py?rev=1878061&r1=1878060&r2=1878061&view=diff ============================================================================== --- subversion/branches/addremove/build/generator/gen_win.py (original) +++ subversion/branches/addremove/build/generator/gen_win.py Sat May 23 14:16:56 2020 @@ -158,6 +158,13 @@ class WinGeneratorBase(gen_win_dependenc ### implement this from scratch using the algorithms described in ### http://www.webdav.org/specs/draft-leach-uuids-guids-01.txt + # Ensure data is in byte representation. If it doesn't have an encode + # attribute, assume it is already in the correct form. + try: + data = data.encode('utf8') + except AttributeError: + pass + myhash = hashlib_md5(data).hexdigest() guid = ("{%s-%s-%s-%s-%s}" % (myhash[0:8], myhash[8:12], @@ -217,7 +224,6 @@ class WinGeneratorBase(gen_win_dependenc if 'java_sdk' not in self._libraries: install_targets = [x for x in install_targets if not (isinstance(x, gen_base.TargetJava) - or isinstance(x, gen_base.TargetJavaHeaders) or x.name == '__JAVAHL__' or x.name == '__JAVAHL_TESTS__' or x.name == 'libsvnjavahl')] @@ -332,11 +338,9 @@ class WinGeneratorBase(gen_win_dependenc sources = [ ] javac_exe = "javac" - javah_exe = "javah" jar_exe = "jar" if self.jdk_path: javac_exe = os.path.join(self.jdk_path, "bin", javac_exe) - javah_exe = os.path.join(self.jdk_path, "bin", javah_exe) jar_exe = os.path.join(self.jdk_path, "bin", jar_exe) if not isinstance(target, gen_base.TargetProject): @@ -345,25 +349,13 @@ class WinGeneratorBase(gen_win_dependenc ctarget = None cdesc = None cignore = None - if isinstance(target, gen_base.TargetJavaHeaders): - classes = self.path(target.classes) - if self.junit_path is not None: - classes = "%s;%s" % (classes, self.junit_path) - - headers = self.path(target.headers) - classname = target.package + "." + source.class_name - - cbuild = "%s -verbose -force -classpath %s -d %s %s" \ - % (self.quote(javah_exe), self.quote(classes), - self.quote(headers), classname) - - ctarget = self.path(object.filename_win) - cdesc = "Generating %s" % (object.filename_win) - - elif isinstance(target, gen_base.TargetJavaClasses): + if isinstance(target, gen_base.TargetJava): classes = targetdir = self.path(target.classes) if self.junit_path is not None: classes = "%s;%s" % (classes, self.junit_path) + headers = '' + if target.headers is not None: + headers = '-h %s' % self.quote(self.path(target.headers)) sourcepath = self.path(source.sourcepath) @@ -373,17 +365,21 @@ class WinGeneratorBase(gen_win_dependenc per_project_flags += "-Xlint:-deprecation -Xlint:-dep-ann" \ " -Xlint:-rawtypes" - cbuild = ("%s -g -Xlint -Xlint:-options " + - per_project_flags + - " -target 1.5 -source 1.5 -classpath " + cbuild = ("%s -g -Xlint -Xlint:-options %s %s " + " -target 1.8 -source 1.8 -classpath " " %s -d %s " " -sourcepath %s $(InputPath)") \ - % tuple(map(self.quote, (javac_exe, classes, - targetdir, sourcepath))) + % (self.quote(javac_exe), per_project_flags, headers, + self.quote(classes), self.quote(targetdir), + self.quote(sourcepath)) - ctarget = self.path(object.filename) - cdesc = "Compiling %s" % (source) + if isinstance(object, gen_base.HeaderFile): + ctarget = self.path(object.filename_win) + cdesc = "Generating %s" % (object.filename_win) + else: + ctarget = self.path(object.filename) + cdesc = "Compiling %s" % (source) rsrc = self.path(str(source)) if quote_path and '-' in rsrc: @@ -403,7 +399,7 @@ class WinGeneratorBase(gen_win_dependenc custom_desc=cdesc, ignored = cignore, extension=os.path.splitext(rsrc)[1])) - if isinstance(target, gen_base.TargetJavaClasses) and target.jar: + if isinstance(target, gen_base.TargetJava) and target.jar: classdir = self.path(target.classes) jarfile = msvc_path_join(classdir, target.jar) cbuild = "%s cf %s -C %s %s" \ @@ -507,9 +503,7 @@ class WinGeneratorBase(gen_win_dependenc return name[0] + '.pdb' def get_output_dir(self, target): - if isinstance(target, gen_base.TargetJavaHeaders): - return msvc_path("../" + target.headers) - elif isinstance(target, gen_base.TargetJavaClasses): + if isinstance(target, gen_base.TargetJava): return msvc_path("../" + target.classes) else: return msvc_path(target.path) @@ -749,9 +743,14 @@ class WinGeneratorBase(gen_win_dependenc if target.name.endswith('svn_subr'): fakedefines.append("SVN_USE_WIN32_CRASHHANDLER") + fakedefines.append(self.quote_define('SVN_WIN32_CRASHREPORT_EMAIL="us...@subversion.apache.org"')) return fakedefines + def quote_define(self, value): + "Properly quote special characters in a define (if needed)" + return value + def get_win_includes(self, target, cfg='Release'): "Return the list of include directories for target" @@ -786,13 +785,17 @@ class WinGeneratorBase(gen_win_dependenc else: lang_subdir = target.lang + if target.lang == "python": + lib = self._libraries['py3c'] + fakeincludes.extend(lib.include_dirs) + # After the language specific includes include the generic libdir, # to allow overriding a generic with a per language include fakeincludes.append(os.path.join(self.swig_libdir, lang_subdir)) fakeincludes.append(self.swig_libdir) - if 'cxxhl' in target.name: - fakeincludes.append("subversion/bindings/cxxhl/include") + if 'svnxx' in target.name: + fakeincludes.append("subversion/bindings/cxx/include") return gen_base.unique(map(self.apath, fakeincludes))