Author: brane
Date: Sun Jun  8 01:04:33 2025
New Revision: 1926226

URL: http://svn.apache.org/viewvc?rev=1926226&view=rev
Log:
On the user-defined-authn branch: sync with trunk to r1926225.

Added:
    serf/branches/user-defined-authn/build/__init__.py
      - copied unchanged from r1926225, serf/trunk/build/__init__.py
    serf/branches/user-defined-authn/build/scons_extras.py
      - copied unchanged from r1926225, serf/trunk/build/scons_extras.py
Modified:
    serf/branches/user-defined-authn/   (props changed)
    serf/branches/user-defined-authn/.github/workflows/linux.yml
    serf/branches/user-defined-authn/LICENSE
    serf/branches/user-defined-authn/NOTICE
    serf/branches/user-defined-authn/SConstruct

Propchange: serf/branches/user-defined-authn/
------------------------------------------------------------------------------
  Merged /serf/trunk:r1926204-1926225

Modified: serf/branches/user-defined-authn/.github/workflows/linux.yml
URL: 
http://svn.apache.org/viewvc/serf/branches/user-defined-authn/.github/workflows/linux.yml?rev=1926226&r1=1926225&r2=1926226&view=diff
==============================================================================
--- serf/branches/user-defined-authn/.github/workflows/linux.yml (original)
+++ serf/branches/user-defined-authn/.github/workflows/linux.yml Sun Jun  8 
01:04:33 2025
@@ -21,12 +21,12 @@ jobs:
       - name: Install prerequisites
         run: |
           sudo apt-get update
-          sudo apt-get install scons libapr1 libapr1-dev libaprutil1 
libaprutil1-dev zlib1g zlib1g-dev libssl-dev
+          sudo apt-get -y install scons libapr1-dev libaprutil1-dev zlib1g-dev 
libssl-dev libbrotli-dev libkrb5-dev
 
       - uses: actions/checkout@v3
 
       - name: Build
-        run: scons
+        run: scons BROTLI=/usr GSSAPI=/usr
 
       - name: Check
         run: scons check

Modified: serf/branches/user-defined-authn/LICENSE
URL: 
http://svn.apache.org/viewvc/serf/branches/user-defined-authn/LICENSE?rev=1926226&r1=1926225&r2=1926226&view=diff
==============================================================================
--- serf/branches/user-defined-authn/LICENSE (original)
+++ serf/branches/user-defined-authn/LICENSE Sun Jun  8 01:04:33 2025
@@ -200,3 +200,34 @@
    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.
