Changeset 13584


Ignore:
Timestamp:
Aug 16, 2005, 10:19:56 PM (15 years ago)
Author:
jberry
Message:

Merge launchd support from branch launchd proto

Location:
trunk/base
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/base/Mk/dports.autoconf.mk.in

    r13443 r13584  
    11SHELL                   = @SHELL@
    2 top_srcdir              = @top_srcdir@
    32srcdir                  = @srcdir@
    43VPATH                   = @srcdir@
     
    2726MTREE                   = @MTREE@
    2827LN_S                    = @LN_S@
     28XCODEBUILD              = @XCODEBUILD@
    2929
    3030TCLSH                   = @TCLSH@
  • trunk/base/aclocal.m4

    r13459 r13584  
    11builtin(include,tcl.m4)
     2
     3#------------------------------------------------------------------------
     4# OD_CHECK_FRAMEWORK_COREFOUNDATION --
     5#
     6#       Check if CoreFoundation framework is available, define HAVE_FRAMEWORK_COREFOUNDATION if so.
     7#
     8# Arguments:
     9#       None.
     10#
     11# Requires:
     12#       None.
     13#
     14# Depends:
     15#               AC_LANG_PROGRAM
     16#
     17# Results:
     18#       Result is cached.
     19#
     20#       If CoreFoundation framework is available, defines the following variables:
     21#               HAVE_FRAMEWORK_COREFOUNDATION
     22#
     23#------------------------------------------------------------------------
     24AC_DEFUN(OD_CHECK_FRAMEWORK_COREFOUNDATION, [
     25        FRAMEWORK_LIBS="-framework CoreFoundation"
     26
     27        AC_MSG_CHECKING([for CoreFoundation framework])
     28
     29        AC_CACHE_VAL(od_cv_have_framework_corefoundation, [
     30                ac_save_LIBS="$LIBS"
     31                LIBS="$FRAMEWORK_LIBS $LIBS"
     32               
     33                AC_LINK_IFELSE([
     34                        AC_LANG_PROGRAM([
     35                                        #include <CoreFoundation/CoreFoundation.h>
     36                                ], [
     37                                        CFURLRef url = CFURLCreateWithFileSystemPath(NULL, CFSTR("/testing"), kCFURLPOSIXPathStyle, 1);
     38                                        CFArrayRef bundles = CFBundleCreateBundlesFromDirectory(NULL, url, CFSTR("pkg"));
     39                        ])
     40                        ], [
     41                                od_cv_have_framework_corefoundation="yes"
     42                        ], [
     43                                od_cv_have_framework_corefoundation="no"
     44                        ]
     45                )
     46
     47                LIBS="$ac_save_LIBS"
     48        ])
     49
     50        AC_MSG_RESULT(${od_cv_have_framework_corefoundation})
     51
     52        if test x"${od_cv_have_framework_corefoundation}" = "xyes"; then
     53                AC_DEFINE([HAVE_FRAMEWORK_COREFOUNDATION], [], [Define if CoreFoundation framework is available])
     54        fi
     55
     56        AC_SUBST(HAVE_FRAMEWORK_COREFOUNDATION)
     57])
     58
     59
     60#------------------------------------------------------------------------
     61# OD_CHECK_FRAMEWORK_SYSTEMCONFIGURATION --
     62#
     63#       Check if SystemConfiguration framework is available, define HAVE_FRAMEWORK_SYSTEMCONFIGURATION if so.
     64#
     65# Arguments:
     66#       None.
     67#
     68# Requires:
     69#       None.
     70#
     71# Depends:
     72#               AC_LANG_PROGRAM
     73#
     74# Results:
     75#       Result is cached.
     76#
     77#       If SystemConfiguration framework is available, defines the following variables:
     78#               HAVE_FRAMEWORK_SYSTEMCONFIGURATION
     79#
     80#------------------------------------------------------------------------
     81AC_DEFUN(OD_CHECK_FRAMEWORK_SYSTEMCONFIGURATION, [
     82        FRAMEWORK_LIBS="-framework SystemConfiguration"
     83
     84        AC_MSG_CHECKING([for SystemConfiguration framework])
     85
     86        AC_CACHE_VAL(od_cv_have_framework_systemconfiguration, [
     87                ac_save_LIBS="$LIBS"
     88                LIBS="$FRAMEWORK_LIBS $LIBS"
     89               
     90                AC_LINK_IFELSE([
     91                        AC_LANG_PROGRAM([
     92                                        #include <SystemConfiguration/SystemConfiguration.h>
     93                                ], [
     94                                        int err = SCError();
     95                                        SCDynamicStoreRef dsRef = SCDynamicStoreCreate(NULL, NULL, NULL, NULL);
     96                        ])
     97                        ], [
     98                                od_cv_have_framework_systemconfiguration="yes"
     99                        ], [
     100                                od_cv_have_framework_systemconfiguration="no"
     101                        ]
     102                )
     103
     104                LIBS="$ac_save_LIBS"
     105        ])
     106
     107        AC_MSG_RESULT(${od_cv_have_framework_systemconfiguration})
     108
     109        if test x"${od_cv_have_framework_systemconfiguration}" = "xyes"; then
     110                AC_DEFINE([HAVE_FRAMEWORK_SYSTEMCONFIGURATION], [], [Define if SystemConfiguration framework is available])
     111        fi
     112
     113        AC_SUBST(HAVE_FRAMEWORK_SYSTEMCONFIGURATION)
     114])
     115
     116
     117#------------------------------------------------------------------------
     118# OD_CHECK_FRAMEWORK_IOKIT --
     119#
     120#       Check if IOKit framework is available, define HAVE_FRAMEWORK_IOKIT if so.
     121#
     122# Arguments:
     123#       None.
     124#
     125# Requires:
     126#       None.
     127#
     128# Depends:
     129#               AC_LANG_PROGRAM
     130#
     131# Results:
     132#       Result is cached.
     133#
     134#       If IOKit framework is available, defines the following variables:
     135#               HAVE_FRAMEWORK_IOKIT
     136#
     137#------------------------------------------------------------------------
     138AC_DEFUN(OD_CHECK_FRAMEWORK_IOKIT, [
     139        FRAMEWORK_LIBS="-framework IOKit"
     140
     141        AC_MSG_CHECKING([for IOKit framework])
     142
     143        AC_CACHE_VAL(od_cv_have_framework_iokit, [
     144                ac_save_LIBS="$LIBS"
     145                LIBS="$FRAMEWORK_LIBS $LIBS"
     146               
     147                AC_LINK_IFELSE([
     148                        AC_LANG_PROGRAM([
     149                                        #include <IOKit/IOKitLib.h>
     150                                ], [
     151                                        IOCreateReceivePort(0, NULL);
     152                                        IORegisterForSystemPower(0, NULL, NULL, NULL);
     153                        ])
     154                        ], [
     155                                od_cv_have_framework_iokit="yes"
     156                        ], [
     157                                od_cv_have_framework_iokit="no"
     158                        ]
     159                )
     160
     161                LIBS="$ac_save_LIBS"
     162        ])
     163
     164        AC_MSG_RESULT(${od_cv_have_framework_iokit})
     165
     166        if test x"${od_cv_have_framework_iokit}" = "xyes"; then
     167                AC_DEFINE([HAVE_FRAMEWORK_IOKIT], [], [Define if IOKit framework is available])
     168        fi
     169
     170        AC_SUBST(HAVE_FRAMEWORK_IOKIT)
     171])
     172
    2173
    3174dnl This macro checks if the user specified a dports tree
     
    271442])
    272443
     444# OD_PROG_DAEMONDO
     445#---------------------------------------
     446AC_DEFUN([OD_PROG_DAEMONDO],[
     447        AC_REQUIRE([OD_CHECK_FRAMEWORK_COREFOUNDATION])
     448        AC_REQUIRE([OD_CHECK_FRAMEWORK_SYSTEMCONFIGURATION])
     449        AC_REQUIRE([OD_CHECK_FRAMEWORK_IOKIT])
     450       
     451    AC_MSG_CHECKING(for whether we will build daemondo)
     452    result=no
     453        case $host_os in
     454        darwin*)
     455                if test "x$od_cv_have_framework_corefoundation" == "xyes" &&
     456                   test "x$od_cv_have_framework_systemconfiguration" == "xyes" &&
     457                   test "x$od_cv_have_framework_iokit" == "xyes"; then
     458                        result=yes
     459                        EXTRA_PROGS="$EXTRA_PROGS daemondo"
     460                        AC_CONFIG_FILES([src/programs/daemondo/Makefile])
     461                fi
     462                ;;
     463        *)
     464        esac
     465        AC_MSG_RESULT(${result})
     466])
     467
    273468#------------------------------------------------------------------------
    274469# OD_TCL_PACKAGE_DIR --
  • trunk/base/configure

    r13459 r13584  
    315315
    316316ac_subdirs_all="$ac_subdirs_all src/thread2.6"
    317 ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA SET_MAKE LN_S CVS HAVE_LAUNCHD LAUNCHCTL TAR GNUTAR TAR_CMD CFLAGS_QUICHEEATERS MTREE subdirs REPLACEMENT_PROGS DPORTSDIR PORTCONFIGDIR DSTUSR DSTGRP DSTMODE CPP EGREP MD5_LIBS X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS TCL_VERSION TCL_BIN_DIR TCL_SRC_DIR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCL_INCLUDES TCLSH TCL_PACKAGE_DIR CURL_CONFIG CFLAGS_LIBCURL LDFLAGS_LIBCURL OUR_INCLUDED_PACKAGES INCLUDES CFLAGS_DEBUG CFLAGS_OPTIMIZE TCL_DEFS STLIB_LD SHLIB_LD SHLIB_CFLAGS SHLIB_LDFLAGS SHLIB_SUFFIX TCL_CC prefix_expanded PORTCONFIGDIR_EXPANDED localstatedir_expanded LIBOBJS LTLIBOBJS'
     317ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA SET_MAKE LN_S CVS HAVE_LAUNCHD LAUNCHCTL XCODEBUILD TAR GNUTAR TAR_CMD CFLAGS_QUICHEEATERS MTREE subdirs HAVE_FRAMEWORK_COREFOUNDATION HAVE_FRAMEWORK_SYSTEMCONFIGURATION HAVE_FRAMEWORK_IOKIT ENABLE_LAUNCHD_SUPPORT REPLACEMENT_PROGS EXTRA_PROGS DPORTSDIR PORTCONFIGDIR DSTUSR DSTGRP DSTMODE CPP EGREP MD5_LIBS X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS TCL_VERSION TCL_BIN_DIR TCL_SRC_DIR TCL_LIB_FILE TCL_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCL_INCLUDES TCLSH TCL_PACKAGE_DIR CURL_CONFIG CFLAGS_LIBCURL LDFLAGS_LIBCURL OUR_INCLUDED_PACKAGES INCLUDES CFLAGS_DEBUG CFLAGS_OPTIMIZE TCL_DEFS STLIB_LD SHLIB_LD SHLIB_CFLAGS SHLIB_LDFLAGS SHLIB_SUFFIX TCL_CC prefix_expanded PORTCONFIGDIR_EXPANDED localstatedir_expanded LIBOBJS LTLIBOBJS'
    318318ac_subst_files=''
    319319
     
    857857  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
    858858  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
     859  --enable-launchd-support
     860                          add support for launchd startupitems (default is NO)
    859861  --enable-shared         build and link with shared libraries --enable-shared
    860862
     
    26332635fi
    26342636
     2637# Extract the first word of "xcodebuild", so it can be a program name with args.
     2638set dummy xcodebuild; ac_word=$2
     2639echo "$as_me:$LINENO: checking for $ac_word" >&5
     2640echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
     2641if test "${ac_cv_path_XCODEBUILD+set}" = set; then
     2642  echo $ECHO_N "(cached) $ECHO_C" >&6
     2643else
     2644  case $XCODEBUILD in
     2645  [\\/]* | ?:[\\/]*)
     2646  ac_cv_path_XCODEBUILD="$XCODEBUILD" # Let the user override the test with a path.
     2647  ;;
     2648  *)
     2649  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
     2650for as_dir in $PATH
     2651do
     2652  IFS=$as_save_IFS
     2653  test -z "$as_dir" && as_dir=.
     2654  for ac_exec_ext in '' $ac_executable_extensions; do
     2655  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     2656    ac_cv_path_XCODEBUILD="$as_dir/$ac_word$ac_exec_ext"
     2657    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     2658    break 2
     2659  fi
     2660done
     2661done
     2662
     2663  ;;
     2664esac
     2665fi
     2666XCODEBUILD=$ac_cv_path_XCODEBUILD
     2667
     2668if test -n "$XCODEBUILD"; then
     2669  echo "$as_me:$LINENO: result: $XCODEBUILD" >&5
     2670echo "${ECHO_T}$XCODEBUILD" >&6
     2671else
     2672  echo "$as_me:$LINENO: result: no" >&5
     2673echo "${ECHO_T}no" >&6
     2674fi
     2675
    26352676
    26362677
     
    28532894        fi
    28542895
     2896
     2897
     2898
     2899        FRAMEWORK_LIBS="-framework CoreFoundation"
     2900
     2901        echo "$as_me:$LINENO: checking for CoreFoundation framework" >&5
     2902echo $ECHO_N "checking for CoreFoundation framework... $ECHO_C" >&6
     2903
     2904        if test "${od_cv_have_framework_corefoundation+set}" = set; then
     2905  echo $ECHO_N "(cached) $ECHO_C" >&6
     2906else
     2907
     2908                ac_save_LIBS="$LIBS"
     2909                LIBS="$FRAMEWORK_LIBS $LIBS"
     2910
     2911                cat >conftest.$ac_ext <<_ACEOF
     2912
     2913                        /* confdefs.h.  */
     2914_ACEOF
     2915cat confdefs.h >>conftest.$ac_ext
     2916cat >>conftest.$ac_ext <<_ACEOF
     2917/* end confdefs.h.  */
     2918
     2919                                        #include <CoreFoundation/CoreFoundation.h>
     2920
     2921int
     2922main ()
     2923{
     2924
     2925                                        CFURLRef url = CFURLCreateWithFileSystemPath(NULL, CFSTR("/testing"), kCFURLPOSIXPathStyle, 1);
     2926                                        CFArrayRef bundles = CFBundleCreateBundlesFromDirectory(NULL, url, CFSTR("pkg"));
     2927
     2928  ;
     2929  return 0;
     2930}
     2931
     2932_ACEOF
     2933rm -f conftest.$ac_objext conftest$ac_exeext
     2934if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
     2935  (eval $ac_link) 2>conftest.er1
     2936  ac_status=$?
     2937  grep -v '^ *+' conftest.er1 >conftest.err
     2938  rm -f conftest.er1
     2939  cat conftest.err >&5
     2940  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     2941  (exit $ac_status); } &&
     2942         { ac_try='test -z "$ac_c_werror_flag"
     2943                         || test ! -s conftest.err'
     2944  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
     2945  (eval $ac_try) 2>&5
     2946  ac_status=$?
     2947  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     2948  (exit $ac_status); }; } &&
     2949         { ac_try='test -s conftest$ac_exeext'
     2950  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
     2951  (eval $ac_try) 2>&5
     2952  ac_status=$?
     2953  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     2954  (exit $ac_status); }; }; then
     2955
     2956                                od_cv_have_framework_corefoundation="yes"
     2957
     2958else
     2959  echo "$as_me: failed program was:" >&5
     2960sed 's/^/| /' conftest.$ac_ext >&5
     2961
     2962
     2963                                od_cv_have_framework_corefoundation="no"
     2964
     2965
     2966fi
     2967rm -f conftest.err conftest.$ac_objext \
     2968      conftest$ac_exeext conftest.$ac_ext
     2969
     2970                LIBS="$ac_save_LIBS"
     2971
     2972fi
     2973
     2974
     2975        echo "$as_me:$LINENO: result: ${od_cv_have_framework_corefoundation}" >&5
     2976echo "${ECHO_T}${od_cv_have_framework_corefoundation}" >&6
     2977
     2978        if test x"${od_cv_have_framework_corefoundation}" = "xyes"; then
     2979
     2980cat >>confdefs.h <<\_ACEOF
     2981#define HAVE_FRAMEWORK_COREFOUNDATION
     2982_ACEOF
     2983
     2984        fi
     2985
     2986
     2987
     2988
     2989        FRAMEWORK_LIBS="-framework SystemConfiguration"
     2990
     2991        echo "$as_me:$LINENO: checking for SystemConfiguration framework" >&5
     2992echo $ECHO_N "checking for SystemConfiguration framework... $ECHO_C" >&6
     2993
     2994        if test "${od_cv_have_framework_systemconfiguration+set}" = set; then
     2995  echo $ECHO_N "(cached) $ECHO_C" >&6
     2996else
     2997
     2998                ac_save_LIBS="$LIBS"
     2999                LIBS="$FRAMEWORK_LIBS $LIBS"
     3000
     3001                cat >conftest.$ac_ext <<_ACEOF
     3002
     3003                        /* confdefs.h.  */
     3004_ACEOF
     3005cat confdefs.h >>conftest.$ac_ext
     3006cat >>conftest.$ac_ext <<_ACEOF
     3007/* end confdefs.h.  */
     3008
     3009                                        #include <SystemConfiguration/SystemConfiguration.h>
     3010
     3011int
     3012main ()
     3013{
     3014
     3015                                        int err = SCError();
     3016                                        SCDynamicStoreRef dsRef = SCDynamicStoreCreate(NULL, NULL, NULL, NULL);
     3017
     3018  ;
     3019  return 0;
     3020}
     3021
     3022_ACEOF
     3023rm -f conftest.$ac_objext conftest$ac_exeext
     3024if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
     3025  (eval $ac_link) 2>conftest.er1
     3026  ac_status=$?
     3027  grep -v '^ *+' conftest.er1 >conftest.err
     3028  rm -f conftest.er1
     3029  cat conftest.err >&5
     3030  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     3031  (exit $ac_status); } &&
     3032         { ac_try='test -z "$ac_c_werror_flag"
     3033                         || test ! -s conftest.err'
     3034  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
     3035  (eval $ac_try) 2>&5
     3036  ac_status=$?
     3037  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     3038  (exit $ac_status); }; } &&
     3039         { ac_try='test -s conftest$ac_exeext'
     3040  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
     3041  (eval $ac_try) 2>&5
     3042  ac_status=$?
     3043  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     3044  (exit $ac_status); }; }; then
     3045
     3046                                od_cv_have_framework_systemconfiguration="yes"
     3047
     3048else
     3049  echo "$as_me: failed program was:" >&5
     3050sed 's/^/| /' conftest.$ac_ext >&5
     3051
     3052
     3053                                od_cv_have_framework_systemconfiguration="no"
     3054
     3055
     3056fi
     3057rm -f conftest.err conftest.$ac_objext \
     3058      conftest$ac_exeext conftest.$ac_ext
     3059
     3060                LIBS="$ac_save_LIBS"
     3061
     3062fi
     3063
     3064
     3065        echo "$as_me:$LINENO: result: ${od_cv_have_framework_systemconfiguration}" >&5
     3066echo "${ECHO_T}${od_cv_have_framework_systemconfiguration}" >&6
     3067
     3068        if test x"${od_cv_have_framework_systemconfiguration}" = "xyes"; then
     3069
     3070cat >>confdefs.h <<\_ACEOF
     3071#define HAVE_FRAMEWORK_SYSTEMCONFIGURATION
     3072_ACEOF
     3073
     3074        fi
     3075
     3076
     3077
     3078
     3079        FRAMEWORK_LIBS="-framework IOKit"
     3080
     3081        echo "$as_me:$LINENO: checking for IOKit framework" >&5
     3082echo $ECHO_N "checking for IOKit framework... $ECHO_C" >&6
     3083
     3084        if test "${od_cv_have_framework_iokit+set}" = set; then
     3085  echo $ECHO_N "(cached) $ECHO_C" >&6
     3086else
     3087
     3088                ac_save_LIBS="$LIBS"
     3089                LIBS="$FRAMEWORK_LIBS $LIBS"
     3090
     3091                cat >conftest.$ac_ext <<_ACEOF
     3092
     3093                        /* confdefs.h.  */
     3094_ACEOF
     3095cat confdefs.h >>conftest.$ac_ext
     3096cat >>conftest.$ac_ext <<_ACEOF
     3097/* end confdefs.h.  */
     3098
     3099                                        #include <IOKit/IOKitLib.h>
     3100
     3101int
     3102main ()
     3103{
     3104
     3105                                        IOCreateReceivePort(0, NULL);
     3106                                        IORegisterForSystemPower(0, NULL, NULL, NULL);
     3107
     3108  ;
     3109  return 0;
     3110}
     3111
     3112_ACEOF
     3113rm -f conftest.$ac_objext conftest$ac_exeext
     3114if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
     3115  (eval $ac_link) 2>conftest.er1
     3116  ac_status=$?
     3117  grep -v '^ *+' conftest.er1 >conftest.err
     3118  rm -f conftest.er1
     3119  cat conftest.err >&5
     3120  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     3121  (exit $ac_status); } &&
     3122         { ac_try='test -z "$ac_c_werror_flag"
     3123                         || test ! -s conftest.err'
     3124  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
     3125  (eval $ac_try) 2>&5
     3126  ac_status=$?
     3127  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     3128  (exit $ac_status); }; } &&
     3129         { ac_try='test -s conftest$ac_exeext'
     3130  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
     3131  (eval $ac_try) 2>&5
     3132  ac_status=$?
     3133  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     3134  (exit $ac_status); }; }; then
     3135
     3136                                od_cv_have_framework_iokit="yes"
     3137
     3138else
     3139  echo "$as_me: failed program was:" >&5
     3140sed 's/^/| /' conftest.$ac_ext >&5
     3141
     3142
     3143                                od_cv_have_framework_iokit="no"
     3144
     3145
     3146fi
     3147rm -f conftest.err conftest.$ac_objext \
     3148      conftest$ac_exeext conftest.$ac_ext
     3149
     3150                LIBS="$ac_save_LIBS"
     3151
     3152fi
     3153
     3154
     3155        echo "$as_me:$LINENO: result: ${od_cv_have_framework_iokit}" >&5
     3156echo "${ECHO_T}${od_cv_have_framework_iokit}" >&6
     3157
     3158        if test x"${od_cv_have_framework_iokit}" = "xyes"; then
     3159
     3160cat >>confdefs.h <<\_ACEOF
     3161#define HAVE_FRAMEWORK_IOKIT
     3162_ACEOF
     3163
     3164        fi
     3165
     3166
     3167
     3168# Check whether --enable-launchd-support or --disable-launchd-support was given.
     3169if test "${enable_launchd_support+set}" = set; then
     3170  enableval="$enable_launchd_support"
     3171
     3172
     3173
     3174
     3175
     3176    echo "$as_me:$LINENO: checking for whether we will build daemondo" >&5
     3177echo $ECHO_N "checking for whether we will build daemondo... $ECHO_C" >&6
     3178    result=no
     3179        case $host_os in
     3180        darwin*)
     3181                if test "x$od_cv_have_framework_corefoundation" == "xyes" &&
     3182                   test "x$od_cv_have_framework_systemconfiguration" == "xyes" &&
     3183                   test "x$od_cv_have_framework_iokit" == "xyes"; then
     3184                        result=yes
     3185                        EXTRA_PROGS="$EXTRA_PROGS daemondo"
     3186                                  ac_config_files="$ac_config_files src/programs/daemondo/Makefile"
     3187
     3188                fi
     3189                ;;
     3190        *)
     3191        esac
     3192        echo "$as_me:$LINENO: result: ${result}" >&5
     3193echo "${ECHO_T}${result}" >&6
     3194
     3195fi;
     3196ENABLE_LAUNCHD_SUPPORT=$enable_launchd_support
    28553197
    28563198
     
    84108752  case "$ac_config_target" in
    84118753  # Handling of arguments.
     8754  "src/programs/daemondo/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/programs/daemondo/Makefile" ;;
    84128755  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
    84138756  "Mk/dports.autoconf.mk" ) CONFIG_FILES="$CONFIG_FILES Mk/dports.autoconf.mk" ;;
     
    85328875s,@HAVE_LAUNCHD@,$HAVE_LAUNCHD,;t t
    85338876s,@LAUNCHCTL@,$LAUNCHCTL,;t t
     8877s,@XCODEBUILD@,$XCODEBUILD,;t t
    85348878s,@TAR@,$TAR,;t t
    85358879s,@GNUTAR@,$GNUTAR,;t t
     
    85388882s,@MTREE@,$MTREE,;t t
    85398883s,@subdirs@,$subdirs,;t t
     8884s,@HAVE_FRAMEWORK_COREFOUNDATION@,$HAVE_FRAMEWORK_COREFOUNDATION,;t t
     8885s,@HAVE_FRAMEWORK_SYSTEMCONFIGURATION@,$HAVE_FRAMEWORK_SYSTEMCONFIGURATION,;t t
     8886s,@HAVE_FRAMEWORK_IOKIT@,$HAVE_FRAMEWORK_IOKIT,;t t
     8887s,@ENABLE_LAUNCHD_SUPPORT@,$ENABLE_LAUNCHD_SUPPORT,;t t
    85408888s,@REPLACEMENT_PROGS@,$REPLACEMENT_PROGS,;t t
     8889s,@EXTRA_PROGS@,$EXTRA_PROGS,;t t
    85418890s,@DPORTSDIR@,$DPORTSDIR,;t t
    85428891s,@PORTCONFIGDIR@,$PORTCONFIGDIR,;t t
  • trunk/base/configure.ac

    r13459 r13584  
    1717AC_CHECK_PROG(HAVE_LAUNCHD, [launchd], [yes], [])
    1818AC_PATH_PROG(LAUNCHCTL, [launchctl], [])
     19AC_PATH_PROG(XCODEBUILD, [xcodebuild], [])
    1920
    2021OD_TAR_NO_SAME_OWNER
     
    2930
    3031OD_PROG_MTREE
     32AC_ARG_ENABLE(launchd-support,
     33        AC_HELP_STRING([--enable-launchd-support], [add support for launchd startupitems (default is NO)]),
     34        [OD_PROG_DAEMONDO])
     35AC_SUBST(ENABLE_LAUNCHD_SUPPORT, [$enable_launchd_support])
    3136
    3237AC_SUBST(REPLACEMENT_PROGS)
     38AC_SUBST(EXTRA_PROGS)
    3339
    3440# set default dports-directory
  • trunk/base/src/port1.0/port_autoconf.tcl.in

    r13459 r13584  
    3333        variable cvs_path "@CVS@"
    3434        variable tar_command "@TAR_CMD@"
     35        variable enable_launchd_support "@ENABLE_LAUNCHD_SUPPORT@"
    3536        variable have_launchd "@HAVE_LAUNCHD@"
    3637        variable launchctl_path "@LAUNCHCTL@"
  • trunk/base/src/port1.0/portdestroot.tcl

    r12579 r13584  
    4444options startupitem.create startupitem.requires startupitem.init
    4545options startupitem.name startupitem.start startupitem.stop startupitem.restart
    46 options startupitem.type
     46options startupitem.type startupitem.executable
    4747commands destroot
    4848
     
    5858default destroot.keepdirs ""
    5959
    60 default startupitem.name {${portname}}
    61 default startupitem.type "SystemStarter"
     60default startupitem.name                {${portname}}
     61default startupitem.init                ""
     62default startupitem.start               ""
     63default startupitem.stop                ""
     64default startupitem.restart             ""
     65default startupitem.requires    ""
     66default startupitem.executable  ""
     67default startupitem.type                ""
    6268
    6369set_ui_prefix
  • trunk/base/src/port1.0/portstartupitem.tcl

    r11433 r13584  
    22# portstartupitem.tcl
    33#
    4 # $Id: portstartupitem.tcl,v 1.8 2005/03/24 10:34:49 mww Exp $
     4# $Id: portstartupitem.tcl,v 1.9 2005/08/16 22:19:56 jberry Exp $
    55#
    66# Copyright (c) 2004, 2005 Markus W. Weissman <mww@opendarwin.org>,
     
    8585}
    8686
    87 proc startupitem_create_darwin {args} {
     87proc startupitem_create_darwin_systemstarter {args} {
    8888        global prefix destroot portname os.platform
    8989        global startupitem.name startupitem.requires startupitem.init
    9090        global startupitem.start startupitem.stop startupitem.restart
    91 
     91        global startupitem.executable
     92       
    9293        set scriptdir ${prefix}/etc/startup
    93         if { ![exists startupitem.name] } {
    94                 set startupitem.name ${portname}
    95         }
    96         if { ![exists startupitem.init] } {
    97                 set startupitem.init [list]
    98         }
    99         if { ![exists startupitem.start] } {
    100                 set startupitem.start [list "sh ${scriptdir}/${portname}.sh start"]
    101         }
    102         if { ![exists startupitem.stop] } {
    103                 set startupitem.stop [list "sh ${scriptdir}/${portname}.sh stop"]
    104         }
    105         if { ![exists startupitem.restart] } {
    106                 set startupitem.restart [list "StopService; StartService"]
    107         }
    108         if { ![exists startupitem.requires] } {
    109                 set startupitem.requires [list "Disks" "NFS"]
    110         }
     94       
    11195        set itemname [string toupper ${startupitem.name}]
    11296        set itemdir ${prefix}/etc/StartupItems/${startupitem.name}
    11397        file mkdir ${destroot}${itemdir}
     98       
     99        if { [llength ${startupitem.executable}] &&
     100                        ![llength ${startupitem.init}] &&
     101                        ![llength ${startupitem.start}] &&
     102                        ![llength ${startupitem.stop}] &&
     103                        ![llength ${startupitem.restart}] } {
     104                       
     105                # An executable is specified, and there is no init, start, stop, or restart
     106                # code; so we need to gen-up those options
     107                       
     108                set startupitem.init [list \
     109                        "PIDFILE=${prefix}/var/run/${startupitem.name}.pid-dp" \
     110                        ]
     111
     112                set startupitem.start [list \
     113                        "rm -f \$PIDFILE" \
     114                        "${startupitem.executable} &" \
     115                        "echo \$! >\$PIDFILE" \
     116                        ]
     117                       
     118                set startupitem.stop [list \
     119                        "if test -r \$PIDFILE; then" \
     120                        "\tkill \$(cat \$PIDFILE)" \
     121                        "\trm -f \$PIDFILE" \
     122                        "fi" \
     123                        ]
     124        }
     125       
     126        if { ![llength ${startupitem.start} ] } {
     127                set startupitem.start [list "sh ${scriptdir}/${portname}.sh start"]
     128        }
     129        if { ![llength ${startupitem.stop} ] } {
     130                set startupitem.stop [list "sh ${scriptdir}/${portname}.sh stop"]
     131        }
     132        if { ![llength ${startupitem.restart} ] } {
     133                set startupitem.restart [list StopService StartService]
     134        }
     135        if { ![llength ${startupitem.requires} ] } {
     136                set startupitem.requires [list Disks NFS]
     137        }
     138
     139        # Generate the startup item script
    114140        set item [open "${destroot}${itemdir}/${startupitem.name}" w 0755]
     141       
    115142        puts ${item} "#!/bin/sh"
    116         puts ${item} "#\n# DarwinPorts generated StartupItem\n#\n"
    117         puts ${item} ". /etc/rc.common\n"
     143        puts ${item} "#"
     144        puts ${item} "# DarwinPorts generated StartupItem"
     145        puts ${item} "#"
     146        puts ${item} ""
     147        puts ${item} ". /etc/rc.common"
     148        puts ${item} ""
     149       
    118150        foreach line ${startupitem.init} { puts ${item} ${line} }
     151       
    119152        puts ${item} "\nStartService ()\n\{"
    120153        puts ${item} "\tif \[ \"\$\{${itemname}:=-NO-\}\" = \"-YES-\" \]; then"
     
    122155        foreach line ${startupitem.start} { puts ${item} "\t\t${line}" }
    123156        puts ${item} "\tfi\n\}\n"
     157       
    124158        puts ${item} "StopService ()\n\{"
    125         puts ${item} "\t\tConsoleMessage \"Stopping ${startupitem.name}\""
    126         foreach line ${startupitem.stop} { puts ${item} "\t\t${line}" }
     159        puts ${item} "\tConsoleMessage \"Stopping ${startupitem.name}\""
     160        foreach line ${startupitem.stop} { puts ${item} "\t${line}" }
    127161        puts ${item} "\}\n"
     162       
    128163        puts ${item} "RestartService ()\n\{"
    129164        puts ${item} "\tif \[ \"\$\{${itemname}:=-NO-\}\" = \"-YES-\" \]; then"
     
    131166        foreach line ${startupitem.restart} { puts ${item} "\t\t${line}" }
    132167        puts ${item} "\tfi\n\}\n"
     168       
    133169        puts ${item} "RunService \"\$1\""
    134170        close ${item}
     171       
     172        # Generate the plist
    135173        set para [open "${destroot}${itemdir}/StartupParameters.plist" w 0644]
    136174        puts ${para} "\{"
     
    147185}
    148186
     187proc startupitem_create_darwin_launchd {args} {
     188        global prefix destroot portname os.platform
     189        global startupitem.name startupitem.requires startupitem.init
     190        global startupitem.start startupitem.stop startupitem.restart
     191        global startupitem.executable
     192
     193        set scriptdir ${prefix}/etc/startup
     194       
     195        set itemname            ${startupitem.name}
     196        set plistname           ${itemname}.plist
     197        set daemondest          LaunchDaemons
     198        set itemdir                     ${prefix}/etc/${daemondest}/${itemname}
     199        set args                        [list "${prefix}/bin/daemondo"]
     200       
     201        file mkdir ${destroot}${itemdir}
     202               
     203        if { [llength ${startupitem.executable}] &&
     204                        ![llength ${startupitem.init}] &&
     205                        ![llength ${startupitem.start}] &&
     206                        ![llength ${startupitem.stop}] &&
     207                        ![llength ${startupitem.restart}] } {
     208                       
     209                # An executable is specified, and there is no init, start, stop, or restart
     210                # code; so we don't need a wrapper script
     211               
     212                set args [concat $args "--start-cmd" ${startupitem.executable} ";"]
     213               
     214        } else {
     215       
     216                # No executable was specified, or there was an init, start, stop, or restart
     217                # option, so we do need a wrapper script
     218               
     219                set wrappername         ${itemname}.wrapper
     220                set wrapper                     "${itemdir}/${wrappername}"
     221
     222                if { ![llength ${startupitem.start}] } {
     223                        set startupitem.start [list "sh ${scriptdir}/${portname}.sh start"]
     224                }
     225                if { ![llength ${startupitem.stop}] } {
     226                        set startupitem.stop [list "sh ${scriptdir}/${portname}.sh stop"]
     227                }
     228                if { ![llength ${startupitem.restart}] } {
     229                        set startupitem.restart [list Stop Start]
     230                }
     231
     232                set args [concat $args \
     233                        "--start-cmd"   ${wrapper} start   ";" \
     234                        "--stop-cmd"    ${wrapper} stop    ";" \
     235                        "--restart-cmd" ${wrapper} restart ";" \
     236                        ]
     237
     238                # Create the wrapper script
     239                set item [open "${destroot}${wrapper}" w 0755]
     240
     241                puts ${item} "#!/bin/sh"
     242                puts ${item} "#"
     243                puts ${item} "# DarwinPorts generated daemondo support script"
     244                puts ${item} "#"
     245                puts ${item} ""
     246               
     247                puts ${item} "#"
     248                puts ${item} "# Init"
     249                puts ${item} "#"
     250                foreach line ${startupitem.init}        { puts ${item} ${line} }
     251                puts ${item} ""
     252
     253                puts ${item} "#"
     254                puts ${item} "# Start"
     255                puts ${item} "#"
     256                puts ${item} "Start()"
     257                puts ${item} "\{"
     258                foreach line ${startupitem.start}       { puts ${item} "\t${line}" }
     259                puts ${item} "\}"
     260                puts ${item} ""
     261               
     262                puts ${item} "#"
     263                puts ${item} "# Stop"
     264                puts ${item} "#"
     265                puts ${item} "Stop()"
     266                puts ${item} "\{"
     267                foreach line ${startupitem.stop}        { puts ${item} "\t${line}" }
     268                puts ${item} "\}"
     269                puts ${item} ""
     270       
     271                puts ${item} "#"
     272                puts ${item} "# Restart"
     273                puts ${item} "#"
     274                puts ${item} "Restart()"
     275                puts ${item} "\{"
     276                foreach line ${startupitem.restart} { puts ${item} "\t${line}" }
     277                puts ${item} "\}"
     278                puts ${item} ""
     279
     280                puts ${item} "#"
     281                puts ${item} "# Run"
     282                puts ${item} "#"
     283                puts ${item} "Run()"
     284                puts ${item} "\{"
     285                puts ${item} "case \$1 in"
     286                puts ${item} "  start  ) Start   ;;"
     287                puts ${item} "  stop   ) Stop    ;;"
     288                puts ${item} "  restart) Restart ;;"
     289                puts ${item} "  *      ) echo \"\$0: unknown argument: \$1\";;"
     290                puts ${item} "esac"
     291                puts ${item} "\}"
     292                puts ${item} ""
     293
     294                puts ${item} "#"
     295                puts ${item} "# Run a phase based on the selector"
     296                puts ${item} "#"
     297                puts ${item} "Run \$1"
     298                puts ${item} ""
     299
     300                close ${item}
     301        }
     302               
     303        # Create the plist file
     304        set plist [open "${destroot}${itemdir}/${plistname}" w 0644]
     305       
     306        puts ${plist} "<?xml version='1.0' encoding='UTF-8'?>"
     307        puts ${plist} "<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN"
     308        puts ${plist} "http://www.apple.com/DTDs/PropertyList-1.0.dtd >"
     309        puts ${plist} "<plist version='1.0'>"
     310        puts ${plist} "<dict>"
     311       
     312        puts ${plist} "<key>Label</key><string>${itemname}</string>"
     313       
     314        puts ${plist} "<key>ProgramArguments</key>"
     315        puts ${plist} "<array>"
     316        foreach arg ${args} { puts ${plist} "\t<string>${arg}</string>" }
     317        puts ${plist} "</array>"
     318       
     319        puts ${plist} "<key>Disabled</key><false/>"
     320        puts ${plist} "<key>OnDemand</key><false/>"
     321        puts ${plist} "<key>RunAtLoad</key><false/>"
     322       
     323        puts ${plist} "</dict>"
     324        puts ${plist} "</plist>"
     325
     326        close ${plist}
     327
     328        # Make a symlink to the plist file
     329        file mkdir "${destroot}/Library/${daemondest}"
     330        system "cd ${destroot}/Library/${daemondest} && ln -sf ${itemdir}/${plistname}"
     331}
     332
    149333proc startupitem_create {args} {
    150         global os.platform UI_PREFIX
    151         global startupitem.type
    152         ui_msg "$UI_PREFIX [msgcat::mc "Creating Startup Script"]"
    153 
     334        global UI_PREFIX
     335        global startupitem.type os.platform
     336       
     337        # Calculate a default value for startupitem.type
     338        # If the option has already been set, default will do nothing
    154339        switch -exact ${os.platform} {
    155                 "darwin" {
    156                         if {${startupitem.type} == "RCng"} {
    157                                 startupitem_create_rcng
     340                darwin {
     341                        set enableLaunchd ${portutil::autoconf::enable_launchd_support}
     342                        set haveLaunchd ${portutil::autoconf::have_launchd}
     343                       
     344                        if { ${enableLaunchd} && ${haveLaunchd} } {
     345                                default startupitem.type "launchd"
    158346                        } else {
    159                                 startupitem_create_darwin
     347                                default startupitem.type "SystemStarter"
    160348                        }
    161349                }
    162350                default {
    163                         startupitem_create_rcng
    164                 }
     351                        default startupitem.type "RCng"
     352                }
     353        }
     354               
     355        ui_msg "$UI_PREFIX [msgcat::mc "Creating ${startupitem.type} control script"]"
     356
     357        switch ${startupitem.type} {
     358                launchd                 { startupitem_create_darwin_launchd }
     359                SystemStarter   { startupitem_create_darwin_systemstarter }
     360                RCng                    { startupitem_create_rcng }
     361                default                 { startupitem_create_rcng }
    165362        }
    166363}
Note: See TracChangeset for help on using the changeset viewer.