Ignore:
Timestamp:
Nov 24, 2016, 1:14:11 PM (9 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: update vendor to version 4.4.3

Location:
vendor/current/source4/heimdal_build
Files:
2 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/source4/heimdal_build/config.h

    r740 r988  
    1212#define HEIMDAL_NORETURN_ATTRIBUTE _NORETURN_
    1313#define HEIMDAL_PRINTF_ATTRIBUTE(x) FORMAT_ATTRIBUTE(x)
     14#define HEIMDAL_UNUSED_ATTRIBUTE _UNUSED_
     15
    1416#define VERSIONLIST {"Lorikeet-Heimdal, Modified for Samba4"}
    1517
     
    4042
    4143/*Workaround for heimdal define vs samba define*/
    42 #ifdef HAVE_LIBINTL_H
     44#if defined(HAVE_LIBINTL_H) && defined(HAVE_BINDTEXTDOMAIN) &&\
     45    defined(HAVE_TEXTDOMAIN)
    4346#define LIBINTL
    4447#endif
  • vendor/current/source4/heimdal_build/lexyacc.sh

    r740 r988  
    2525    cd $dir
    2626
    27     $LEX $lfile || exit 1
     27    # --noline specified because line directives cause more bother than they solve (issues with lcov finding the source files)
     28    $LEX --noline $lfile || exit 1
    2829
    2930    if [ -r lex.yy.c ]; then
    3031        echo "#include \"config.h\"" > $base.c
    31         sed -e "s|lex\.yy\.c|$cfile|" lex.yy.c >> $base.c
     32        grep -v "^#line" lex.yy.c >> $base.c
    3233        rm -f $base.yy.c
    3334    elif [ -r $base.yy.c ]; then
    3435        echo "#include \"config.h\"" > $base.c
    35         sed -e "s|$base\.yy\.c|$cfile|" $base.yy.c >> $base.c
     36        grep -v "^#line" $base.yy.c >> $base.c
    3637        rm -f $base.yy.c
    3738    elif [ -r $base.c ]; then
    3839        mv $base.c $base.c.tmp
    3940        echo "#include \"config.h\"" > $base.c
    40         sed -e "s|$base\.yy\.c|$cfile|" $base.c.tmp >> $base.c
     41        grep -v "^#line" $base.c.tmp >> $base.c
    4142        rm -f $base.c.tmp
    4243    elif [ ! -r base.c ]; then
     
    6061    cd $dir
    6162
    62     $YACC -d $yfile || exit 1
     63    # -l specified because line directives cause more bother than they solve (issues with lcov finding the source files)
     64    $YACC -l -d $yfile || exit 1
    6365    if [ -r y.tab.h -a -r y.tab.c ];then
    64         sed -e "/^#/!b" -e "s|y\.tab\.h|$cfile|" -e "s|\"$base.y|\"$cfile|" y.tab.h > $base.h
    65         sed -e "s|y\.tab\.c|$cfile|" -e "s|\"$base.y|\"$cfile|" y.tab.c > $base.c
     66        cat y.tab.h > $base.h
     67        cat y.tab.c > $base.c
    6668        rm -f y.tab.c y.tab.h
    6769    elif [ ! -r $base.h -a ! -r $base.c]; then
  • vendor/current/source4/heimdal_build/replace.c

    r740 r988  
    8484}
    8585#endif
     86
     87#ifndef HAVE_SETPROGNAME
     88
     89/* We don't want to use a setprogname reimplementation */
     90void setprogname(const char *argv0)
     91{
     92}
     93
     94#endif /* HAVE_SETPROGNAME */
     95
     96#ifndef HAVE_GETPROGNAME
     97/* We don't want to use a getprogname reimplementation */
     98const char *getprogname(void)
     99{
     100        return "";
     101}
     102#endif /* HAVE_GETPROGNAME */
  • vendor/current/source4/heimdal_build/roken.h

    r740 r988  
    124124#endif
    125125
    126 /* force the use of the libreplace strerror_r */
    127 #ifndef HAVE_STRERROR_R
    128 #define HAVE_STRERROR_R
    129 #endif
    130 #ifndef STRERROR_R_PROTO_COMPATIBLE
    131 #define STRERROR_R_PROTO_COMPATIBLE
    132 #endif
    133 
    134126#ifndef HAVE_DIRFD
    135127#ifdef HAVE_DIR_DD_FD
  • vendor/current/source4/heimdal_build/wscript_build

    r740 r988  
    7070    t = bld(rule=asn1_rule,
    7171            ext_out = '.x',
    72             before = 'cc',
    73             on_results = True,
     72            before = 'c',
     73            update_outputs = True,
    7474            shell = True,
    7575            source = source,
     
    9393            target = cfile,
    9494            shell = True,
    95             on_results=True,
     95            update_outputs=True,
    9696            ext_out = '.c',
    9797            ext_in = '.x',
     
    104104            ext_out = '.c',
    105105            ext_in = '.x',
    106             on_results=True,
     106            update_outputs=True,
    107107            target = hfile,
    108108            depends_on = name + '_ASN1',
     
    114114            ext_out = '.c',
    115115            ext_in = '.x',
    116             on_results=True,
     116            update_outputs=True,
    117117            target = hpriv,
    118118            depends_on = name + '_ASN1',
     
    124124    includes.append(os.path.dirname(out_files[0]))
    125125
    126     t = bld(features       = 'cc',
     126    t = bld(features       = 'c',
    127127            source         = cfile,
    128128            target         = name,
     
    159159            ext_out = '.c',
    160160            before  = 'cc',
    161             on_results = True,
     161            update_outputs = True,
    162162            shell   = True,
    163163            source  = sources,
     
    177177            source=source,
    178178            target=header,
    179             on_results=True,
     179            update_outputs=True,
    180180            ext_out='.c',
    181181            before='cc')
     
    202202        target=target,
    203203        shell=isinstance(rule, str),
    204         on_results=True,
     204        update_outputs=True,
    205205        before='cc',
    206206        ext_out='.c',
     
    210210
    211211
    212 def HEIMDAL_LIBRARY(libname, source, deps, vnum, version_script, includes='', cflags=''):
     212def HEIMDAL_LIBRARY(libname, source, deps, vnum, version_script, includes=''):
    213213    '''define a Heimdal library'''
    214214
     
    222222                        deps           = deps,
    223223                        includes       = includes,
    224                         cflags         = cflags,
    225224                        group          = 'main')
    226225
     
    243242    version = "%s_%s" % (Utils.g_module.APPNAME, Utils.g_module.VERSION)
    244243
    245     features = 'cc cshlib symlink_lib install_lib'
    246 
    247     bld.set_group('libraries')
     244    features = 'c cshlib symlink_lib install_lib'
     245
     246    bld.set_group('main')
    248247    t = bld(
    249248        features        = features,
     
    279278
    280279    return bld(
    281         features       = 'cc',
     280        features       = 'c',
    282281        source         = source,
    283282        target         = modname,
    284         samba_cflags   = CURRENT_CFLAGS(bld, modname, cflags),
     283        samba_cflags   = CURRENT_CFLAGS(bld, modname, cflags, allow_warnings=True),
    285284        depends_on     = '',
    286285        samba_deps     = to_list(deps),
     
    300299                 use_global_deps=True,
    301300                 compiler=None,
    302                  group='binaries',
     301                 group='main',
    303302                 install=True,
    304303                 install_path=None):
     
    308307        return
    309308
    310     features = 'cc cprogram symlink_bin install_bin'
     309    features = 'c cprogram symlink_bin install_bin'
    311310
    312311    obj_target = binname + '.objlist'
     
    401400    '''
    402401
    403     if not bld.CONFIG_SET('HAVE_GETPROGNAME'):
    404         ROKEN_HOSTCC_SOURCE += '''
    405             lib/roken/getprogname.c
    406             lib/roken/setprogname.c
    407         '''
    408 
    409402    if not bld.CONFIG_SET('HAVE_CLOSEFROM'):
    410403        ROKEN_HOSTCC_SOURCE += '''
     
    416409        lib/roken/socket.c
    417410        lib/roken/roken_gethostby.c
     411        lib/roken/strerror_r.c
    418412    '''
    419413
     
    431425        use_global_deps=False,
    432426        includes='../heimdal/lib/roken',
    433         cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_',
     427        cflags='-DSOCKET_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_',
    434428        group='compiler_libraries',
    435429        deps='LIBREPLACE_HOSTCC',
    436         )
    437 
    438     HEIMDAL_BINARY('rkpty', 'lib/roken/rkpty.c',
    439             deps='roken',
    440             install=False
    441430        )
    442431
     
    478467    HEIMDAL_ASN1('HEIMDAL_HDB_ASN1', 'lib/hdb/hdb.asn1',
    479468        directory='lib/asn1',
     469        options="--sequence=HDB-Ext-KeySet --sequence=Keys",
    480470        includes='../heimdal/lib/asn1')
    481471
     
    520510        )
    521511
     512    HEIMDAL_GSSAPI_SPNEGO_SOURCE = '''
     513        lib/gssapi/spnego/init_sec_context.c
     514        lib/gssapi/spnego/external.c
     515        lib/gssapi/spnego/compat.c
     516        lib/gssapi/spnego/context_stubs.c
     517        lib/gssapi/spnego/cred_stubs.c
     518        lib/gssapi/spnego/accept_sec_context.c
     519    '''
     520
     521    HEIMDAL_AUTOPROTO_PRIVATE('lib/gssapi/spnego/spnego-private.h',
     522                              HEIMDAL_GSSAPI_SPNEGO_SOURCE)
     523
     524    HEIMDAL_GSSAPI_KRB5_SOURCE = '''
     525        lib/gssapi/krb5/copy_ccache.c
     526        lib/gssapi/krb5/delete_sec_context.c
     527        lib/gssapi/krb5/init_sec_context.c
     528        lib/gssapi/krb5/context_time.c
     529        lib/gssapi/krb5/init.c
     530        lib/gssapi/krb5/address_to_krb5addr.c
     531        lib/gssapi/krb5/get_mic.c
     532        lib/gssapi/krb5/inquire_context.c
     533        lib/gssapi/krb5/add_cred.c
     534        lib/gssapi/krb5/inquire_cred.c
     535        lib/gssapi/krb5/inquire_cred_by_oid.c
     536        lib/gssapi/krb5/inquire_cred_by_mech.c
     537        lib/gssapi/krb5/inquire_mechs_for_name.c
     538        lib/gssapi/krb5/inquire_names_for_mech.c
     539        lib/gssapi/krb5/indicate_mechs.c
     540        lib/gssapi/krb5/inquire_sec_context_by_oid.c
     541        lib/gssapi/krb5/export_sec_context.c
     542        lib/gssapi/krb5/import_sec_context.c
     543        lib/gssapi/krb5/duplicate_name.c
     544        lib/gssapi/krb5/import_name.c
     545        lib/gssapi/krb5/compare_name.c
     546        lib/gssapi/krb5/export_name.c
     547        lib/gssapi/krb5/canonicalize_name.c
     548        lib/gssapi/krb5/unwrap.c
     549        lib/gssapi/krb5/wrap.c
     550        lib/gssapi/krb5/release_name.c
     551        lib/gssapi/krb5/cfx.c
     552        lib/gssapi/krb5/8003.c
     553        lib/gssapi/krb5/arcfour.c
     554        lib/gssapi/krb5/encapsulate.c
     555        lib/gssapi/krb5/display_name.c
     556        lib/gssapi/krb5/sequence.c
     557        lib/gssapi/krb5/display_status.c
     558        lib/gssapi/krb5/release_buffer.c
     559        lib/gssapi/krb5/external.c
     560        lib/gssapi/krb5/compat.c
     561        lib/gssapi/krb5/creds.c
     562        lib/gssapi/krb5/acquire_cred.c
     563        lib/gssapi/krb5/release_cred.c
     564        lib/gssapi/krb5/store_cred.c
     565        lib/gssapi/krb5/set_cred_option.c
     566        lib/gssapi/krb5/decapsulate.c
     567        lib/gssapi/krb5/verify_mic.c
     568        lib/gssapi/krb5/accept_sec_context.c
     569        lib/gssapi/krb5/set_sec_context_option.c
     570        lib/gssapi/krb5/process_context_token.c
     571        lib/gssapi/krb5/prf.c
     572        lib/gssapi/krb5/aeap.c
     573        lib/gssapi/krb5/pname_to_uid.c
     574        lib/gssapi/krb5/authorize_localname.c
     575    '''
     576
     577    HEIMDAL_AUTOPROTO_PRIVATE('lib/gssapi/krb5/gsskrb5-private.h',
     578                              HEIMDAL_GSSAPI_KRB5_SOURCE)
     579
    522580    HEIMDAL_LIBRARY('gssapi',
    523                         '''
    524     lib/gssapi/spnego/init_sec_context.c lib/gssapi/spnego/external.c lib/gssapi/spnego/compat.c
    525     lib/gssapi/spnego/context_stubs.c lib/gssapi/spnego/cred_stubs.c lib/gssapi/spnego/accept_sec_context.c
    526     lib/gssapi/krb5/copy_ccache.c lib/gssapi/krb5/delete_sec_context.c lib/gssapi/krb5/init_sec_context.c
    527     lib/gssapi/krb5/context_time.c lib/gssapi/krb5/init.c lib/gssapi/krb5/address_to_krb5addr.c
    528     lib/gssapi/krb5/get_mic.c lib/gssapi/krb5/inquire_context.c lib/gssapi/krb5/add_cred.c
    529     lib/gssapi/krb5/inquire_cred.c lib/gssapi/krb5/inquire_cred_by_oid.c lib/gssapi/krb5/inquire_cred_by_mech.c
    530     lib/gssapi/krb5/inquire_mechs_for_name.c lib/gssapi/krb5/inquire_names_for_mech.c lib/gssapi/krb5/indicate_mechs.c
    531     lib/gssapi/krb5/inquire_sec_context_by_oid.c lib/gssapi/krb5/export_sec_context.c lib/gssapi/krb5/import_sec_context.c
    532     lib/gssapi/krb5/duplicate_name.c lib/gssapi/krb5/import_name.c lib/gssapi/krb5/compare_name.c
    533     lib/gssapi/krb5/export_name.c lib/gssapi/krb5/canonicalize_name.c lib/gssapi/krb5/unwrap.c
    534     lib/gssapi/krb5/wrap.c lib/gssapi/krb5/release_name.c lib/gssapi/krb5/cfx.c
    535     lib/gssapi/krb5/8003.c lib/gssapi/krb5/arcfour.c lib/gssapi/krb5/encapsulate.c
    536     lib/gssapi/krb5/display_name.c lib/gssapi/krb5/sequence.c lib/gssapi/krb5/display_status.c
    537     lib/gssapi/krb5/release_buffer.c lib/gssapi/krb5/external.c lib/gssapi/krb5/compat.c
    538     lib/gssapi/krb5/creds.c lib/gssapi/krb5/acquire_cred.c lib/gssapi/krb5/release_cred.c
    539     lib/gssapi/krb5/store_cred.c lib/gssapi/krb5/set_cred_option.c lib/gssapi/krb5/decapsulate.c
    540     lib/gssapi/krb5/verify_mic.c lib/gssapi/krb5/accept_sec_context.c lib/gssapi/krb5/set_sec_context_option.c
    541     lib/gssapi/krb5/process_context_token.c lib/gssapi/krb5/prf.c lib/gssapi/krb5/aeap.c
     581                    HEIMDAL_GSSAPI_SPNEGO_SOURCE + HEIMDAL_GSSAPI_KRB5_SOURCE + '''
    542582    lib/gssapi/mech/context.c lib/gssapi/mech/gss_krb5.c lib/gssapi/mech/gss_mech_switch.c
    543583    lib/gssapi/mech/gss_process_context_token.c lib/gssapi/mech/gss_buffer_set.c
     
    620660                                   store_mem.c ticket.c time.c transited.c
    621661                                   version.c warn.c krb5_err.c
     662                                   aname_to_localname.c kuserok.c
    622663                                   heim_err.c k524_err.c krb_err.c''')]  + ["../heimdal_build/krb5-glue.c"]
    623664
     
    625666        version_script='lib/krb5/version-script.map',
    626667                        includes='../heimdal/lib/krb5 ../heimdal/lib/asn1 ../heimdal/include',
    627                 deps='roken wind asn1 hx509 hcrypto intl com_err HEIMDAL_CONFIG heimbase',
     668                deps='roken wind asn1 hx509 hcrypto com_err HEIMDAL_CONFIG heimbase execinfo samba_intl',
    628669                vnum='26.0.0',
    629670                        )
     
    849890        'lib/com_err/com_err.c lib/com_err/error.c',
    850891        includes='../heimdal/lib/com_err',
    851         deps='roken intl',
     892        deps='roken samba_intl',
    852893        vnum='0.25',
    853894        version_script='lib/com_err/version-script.map',
     
    873914    use_hostcc=True,
    874915        use_global_deps=False,
    875         cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_',
     916        cflags='-DSOCKET_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_',
    876917        includes='../heimdal/lib/asn1',
    877918        group='build_compilers',
     
    889930        includes='../heimdal/lib/com_err',
    890931        group='build_compilers',
    891         cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_',
     932        cflags='-DSOCKET_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_',
    892933        deps='ROKEN_HOSTCC LIBREPLACE_HOSTCC HEIMDAL_VERS_HOSTCC',
    893934        install=False
     
    901942    )
    902943
     944HEIMDAL_BINARY('samba4kgetcred',
     945    'kuser/kgetcred.c',
     946    deps='krb5 heimntlm roken HEIMDAL_VERS hcrypto asn1',
     947    install=False
     948    )
    903949
    904950HEIMDAL_BINARY('samba4kpasswd',
     
    908954    )
    909955
    910 
    911 HEIMDAL_GSSAPI_SPNEGO_SOURCE = '''
    912     lib/gssapi/spnego/init_sec_context.c
    913     lib/gssapi/spnego/external.c
    914     lib/gssapi/spnego/compat.c
    915     lib/gssapi/spnego/context_stubs.c
    916     lib/gssapi/spnego/cred_stubs.c
    917     lib/gssapi/spnego/accept_sec_context.c
    918 '''
    919 
    920 HEIMDAL_AUTOPROTO_PRIVATE('lib/gssapi/spnego/spnego-private.h',
    921                               HEIMDAL_GSSAPI_SPNEGO_SOURCE)
    922 
    923 
    924 HEIMDAL_GSSAPI_KRB5_SOURCE = '''
    925     lib/gssapi/krb5/copy_ccache.c
    926     lib/gssapi/krb5/delete_sec_context.c
    927     lib/gssapi/krb5/init_sec_context.c
    928     lib/gssapi/krb5/context_time.c
    929     lib/gssapi/krb5/init.c
    930     lib/gssapi/krb5/address_to_krb5addr.c
    931     lib/gssapi/krb5/get_mic.c
    932     lib/gssapi/krb5/inquire_context.c
    933     lib/gssapi/krb5/add_cred.c
    934     lib/gssapi/krb5/inquire_cred.c
    935     lib/gssapi/krb5/inquire_cred_by_oid.c
    936     lib/gssapi/krb5/inquire_cred_by_mech.c
    937     lib/gssapi/krb5/inquire_mechs_for_name.c
    938     lib/gssapi/krb5/inquire_names_for_mech.c
    939     lib/gssapi/krb5/indicate_mechs.c
    940     lib/gssapi/krb5/inquire_sec_context_by_oid.c
    941     lib/gssapi/krb5/export_sec_context.c
    942     lib/gssapi/krb5/import_sec_context.c
    943     lib/gssapi/krb5/duplicate_name.c
    944     lib/gssapi/krb5/import_name.c
    945     lib/gssapi/krb5/compare_name.c
    946     lib/gssapi/krb5/export_name.c
    947     lib/gssapi/krb5/canonicalize_name.c
    948     lib/gssapi/krb5/unwrap.c
    949     lib/gssapi/krb5/wrap.c
    950     lib/gssapi/krb5/release_name.c
    951     lib/gssapi/krb5/cfx.c
    952     lib/gssapi/krb5/8003.c
    953     lib/gssapi/krb5/arcfour.c
    954     lib/gssapi/krb5/encapsulate.c
    955     lib/gssapi/krb5/display_name.c
    956     lib/gssapi/krb5/sequence.c
    957     lib/gssapi/krb5/display_status.c
    958     lib/gssapi/krb5/release_buffer.c
    959     lib/gssapi/krb5/external.c
    960     lib/gssapi/krb5/compat.c
    961     lib/gssapi/krb5/creds.c
    962     lib/gssapi/krb5/acquire_cred.c
    963     lib/gssapi/krb5/release_cred.c
    964     lib/gssapi/krb5/store_cred.c
    965     lib/gssapi/krb5/set_cred_option.c
    966     lib/gssapi/krb5/decapsulate.c
    967     lib/gssapi/krb5/verify_mic.c
    968     lib/gssapi/krb5/accept_sec_context.c
    969     lib/gssapi/krb5/set_sec_context_option.c
    970     lib/gssapi/krb5/process_context_token.c
    971     lib/gssapi/krb5/prf.c
    972     lib/gssapi/krb5/aeap.c
    973 '''
    974 
    975 HEIMDAL_AUTOPROTO_PRIVATE('lib/gssapi/krb5/gsskrb5-private.h',
    976                               HEIMDAL_GSSAPI_KRB5_SOURCE)
    977 
    978 
    979 
     956# Alias subsystem to allow common kerberos code that will
     957# otherwise link against MIT's gssapi_krb5 and k5crypto
     958#
     959# Note: that we also need this if we use system heimdal libraries
     960HEIMDAL_SUBSYSTEM('gssapi_krb5', '', deps='gssapi')
     961HEIMDAL_SUBSYSTEM('k5crypto', '', deps='krb5')
  • vendor/current/source4/heimdal_build/wscript_configure

    r740 r988  
    2020                  sys/file.h sys/stropts.h sys/timeb.h sys/times.h sys/uio.h sys/un.h
    2121              sys/utsname.h time.h timezone.h ttyname.h netinet/in.h
    22               netinet/in6.h netinet6/in6.h libintl.h''')
     22              netinet/in6.h netinet6/in6.h''')
    2323
    2424conf.CHECK_HEADERS('curses.h term.h termcap.h', together=True)
     
    2828            strptime strsep strsep_copy    strtok_r strupr swab umask uname unsetenv
    2929            closefrom err warn errx warnx flock writev''')
     30
     31if conf.CHECK_FUNCS('strerror_r'):
     32    # Check if strerror_r is BSD compatible (default GNU implementation is not what Heimdal expects)
     33    conf.CHECK_CODE('int strerror_r(int errnum, char *buf, size_t buflen);',
     34                    'STRERROR_R_PROTO_COMPATIBLE',
     35                    headers='string.h', addmain=False, link=False,
     36                    msg="Checking for XSI (rather than GNU) prototype for strerror_r")
    3037
    3138conf.CHECK_FUNCS_IN('hstrerror', 'resolv socket nsl', checklibc=True)
     
    3542                    'socket nsl',
    3643                    checklibc=True)
    37 
    38 conf.CHECK_FUNCS_IN('dgettext gettext', 'intl', headers='libintl.h')
    3944
    4045conf.CHECK_FUNCS('iruserok')
     
    6065conf.CHECK_VARIABLE('_res', headers='netinet/in.h arpa/nameser.h resolv.h')
    6166conf.CHECK_DECLS('_res', headers='netinet/in.h arpa/nameser.h resolv.h')
    62 conf.CHECK_FUNCS_IN('openpty', 'util', checklibc=True, headers='pty.h util.h libutil.h')
    6367
    6468conf.DEFINE('HAVE_KRB5',1)
    65 conf.DEFINE('HAVE_GSSAPI',1)
    6669
    6770conf.CHECK_FUNCS('dirfd', headers='dirent.h')
     
    6972conf.CHECK_STRUCTURE_MEMBER('DIR', 'dd_fd', define='HAVE_DIR_DD_FD',  headers='dirent.h')
    7073
    71 conf.DEFINE('SAMBA4_INTERNAL_HEIMDAL', 1)
    72 
    73 if conf.CHECK_BUNDLED_SYSTEM('com_err', checkfunctions='com_right_r com_err', headers='com_err.h'):
    74     conf.define('USING_SYSTEM_COM_ERR', 1)
     74conf.DEFINE('SAMBA4_USES_HEIMDAL', 1)
     75
     76# setup the right defines for a in-tree heimdal build
     77Logs.info("Using in-tree heimdal kerberos defines")
     78conf.define('HAVE_GSSAPI_GSSAPI_H', 1)
     79conf.define('HAVE_GSSAPI_GSSAPI_KRB5_H', 1)
     80conf.define('HAVE_AP_OPTS_USE_SUBKEY', 1)
     81conf.define('HAVE_KRB5_ADDRESSES', 1)
     82conf.define('HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK', 1)
     83conf.define('HAVE_KRB5_SET_REAL_TIME', 1)
     84conf.define('HAVE_COM_ERR_H', 1)
     85conf.define('HAVE_ADDR_TYPE_IN_KRB5_ADDRESS', 1)
     86conf.define('HAVE_GSS_DISPLAY_STATUS', 1)
     87conf.define('HAVE_GSS_WRAP_IOV', 1)
     88conf.define('HAVE_GSS_KRB5_IMPORT_CRED', 1)
     89conf.define('HAVE_GSS_OID_EQUAL', 1)
     90conf.define('HAVE_GSS_INQUIRE_SEC_CONTEXT_BY_OID', 1)
     91conf.define('HAVE_GSSKRB5_EXTRACT_AUTHZ_DATA_FROM_SEC_CONTEXT', 1)
     92conf.define('HAVE_GSSKRB5_GET_SUBKEY', 1)
     93conf.define('HAVE_GSS_KRB5_EXPORT_LUCID_SEC_CONTEXT', 1)
     94conf.define('HAVE_GSS_IMPORT_CRED', 1)
     95conf.define('HAVE_GSS_EXPORT_CRED', 1)
     96conf.define('HAVE_GSS_KRB5_CRED_NO_CI_FLAGS_X', 1)
     97conf.define('HAVE_GSSAPI', 1)
     98conf.define('HAVE_ADDR_TYPE_IN_KRB5_ADDRESS', 1)
     99conf.define('HAVE_CHECKSUM_IN_KRB5_CHECKSUM', 1)
     100conf.define('HAVE_DECL_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE', 0)
     101conf.define('HAVE_DECL_KRB5_GET_CREDENTIALS_FOR_USER', 0)
     102conf.define('HAVE_E_DATA_POINTER_IN_KRB5_ERROR', 1)
     103conf.define('HAVE_INITIALIZE_KRB5_ERROR_TABLE', 1)
     104conf.define('HAVE_KRB5_ADDRESSES', 1)
     105conf.define('HAVE_KRB5_AUTH_CON_SETKEY', 1)
     106conf.define('HAVE_KRB5_CC_GET_LIFETIME', 1)
     107conf.define('HAVE_KRB5_CREATE_CHECKSUM', 1)
     108conf.define('HAVE_KRB5_CRYPTO', 1)
     109conf.define('HAVE_KRB5_CRYPTO_DESTROY', 1)
     110conf.define('HAVE_KRB5_CRYPTO_INIT', 1)
     111conf.define('HAVE_KRB5_C_VERIFY_CHECKSUM', 1)
     112conf.define('HAVE_KRB5_ENCTYPE_TO_STRING', 1)
     113conf.define('HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG', 1)
     114conf.define('HAVE_KRB5_FREE_ERROR_CONTENTS', 1)
     115conf.define('HAVE_KRB5_FREE_HOST_REALM', 1)
     116conf.define('HAVE_KRB5_FWD_TGT_CREDS', 1)
     117conf.define('HAVE_KRB5_GET_CREDS', 1)
     118conf.define('HAVE_KRB5_GET_CREDS_OPT_ALLOC', 1)
     119conf.define('HAVE_KRB5_GET_CREDS_OPT_SET_IMPERSONATE', 1)
     120conf.define('HAVE_KRB5_GET_DEFAULT_IN_TKT_ETYPES', 1)
     121conf.define('HAVE_KRB5_GET_HOST_REALM', 1)
     122conf.define('HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC', 1)
     123conf.define('HAVE_KRB5_GET_INIT_CREDS_OPT_FREE', 1)
     124conf.define('HAVE_KRB5_GET_INIT_CREDS_OPT_GET_ERROR', 1)
     125conf.define('HAVE_KRB5_GET_INIT_CREDS_OPT_SET_PAC_REQUEST', 1)
     126conf.define('HAVE_KRB5_GET_INIT_CREDS_KEYBLOCK', 1)
     127conf.define('HAVE_KRB5_GET_PW_SALT', 1)
     128conf.define('HAVE_KRB5_GET_RENEWED_CREDS', 1)
     129conf.define('HAVE_KRB5_KEYBLOCK_KEYVALUE', 1)
     130conf.define('HAVE_KRB5_KEYBLOCK_INIT', 1)
     131conf.define('HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK', 1)
     132conf.define('HAVE_KRB5_KRBHST_GET_ADDRINFO', 1)
     133conf.define('HAVE_KRB5_KRBHST_INIT', 1)
     134conf.define('HAVE_KRB5_KT_COMPARE', 1)
     135conf.define('HAVE_KRB5_KT_FREE_ENTRY', 1)
     136conf.define('HAVE_KRB5_KU_OTHER_CKSUM', 1)
     137conf.define('HAVE_KRB5_LOCATE_PLUGIN_H', 1)
     138conf.define('HAVE_KRB5_MK_REQ_EXTENDED', 1)
     139conf.define('HAVE_KRB5_PRINCIPAL_COMPARE_ANY_REALM', 1)
     140conf.define('HAVE_KRB5_PRINCIPAL_GET_COMP_STRING', 1)
     141conf.define('HAVE_KRB5_PRINCIPAL_GET_REALM', 1)
     142conf.define('HAVE_KRB5_MAKE_PRINCIPAL', 1)
     143conf.define('HAVE_KRB5_REALM_TYPE', 1)
     144conf.define('HAVE_KRB5_SET_DEFAULT_IN_TKT_ETYPES', 1)
     145conf.define('HAVE_KRB5_SET_REAL_TIME', 1)
     146conf.define('HAVE_KRB5_STRING_TO_KEY', 1)
     147conf.define('HAVE_KRB5_STRING_TO_KEY_SALT', 1)
     148conf.define('HAVE_FREE_CHECKSUM', 1)
     149conf.define('HAVE_LIBKRB5', 1)
     150conf.define('KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT', 1)
     151conf.define('HAVE_ETYPE_IN_ENCRYPTEDDATA', 1)
     152conf.define('KRB5_PRINC_REALM_RETURNS_REALM', 1)
     153conf.define('HAVE_KRB5_PRINCIPAL_GET_REALM', 1)
     154conf.define('HAVE_KRB5_H', 1)
     155conf.define('HAVE_AP_OPTS_USE_SUBKEY', 1)
     156conf.define('HAVE_ENCTYPE_ARCFOUR_HMAC_MD5', 1)
     157conf.define('HAVE_ENCTYPE_ARCFOUR_HMAC_MD5_56', 1)
     158conf.define('HAVE_ENCTYPE_ARCFOUR_HMAC', 1)
     159conf.define('HAVE_KRB5_PDU_NONE_DECL', 1)
     160conf.define('HAVE_ENCTYPE_AES128_CTS_HMAC_SHA1_96', 1)
     161conf.define('HAVE_ENCTYPE_AES256_CTS_HMAC_SHA1_96', 1)
     162conf.define('HAVE_KRB5_PRINCIPAL_GET_NUM_COMP', 1)
     163conf.define('HAVE_GSSAPI_GSSAPI_SPNEGO_H', 1)
     164conf.define('HAVE_FLAGS_IN_KRB5_CREDS', 1)
     165conf.define('HAVE_KRB5_CONFIG_GET_BOOL_DEFAULT', 1)
     166conf.define('HAVE_KRB5_DATA_COPY', 1)
     167conf.define('HAVE_KRB5_PRINCIPAL_SET_REALM', 1)
     168conf.define('HAVE_KRB5_PRINCIPAL_SET_TYPE', 1)
     169conf.define('HAVE_KRB5_PRINCIPAL_GET_TYPE', 1)
     170conf.define('HAVE_KRB5_WARNX', 1)
     171conf.define('HAVE_KRB5_PROMPT_TYPE', 1)
     172
     173heimdal_includedirs = []
     174heimdal_libdirs = []
     175krb5_config = conf.find_program("krb5-config.heimdal", var="HEIMDAL_KRB5_CONFIG")
     176if not krb5_config:
     177    krb5_config = conf.find_program("krb5-config", var="HEIMDAL_KRB5_CONFIG")
     178if krb5_config:
     179    # Not ideal, but seems like the best way to get at these paths:
     180    f = open(krb5_config, 'r')
     181    try:
     182        for l in f:
     183            if l.startswith("libdir="):
     184                heimdal_libdirs.append(l.strip()[len("libdir="):])
     185            elif l.startswith("includedir="):
     186                heimdal_includedirs.append(l.strip()[len("includedir="):])
     187    finally:
     188        f.close()
    75189
    76190def check_system_heimdal_lib(name, functions='', headers='', onlyif=None):
     
    79193    if conf.LIB_MAY_BE_BUNDLED(name):
    80194        return False
    81     setattr(conf.env, "CPPPATH_%s" % name.upper(), ["/usr/include/heimdal"])
    82     setattr(conf.env, "LIBPATH_%s" % name.upper(), ["/usr/lib/heimdal"])
    83     conf.CHECK_BUNDLED_SYSTEM(name, checkfunctions=functions, headers=headers,
    84         onlyif=onlyif)
     195    setattr(conf.env, "CPPPATH_%s" % name.upper(), heimdal_includedirs)
     196    setattr(conf.env, "LIBPATH_%s" % name.upper(), heimdal_libdirs)
     197    if not conf.CHECK_BUNDLED_SYSTEM(name, checkfunctions=functions, headers=headers,
     198                                     onlyif=onlyif):
     199        return False
    85200    conf.define('USING_SYSTEM_%s' % name.upper(), 1)
    86201    return True
     
    93208    conf.define('USING_SYSTEM_%s' % name.upper(), 1)
    94209    return True
     210
     211check_system_heimdal_lib("com_err", "com_right_r com_err", "com_err.h")
    95212
    96213if check_system_heimdal_lib("roken", "rk_socket_set_reuseaddr", "roken.h"):
     
    99216    conf.env.LIB_ROKEN_HOSTCC = "roken"
    100217    conf.SET_TARGET_TYPE("ROKEN_HOSTCC", 'SYSLIB')
    101 check_system_heimdal_lib("wind", "wind_stringprep", "wind.h", onlyif="roken")
    102 check_system_heimdal_lib("hx509", "hx509_bitstring_print", "hx509.h", onlyif="roken wind")
    103 check_system_heimdal_lib("asn1", "initialize_asn1_error_table", "asn1_err.h", onlyif="roken com_err")
    104 check_system_heimdal_lib("heimbase", "heim_cmp", "heimbase.h", onlyif="roken")
    105 check_system_heimdal_lib("hcrypto", "MD4_Init", "hcrypto/md4.h",
    106     onlyif="asn1 roken com_err")
    107 check_system_heimdal_lib("krb5", "krb5_anyaddr", "krb5.h",
    108     onlyif="roken wind asn1 hx509 hcrypto com_err heimbase")
    109 check_system_heimdal_lib("gssapi", "gss_oid_to_name", "gssapi.h",
    110     onlyif="hcrypto asn1 roken krb5 com_err wind")
    111 check_system_heimdal_lib("heimntlm", "heim_ntlm_ntlmv2_key", "heimntlm.h",
    112     onlyif="roken hcrypto krb5")
    113 check_system_heimdal_lib("hdb", "hdb_db_dir", "krb5.h hdb.h",
    114     onlyif="roken krb5 hcrypto com_err wind")
    115 check_system_heimdal_lib("kdc", "kdc_log", "kdc.h",
    116     onlyif="roken krb5 hdb asn1 heimntlm hcrypto com_err wind heimbase")
    117 
     218
     219# Make sure HAVE_CONFIG_H is unset, as the system Heimdal headers use it
     220# and include config.h if it is set, resulting in failure (since config.h
     221# doesn't yet exist)
     222
     223CCDEFINES = list(conf.env.CCDEFINES)
     224conf.undefine("HAVE_CONFIG_H")
     225while "HAVE_CONFIG_H=1" in conf.env.CCDEFINES:
     226    conf.env.CCDEFINES.remove("HAVE_CONFIG_H=1")
     227try:
     228    check_system_heimdal_lib("wind", "wind_stringprep", "wind.h", onlyif="roken")
     229    check_system_heimdal_lib("hx509", "hx509_bitstring_print", "hx509.h", onlyif="roken wind")
     230    check_system_heimdal_lib("asn1", "initialize_asn1_error_table", "asn1_err.h", onlyif="roken com_err")
     231    check_system_heimdal_lib("heimbase", "heim_cmp", "heimbase.h", onlyif="roken")
     232    check_system_heimdal_lib("hcrypto", "MD4_Init", "hcrypto/md4.h",
     233        onlyif="asn1 roken com_err")
     234    if check_system_heimdal_lib("krb5", "krb5_anyaddr", "krb5.h",
     235        onlyif="roken wind asn1 hx509 hcrypto com_err heimbase"):
     236        conf.CHECK_FUNCS_IN('krb5_free_unparsed_name', 'krb5', headers="krb5.h")
     237    check_system_heimdal_lib("gssapi", "gss_oid_to_name", "gssapi.h",
     238        onlyif="hcrypto asn1 roken krb5 com_err wind")
     239    check_system_heimdal_lib("heimntlm", "heim_ntlm_ntlmv2_key", "heimntlm.h",
     240        onlyif="roken hcrypto krb5")
     241    if check_system_heimdal_lib("hdb", "hdb_db_dir", "krb5.h hdb.h",
     242        onlyif="roken krb5 hcrypto com_err wind"):
     243        conf.CHECK_CODE('''
     244            #include <hdb.h>
     245            int main(void) { hdb_enctype2key(NULL, NULL, NULL, 0, NULL); }
     246            ''',
     247            define='HDB_ENCTYPE2KEY_TAKES_KEYSET',
     248            addmain=False,
     249            lib='hdb',
     250            msg='Checking whether hdb_enctype2key takes a keyset argument',
     251            local_include=False)
     252
     253    check_system_heimdal_lib("kdc", "kdc_log", "kdc.h",
     254        onlyif="roken krb5 hdb asn1 heimntlm hcrypto com_err wind heimbase")
     255finally:
     256    conf.env.CCDEFINES = CCDEFINES
    118257
    119258# With the proper checks in place we should be able to build against the system libtommath.
    120 # conf.CHECK_BUNDLED_SYSTEM('tommath', checkfunctions='mp_init', headers='tommath.h')
    121 # conf.define('USING_SYSTEM_TOMMATH', 1)
     259#if conf.CHECK_BUNDLED_SYSTEM('tommath', checkfunctions='mp_init', headers='tommath.h'):
     260#    conf.define('USING_SYSTEM_TOMMATH', 1)
    122261
    123262check_system_heimdal_binary("compile_et")
Note: See TracChangeset for help on using the changeset viewer.