+
+
+ADDITIONAL LICENSES:
+
+For parts of the configuration code in build/scons_extras.py:
+
+
+I. MIT License
+
+   Copyright The SCons Foundation
+   Copyright (c) 2003 Stichting NLnet Labs
+   Copyright (c) 2001, 2002, 2003 Steven Knight
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   "Software"), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+   KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+   WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+   LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+   OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+   WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Modified: serf/branches/user-defined-authn/NOTICE
URL: 
http://svn.apache.org/viewvc/serf/branches/user-defined-authn/NOTICE?rev=1926226&r1=1926225&r2=1926226&view=diff
==============================================================================
--- serf/branches/user-defined-authn/NOTICE (original)
+++ serf/branches/user-defined-authn/NOTICE Sun Jun  8 01:04:33 2025
@@ -5,3 +5,6 @@ This product includes software developed
 under Contributor License Agreements to The Apache Software Foundation
 (http://www.apache.org/).  See the revision logs for an exact contribution
 history.
+
+This product includes software developed by the SCons Foundation under the
+MIT license, see LICENSE.

Modified: serf/branches/user-defined-authn/SConstruct
URL: 
http://svn.apache.org/viewvc/serf/branches/user-defined-authn/SConstruct?rev=1926226&r1=1926225&r2=1926226&view=diff
==============================================================================
--- serf/branches/user-defined-authn/SConstruct (original)
+++ serf/branches/user-defined-authn/SConstruct Sun Jun  8 01:04:33 2025
@@ -21,25 +21,41 @@
 #
 
 import sys
-import io
 import os
 import re
 
 EnsureSConsVersion(2,3,0)
 
-# SCons 4.7 introduced the argument list parameter to CheckFunc.
-# Of course, GetSConsVersion() was added in 4.8, it's more fun that way.
-have_check_func = False
+
+# Compatibility with old versions of SCons
+try:
+  # Python 2 / SCons 2.3.0 etc.
+  from cStringIO import StringIO
+  print("warning: replaced StringIO() for Python version < 3.")
+except ImportError:
+  # Python 3
+  from io import StringIO
+
+# Set up our additional config tests.
+src_dir = File('SConstruct').rfile().get_dir().abspath
+sys.path.insert(0, src_dir)
+import build.scons_extras
+
+custom_tests = {'CheckGnuCC': build.scons_extras.CheckGnuCC}
+
+# SCons 4.7 introduced the function argument list parameter to CheckFunc.
 try:
-  if GetSConsVersion() >= (4, 7):
-    def CheckFunc(conf, name, code, lang='C', args=''):
-      return conf.CheckFunc(name, code, lang, args)
-    have_check_func = True
-except NameError:
+  import SCons.Conftest as _conftest
+  _conftest.CheckFunc(None, 'clock', '#include <time.h>', 'C', '')
+except AttributeError:
+  # This comes from the 'None' context argument, above. It's fine, we just
+  # proved that CheckFunc has the funcargs parameter, so we don't have to
+  # replace it with our own implementation.
   pass
-if not have_check_func:
-  def CheckFunc(conf, name, code, lang='C', _=''):
-    return conf.CheckFunc(name, code, lang)
+except TypeError:
+  # We have version < 4.7 without funcargs, use our replacement CheckFunc.
+  custom_tests['CheckFunc'] = build.scons_extras.CheckFunc
+  print('warning: replaced Conftest.CheckFunc() for SCons version < 4.7.')
 
 
 HEADER_FILES = ['serf.h',
@@ -292,7 +308,7 @@ if sys.platform != 'win32':
     context.Result(result)
     return result
 
-  conf = Configure(env, custom_tests = dict(CheckGnuCC=CheckGnuCC))
+  conf = Configure(env, custom_tests=custom_tests)
   have_gcc = conf.CheckGnuCC()
   env = conf.Finish()
 
@@ -440,7 +456,7 @@ if sys.platform == 'win32':
   else:
     env.Append(CPPPATH=['$OPENSSL/inc32'],
                LIBPATH=['$OPENSSL/out32dll'])
-  conf = Configure(env)
+  conf = Configure(env, custom_tests=custom_tests)
   if conf.CheckLib('libcrypto'):
     # OpenSSL 1.1.0+
     env.Append(LIBS=['libcrypto.lib', 'libssl.lib'])
@@ -523,38 +539,38 @@ else:
 
 # Check for OpenSSL functions which are only available in some of
 # the versions we support. Also handles forks like LibreSSL.
-with io.StringIO(env.File('buckets/ssl_buckets.c')
-                 .rfile().get_text_contents()) as stream:
-  ssl_include_rx = re.compile(r'^\s*#\s*include\s+<openssl/[^>]+>')
-  ssl_include_list = []
-  for line in stream.readlines():
-    if ssl_include_rx.match(line):
-      ssl_include_list.append(line.rstrip())
+ssl_include_rx = re.compile(r'^\s*#\s*include\s+<openssl/[^>]+>')
+ssl_include_list = []
+stream = StringIO(env.File('buckets/ssl_buckets.c')
+                  .rfile().get_text_contents())
+for line in stream.readlines():
+  if ssl_include_rx.match(line):
+    ssl_include_list.append(line.rstrip())
 ssl_includes = '\n'.join(ssl_include_list)
 
 
-conf = Configure(env)
-if not CheckFunc(conf, 'BIO_set_init', ssl_includes, 'C', 'NULL, 0'):
+conf = Configure(env, custom_tests=custom_tests)
+if not conf.CheckFunc('BIO_set_init', ssl_includes, 'C', 'NULL, 0'):
   env.Append(CPPDEFINES=['SERF_NO_SSL_BIO_WRAPPERS'])
-if not CheckFunc(conf, 'X509_STORE_get0_param', ssl_includes, 'C', 'NULL'):
+if not conf.CheckFunc('X509_STORE_get0_param', ssl_includes, 'C', 'NULL'):
   env.Append(CPPDEFINES=['SERF_NO_SSL_X509_STORE_WRAPPERS'])
-if not CheckFunc(conf, 'X509_get0_notBefore', ssl_includes, 'C', 'NULL'):
+if not conf.CheckFunc('X509_get0_notBefore', ssl_includes, 'C', 'NULL'):
   env.Append(CPPDEFINES=['SERF_NO_SSL_X509_GET0_NOTBEFORE'])
-if not CheckFunc(conf, 'X509_get0_notAfter', ssl_includes, 'C', 'NULL'):
+if not conf.CheckFunc('X509_get0_notAfter', ssl_includes, 'C', 'NULL'):
   env.Append(CPPDEFINES=['SERF_NO_SSL_X509_GET0_NOTAFTER'])
-if not CheckFunc(conf, 'X509_STORE_CTX_get0_chain', ssl_includes, 'C', 'NULL'):
+if not conf.CheckFunc('X509_STORE_CTX_get0_chain', ssl_includes, 'C', 'NULL'):
   env.Append(CPPDEFINES=['SERF_NO_SSL_X509_GET0_CHAIN'])
-if not CheckFunc(conf, 'ASN1_STRING_get0_data', ssl_includes, 'C', 'NULL'):
+if not conf.CheckFunc('ASN1_STRING_get0_data', ssl_includes, 'C', 'NULL'):
   env.Append(CPPDEFINES=['SERF_NO_SSL_ASN1_STRING_GET0_DATA'])
-if CheckFunc(conf, 'CRYPTO_set_locking_callback', ssl_includes, 'C', 'NULL'):
+if conf.CheckFunc('CRYPTO_set_locking_callback', ssl_includes, 'C', 'NULL'):
   env.Append(CPPDEFINES=['SERF_HAVE_SSL_LOCKING_CALLBACKS'])
-if CheckFunc(conf, 'OPENSSL_malloc_init', ssl_includes):
+if conf.CheckFunc('OPENSSL_malloc_init', ssl_includes):
   env.Append(CPPDEFINES=['SERF_HAVE_OPENSSL_MALLOC_INIT'])
-if CheckFunc(conf, 'SSL_library_init', ssl_includes):
+if conf.CheckFunc('SSL_library_init', ssl_includes):
   env.Append(CPPDEFINES=['SERF_HAVE_OPENSSL_SSL_LIBRARY_INIT'])
-if CheckFunc(conf, 'OpenSSL_version_num', ssl_includes):
+if conf.CheckFunc('OpenSSL_version_num', ssl_includes):
   env.Append(CPPDEFINES=['SERF_HAVE_OPENSSL_VERSION_NUM'])
-if CheckFunc(conf, 'SSL_set_alpn_protos', ssl_includes, 'C', 'NULL, NULL, 0'):
+if conf.CheckFunc('SSL_set_alpn_protos', ssl_includes, 'C', 'NULL, NULL, 0'):
   env.Append(CPPDEFINES=['SERF_HAVE_OPENSSL_ALPN'])
 if conf.CheckType('OSSL_HANDSHAKE_STATE', ssl_includes):
   env.Append(CPPDEFINES=['SERF_HAVE_OSSL_HANDSHAKE_STATE'])
@@ -572,11 +588,11 @@ if sys.platform == 'win32':
   env.Append(CPPDEFINES=['SERF_HAVE_SSPI'])
 
 if brotli and CALLOUT_OKAY:
-  conf = Configure(env)
+  conf = Configure(env, custom_tests=custom_tests)
   if conf.CheckCHeader('brotli/decode.h') and \
-     CheckFunc(conf, 'BrotliDecoderTakeOutput',
-               '#include <brotli/decode.h>',
-               'C', 'NULL, NULL'):
+     conf.CheckFunc('BrotliDecoderTakeOutput',
+                    '#include <brotli/decode.h>',
+                    'C', 'NULL, NULL'):
     env.Append(CPPDEFINES=['SERF_HAVE_BROTLI'])
   else:
     print("Cannot find Brotli library >= 1.0.0 in '%s'." % env.get('BROTLI'))
@@ -610,7 +626,7 @@ pkgconfig = env.Textfile('serf-%d.pc' %
 env.Default(lib_static, lib_shared, pkgconfig)
 
 if CALLOUT_OKAY:
-  conf = Configure(env)
+  conf = Configure(env, custom_tests=custom_tests)
 
   ### some configuration stuffs
   if conf.CheckCHeader('stdbool.h'):
@@ -672,7 +688,6 @@ else:
 
 check_script = env.File('build/check.py').rstr()
 test_dir = env.File('test/test_all.c').rfile().get_dir()
-src_dir = env.File('serf.h').rfile().get_dir()
 test_app = ("%s %s %s %s") % (sys.executable, check_script, test_dir, 'test')
 
 # Set the library search path for the test programs


Reply via email to