From bb8672c261383ed1fbf2d2959356e27a522cbaa8 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Thu, 3 May 2012 16:02:21 +0200 Subject: [PATCH 01/29] changed default --- m4/all-in-one.mruby | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/m4/all-in-one.mruby b/m4/all-in-one.mruby index 2641d836e4..86ee5a5b6f 100644 --- a/m4/all-in-one.mruby +++ b/m4/all-in-one.mruby @@ -7,7 +7,7 @@ dnl ---------------------------------------------------------------------------- AC_ARG_ENABLE(mruby, AS_HELP_STRING([--enable-mruby], [enable MRUBY]), [tr_MRUBY="${enableval:-yes}"], - [tr_MRUBY=no] + [tr_MRUBY=yes] ) if test "x$tr_MRUBY" = "xyes"; then From 8124e71b0a3d830ba209c13ca19070f85f5cb4f3 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Thu, 3 May 2012 16:03:56 +0200 Subject: [PATCH 02/29] changed default --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index baae6c157d..f19e55d92d 100755 --- a/configure +++ b/configure @@ -9037,7 +9037,7 @@ fi if test "${enable_mruby+set}" = set; then : enableval=$enable_mruby; tr_MRUBY="${enableval:-yes}" else - tr_MRUBY=no + tr_MRUBY=yes fi From cf678e1e0aa6f1ddabb6762ec3b7795613b068d3 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sun, 6 May 2012 00:25:13 +0200 Subject: [PATCH 03/29] release version 0.4.0 --- configure | 224 ++++++++++++++++++++++++++---------------------------- 1 file changed, 108 insertions(+), 116 deletions(-) diff --git a/configure b/configure index 3503d102fd..c5ba7e9056 100755 --- a/configure +++ b/configure @@ -1,11 +1,13 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for triAGENS AvocadoDB 0.4.0. +# Generated by GNU Autoconf 2.68 for triAGENS AvocadoDB 0.4.0. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. # # # This configure script is free software; the Free Software Foundation @@ -134,31 +136,6 @@ export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh @@ -192,8 +169,7 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" +test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && @@ -238,25 +214,21 @@ IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : @@ -359,14 +331,6 @@ $as_echo X"$as_dir" | } # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take @@ -488,10 +452,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). @@ -526,16 +486,16 @@ if (echo >conf$$.file) 2>/dev/null; then # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' + as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -547,8 +507,28 @@ else as_mkdir_p=false fi -as_test_x='test -x' -as_executable_p=as_fn_executable_p +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -1334,6 +1314,8 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1646,9 +1628,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF triAGENS AvocadoDB configure 0.4.0 -generated by GNU Autoconf 2.69 +generated by GNU Autoconf 2.68 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1836,7 +1818,7 @@ $as_echo "$ac_try_echo"; } >&5 test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || - test -x conftest$ac_exeext + $as_test_x conftest$ac_exeext }; then : ac_retval=0 else @@ -1924,7 +1906,7 @@ $as_echo "$ac_try_echo"; } >&5 test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || - test -x conftest$ac_exeext + $as_test_x conftest$ac_exeext }; then : ac_retval=0 else @@ -2111,7 +2093,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by triAGENS AvocadoDB $as_me 0.4.0, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -2838,7 +2820,7 @@ case $as_dir/ in #(( # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -3022,7 +3004,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3062,7 +3044,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3113,7 +3095,7 @@ do test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ @@ -3166,7 +3148,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3455,7 +3437,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3499,7 +3481,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4219,7 +4201,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4263,7 +4245,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4457,7 +4439,8 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include -struct stat; +#include +#include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -4698,7 +4681,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4742,7 +4725,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5609,7 +5592,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5649,7 +5632,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6159,8 +6142,6 @@ _ACEOF esac rm -rf conftest* fi - - fi @@ -6324,7 +6305,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_acx_pthread_config="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6480,7 +6461,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_PTHREAD_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6637,7 +6618,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_DOT_PATH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6754,7 +6735,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6786,8 +6767,7 @@ a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } -e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ - yyless ((input () != 0)); } +e { yyless (input () != 0); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% @@ -6965,7 +6945,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_BISON="bison" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7172,7 +7152,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_NCURSES_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7215,7 +7195,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_NCURSES_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7350,7 +7330,7 @@ do for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in @@ -7416,7 +7396,7 @@ do for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in @@ -10080,16 +10060,16 @@ if (echo >conf$$.file) 2>/dev/null; then # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' + as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -10149,16 +10129,28 @@ else as_mkdir_p=false fi - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -10180,7 +10172,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by triAGENS AvocadoDB $as_me 0.4.0, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -10247,10 +10239,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ triAGENS AvocadoDB config.status 0.4.0 -configured by $0, generated by GNU Autoconf 2.69, +configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -10341,7 +10333,7 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' From 0d764ceaa79be86ade4843e2bee023fd1e6172ae Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sun, 6 May 2012 00:29:07 +0200 Subject: [PATCH 04/29] regenerated makefile --- Makefile.in | 260 +++++++++++------------------- aclocal.m4 | 359 +++++++++++++++++------------------------- config/compile | 227 ++------------------------- config/config.guess | 375 +++++++++++++++++++++----------------------- config/config.sub | 204 ++++++++---------------- config/depcomp | 189 +++++++--------------- config/install-sh | 35 ++--- config/missing | 148 +++++++++++------ configure | 219 ++++++++++---------------- 9 files changed, 744 insertions(+), 1272 deletions(-) diff --git a/Makefile.in b/Makefile.in index f27ebc3222..2225c21c5e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.12 from Makefile.am. +# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -60,23 +60,6 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -111,13 +94,9 @@ DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/m4/Makefile.all-in-one-v8 \ $(top_srcdir)/BasicsC/local-configuration.h.in \ $(top_srcdir)/Doxygen/avocado.doxy.in \ - $(top_srcdir)/config/compile $(top_srcdir)/config/config.guess \ - $(top_srcdir)/config/config.h.in \ - $(top_srcdir)/config/config.sub $(top_srcdir)/config/depcomp \ - $(top_srcdir)/config/install-sh $(top_srcdir)/config/missing \ - $(top_srcdir)/configure config/compile config/config.guess \ - config/config.sub config/depcomp config/install-sh \ - config/missing + $(top_srcdir)/config/config.h.in $(top_srcdir)/configure \ + config/compile config/config.guess config/config.sub \ + config/depcomp config/install-sh config/missing @ENABLE_MRUBY_TRUE@am__append_4 = \ @ENABLE_MRUBY_TRUE@ MRuby/MRLineEditor.cpp \ @ENABLE_MRUBY_TRUE@ MRuby/mr-utils.cpp @@ -179,11 +158,11 @@ CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru -AM_V_AR = $(am__v_AR_@AM_V@) -am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) -am__v_AR_0 = @echo " AR " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ libavocado_a_AR = $(AR) $(ARFLAGS) libavocado_a_LIBADD = @@ -462,28 +441,28 @@ am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libavocado_a_SOURCES) $(UnitTests_basics_suite_SOURCES) \ $(UnitTests_geo_suite_SOURCES) $(avocado_SOURCES) \ $(avocimp_SOURCES) $(avocirb_SOURCES) $(avocsh_SOURCES) @@ -492,11 +471,6 @@ DIST_SOURCES = $(am__libavocado_a_SOURCES_DIST) \ $(am__UnitTests_geo_suite_SOURCES_DIST) $(avocado_SOURCES) \ $(avocimp_SOURCES) $(am__avocirb_SOURCES_DIST) \ $(avocsh_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -518,33 +492,19 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } DATA = $(nobase_pkgdata_DATA) ETAGS = etags CTAGS = ctags -CSCOPE = cscope -AM_RECURSIVE_TARGETS = cscope DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__post_remove_distdir = $(am__remove_distdir) + { test ! -d "$(distdir)" \ + || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr "$(distdir)"; }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best -DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1126,7 +1086,7 @@ all: $(BUILT_SOURCES) .SUFFIXES: .SUFFIXES: .c .cpp .o .obj -am--refresh: Makefile +am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.files $(srcdir)/Makefile.doxygen $(srcdir)/Makefile.javascript $(srcdir)/Makefile.unittests $(srcdir)/Makefile.flex $(srcdir)/Makefile.bison $(srcdir)/m4/Makefile.all-in-one-libev $(srcdir)/m4/Makefile.all-in-one-v8 $(srcdir)/m4/Makefile.all-in-one-mruby $(am__configure_deps) @for dep in $?; do \ @@ -1151,7 +1111,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(srcdir)/Makefile.files $(srcdir)/Makefile.doxygen $(srcdir)/Makefile.javascript $(srcdir)/Makefile.unittests $(srcdir)/Makefile.flex $(srcdir)/Makefile.bison $(srcdir)/m4/Makefile.all-in-one-libev $(srcdir)/m4/Makefile.all-in-one-v8 $(srcdir)/m4/Makefile.all-in-one-mruby: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1163,8 +1122,10 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): config/config.h: config/stamp-h1 - @if test ! -f $@; then rm -f config/stamp-h1; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) config/stamp-h1; else :; fi + @if test ! -f $@; then \ + rm -f config/stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) config/stamp-h1; \ + else :; fi config/stamp-h1: $(top_srcdir)/config/config.h.in $(top_builddir)/config.status @rm -f config/stamp-h1 @@ -1175,8 +1136,10 @@ $(top_srcdir)/config/config.h.in: $(am__configure_deps) touch $@ BasicsC/local-configuration.h: BasicsC/stamp-h2 - @if test ! -f $@; then rm -f BasicsC/stamp-h2; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) BasicsC/stamp-h2; else :; fi + @if test ! -f $@; then \ + rm -f BasicsC/stamp-h2; \ + $(MAKE) $(AM_MAKEFLAGS) BasicsC/stamp-h2; \ + else :; fi BasicsC/stamp-h2: $(top_srcdir)/BasicsC/local-configuration.h.in $(top_builddir)/config.status @rm -f BasicsC/stamp-h2 @@ -1478,17 +1441,14 @@ MRuby/MRLineEditor.$(OBJEXT): MRuby/$(am__dirstamp) \ MRuby/$(DEPDIR)/$(am__dirstamp) MRuby/mr-utils.$(OBJEXT): MRuby/$(am__dirstamp) \ MRuby/$(DEPDIR)/$(am__dirstamp) -libavocado.a: $(libavocado_a_OBJECTS) $(libavocado_a_DEPENDENCIES) $(EXTRA_libavocado_a_DEPENDENCIES) +libavocado.a: $(libavocado_a_OBJECTS) $(libavocado_a_DEPENDENCIES) $(AM_V_at)-rm -f libavocado.a $(AM_V_AR)$(libavocado_a_AR) libavocado.a $(libavocado_a_OBJECTS) $(libavocado_a_LIBADD) $(AM_V_at)$(RANLIB) libavocado.a install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ @@ -1527,11 +1487,8 @@ clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) + test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ - fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ @@ -1612,7 +1569,7 @@ UnitTests/Jutland/StringBufferTest.$(OBJEXT): \ UnitTests/Jutland/StringUtilsTest.$(OBJEXT): \ UnitTests/Jutland/$(am__dirstamp) \ UnitTests/Jutland/$(DEPDIR)/$(am__dirstamp) -UnitTests/basics_suite$(EXEEXT): $(UnitTests_basics_suite_OBJECTS) $(UnitTests_basics_suite_DEPENDENCIES) $(EXTRA_UnitTests_basics_suite_DEPENDENCIES) UnitTests/$(am__dirstamp) +UnitTests/basics_suite$(EXEEXT): $(UnitTests_basics_suite_OBJECTS) $(UnitTests_basics_suite_DEPENDENCIES) UnitTests/$(am__dirstamp) @rm -f UnitTests/basics_suite$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(UnitTests_basics_suite_OBJECTS) $(UnitTests_basics_suite_LDADD) $(LIBS) UnitTests/Cambridge/$(am__dirstamp): @@ -1627,7 +1584,7 @@ UnitTests/Cambridge/Runner.$(OBJEXT): \ UnitTests/Cambridge/georeg.$(OBJEXT): \ UnitTests/Cambridge/$(am__dirstamp) \ UnitTests/Cambridge/$(DEPDIR)/$(am__dirstamp) -UnitTests/geo_suite$(EXEEXT): $(UnitTests_geo_suite_OBJECTS) $(UnitTests_geo_suite_DEPENDENCIES) $(EXTRA_UnitTests_geo_suite_DEPENDENCIES) UnitTests/$(am__dirstamp) +UnitTests/geo_suite$(EXEEXT): $(UnitTests_geo_suite_OBJECTS) $(UnitTests_geo_suite_DEPENDENCIES) UnitTests/$(am__dirstamp) @rm -f UnitTests/geo_suite$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(UnitTests_geo_suite_OBJECTS) $(UnitTests_geo_suite_LDADD) $(LIBS) Admin/$(am__dirstamp): @@ -1979,7 +1936,7 @@ VocBase/voc-shaper.$(OBJEXT): VocBase/$(am__dirstamp) \ VocBase/$(DEPDIR)/$(am__dirstamp) VocBase/vocbase.$(OBJEXT): VocBase/$(am__dirstamp) \ VocBase/$(DEPDIR)/$(am__dirstamp) -avocado$(EXEEXT): $(avocado_OBJECTS) $(avocado_DEPENDENCIES) $(EXTRA_avocado_DEPENDENCIES) +avocado$(EXEEXT): $(avocado_OBJECTS) $(avocado_DEPENDENCIES) @rm -f avocado$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(avocado_OBJECTS) $(avocado_LDADD) $(LIBS) SimpleHttpClient/$(am__dirstamp): @@ -2006,7 +1963,7 @@ V8Client/V8ClientConnection.$(OBJEXT): V8Client/$(am__dirstamp) \ V8Client/$(DEPDIR)/$(am__dirstamp) V8Client/avocimp.$(OBJEXT): V8Client/$(am__dirstamp) \ V8Client/$(DEPDIR)/$(am__dirstamp) -avocimp$(EXEEXT): $(avocimp_OBJECTS) $(avocimp_DEPENDENCIES) $(EXTRA_avocimp_DEPENDENCIES) +avocimp$(EXEEXT): $(avocimp_OBJECTS) $(avocimp_DEPENDENCIES) @rm -f avocimp$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(avocimp_OBJECTS) $(avocimp_LDADD) $(LIBS) MRClient/$(am__dirstamp): @@ -2017,12 +1974,12 @@ MRClient/$(DEPDIR)/$(am__dirstamp): @: > MRClient/$(DEPDIR)/$(am__dirstamp) MRClient/avocirb.$(OBJEXT): MRClient/$(am__dirstamp) \ MRClient/$(DEPDIR)/$(am__dirstamp) -avocirb$(EXEEXT): $(avocirb_OBJECTS) $(avocirb_DEPENDENCIES) $(EXTRA_avocirb_DEPENDENCIES) +avocirb$(EXEEXT): $(avocirb_OBJECTS) $(avocirb_DEPENDENCIES) @rm -f avocirb$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(avocirb_OBJECTS) $(avocirb_LDADD) $(LIBS) V8Client/avocsh.$(OBJEXT): V8Client/$(am__dirstamp) \ V8Client/$(DEPDIR)/$(am__dirstamp) -avocsh$(EXEEXT): $(avocsh_OBJECTS) $(avocsh_DEPENDENCIES) $(EXTRA_avocsh_DEPENDENCIES) +avocsh$(EXEEXT): $(avocsh_OBJECTS) $(avocsh_DEPENDENCIES) @rm -f avocsh$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(avocsh_OBJECTS) $(avocsh_LDADD) $(LIBS) @@ -2519,47 +2476,48 @@ distclean-compile: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` install-nobase_pkgdataDATA: $(nobase_pkgdata_DATA) @$(NORMAL_INSTALL) + test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(nobase_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ - fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)/$$dir'"; \ + echo "$(MKDIR_P) '$(DESTDIR)$(pkgdatadir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)/$$dir"; }; \ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(pkgdatadir)/$$dir'"; \ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(pkgdatadir)/$$dir" || exit $$?; }; \ @@ -2569,7 +2527,9 @@ uninstall-nobase_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(nobase_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ - dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -2620,32 +2580,8 @@ GTAGS: && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" -cscope: cscope.files - test ! -s cscope.files \ - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) - -clean-cscope: - -rm -f cscope.files - -cscope.files: clean-cscope cscopelist - -cscopelist: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) @@ -2688,36 +2624,36 @@ distdir: $(DISTFILES) || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__post_remove_distdir) + $(am__remove_distdir) dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__post_remove_distdir) + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__post_remove_distdir) +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__post_remove_distdir) + tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz + $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__post_remove_distdir) + $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__post_remove_distdir) + $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) - $(am__post_remove_distdir) + $(am__remove_distdir) -dist dist-all: - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' - $(am__post_remove_distdir) +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another @@ -2728,8 +2664,8 @@ distcheck: dist GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.lzma*) \ + lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ @@ -2749,7 +2685,6 @@ distcheck: dist && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ @@ -2773,21 +2708,13 @@ distcheck: dist && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 - $(am__post_remove_distdir) + $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + @$(am__cd) '$(distuninstallcheck_dir)' \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ @@ -2822,15 +2749,10 @@ install-am: all-am installcheck: installcheck-am install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: @@ -2996,11 +2918,11 @@ uninstall-am: uninstall-binPROGRAMS uninstall-nobase_pkgdataDATA \ .MAKE: all check install install-am install-strip .PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ - clean-binPROGRAMS clean-cscope clean-generic clean-local \ + clean-binPROGRAMS clean-generic clean-local \ clean-noinstLIBRARIES clean-noinstPROGRAMS clean-sbinPROGRAMS \ - cscope cscopelist ctags dist dist-all dist-bzip2 dist-gzip \ - dist-lzip dist-shar dist-tarZ dist-xz dist-zip distcheck \ - distclean distclean-compile distclean-generic distclean-hdr \ + ctags dist dist-all dist-bzip2 dist-gzip dist-lzma dist-shar \ + dist-tarZ dist-xz dist-zip distcheck distclean \ + distclean-compile distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am \ diff --git a/aclocal.m4 b/aclocal.m4 index b8e7ed70b9..b52b848197 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,8 +1,7 @@ -# generated automatically by aclocal 1.12 -*- Autoconf -*- +# generated automatically by aclocal 1.11.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, -# Inc. +# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -14,30 +13,28 @@ m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, +[m4_warning([this file was generated for autoconf 2.68. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically 'autoreconf'.])]) +To do so, use the procedure documented by the package, typically `autoreconf'.])]) -# Copyright (C) 2002-2012 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 8 - # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.12' +[am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.12], [], +m4_if([$1], [1.11.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -53,24 +50,22 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.12])dnl +[AM_AUTOMAKE_VERSION([1.11.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2012 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and @@ -89,7 +84,7 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you +# harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, @@ -115,21 +110,22 @@ am_aux_dir=`cd $ac_aux_dir && pwd` # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2012 Free Software Foundation, Inc. +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 +# Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 10 +# serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl @@ -148,15 +144,16 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2012 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 +# Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 16 +# serial 10 -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing @@ -179,12 +176,12 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], @@ -192,9 +189,8 @@ AC_CACHE_CHECK([dependency style of $depcc], # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -233,16 +229,16 @@ AC_CACHE_CHECK([dependency style of $depcc], : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with '-c' and '-o' for the sake of the "dashmstdout" + # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -251,16 +247,16 @@ AC_CACHE_CHECK([dependency style of $depcc], test "$am__universal" = false || continue ;; nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -308,7 +304,7 @@ AM_CONDITIONAL([am__fastdep$1], [ # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl @@ -318,34 +314,28 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' - am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2012 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 6 +#serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ @@ -364,7 +354,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but + # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -376,19 +366,21 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. + # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` @@ -406,7 +398,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will +# is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], @@ -416,13 +408,14 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2012 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 18 +# serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. @@ -473,25 +466,23 @@ m4_ifval([$2], AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), - [ok:ok],, +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) - AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -AM_MISSING_PROG([AUTOCONF], [autoconf]) -AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -AM_MISSING_PROG([AUTOHEADER], [autoheader]) -AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl @@ -505,28 +496,28 @@ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES([CC])], + [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES([CXX])], + [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES([OBJC])], + [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the -dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro +dnl The `parallel-tests' driver may need to know about EXEEXT, so add the +dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], @@ -554,14 +545,12 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2012 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 8 - # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. @@ -575,9 +564,9 @@ if test x"${install_sh}" != xset; then install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi -AC_SUBST([install_sh])]) +AC_SUBST(install_sh)]) -# Copyright (C) 2003-2012 Free Software Foundation, Inc. +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -600,13 +589,13 @@ AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2012 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 +# serial 4 # AM_MAKE_INCLUDE() # ----------------- @@ -625,7 +614,7 @@ am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. +# Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -650,7 +639,8 @@ AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) -# Copyright (C) 1999-2012 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -686,13 +676,14 @@ m4_define([AC_PROG_CC], # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2012 Free Software Foundation, Inc. +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 7 +# serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ @@ -722,21 +713,19 @@ if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) + AC_MSG_WARN([`missing' script is too old or missing]) fi ]) -# Copyright (C) 2003-2012 Free Software Foundation, Inc. +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # AM_PROG_MKDIR_P # --------------- -# Check for 'mkdir -p'. +# Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl @@ -756,13 +745,13 @@ esac # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2012 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 6 +# serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- @@ -770,13 +759,13 @@ AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) -# -------------------- +# ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) -# ------------------------ +# ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) @@ -789,18 +778,22 @@ AC_DEFUN([_AM_IF_OPTION], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2012 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 +# Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 9 +# serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -811,40 +804,32 @@ case `pwd` in esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; + AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac -# Do 'set' in a subshell so we don't clobber the current shell's +# Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken - alias in your environment]) - fi - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done test "$[2]" = conftest.file ) then @@ -854,123 +839,70 @@ else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi -AC_MSG_RESULT([yes]) -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi -AC_CONFIG_COMMANDS_PRE( - [AC_MSG_CHECKING([that generated files are newer than configure]) - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - AC_MSG_RESULT([done])]) -rm -f conftest.file -]) +AC_MSG_RESULT(yes)]) -# Copyright (C) 2009-2012 Free Software Foundation, Inc. +# Copyright (C) 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 3 +# serial 1 # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). +# (`yes' being less verbose, `no' or empty being verbose). AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl -AS_HELP_STRING( - [--enable-silent-rules], - [less verbose build output (undo: "make V=1")]) -AS_HELP_STRING( - [--disable-silent-rules], - [verbose build output (undo: "make V=0")])dnl -]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +[AC_ARG_ENABLE([silent-rules], +[ --enable-silent-rules less verbose build output (undo: `make V=1') + --disable-silent-rules verbose build output (undo: `make V=0')]) +case $enable_silent_rules in +yes) AM_DEFAULT_VERBOSITY=0;; +no) AM_DEFAULT_VERBOSITY=1;; +*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac -dnl -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2012 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # AM_PROG_INSTALL_STRIP # --------------------- -# One issue with vendor 'install' (even GNU) is that you can't +# One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in "make install-strip", and initialize +# always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2012 Free Software Foundation, Inc. +# Copyright (C) 2006, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 3 +# serial 2 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- @@ -979,24 +911,24 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])]) AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- +# --------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2012 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 3 +# serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. -# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory @@ -1007,11 +939,10 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) @@ -1019,7 +950,7 @@ AC_MSG_CHECKING([how to create a $1 tar archive]) _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of '-'. +# Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in diff --git a/config/compile b/config/compile index 7b4a9a7e1e..c0096a7b56 100755 --- a/config/compile +++ b/config/compile @@ -1,9 +1,10 @@ #! /bin/sh -# Wrapper for compilers which do not understand '-c -o'. +# Wrapper for compilers which do not understand `-c -o'. -scriptversion=2012-03-05.13; # UTC +scriptversion=2009-10-06.20; # UTC -# Copyright (C) 1999-2012 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software +# Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -28,219 +29,21 @@ scriptversion=2012-03-05.13; # UTC # bugs to or send patches to # . -nl=' -' - -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent tools from complaining about whitespace usage. -IFS=" "" $nl" - -file_conv= - -# func_file_conv build_file lazy -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv/,$2, in - *,$file_conv,*) - ;; - mingw/*) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin/*) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine/*) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_cl_dashL linkdir -# Make cl look for libraries in LINKDIR -func_cl_dashL () -{ - func_file_conv "$1" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" -} - -# func_cl_dashl library -# Do a library search-path lookup for cl -func_cl_dashl () -{ - lib=$1 - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - lib=$dir/$lib.dll.lib - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - lib=$dir/$lib.lib - break - fi - done - IFS=$save_IFS - - if test "$found" != yes; then - lib=$lib.lib - fi -} - -# func_cl_wrapper cl arg... -# Adjust compile command to suit cl -func_cl_wrapper () -{ - # Assume a capable shell - lib_path= - shared=: - linker_opts= - for arg - do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - eat=1 - case $2 in - *.o | *.[oO][bB][jJ]) - func_file_conv "$2" - set x "$@" -Fo"$file" - shift - ;; - *) - func_file_conv "$2" - set x "$@" -Fe"$file" - shift - ;; - esac - ;; - -I) - eat=1 - func_file_conv "$2" mingw - set x "$@" -I"$file" - shift - ;; - -I*) - func_file_conv "${1#-I}" mingw - set x "$@" -I"$file" - shift - ;; - -l) - eat=1 - func_cl_dashl "$2" - set x "$@" "$lib" - shift - ;; - -l*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" - shift - ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; - -L*) - func_cl_dashL "${1#-L}" - ;; - -static) - shared=false - ;; - -Wl,*) - arg=${1#-Wl,} - save_ifs="$IFS"; IFS=',' - for flag in $arg; do - IFS="$save_ifs" - linker_opts="$linker_opts $flag" - done - IFS="$save_ifs" - ;; - -Xlinker) - eat=1 - linker_opts="$linker_opts $2" - ;; - -*) - set x "$@" "$1" - shift - ;; - *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) - func_file_conv "$1" - set x "$@" -Tp"$file" - shift - ;; - *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) - func_file_conv "$1" mingw - set x "$@" "$file" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift - done - if test -n "$linker_opts"; then - linker_opts="-link$linker_opts" - fi - exec "$@" $linker_opts - exit 1 -} - -eat= - case $1 in '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] -Wrapper for compilers which do not understand '-c -o'. -Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +Wrapper for compilers which do not understand `-c -o'. +Remove `-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the -right script to run: please start by reading the file 'INSTALL'. +right script to run: please start by reading the file `INSTALL'. Report bugs to . EOF @@ -250,13 +53,11 @@ EOF echo "compile $scriptversion" exit $? ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) - func_cl_wrapper "$@" # Doesn't return... - ;; esac ofile= cfile= +eat= for arg do @@ -265,8 +66,8 @@ do else case $1 in -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - # So we strip '-o arg' only if arg is an object. + # configure might choose to run compile as `compile cc -o foo foo.c'. + # So we strip `-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) @@ -293,10 +94,10 @@ do done if test -z "$ofile" || test -z "$cfile"; then - # If no '-o' option was seen then we might have been invoked from a + # If no `-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no - # '.c' file was seen then we are probably linking. That is also + # `.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi @@ -305,7 +106,7 @@ fi cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. -# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# Note: use `[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d diff --git a/config/config.guess b/config/config.guess index d622a44e55..666c5ad925 100755 --- a/config/config.guess +++ b/config/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. -timestamp='2012-02-10' +timestamp='2009-11-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -17,7 +17,9 @@ timestamp='2012-02-10' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -54,9 +56,8 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -138,12 +139,22 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown +case "${UNAME_MACHINE}" in + i?86) + test -z "$VENDOR" && VENDOR=pc + ;; + *) + test -z "$VENDOR" && VENDOR=unknown + ;; +esac +test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse + # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward @@ -179,7 +190,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in fi ;; *) - os=netbsd + os=netbsd ;; esac # The OS release @@ -202,19 +213,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + echo ${UNAME_MACHINE_ARCH}-${VENDOR}-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + echo ${UNAME_MACHINE}-${VENDOR}-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + echo ${UNAME_MACHINE}-${VENDOR}-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} + echo powerpc-${VENDOR}-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + echo ${UNAME_MACHINE}-${VENDOR}-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in @@ -222,7 +233,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on @@ -268,10 +279,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead @@ -282,13 +290,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 + echo m68k-${VENDOR}-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos + echo ${UNAME_MACHINE}-${VENDOR}-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos + echo ${UNAME_MACHINE}-${VENDOR}-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition @@ -297,13 +305,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo s390-ibm-zvmoe exit ;; *:OS400:*:*) - echo powerpc-ibm-os400 + echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos + echo arm-${VENDOR}-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp @@ -396,23 +404,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; + echo m68k-${VENDOR}-mint${UNAME_RELEASE} + exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; @@ -482,8 +490,8 @@ EOF echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ @@ -496,7 +504,7 @@ EOF else echo i586-dg-dgux${UNAME_RELEASE} fi - exit ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; @@ -553,7 +561,7 @@ EOF echo rs6000-ibm-aix3.2 fi exit ;; - *:AIX:*:[4567]) + *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 @@ -596,52 +604,52 @@ EOF 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac + esac ;; + esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + sed 's/^ //' << EOF >$dummy.c - #define _HPUX_SOURCE - #include - #include + #define _HPUX_SOURCE + #include + #include - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa @@ -722,9 +730,9 @@ EOF exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk + echo ${UNAME_MACHINE}-${VENDOR}-osf1mk else - echo ${UNAME_MACHINE}-unknown-osf1 + echo ${UNAME_MACHINE}-${VENDOR}-osf1 fi exit ;; parisc*:Lites*:*:*) @@ -732,22 +740,22 @@ EOF exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; @@ -771,31 +779,32 @@ EOF exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} + echo sparc-${VENDOR}-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + echo ${UNAME_MACHINE}-${VENDOR}-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in + case ${UNAME_MACHINE} in + pc98) + echo i386-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + echo x86_64-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + echo ${UNAME_MACHINE}-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) @@ -804,26 +813,23 @@ EOF *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; - i*:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) - case ${UNAME_MACHINE} in + case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} + echo x86_64-${VENDOR}-interix${UNAME_RELEASE} exit ;; IA64) - echo ia64-unknown-interix${UNAME_RELEASE} + echo ia64-${VENDOR}-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) @@ -842,32 +848,25 @@ EOF echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin + echo x86_64-${VENDOR}-cygwin exit ;; p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin + echo powerpcle-${VENDOR}-cygwin exit ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo powerpcle-${VENDOR}-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-${VENDOR}-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + echo ${UNAME_MACHINE}-${VENDOR}-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; - aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -877,41 +876,32 @@ EOF EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; - esac + esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-gnueabi - else - echo ${UNAME_MACHINE}-unknown-linux-gnueabihf - fi + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnueabi fi exit ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu exit ;; cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu + echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu + echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo frv-${VENDOR}-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu @@ -922,16 +912,16 @@ EOF #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + echo "${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}" exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu exit ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu exit ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build @@ -950,54 +940,51 @@ EOF #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-gnu"; exit; } ;; or32:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo or32-${VENDOR}-linux-gnu exit ;; padre:Linux:*:*) - echo sparc-unknown-linux-gnu + echo sparc-${VENDOR}-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu + echo hppa64-${VENDOR}-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; + PA7*) echo hppa1.1-${VENDOR}-linux-gnu ;; + PA8*) echo hppa2.0-${VENDOR}-linux-gnu ;; + *) echo hppa-${VENDOR}-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu + echo powerpc64-${VENDOR}-linux-gnu exit ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu + echo powerpc-${VENDOR}-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo x86_64-${VENDOR}-linux-gnu exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. @@ -1006,11 +993,11 @@ EOF echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. + # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) @@ -1019,16 +1006,16 @@ EOF echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop + echo ${UNAME_MACHINE}-${VENDOR}-stop exit ;; i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos + echo ${UNAME_MACHINE}-${VENDOR}-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} + echo i386-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp @@ -1042,13 +1029,13 @@ EOF fi exit ;; i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. + # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + echo ${UNAME_MACHINE}-${VENDOR}-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then @@ -1070,13 +1057,13 @@ EOF exit ;; pc:*:*:*) # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp - exit ;; + exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; @@ -1087,7 +1074,7 @@ EOF if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + echo i860-${VENDOR}-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) @@ -1111,8 +1098,8 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ @@ -1124,19 +1111,19 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} + echo m68k-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} + echo sparc-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} + echo rs6000-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} + echo powerpc-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} @@ -1155,10 +1142,10 @@ EOF echo ns32k-sni-sysv fi exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm @@ -1184,11 +1171,11 @@ EOF exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + echo mips-nec-sysv${UNAME_RELEASE} else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-${VENDOR}-sysv${UNAME_RELEASE} fi - exit ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; @@ -1253,9 +1240,6 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; @@ -1280,13 +1264,13 @@ EOF else UNAME_MACHINE="$cputype" fi - echo ${UNAME_MACHINE}-unknown-plan9 + echo ${UNAME_MACHINE}-${VENDOR}-plan9 exit ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 + echo pdp10-${VENDOR}-tops10 exit ;; *:TENEX:*:*) - echo pdp10-unknown-tenex + echo pdp10-${VENDOR}-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 @@ -1295,19 +1279,19 @@ EOF echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 + echo pdp10-${VENDOR}-tops20 exit ;; *:ITS:*:*) - echo pdp10-unknown-its + echo pdp10-${VENDOR}-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} + echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + echo ${UNAME_MACHINE}-${VENDOR}-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` + UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; @@ -1325,9 +1309,6 @@ EOF i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; - x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1350,11 +1331,11 @@ main () #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 - "4" + "4" #else - "" + "" #endif - ); exit (0); + ); exit (0); #endif #endif diff --git a/config/config.sub b/config/config.sub index c894da4550..2a55a50751 100755 --- a/config/config.sub +++ b/config/config.sub @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. -timestamp='2012-02-10' +timestamp='2009-11-20' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -21,7 +21,9 @@ timestamp='2012-02-10' # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -73,9 +75,8 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -122,18 +123,13 @@ esac # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] @@ -160,8 +156,8 @@ case $os in os= basic_machine=$1 ;; - -bluegene*) - os=-cnk + -bluegene*) + os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= @@ -177,10 +173,10 @@ case $os in os=-chorusos basic_machine=$1 ;; - -chorusrdb) - os=-chorusrdb + -chorusrdb) + os=-chorusrdb basic_machine=$1 - ;; + ;; -hiux*) os=-hiuxwe2 ;; @@ -249,22 +245,17 @@ case $basic_machine in # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ - | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ - | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ - | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ @@ -290,39 +281,29 @@ case $basic_machine in | moxie \ | mt \ | msp430 \ - | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ - | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ - | rl78 | rx \ + | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | v850 | v850e \ | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; @@ -332,21 +313,6 @@ case $basic_machine in basic_machine=mt-unknown ;; - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none - ;; - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. @@ -361,25 +327,21 @@ case $basic_machine in # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ - | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ - | be32-* | be64-* \ | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ - | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ @@ -405,29 +367,25 @@ case $basic_machine in | mmix-* \ | mt-* \ | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ + | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ + | v850-* | v850e-* | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) @@ -452,7 +410,7 @@ case $basic_machine in basic_machine=a29k-amd os=-udi ;; - abacus) + abacus) basic_machine=abacus-unknown ;; adobe68k) @@ -522,20 +480,11 @@ case $basic_machine in basic_machine=powerpc-ibm os=-cnk ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; c90) basic_machine=c90-cray os=-unicos ;; - cegcc) + cegcc) basic_machine=arm-unknown os=-cegcc ;; @@ -567,7 +516,7 @@ case $basic_machine in basic_machine=craynv-cray os=-unicosmp ;; - cr16 | cr16-*) + cr16) basic_machine=cr16-unknown os=-elf ;; @@ -725,6 +674,7 @@ case $basic_machine in i370-ibm* | ibm*) basic_machine=i370-ibm ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 @@ -782,7 +732,7 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; - microblaze) + microblaze) basic_machine=microblaze-xilinx ;; mingw32) @@ -821,18 +771,10 @@ case $basic_machine in ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; - msys) - basic_machine=i386-pc - os=-msys - ;; mvs) basic_machine=i370-ibm os=-mvs ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; ncr3000) basic_machine=i486-ncr os=-sysv4 @@ -897,12 +839,6 @@ case $basic_machine in np1) basic_machine=np1-gould ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; nsr-tandem) basic_machine=nsr-tandem ;; @@ -985,10 +921,9 @@ case $basic_machine in ;; power) basic_machine=power-ibm ;; - ppc | ppcbe) basic_machine=powerpc-unknown + ppc) basic_machine=powerpc-unknown ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown @@ -1082,9 +1017,6 @@ case $basic_machine in basic_machine=i860-stratus os=-sysv4 ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; sun2) basic_machine=m68000-sun ;; @@ -1141,8 +1073,20 @@ case $basic_machine in basic_machine=t90-cray os=-unicos ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; tile*) - basic_machine=$basic_machine-unknown + basic_machine=tile-unknown os=-linux-gnu ;; tx39) @@ -1212,9 +1156,6 @@ case $basic_machine in xps | xps100) basic_machine=xps100-honeywell ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; ymp) basic_machine=ymp-cray os=-unicos @@ -1312,11 +1253,11 @@ esac if [ x"$os" != x"" ] then case $os in - # First match some system type aliases - # that might get confused with valid system types. + # First match some system type aliases + # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux + -auroraux) + os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` @@ -1352,9 +1293,8 @@ case $os in | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-uclibc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ @@ -1401,7 +1341,7 @@ case $os in -opened*) os=-openedition ;; - -os400*) + -os400*) os=-os400 ;; -wince*) @@ -1450,7 +1390,7 @@ case $os in -sinix*) os=-sysv4 ;; - -tpf*) + -tpf*) os=-tpf ;; -triton*) @@ -1495,8 +1435,6 @@ case $os in -dicos*) os=-dicos ;; - -nacl*) - ;; -none) ;; *) @@ -1519,10 +1457,10 @@ else # system, and we'll never get to this point. case $basic_machine in - score-*) + score-*) os=-elf ;; - spu-*) + spu-*) os=-elf ;; *-acorn) @@ -1534,17 +1472,8 @@ case $basic_machine in arm*-semi) os=-aout ;; - c4x-* | tic4x-*) - os=-coff - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff + c4x-* | tic4x-*) + os=-coff ;; # This must come before the *-dec entry. pdp10-*) @@ -1564,11 +1493,14 @@ case $basic_machine in ;; m68000-sun) os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 ;; m68*-cisco) os=-aout ;; - mep-*) + mep-*) os=-elf ;; mips*-cisco) @@ -1595,7 +1527,7 @@ case $basic_machine in *-ibm) os=-aix ;; - *-knuth) + *-knuth) os=-mmixware ;; *-wec) diff --git a/config/depcomp b/config/depcomp index debb6ffa3e..df8eea7e4c 100755 --- a/config/depcomp +++ b/config/depcomp @@ -1,9 +1,10 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2012-03-27.16; # UTC +scriptversion=2009-04-28.21; # UTC -# Copyright (C) 1999-2012 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free +# Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,7 +28,7 @@ scriptversion=2012-03-27.16; # UTC case $1 in '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) @@ -39,11 +40,11 @@ as side-effects. Environment variables: depmode Dependency tracking mode. - source Source file read by 'PROGRAMS ARGS'. - object Object file output by 'PROGRAMS ARGS'. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. - tmpdepfile Temporary file to use when outputting dependencies. + tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . @@ -56,12 +57,6 @@ EOF ;; esac -# A tabulation character. -tab=' ' -# A newline character. -nl=' -' - if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 @@ -95,24 +90,10 @@ if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' + cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp fi -if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 -fi - -if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. - gccflag=-qmakedep=gcc,-MF - depmode=gcc -fi - case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what @@ -167,21 +148,20 @@ gcc) ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the "deleted header file" problem. +## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. - tr ' ' "$nl" < "$tmpdepfile" | -## Some versions of gcc put a space before the ':'. On the theory + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as -## well. hp depmode also adds that space, but also prefixes the VPATH -## to the object. Take care to not repeat it in the output. +## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -213,15 +193,18 @@ sgi) # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like '#:fec' to the end of the + # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. - tr ' ' "$nl" < "$tmpdepfile" \ + tr ' ' ' +' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr "$nl" ' ' >> "$depfile" + tr ' +' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. - tr ' ' "$nl" < "$tmpdepfile" \ + tr ' ' ' +' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else @@ -233,17 +216,10 @@ sgi) rm -f "$tmpdepfile" ;; -xlc) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts '$object:' at the + # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` @@ -273,11 +249,12 @@ aix) test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependent.h'. + # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. + # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile @@ -288,26 +265,23 @@ aix) ;; icc) - # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. - # However on - # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h - # which is wrong. We want + # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\': + # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... - # tcc 0.9.26 (FIXME still under development at the moment of writing) - # will emit a similar output, but also prepend the continuation lines - # with horizontal tabulation characters. + "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : @@ -316,21 +290,15 @@ icc) exit $stat fi rm -f "$depfile" - # Each line is of the form 'foo.o: dependent.h', - # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ - < "$tmpdepfile" > "$depfile" - sed ' - s/[ '"$tab"'][ '"$tab"']*/ /g - s/^ *// - s/ *\\*$// - s/^[^:]*: *// - /^$/d - /:$/d - s/$/ :/ - ' < "$tmpdepfile" >> "$depfile" + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -366,7 +334,7 @@ hp2) done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add 'dependent.h:' lines. + # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// @@ -381,9 +349,9 @@ hp2) tru64) # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in 'foo.d' instead, so we check for that too. + # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= @@ -429,59 +397,14 @@ tru64) done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; -msvc7) - if test "$libtool" = yes; then - showIncludes=-Wc,-showIncludes - else - showIncludes=-showIncludes - fi - "$@" $showIncludes > "$tmpdepfile" - stat=$? - grep -v '^Note: including file: ' "$tmpdepfile" - if test "$stat" = 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The first sed program below extracts the file names and escapes - # backslashes for cygpath. The second sed program outputs the file - # name when reading, but also accumulates all include files in the - # hold buffer in order to output them again at the end. This only - # works with sed implementations that can handle large buffers. - sed < "$tmpdepfile" -n ' -/^Note: including file: *\(.*\)/ { - s//\1/ - s/\\/\\\\/g - p -}' | $cygpath_u | sort -u | sed -n ' -s/ /\\ /g -s/\(.*\)/'"$tab"'\1 \\/p -s/.\(.*\) \\/\1:/ -H -$ { - s/.*/'"$tab"'/ - G - p -}' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvc7msys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. @@ -499,7 +422,7 @@ dashmstdout) shift fi - # Remove '-o $object'. + # Remove `-o $object'. IFS=" " for arg do @@ -519,14 +442,15 @@ dashmstdout) done test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for ':' + # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: - # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | - sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" - tr ' ' "$nl" < "$tmpdepfile" | \ + tr ' ' ' +' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" @@ -579,10 +503,9 @@ makedepend) touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" - # makedepend may prepend the VPATH from the source file name to the object. - # No need to regex-escape $object, excess matching of '.' is harmless. - sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" @@ -602,7 +525,7 @@ cpp) shift fi - # Remove '-o $object'. + # Remove `-o $object'. IFS=" " for arg do @@ -671,8 +594,8 @@ msvisualcpp) sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" - echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; diff --git a/config/install-sh b/config/install-sh index 377bb8687f..6781b987bd 100755 --- a/config/install-sh +++ b/config/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2011-11-20.07; # UTC +scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,7 +35,7 @@ scriptversion=2011-11-20.07; # UTC # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent -# 'make' implicit rules from creating a file called install from it +# `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written @@ -156,10 +156,6 @@ while test $# -ne 0; do -s) stripcmd=$stripprog;; -t) dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac shift;; -T) no_target_directory=true;; @@ -190,10 +186,6 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac done fi @@ -202,17 +194,13 @@ if test $# -eq 0; then echo "$0: no input file specified." >&2 exit 1 fi - # It's OK to call 'install-sh -d' without argument. + # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 15 + trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. @@ -240,9 +228,9 @@ fi for src do - # Protect names problematic for 'test' and other utilities. + # Protect names starting with `-'. case $src in - -* | [=\(\)!]) src=./$src;; + -*) src=./$src;; esac if test -n "$dir_arg"; then @@ -264,7 +252,12 @@ do echo "$0: no destination specified." >&2 exit 1 fi + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. @@ -354,7 +347,7 @@ do if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. + # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in @@ -392,7 +385,7 @@ do case $dstdir in /*) prefix='/';; - [-=\(\)!]*) prefix='./';; + -*) prefix='./';; *) prefix='';; esac @@ -410,7 +403,7 @@ do for d do - test X"$d" = X && continue + test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then diff --git a/config/missing b/config/missing index 9a5564823d..28055d2ae6 100755 --- a/config/missing +++ b/config/missing @@ -1,9 +1,10 @@ #! /bin/sh # Common stub for a few missing GNU programs while installing. -scriptversion=2012-01-06.18; # UTC +scriptversion=2009-04-28.21; # UTC -# Copyright (C) 1996-2012 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -25,7 +26,7 @@ scriptversion=2012-01-06.18; # UTC # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then - echo 1>&2 "Try '$0 --help' for more information" + echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi @@ -33,7 +34,7 @@ run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' -# In the cases where this matters, 'missing' is being run in the +# In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac @@ -64,7 +65,7 @@ case $1 in echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... -Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: @@ -73,20 +74,21 @@ Options: --run try to run the given command, and emulate it if it fails Supported PROGRAM values: - aclocal touch file 'aclocal.m4' - autoconf touch file 'configure' - autoheader touch file 'config.h.in' + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one - automake touch all 'Makefile.in' files - bison create 'y.tab.[ch]', if possible, from existing .[ch] - flex create 'lex.yy.c', if possible, from existing .c + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file - lex create 'lex.yy.c', if possible, from existing .c + lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file - yacc create 'y.tab.[ch]', if possible, from existing .[ch] + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] -Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and -'g' are ignored when checking the name. +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. Send bug reports to ." exit $? @@ -98,8 +100,8 @@ Send bug reports to ." ;; -*) - echo 1>&2 "$0: Unknown '$1' option" - echo 1>&2 "Try '$0 --help' for more information" + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; @@ -120,13 +122,22 @@ case $1 in # Not GNU programs, they don't have --version. ;; + tar*) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone - # running '$TOOL --version' or '$TOOL --help' to check whether + # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi @@ -138,27 +149,27 @@ esac case $program in aclocal*) echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified 'acinclude.m4' or '${configure_ac}'. You might want - to install the Automake and Perl packages. Grab them from +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified '${configure_ac}'. You might want to install the - Autoconf and GNU m4 packages. Grab them from any GNU +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified 'acconfig.h' or '${configure_ac}'. You might want - to install the Autoconf and GNU m4 packages. Grab them +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" @@ -175,9 +186,9 @@ WARNING: '$1' is $msg. You should only need it if automake*) echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'. - You might want to install the Automake and Perl packages. +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | @@ -186,10 +197,10 @@ WARNING: '$1' is $msg. You should only need it if autom4te*) echo 1>&2 "\ -WARNING: '$1' is needed, but is $msg. +WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. - You can get '$1' as part of Autoconf from any GNU + You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` @@ -209,13 +220,13 @@ WARNING: '$1' is needed, but is $msg. bison*|yacc*) echo 1>&2 "\ -WARNING: '$1' $msg. You should only need it if - you modified a '.y' file. You may need the Bison package +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get - Bison from any GNU archive site." + \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then - eval LASTARG=\${$#} + eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` @@ -239,13 +250,13 @@ WARNING: '$1' $msg. You should only need it if lex*|flex*) echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified a '.l' file. You may need the Flex package +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get - Flex from any GNU archive site." + \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then - eval LASTARG=\${$#} + eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` @@ -262,10 +273,10 @@ WARNING: '$1' is $msg. You should only need it if help2man*) echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the - Help2man package in order for those modifications to take - effect. You can get Help2man from any GNU archive site." + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` @@ -280,12 +291,12 @@ WARNING: '$1' is $msg. You should only need it if makeinfo*) echo 1>&2 "\ -WARNING: '$1' is $msg. You should only need it if - you modified a '.texi' or '.texinfo' file, or any other file +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy 'make' (AIX, - DU, IRIX). You might want to install the Texinfo package or - the GNU make package. Grab either from any GNU archive site." + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` @@ -307,14 +318,49 @@ WARNING: '$1' is $msg. You should only need it if touch $file ;; + tar*) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case $firstarg in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case $firstarg in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + *) echo 1>&2 "\ -WARNING: '$1' is needed, and is $msg. +WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the - proper tools for further handling them. Check the 'README' file, + proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case - some other package would contain this missing '$1' program." + some other package would contain this missing \`$1' program." exit 1 ;; esac diff --git a/configure b/configure index c5ba7e9056..f19e55d92d 100755 --- a/configure +++ b/configure @@ -692,7 +692,6 @@ CXXCPP am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE -am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE @@ -708,8 +707,6 @@ CXXFLAGS CXX AM_BACKSLASH AM_DEFAULT_VERBOSITY -AM_DEFAULT_V -AM_V am__untar am__tar AMTAR @@ -1490,12 +1487,10 @@ Optional Features: --enable-install-dbdir install an empty database directory --enable-relative all path are relative to the binary (yes/no/devel [default]) - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build + --enable-silent-rules less verbose build output (undo: `make V=1') + --disable-silent-rules verbose build output (undo: `make V=0') + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors --enable-error-on-warning treat warnings as errors (default: no) --enable-eff-cpp use -Weffc++ (default: no) @@ -2781,7 +2776,7 @@ fi -am__api_version='1.12' +am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -2878,6 +2873,9 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -2888,40 +2886,32 @@ case `pwd` in esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; + as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac -# Do 'set' in a subshell so we don't clobber the current shell's +# Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 + fi - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken - alias in your environment" "$LINENO" 5 - fi - if test "$2" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done test "$2" = conftest.file ) then @@ -2933,16 +2923,6 @@ Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi - -rm -f conftest.file - test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. @@ -2969,8 +2949,8 @@ if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then @@ -2982,10 +2962,10 @@ if test x"${install_sh}" != xset; then esac fi -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. +# will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. @@ -3264,11 +3244,11 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' +# Always define AMTAR for backward compatibility. -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' @@ -3279,38 +3259,11 @@ if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=0;; +case $enable_silent_rules in +yes) AM_DEFAULT_VERBOSITY=0;; +no) AM_DEFAULT_VERBOSITY=1;; +*) AM_DEFAULT_VERBOSITY=0;; esac -am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi AM_BACKSLASH='\' @@ -3365,7 +3318,7 @@ am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. +# Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -3398,7 +3351,6 @@ fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' - am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= @@ -3927,9 +3879,8 @@ else # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -3963,16 +3914,16 @@ else : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with '-c' and '-o' for the sake of the "dashmstdout" + # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -3981,16 +3932,16 @@ else test "$am__universal" = false || continue ;; nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -4536,9 +4487,8 @@ else # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -4572,16 +4522,16 @@ else : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with '-c' and '-o' for the sake of the "dashmstdout" + # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -4590,16 +4540,16 @@ else test "$am__universal" = false || continue ;; nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -4921,9 +4871,8 @@ else # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -4957,16 +4906,16 @@ else : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with '-c' and '-o' for the sake of the "dashmstdout" + # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -4975,16 +4924,16 @@ else test "$am__universal" = false || continue ;; nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -9658,14 +9607,6 @@ if test -z "${ENABLE_DARWIN_TRUE}" && test -z "${ENABLE_DARWIN_FALSE}"; then as_fn_error $? "conditional \"ENABLE_DARWIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -10981,7 +10922,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but + # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -11015,19 +10956,21 @@ $as_echo X"$mf" | continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. + # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || From 3589e9e3bb97cb906a411f7a31260bd02236bd86 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sun, 6 May 2012 00:29:22 +0200 Subject: [PATCH 05/29] release version 0.4.1 --- VERSION | 2 +- configure | 20 ++++++++++---------- configure.ac | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/VERSION b/VERSION index 1d0ba9ea18..267577d47e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.4.0 +0.4.1 diff --git a/configure b/configure index f19e55d92d..636b854185 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for triAGENS AvocadoDB 0.4.0. +# Generated by GNU Autoconf 2.68 for triAGENS AvocadoDB 0.4.1. # # Report bugs to . # @@ -560,8 +560,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='triAGENS AvocadoDB' PACKAGE_TARNAME='avocado' -PACKAGE_VERSION='0.4.0' -PACKAGE_STRING='triAGENS AvocadoDB 0.4.0' +PACKAGE_VERSION='0.4.1' +PACKAGE_STRING='triAGENS AvocadoDB 0.4.1' PACKAGE_BUGREPORT='info@triagens.de' PACKAGE_URL='http://www.avocadodb.org' @@ -1398,7 +1398,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures triAGENS AvocadoDB 0.4.0 to adapt to many kinds of systems. +\`configure' configures triAGENS AvocadoDB 0.4.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1469,7 +1469,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of triAGENS AvocadoDB 0.4.0:";; + short | recursive ) echo "Configuration of triAGENS AvocadoDB 0.4.1:";; esac cat <<\_ACEOF @@ -1622,7 +1622,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -triAGENS AvocadoDB configure 0.4.0 +triAGENS AvocadoDB configure 0.4.1 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2087,7 +2087,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by triAGENS AvocadoDB $as_me 0.4.0, which was +It was created by triAGENS AvocadoDB $as_me 0.4.1, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3214,7 +3214,7 @@ fi # Define the identity of the package. PACKAGE='avocado' - VERSION='0.4.0' + VERSION='0.4.1' cat >>confdefs.h <<_ACEOF @@ -10112,7 +10112,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by triAGENS AvocadoDB $as_me 0.4.0, which was +This file was extended by triAGENS AvocadoDB $as_me 0.4.1, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -10179,7 +10179,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -triAGENS AvocadoDB config.status 0.4.0 +triAGENS AvocadoDB config.status 0.4.1 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 06e29f822a..3175b03056 100644 --- a/configure.ac +++ b/configure.ac @@ -6,7 +6,7 @@ dnl ============================================================================ dnl PREAMBLE triAGENS GmbH Build Environment dnl ============================================================================ -AC_INIT([triAGENS AvocadoDB], [0.4.0], [info@triagens.de], [avocado], [http://www.avocadodb.org]) +AC_INIT([triAGENS AvocadoDB], [0.4.1], [info@triagens.de], [avocado], [http://www.avocadodb.org]) dnl ---------------------------------------------------------------------------- dnl auxillary directory for install-sh and missing From 5ba64bafe1347a667c8cbc8a0ba6f971ec681ffd Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 12 May 2012 21:35:56 +0200 Subject: [PATCH 06/29] added test --- Makefile.in | 3 +- Makefile.unittests | 3 +- js/common/tests/shell-unique-constraint.js | 226 +++++++++++++++++++++ 3 files changed, 230 insertions(+), 2 deletions(-) create mode 100644 js/common/tests/shell-unique-constraint.js diff --git a/Makefile.in b/Makefile.in index a9095929a7..6a9990123c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1031,7 +1031,8 @@ SHELL_COMMON = @srcdir@/js/common/tests/shell-document.js \ @srcdir@/js/common/tests/shell-simple-query.js \ @srcdir@/js/common/tests/shell-index.js \ @srcdir@/js/common/tests/shell-index-geo.js \ - @srcdir@/js/common/tests/shell-cap-constraint.js + @srcdir@/js/common/tests/shell-cap-constraint.js \ + @srcdir@/js/common/tests/shell-unique-constraint.js SHELL_SERVER = $(SHELL_COMMON) UNITTESTS_SERVER = $(addprefix --unit-tests ,$(SHELL_SERVER)) diff --git a/Makefile.unittests b/Makefile.unittests index 9f3199bca2..de66d3a10c 100644 --- a/Makefile.unittests +++ b/Makefile.unittests @@ -146,7 +146,8 @@ SHELL_COMMON = @srcdir@/js/common/tests/shell-document.js \ @srcdir@/js/common/tests/shell-simple-query.js \ @srcdir@/js/common/tests/shell-index.js \ @srcdir@/js/common/tests/shell-index-geo.js \ - @srcdir@/js/common/tests/shell-cap-constraint.js + @srcdir@/js/common/tests/shell-cap-constraint.js \ + @srcdir@/js/common/tests/shell-unique-constraint.js SHELL_SERVER = $(SHELL_COMMON) diff --git a/js/common/tests/shell-unique-constraint.js b/js/common/tests/shell-unique-constraint.js new file mode 100644 index 0000000000..633e58b01a --- /dev/null +++ b/js/common/tests/shell-unique-constraint.js @@ -0,0 +1,226 @@ +/*jslint indent: 2, + nomen: true, + maxlen: 80 */ +/*global require, + db, + assertEqual, assertTrue, + print, + PRINT_OBJECT, + console, + ArangoCollection, ArangoEdgesCollection */ + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test the unique constraint +/// +/// @file +/// +/// DISCLAIMER +/// +/// Copyright 2010-2012 triagens GmbH, Cologne, Germany +/// +/// Licensed 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. +/// +/// Copyright holder is triAGENS GmbH, Cologne, Germany +/// +/// @author Dr. Frank Celler, Lucas Dohmen +/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany +//////////////////////////////////////////////////////////////////////////////// + +var jsunity = require("jsunity"); + +// ----------------------------------------------------------------------------- +// --SECTION-- basic methods +// ----------------------------------------------------------------------------- + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test suite: Creation +//////////////////////////////////////////////////////////////////////////////// + +function UniqueConstraintSuite() { + var ERRORS = internal.errors; + var cn = "UnitTestsCollectionHash"; + var collection = null; + + return { + +//////////////////////////////////////////////////////////////////////////////// +/// @brief set up +//////////////////////////////////////////////////////////////////////////////// + + setUp : function () { + internal.db._drop(cn); + collection = internal.db._create(cn, { waitForSync : false }); + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @brief tear down +//////////////////////////////////////////////////////////////////////////////// + + tearDown : function () { + collection.drop(); + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test: unique constraint creation +//////////////////////////////////////////////////////////////////////////////// + + testCreationUniqueConstraint : function () { + var idx = collection.ensureUniqueConstraint("a"); + var id = idx.id; + + print(idx); + + assertNotEqual(0, id); + assertEqual("hash", idx.type); + assertEqual(true, idx.unique); + assertEqual(["a"], idx.fields); + assertEqual(true, idx.isNewlyCreated); + + idx = collection.ensureUniqueConstraint("a"); + + assertEqual(id, idx.id); + assertEqual("hash", idx.type); + assertEqual(true, idx.unique); + assertEqual(["a"], idx.fields); + assertEqual(false, idx.isNewlyCreated); + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test: index creation error handling +//////////////////////////////////////////////////////////////////////////////// + + testCreationPermutedUniqueConstraint : function () { + var idx = collection.ensureUniqueConstraint("a", "b"); + var id = idx.id; + + assertNotEqual(0, id); + assertEqual("hash", idx.type); + assertEqual(true, idx.unique); + assertEqual(["a","b"].sort(), idx.fields.sort()); + assertEqual(true, idx.isNewlyCreated); + + idx = collection.ensureUniqueConstraint("b", "a"); + + assertEqual(id, idx.id); + assertEqual("hash", idx.type); + assertEqual(true, idx.unique); + assertEqual(["a","b"].sort(), idx.fields.sort()); + assertEqual(false, idx.isNewlyCreated); + + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test: documents +//////////////////////////////////////////////////////////////////////////////// + + testUniqueDocuments : function () { + var idx = collection.ensureUniqueConstraint("a", "b"); + + assertEqual("hash", idx.type); + assertEqual(true, idx.unique); + assertEqual(["a","b"].sort(), idx.fields.sort()); + assertEqual(true, idx.isNewlyCreated); + + collection.save({ a : 1, b : 1 }); + + try { + collection.save({ a : 1, b : 1 }); + fail(); + } + catch (err) { + assertEqual(ERRORS.ERROR_ARANGO_UNIQUE_CONSTRAINT_VIOLATED.code, err.errorNum); + } + + collection.save({ a : 1 }); + collection.save({ a : 1 }); + collection.save({ a : null, b : 1 }); + collection.save({ a : null, b : 1 }); + collection.save({ c : 1 }); + collection.save({ c : 1 }); + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test: documents +//////////////////////////////////////////////////////////////////////////////// + + testReadDocuments : function () { + var idx = collection.ensureUniqueConstraint("a", "b"); + var fun = function(d) { return d._id; }; + + assertEqual("hash", idx.type); + assertEqual(true, idx.unique); + assertEqual(["a","b"].sort(), idx.fields.sort()); + assertEqual(true, idx.isNewlyCreated); + + var d1 = collection.save({ a : 1, b : 1 })._id; + var d2 = collection.save({ a : 2, b : 1 })._id; + var d3 = collection.save({ a : 3, b : 1 })._id; + var d4 = collection.save({ a : 4, b : 1 })._id; + var d5 = collection.save({ a : 4, b : 2 })._id; + + collection.save({ a : 1 }); + collection.save({ a : 1 }); + collection.save({ a : null, b : 1 }); + collection.save({ a : null, b : 1 }); + collection.save({ c : 1 }); + collection.save({ c : 1 }); + + var s = collection.BY_EXAMPLE_HASH(idx.id, { a : 1, b : 1 }); + + assertEqual(1, s.total); + assertEqual(1, s.count); + assertEqual([d1], s.documents.map(fun)); + + s = collection.BY_EXAMPLE_HASH(idx.id, { a : 1, b : null }); + + assertEqual(0, s.total); + assertEqual(0, s.count); + assertEqual([], s.documents.map(fun)); + + s = collection.BY_EXAMPLE_HASH(idx.id, { a : 1 }); + + assertEqual(0, s.total); + assertEqual(0, s.count); + assertEqual([], s.documents.map(fun)); + + s = collection.BY_EXAMPLE_HASH(idx.id, { a : null }); + + assertEqual(0, s.total); + assertEqual(0, s.count); + assertEqual([], s.documents.map(fun)); + + s = collection.BY_EXAMPLE_HASH(idx.id, { c : 1 }); + + assertEqual(0, s.total); + assertEqual(0, s.count); + assertEqual([], s.documents.map(fun)); + } + }; +} + +// ----------------------------------------------------------------------------- +// --SECTION-- main +// ----------------------------------------------------------------------------- + +//////////////////////////////////////////////////////////////////////////////// +/// @brief executes the test suites +//////////////////////////////////////////////////////////////////////////////// + +jsunity.run(UniqueConstraintSuite); + +return jsunity.done(); + +// Local Variables: +// mode: outline-minor +// outline-regexp: "^\\(/// @brief\\|/// @addtogroup\\|// --SECTION--\\|/// @page\\|/// @}\\)" +// End: From 264e12daffeb68afefff22fcff77c8d170e941fa Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 12 May 2012 22:08:50 +0200 Subject: [PATCH 07/29] more renames --- MRClient/arangoirb.cpp | 4 ++-- RestServer/ArangoServer.cpp | 2 +- V8Client/arangosh.cpp | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/MRClient/arangoirb.cpp b/MRClient/arangoirb.cpp index ebdeb736ef..1d9201c60b 100644 --- a/MRClient/arangoirb.cpp +++ b/MRClient/arangoirb.cpp @@ -344,7 +344,7 @@ static void RunShell (mrb_state* mrb) { console->open(! NoAutoComplete); while (true) { - char* input = console->prompt("avocirb> "); + char* input = console->prompt("arangoirb> "); if (input == 0) { break; @@ -436,7 +436,7 @@ int main (int argc, char* argv[]) { } printf("\n"); - printf("Welcome to avocirb %s. Copyright (c) 2012 triAGENS GmbH.\n", TRIAGENS_VERSION); + printf("Welcome to arangoirb %s. Copyright (c) 2012 triAGENS GmbH.\n", TRIAGENS_VERSION); #ifdef TRI_V8_VERSION printf("Using MRUBY %s engine. Copyright (c) 2012 mruby developers.\n", TRI_MRUBY_VERSION); diff --git a/RestServer/ArangoServer.cpp b/RestServer/ArangoServer.cpp index 0e190691f4..b774a36be7 100644 --- a/RestServer/ArangoServer.cpp +++ b/RestServer/ArangoServer.cpp @@ -858,7 +858,7 @@ int ArangoServer::executeShell (bool tests) { while(! v8::V8::IdleNotification()) { } - char* input = console->prompt("arango> "); + char* input = console->prompt("arangod> "); if (input == 0) { printf("\nBye Bye! Auf Wiedersehen! さようなら\n"); diff --git a/V8Client/arangosh.cpp b/V8Client/arangosh.cpp index 5f702acd60..d2019a42c0 100644 --- a/V8Client/arangosh.cpp +++ b/V8Client/arangosh.cpp @@ -928,7 +928,7 @@ static void RunShell (v8::Handle context) { v8::Context::Scope contextScope(context); v8::Local name(v8::String::New("(shell)")); - V8LineEditor* console = new V8LineEditor(context, ".avocsh"); + V8LineEditor* console = new V8LineEditor(context, ".arangosh"); console->open(!noAutoComplete); @@ -936,7 +936,7 @@ static void RunShell (v8::Handle context) { while (! v8::V8::IdleNotification()) { } - char* input = console->prompt("avocsh> "); + char* input = console->prompt("arangosh> "); if (input == 0) { break; @@ -999,7 +999,7 @@ static bool RunUnitTests (v8::Handle context) { // run tests char const* input = "require(\"jsunity\").runCommandLineTests();"; - v8::Local name(v8::String::New("(avocsh)")); + v8::Local name(v8::String::New("(arangosh)")); TRI_ExecuteStringVocBase(context, v8::String::New(input), name, true); if (tryCatch.HasCaught()) { @@ -1247,7 +1247,7 @@ int main (int argc, char* argv[]) { } printf("\n"); - printf("Welcome to avocsh %s. Copyright (c) 2012 triAGENS GmbH.\n", TRIAGENS_VERSION); + printf("Welcome to arangosh %s. Copyright (c) 2012 triAGENS GmbH.\n", TRIAGENS_VERSION); #ifdef TRI_V8_VERSION printf("Using Google V8 %s JavaScript engine.\n", TRI_V8_VERSION); From 675c5d04763d29e56b332d3cd2e9054fb9f72cca Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 12 May 2012 22:09:00 +0200 Subject: [PATCH 08/29] unique constraint --- js/actions/system/api-simple.js | 57 ++++++++++++++++++++-- js/client/client.js | 50 +++++++++++++++++++ js/common/tests/shell-unique-constraint.js | 2 - 3 files changed, 103 insertions(+), 6 deletions(-) diff --git a/js/actions/system/api-simple.js b/js/actions/system/api-simple.js index 066cdf3f3d..fcbf187be1 100644 --- a/js/actions/system/api-simple.js +++ b/js/actions/system/api-simple.js @@ -173,7 +173,7 @@ actions.defineHttp({ } if (req.requestType != actions.PUT) { - actions.unsupported(req, res); + actions.resultUnsupported(req, res); } else { var limit = body.limit; @@ -290,7 +290,7 @@ actions.defineHttp({ } if (req.requestType != actions.PUT) { - actions.unsupported(req, res); + actions.resultUnsupported(req, res); } else { var limit = body.limit; @@ -396,7 +396,7 @@ actions.defineHttp({ } if (req.requestType != actions.PUT) { - actions.unsupported(req, res); + actions.resultUnsupported(req, res); } else { var limit = body.limit; @@ -482,7 +482,7 @@ actions.defineHttp({ } if (req.requestType != actions.PUT) { - actions.unsupported(req, res); + actions.resultUnsupported(req, res); } else { var example = body.example; @@ -511,6 +511,55 @@ actions.defineHttp({ } }); +//////////////////////////////////////////////////////////////////////////////// +/// @brief returns all documents of a collection matching a given example +//////////////////////////////////////////////////////////////////////////////// + +actions.defineHttp({ + url : API + "BY-EXAMPLE-HASH", + context : "api", + + callback : function (req, res) { + var body = actions.getJsonBody(req, res); + + if (body === undefined) { + return; + } + + if (req.requestType != actions.PUT) { + actions.resultUnsupported(req, res); + } + else { + var limit = body.limit; + var skip = body.skip; + var name = body.collection; + var example = body.example; + var index = body.index; + + var name = body.collection; + var id = parseInt(name) || name; + var collection = internal.db._collection(id); + + if (collection == null) { + actions.collectionNotFound(req, res, name); + } + else if (typeof example !== "object") { + actions.badParameter(req, res, "example"); + } + else { + try { + var result = collection.BY_EXAMPLE_HASH(index, example, skip, limit); + + actions.resultOk(req, res, actions.HTTP_OK, result); + } + catch (err) { + actions.resultException(req, res, err); + } + } + } + } +}); + //////////////////////////////////////////////////////////////////////////////// /// @} //////////////////////////////////////////////////////////////////////////////// diff --git a/js/client/client.js b/js/client/client.js index 3f01587e84..dc605f6b14 100644 --- a/js/client/client.js +++ b/js/client/client.js @@ -1233,6 +1233,56 @@ ArangoCollection.prototype.ensureCapConstraint = function (size) { return requestResult; } +//////////////////////////////////////////////////////////////////////////////// +/// @brief adds a unique constraint +//////////////////////////////////////////////////////////////////////////////// + +ArangoCollection.prototype.ensureUniqueConstraint = function () { + var body; + var fields = []; + + for (var i = 0; i < arguments.length; ++i) { + fields.push(arguments[i]); + } + + body = { type : "hash", unique : true, fields : fields }; + + var requestResult = this._database._connection.POST("/_api/index?collection=" + encodeURIComponent(this._id), JSON.stringify(body)); + + TRI_CheckRequestResult(requestResult); + + return requestResult; +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief queries by example +//////////////////////////////////////////////////////////////////////////////// + +ArangoCollection.prototype.BY_EXAMPLE_HASH = function (index, example, skip, limit) { + var body; + + limit = limit || null; + skip = skip || null; + + if (index.hasOwnProperty("id")) { + index = index.id; + } + + body = { collection : this._id, index : index, skip : skip, limit : limit, example : {} }; + + for (var key in example) { + if (example.hasOwnProperty(key)) { + body.example[key] = example[key]; + } + } + + var requestResult = this._database._connection.PUT("/_api/simple/BY-EXAMPLE-HASH", JSON.stringify(body)); + + TRI_CheckRequestResult(requestResult); + + return requestResult; +} + //////////////////////////////////////////////////////////////////////////////// /// @brief adds an geo index //////////////////////////////////////////////////////////////////////////////// diff --git a/js/common/tests/shell-unique-constraint.js b/js/common/tests/shell-unique-constraint.js index 633e58b01a..8e3cd84408 100644 --- a/js/common/tests/shell-unique-constraint.js +++ b/js/common/tests/shell-unique-constraint.js @@ -78,8 +78,6 @@ function UniqueConstraintSuite() { var idx = collection.ensureUniqueConstraint("a"); var id = idx.id; - print(idx); - assertNotEqual(0, id); assertEqual("hash", idx.type); assertEqual(true, idx.unique); From 615661c0a6f17cf5aa3cc81f15cefdd564eb491b Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 12 May 2012 22:17:28 +0200 Subject: [PATCH 09/29] added hash index test --- Makefile.unittests | 3 +- js/common/tests/shell-hash-index.js | 224 ++++++++++++++++++++++++++++ 2 files changed, 226 insertions(+), 1 deletion(-) create mode 100644 js/common/tests/shell-hash-index.js diff --git a/Makefile.unittests b/Makefile.unittests index de66d3a10c..408cb605e9 100644 --- a/Makefile.unittests +++ b/Makefile.unittests @@ -147,7 +147,8 @@ SHELL_COMMON = @srcdir@/js/common/tests/shell-document.js \ @srcdir@/js/common/tests/shell-index.js \ @srcdir@/js/common/tests/shell-index-geo.js \ @srcdir@/js/common/tests/shell-cap-constraint.js \ - @srcdir@/js/common/tests/shell-unique-constraint.js + @srcdir@/js/common/tests/shell-unique-constraint.js \ + @srcdir@/js/common/tests/shell-hash-index.js SHELL_SERVER = $(SHELL_COMMON) diff --git a/js/common/tests/shell-hash-index.js b/js/common/tests/shell-hash-index.js new file mode 100644 index 0000000000..82a2414efd --- /dev/null +++ b/js/common/tests/shell-hash-index.js @@ -0,0 +1,224 @@ +/*jslint indent: 2, + nomen: true, + maxlen: 80 */ +/*global require, + db, + assertEqual, assertTrue, + print, + PRINT_OBJECT, + console, + ArangoCollection, ArangoEdgesCollection */ + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test the unique constraint +/// +/// @file +/// +/// DISCLAIMER +/// +/// Copyright 2010-2012 triagens GmbH, Cologne, Germany +/// +/// Licensed 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. +/// +/// Copyright holder is triAGENS GmbH, Cologne, Germany +/// +/// @author Dr. Frank Celler, Lucas Dohmen +/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany +//////////////////////////////////////////////////////////////////////////////// + +var jsunity = require("jsunity"); + +// ----------------------------------------------------------------------------- +// --SECTION-- basic methods +// ----------------------------------------------------------------------------- + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test suite: Creation +//////////////////////////////////////////////////////////////////////////////// + +function HashIndexSuite() { + var ERRORS = internal.errors; + var cn = "UnitTestsCollectionHash"; + var collection = null; + + return { + +//////////////////////////////////////////////////////////////////////////////// +/// @brief set up +//////////////////////////////////////////////////////////////////////////////// + + setUp : function () { + internal.db._drop(cn); + collection = internal.db._create(cn, { waitForSync : false }); + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @brief tear down +//////////////////////////////////////////////////////////////////////////////// + + tearDown : function () { + collection.drop(); + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test: hash index creation +//////////////////////////////////////////////////////////////////////////////// + + testCreationUniqueConstraint : function () { + var idx = collection.ensureHashIndex("a"); + var id = idx.id; + + assertNotEqual(0, id); + assertEqual("hash", idx.type); + assertEqual(false, idx.unique); + assertEqual(["a"], idx.fields); + assertEqual(true, idx.isNewlyCreated); + + idx = collection.ensureHashIndex("a"); + + assertEqual(id, idx.id); + assertEqual("hash", idx.type); + assertEqual(false, idx.unique); + assertEqual(["a"], idx.fields); + assertEqual(false, idx.isNewlyCreated); + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test: index creation error handling +//////////////////////////////////////////////////////////////////////////////// + + testCreationPermutedUniqueConstraint : function () { + var idx = collection.ensureHashIndex("a", "b"); + var id = idx.id; + + assertNotEqual(0, id); + assertEqual("hash", idx.type); + assertEqual(false, idx.unique); + assertEqual(["a","b"].sort(), idx.fields.sort()); + assertEqual(true, idx.isNewlyCreated); + + idx = collection.ensureHashIndex("b", "a"); + + assertEqual(id, idx.id); + assertEqual("hash", idx.type); + assertEqual(false, idx.unique); + assertEqual(["a","b"].sort(), idx.fields.sort()); + assertEqual(false, idx.isNewlyCreated); + + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test: documents +//////////////////////////////////////////////////////////////////////////////// + + testUniqueDocuments : function () { + var idx = collection.ensureHashIndex("a", "b"); + + assertEqual("hash", idx.type); + assertEqual(false, idx.unique); + assertEqual(["a","b"].sort(), idx.fields.sort()); + assertEqual(true, idx.isNewlyCreated); + + collection.save({ a : 1, b : 1 }); + collection.save({ a : 1, b : 1 }); + + collection.save({ a : 1 }); + collection.save({ a : 1 }); + collection.save({ a : null, b : 1 }); + collection.save({ a : null, b : 1 }); + collection.save({ c : 1 }); + collection.save({ c : 1 }); + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test: documents +//////////////////////////////////////////////////////////////////////////////// + + testReadDocuments : function () { + var idx = collection.ensureHashIndex("a", "b"); + var fun = function(d) { return d._id; }; + + assertEqual("hash", idx.type); + assertEqual(false, idx.unique); + assertEqual(["a","b"].sort(), idx.fields.sort()); + assertEqual(true, idx.isNewlyCreated); + + var d1 = collection.save({ a : 1, b : 1 })._id; + var d2 = collection.save({ a : 2, b : 1 })._id; + var d3 = collection.save({ a : 3, b : 1 })._id; + var d4 = collection.save({ a : 4, b : 1 })._id; + var d5 = collection.save({ a : 4, b : 2 })._id; + var d6 = collection.save({ a : 1, b : 1 })._id; + + var d7 = collection.save({ a : 1 })._id; + var d8 = collection.save({ a : 1 })._id; + var d9 = collection.save({ a : null, b : 1 })._id; + var d10 = collection.save({ a : null, b : 1 })._id; + var d11 = collection.save({ c : 1 })._id; + var d12 = collection.save({ c : 1 })._id; + + var s = collection.BY_EXAMPLE_HASH(idx.id, { a : 2, b : 1 }); + + assertEqual(1, s.total); + assertEqual(1, s.count); + assertEqual([d2], s.documents.map(fun)); + + s = collection.BY_EXAMPLE_HASH(idx.id, { a : 1, b : 1 }); + + assertEqual(2, s.total); + assertEqual(2, s.count); + assertEqual([d1,d6], s.documents.map(fun)); + + s = collection.BY_EXAMPLE_HASH(idx.id, { a : 1, b : null }); + + assertEqual(2, s.total); + assertEqual(2, s.count); + assertEqual([d7,d8], s.documents.map(fun)); + + s = collection.BY_EXAMPLE_HASH(idx.id, { a : 1 }); + + assertEqual(2, s.total); + assertEqual(2, s.count); + assertEqual([d7,d8], s.documents.map(fun)); + + s = collection.BY_EXAMPLE_HASH(idx.id, { a : null }); + + assertEqual(2, s.total); + assertEqual(2, s.count); + assertEqual([d11,d12], s.documents.map(fun)); + + s = collection.BY_EXAMPLE_HASH(idx.id, { c : 1 }); + + assertEqual(2, s.total); + assertEqual(2, s.count); + assertEqual([d11,d12], s.documents.map(fun)); + } + }; +} + +// ----------------------------------------------------------------------------- +// --SECTION-- main +// ----------------------------------------------------------------------------- + +//////////////////////////////////////////////////////////////////////////////// +/// @brief executes the test suites +//////////////////////////////////////////////////////////////////////////////// + +jsunity.run(HashIndexSuite); + +return jsunity.done(); + +// Local Variables: +// mode: outline-minor +// outline-regexp: "^\\(/// @brief\\|/// @addtogroup\\|// --SECTION--\\|/// @page\\|/// @}\\)" +// End: From bce89098d8925286c6415322adfcd6d19e1824fe Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 12 May 2012 22:18:25 +0200 Subject: [PATCH 10/29] added hash index --- js/client/client.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/js/client/client.js b/js/client/client.js index dc605f6b14..a602c4be2a 100644 --- a/js/client/client.js +++ b/js/client/client.js @@ -1254,6 +1254,27 @@ ArangoCollection.prototype.ensureUniqueConstraint = function () { return requestResult; } +//////////////////////////////////////////////////////////////////////////////// +/// @brief adds a hash index +//////////////////////////////////////////////////////////////////////////////// + +ArangoCollection.prototype.ensureHashIndex = function () { + var body; + var fields = []; + + for (var i = 0; i < arguments.length; ++i) { + fields.push(arguments[i]); + } + + body = { type : "hash", unique : false, fields : fields }; + + var requestResult = this._database._connection.POST("/_api/index?collection=" + encodeURIComponent(this._id), JSON.stringify(body)); + + TRI_CheckRequestResult(requestResult); + + return requestResult; +} + //////////////////////////////////////////////////////////////////////////////// /// @brief queries by example //////////////////////////////////////////////////////////////////////////////// From 2e15b194cc77b58e8ac81b489bfdfa5ccbe70713 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 12 May 2012 22:28:12 +0200 Subject: [PATCH 11/29] no mruby by default --- m4/all-in-one.mruby | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/m4/all-in-one.mruby b/m4/all-in-one.mruby index 86ee5a5b6f..2641d836e4 100644 --- a/m4/all-in-one.mruby +++ b/m4/all-in-one.mruby @@ -7,7 +7,7 @@ dnl ---------------------------------------------------------------------------- AC_ARG_ENABLE(mruby, AS_HELP_STRING([--enable-mruby], [enable MRUBY]), [tr_MRUBY="${enableval:-yes}"], - [tr_MRUBY=yes] + [tr_MRUBY=no] ) if test "x$tr_MRUBY" = "xyes"; then From b13080432920c3d0b45619ef6e8d01ecef6d83b5 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 12 May 2012 22:29:07 +0200 Subject: [PATCH 12/29] no mruby by default --- Makefile.in | 3 +- configure | 2 +- js/client/js-client.h | 71 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 2 deletions(-) diff --git a/Makefile.in b/Makefile.in index 6a9990123c..652fb8f886 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1032,7 +1032,8 @@ SHELL_COMMON = @srcdir@/js/common/tests/shell-document.js \ @srcdir@/js/common/tests/shell-index.js \ @srcdir@/js/common/tests/shell-index-geo.js \ @srcdir@/js/common/tests/shell-cap-constraint.js \ - @srcdir@/js/common/tests/shell-unique-constraint.js + @srcdir@/js/common/tests/shell-unique-constraint.js \ + @srcdir@/js/common/tests/shell-hash-index.js SHELL_SERVER = $(SHELL_COMMON) UNITTESTS_SERVER = $(addprefix --unit-tests ,$(SHELL_SERVER)) diff --git a/configure b/configure index 784c39a8c2..78149f9f8f 100755 --- a/configure +++ b/configure @@ -9037,7 +9037,7 @@ fi if test "${enable_mruby+set}" = set; then : enableval=$enable_mruby; tr_MRUBY="${enableval:-yes}" else - tr_MRUBY=yes + tr_MRUBY=no fi diff --git a/js/client/js-client.h b/js/client/js-client.h index b82eb7be7e..fd6369af9c 100644 --- a/js/client/js-client.h +++ b/js/client/js-client.h @@ -1235,6 +1235,77 @@ static string JS_client_client = "}\n" "\n" "////////////////////////////////////////////////////////////////////////////////\n" + "/// @brief adds a unique constraint\n" + "////////////////////////////////////////////////////////////////////////////////\n" + "\n" + "ArangoCollection.prototype.ensureUniqueConstraint = function () {\n" + " var body;\n" + " var fields = [];\n" + " \n" + " for (var i = 0; i < arguments.length; ++i) {\n" + " fields.push(arguments[i]);\n" + " }\n" + "\n" + " body = { type : \"hash\", unique : true, fields : fields };\n" + "\n" + " var requestResult = this._database._connection.POST(\"/_api/index?collection=\" + encodeURIComponent(this._id), JSON.stringify(body));\n" + "\n" + " TRI_CheckRequestResult(requestResult);\n" + "\n" + " return requestResult;\n" + "}\n" + "\n" + "////////////////////////////////////////////////////////////////////////////////\n" + "/// @brief adds a hash index\n" + "////////////////////////////////////////////////////////////////////////////////\n" + "\n" + "ArangoCollection.prototype.ensureHashIndex = function () {\n" + " var body;\n" + " var fields = [];\n" + " \n" + " for (var i = 0; i < arguments.length; ++i) {\n" + " fields.push(arguments[i]);\n" + " }\n" + "\n" + " body = { type : \"hash\", unique : false, fields : fields };\n" + "\n" + " var requestResult = this._database._connection.POST(\"/_api/index?collection=\" + encodeURIComponent(this._id), JSON.stringify(body));\n" + "\n" + " TRI_CheckRequestResult(requestResult);\n" + "\n" + " return requestResult;\n" + "}\n" + "\n" + "////////////////////////////////////////////////////////////////////////////////\n" + "/// @brief queries by example\n" + "////////////////////////////////////////////////////////////////////////////////\n" + "\n" + "ArangoCollection.prototype.BY_EXAMPLE_HASH = function (index, example, skip, limit) {\n" + " var body;\n" + "\n" + " limit = limit || null;\n" + " skip = skip || null;\n" + "\n" + " if (index.hasOwnProperty(\"id\")) {\n" + " index = index.id;\n" + " }\n" + "\n" + " body = { collection : this._id, index : index, skip : skip, limit : limit, example : {} };\n" + "\n" + " for (var key in example) {\n" + " if (example.hasOwnProperty(key)) {\n" + " body.example[key] = example[key];\n" + " }\n" + " }\n" + "\n" + " var requestResult = this._database._connection.PUT(\"/_api/simple/BY-EXAMPLE-HASH\", JSON.stringify(body));\n" + "\n" + " TRI_CheckRequestResult(requestResult);\n" + "\n" + " return requestResult;\n" + "}\n" + "\n" + "////////////////////////////////////////////////////////////////////////////////\n" "/// @brief adds an geo index\n" "////////////////////////////////////////////////////////////////////////////////\n" "\n" From 96a2f2e6cd26541ac678f6b9e7a76b89878e9f25 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 12 May 2012 22:32:14 +0200 Subject: [PATCH 13/29] version 0.5.0 --- Doxygen/arango.template | 4 ++-- VERSION | 2 +- configure | 20 ++++++++++---------- configure.ac | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Doxygen/arango.template b/Doxygen/arango.template index 867fdcf091..61c9e57d7e 100644 --- a/Doxygen/arango.template +++ b/Doxygen/arango.template @@ -31,7 +31,7 @@ PROJECT_NAME = "ArangoDB" # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 0.4.2 +PROJECT_NUMBER = 0.5.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short. @@ -211,7 +211,7 @@ ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
" ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" -ALIASES += VERSION="0.4.2" +ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
@copydoc \1
@endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
\1 (\2)

@endif" ALIASES += LATEXBREAK="@latexonly\vskip -0.5em\hskip 1.0em@endlatexonly" diff --git a/VERSION b/VERSION index 2b7c5ae018..8f0916f768 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.4.2 +0.5.0 diff --git a/configure b/configure index 78149f9f8f..111f513d8e 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for triAGENS ArangoDB 0.4.2. +# Generated by GNU Autoconf 2.68 for triAGENS ArangoDB 0.5.0. # # Report bugs to . # @@ -560,8 +560,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='triAGENS ArangoDB' PACKAGE_TARNAME='arango' -PACKAGE_VERSION='0.4.2' -PACKAGE_STRING='triAGENS ArangoDB 0.4.2' +PACKAGE_VERSION='0.5.0' +PACKAGE_STRING='triAGENS ArangoDB 0.5.0' PACKAGE_BUGREPORT='info@triagens.de' PACKAGE_URL='http://www.arangodb.org' @@ -1398,7 +1398,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures triAGENS ArangoDB 0.4.2 to adapt to many kinds of systems. +\`configure' configures triAGENS ArangoDB 0.5.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1469,7 +1469,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of triAGENS ArangoDB 0.4.2:";; + short | recursive ) echo "Configuration of triAGENS ArangoDB 0.5.0:";; esac cat <<\_ACEOF @@ -1622,7 +1622,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -triAGENS ArangoDB configure 0.4.2 +triAGENS ArangoDB configure 0.5.0 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2087,7 +2087,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by triAGENS ArangoDB $as_me 0.4.2, which was +It was created by triAGENS ArangoDB $as_me 0.5.0, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3214,7 +3214,7 @@ fi # Define the identity of the package. PACKAGE='arango' - VERSION='0.4.2' + VERSION='0.5.0' cat >>confdefs.h <<_ACEOF @@ -10112,7 +10112,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by triAGENS ArangoDB $as_me 0.4.2, which was +This file was extended by triAGENS ArangoDB $as_me 0.5.0, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -10179,7 +10179,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -triAGENS ArangoDB config.status 0.4.2 +triAGENS ArangoDB config.status 0.5.0 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index eb84913645..40ea29c30d 100644 --- a/configure.ac +++ b/configure.ac @@ -6,7 +6,7 @@ dnl ============================================================================ dnl PREAMBLE triAGENS GmbH Build Environment dnl ============================================================================ -AC_INIT([triAGENS ArangoDB], [0.4.2], [info@triagens.de], [arango], [http://www.arangodb.org]) +AC_INIT([triAGENS ArangoDB], [0.5.0], [info@triagens.de], [arango], [http://www.arangodb.org]) dnl ---------------------------------------------------------------------------- dnl auxillary directory for install-sh and missing From 87df71374f677d931f1a2b767cb5d06954895aa9 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 12 May 2012 22:37:58 +0200 Subject: [PATCH 14/29] fixed link --- Doxygen/arango-html.doxy | 4 ++-- Doxygen/arango-latex.doxy | 4 ++-- Doxygen/arango-xml.doxy | 4 ++-- RestServer/home.dox | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Doxygen/arango-html.doxy b/Doxygen/arango-html.doxy index b27e197eba..e13d5f3534 100644 --- a/Doxygen/arango-html.doxy +++ b/Doxygen/arango-html.doxy @@ -31,7 +31,7 @@ PROJECT_NAME = "ArangoDB" # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 0.4.2 +PROJECT_NUMBER = 0.5.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short. @@ -211,7 +211,7 @@ ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
" ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" -ALIASES += VERSION="0.4.2" +ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
@copydoc \1
@endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
\1 (\2)

@endif" ALIASES += LATEXBREAK="@latexonly\vskip -0.5em\hskip 1.0em@endlatexonly" diff --git a/Doxygen/arango-latex.doxy b/Doxygen/arango-latex.doxy index 6d98035fe7..b4968ad7d0 100644 --- a/Doxygen/arango-latex.doxy +++ b/Doxygen/arango-latex.doxy @@ -31,7 +31,7 @@ PROJECT_NAME = "ArangoDB" # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 0.4.2 +PROJECT_NUMBER = 0.5.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short. @@ -211,7 +211,7 @@ ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
" ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" -ALIASES += VERSION="0.4.2" +ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
@copydoc \1
@endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
\1 (\2)

@endif" ALIASES += LATEXBREAK="@latexonly\vskip -0.5em\hskip 1.0em@endlatexonly" diff --git a/Doxygen/arango-xml.doxy b/Doxygen/arango-xml.doxy index 1fa0a972bf..8ac95df220 100644 --- a/Doxygen/arango-xml.doxy +++ b/Doxygen/arango-xml.doxy @@ -31,7 +31,7 @@ PROJECT_NAME = "ArangoDB" # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 0.4.2 +PROJECT_NUMBER = 0.5.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short. @@ -211,7 +211,7 @@ ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
" ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" -ALIASES += VERSION="0.4.2" +ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
@copydoc \1
@endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
\1 (\2)

@endif" ALIASES += LATEXBREAK="@latexonly\vskip -0.5em\hskip 1.0em@endlatexonly" diff --git a/RestServer/home.dox b/RestServer/home.dox index 6bba3831b6..03d02583d9 100644 --- a/RestServer/home.dox +++ b/RestServer/home.dox @@ -37,7 +37,7 @@ /// The ArangoDB consists of a server, a separate shell, which allows you to /// administrate the server, and a set of client API for various languages. /// -/// @xmlonly The HTML version of the manual can be found here. @endxmlonly +/// @xmlonly The HTML version of the manual can be found here. @endxmlonly /// /// @warning /// ArangoDB is currently pre-alpha. We want to have a version 1 ready by end @@ -48,9 +48,9 @@ /// @section ArangoDBServer ArangoDB Server (Version @VERSION) /// ///
    -///
  • @ref InstallManual (pdf)
  • -///
  • @ref UserManualServer (pdf)
  • -///
  • @ref ImplementorManual (pdf)
  • +///
  • @ref InstallManual (pdf)
  • +///
  • @ref UserManualServer (pdf)
  • +///
  • @ref ImplementorManual (pdf)
  • ///
  • @ref RefManual
  • ///
  • @ref Glossary
  • ///
From c5c95197e9a826d70d5421c63f6505dc3d89474e Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 12 May 2012 22:39:38 +0200 Subject: [PATCH 15/29] fixed link --- RestServer/home.dox | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/RestServer/home.dox b/RestServer/home.dox index 03d02583d9..d473c6fe9d 100644 --- a/RestServer/home.dox +++ b/RestServer/home.dox @@ -48,9 +48,9 @@ /// @section ArangoDBServer ArangoDB Server (Version @VERSION) /// ///
    -///
  • @ref InstallManual (pdf)
  • -///
  • @ref UserManualServer (pdf)
  • -///
  • @ref ImplementorManual (pdf)
  • +///
  • @ref InstallManual (pdf)
  • +///
  • @ref UserManualServer (pdf)
  • +///
  • @ref ImplementorManual (pdf)
  • ///
  • @ref RefManual
  • ///
  • @ref Glossary
  • ///
From 5866d84ac0bad1e725c4056346ddd0e80a79bbe5 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 12 May 2012 22:40:50 +0200 Subject: [PATCH 16/29] fixed link --- RestServer/home.dox | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/RestServer/home.dox b/RestServer/home.dox index d473c6fe9d..6de0cba9c7 100644 --- a/RestServer/home.dox +++ b/RestServer/home.dox @@ -42,8 +42,7 @@ /// @warning /// ArangoDB is currently pre-alpha. We want to have a version 1 ready by end /// of May 2012, a multi server version is planned for the third quarter of -/// 2012. The document is far from complete. The most complete parts are -/// @ref RefManual "here". +/// 2012. The document is far from complete. /// /// @section ArangoDBServer ArangoDB Server (Version @VERSION) /// From a0da951b7a730536b4d954b4ae6a0c0263a8e88d Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sat, 12 May 2012 22:48:04 +0200 Subject: [PATCH 17/29] no border --- Doxygen/latex/header.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Doxygen/latex/header.tex b/Doxygen/latex/header.tex index b911e8c593..d50d70a7ca 100644 --- a/Doxygen/latex/header.tex +++ b/Doxygen/latex/header.tex @@ -22,11 +22,11 @@ \renewcommand{\footrulewidth}{0.4pt} \newcommand{\examplecap}{} \lstnewenvironment{DoxyVerbInclude}{% - \lstset{numbers=none,frame=single,backgroundcolor=\color{lightgray},language=,basicstyle=\ttfamily,breaklines=true,breakatwhitespace=false,caption=\protect\examplecap,captionpos=below} + \lstset{numbers=none,backgroundcolor=\color{lightgray},language=,basicstyle=\ttfamily,breaklines=true,breakatwhitespace=false,caption=\protect\examplecap,captionpos=below} }{% } \definecolor{gray}{gray}{.8} -\definecolor{lightgray}{gray}{.98} +\definecolor{lightgray}{gray}{.95} \setlength{\headheight}{15pt} \begin{document} \begin{titlepage} From 1f7d7ea33472544ebc90a0a851b0813886244926 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sun, 13 May 2012 15:18:21 +0200 Subject: [PATCH 18/29] fixed Web-Front-End access via / --- .../option-database-directory | 11 +- Makefile.files | 2 +- Makefile.in | 2 +- README.md | 10 +- RestServer/home.dox | 38 +++--- RestServer/user-manual-server.dox | 108 ++++++++++++------ V8/v8-actions.cpp | 32 ++++-- V8/v8-actions.h | 4 +- V8/v8-globals.h | 7 ++ js/actions/system/api-system.js | 25 ++++ js/server/modules/actions.js | 45 ++++++-- 11 files changed, 205 insertions(+), 79 deletions(-) diff --git a/Doxygen/Examples.ArangoDB/option-database-directory b/Doxygen/Examples.ArangoDB/option-database-directory index ca65600895..ce85aa52b8 100644 --- a/Doxygen/Examples.ArangoDB/option-database-directory +++ b/Doxygen/Examples.ArangoDB/option-database-directory @@ -1,5 +1,6 @@ -> ./arango --port 8529 /tmp/vocbase -2011-12-05T09:58:31Z [2690] INFO ArangoDB (version 1 (9711)) is ready for business -2011-12-05T09:58:31Z [2690] INFO HTTP client port: 8529 -2011-12-05T09:58:31Z [2690] INFO HTTP admin port: localhost:8530 -2011-12-05T09:58:31Z [2690] INFO Have Fun! +> ./arangod /tmp/vocbase +2012-05-13T12:37:08Z [8145] INFO no user init file '/home/fceller/.arango/arango.conf' found +2012-05-13T12:37:08Z [8145] INFO using built-in JavaScript startup files +2012-05-13T12:37:08Z [8145] INFO ArangoDB (version 0.5.0) is ready for business +2012-05-13T12:37:08Z [8145] INFO HTTP client/admin port: 127.0.0.1:8529 +2012-05-13T12:37:08Z [8145] INFO Have Fun! diff --git a/Makefile.files b/Makefile.files index 0f69d90a58..94565d91bb 100644 --- a/Makefile.files +++ b/Makefile.files @@ -388,7 +388,7 @@ WIKI = \ ShellEdge \ ShellIndex \ SimpleQueries \ - UserManualServer \ + UserManual \ UserManualServerBasics \ UserManualShell \ UserManualShellStartStop \ diff --git a/Makefile.in b/Makefile.in index 652fb8f886..118fb44ac8 100644 --- a/Makefile.in +++ b/Makefile.in @@ -981,7 +981,7 @@ WIKI = \ ShellEdge \ ShellIndex \ SimpleQueries \ - UserManualServer \ + UserManual \ UserManualServerBasics \ UserManualShell \ UserManualShellStartStop \ diff --git a/README.md b/README.md index 3264f60bcf..7ce0619edc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # ArangoDB -We recently started a new open source project – a nosql database -called ArangoDB which became ArangoDB in May 2012. ArangoDB is +We recently started a new open source project - a nosql database +called AvocadoDB which became ArangoDB in May 2012. ArangoDB is currently pre-alpha. We want to have a version 1 ready by end of May 2012, a multi server version is planned for the third quarter of 2012. For details see the roadmap. @@ -11,8 +11,8 @@ Key features include: * Schema-free schemata let you combine the space efficiency of MySQL with the performance power of NoSQL * Use ArangoDB as an application server and fuse your application and database together for maximal throughput * JavaScript for all: no language zoo, you can use one language from your browser to your back-end -* ArangoDB is multi-threaded – exploit the power of all your cores -* Flexible data modeling: model your data as combination of key-value pairs, documents or graphs – perfect for social relations +* ArangoDB is multi-threaded - exploit the power of all your cores +* Flexible data modeling: model your data as combination of key-value pairs, documents or graphs - perfect for social relations * Free index choice: use the correct index for your problem, be it a skip list or a n-gram search * Configurable durability: let the application decide if it needs more durability or more performance * No-nonsense storage: ArangoDB uses all of the power of modern storage hardware, like SSD and large caches @@ -21,7 +21,7 @@ Key features include: For more in-depth information * read more on the [design goals of ArangoDB](http://www.arangodb.org/2012/03/07/arangodbs-design-objectives) -* [watch the video](http://vimeo.com/36411892) – Martin Schoenert, architect of ArangoDB, gives an introduction of what the ArangoDB project is about. +* [watch the video](http://vimeo.com/36411892) - Martin Schoenert, architect of ArangoDB, gives an introduction of what the ArangoDB project is about. * or give it a try. ## Compilation diff --git a/RestServer/home.dox b/RestServer/home.dox index 6de0cba9c7..48ef74fcbf 100644 --- a/RestServer/home.dox +++ b/RestServer/home.dox @@ -42,25 +42,36 @@ /// @warning /// ArangoDB is currently pre-alpha. We want to have a version 1 ready by end /// of May 2012, a multi server version is planned for the third quarter of -/// 2012. The document is far from complete. +/// 2012. The document is still far from complete. Please contact +/// us, if you have any questions. /// -/// @section ArangoDBServer ArangoDB Server (Version @VERSION) +/// @section ArangoDBUserManual ArgangoDB's User Manuals (Version @VERSION) +/////////////////////////////////////////////////////////////////////////// +/// +///
    +///
  • @ref UserManual (pdf)
  • +///
  • @ref Glossary
  • +///
+/// +/// @section ArangoDBAdminManual ArangoDB's Administrator Manuals (Version @VERSION) +//////////////////////////////////////////////////////////////////////////////////// /// ///
    ///
  • @ref InstallManual (pdf)
  • -///
  • @ref UserManualServer (pdf)
  • +///
  • @ref Glossary
  • +///
+/// +/// @section ArangoDBAPIManual ArangoDB's Developer Manuals (Version @VERSION) +////////////////////////////////////////////////////////////////////////////// +/// +///
    ///
  • @ref ImplementorManual (pdf)
  • ///
  • @ref RefManual
  • ///
  • @ref Glossary
  • ///
/// -/// @section ArangoDB ArangoDB Shell -/// -///
    -///
  • @ref UserManualShell
  • -///
-/// /// @section HomeApi API +//////////////////////// /// /// @subsection HomeCLINQ C\# / LINQ /// @@ -85,14 +96,15 @@ /// https://groups.google.com/forum/#!forum/ashikawa /// /// @section HomeStayInContact Stay in Contact +////////////////////////////////////////////// /// /// Frank is twittering for the project on Twitter using @@fceller. We've also a -/// "generic" twitter account mainly for announcements called @@fceller. We've also a "generic" +/// twitter account mainly for announcements called @@arangodb /// -/// You can also subscribe to a low traffic announcement list on the -/// connect page. +/// You can also subscribe to a low traffic announcement list on the connect page. //////////////////////////////////////////////////////////////////////////////// // Local Variables: diff --git a/RestServer/user-manual-server.dox b/RestServer/user-manual-server.dox index 26d4491f0f..e7526d7e30 100644 --- a/RestServer/user-manual-server.dox +++ b/RestServer/user-manual-server.dox @@ -25,23 +25,6 @@ /// @author Copyright 2012, triAGENS GmbH, Cologne, Germany //////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////// -/// @page UserManualServer ArangoDB's User Manual -/// -/// @if LATEX -///
    -///
  • @ref UserManualServerBasics
  • -///
  • ArangoQueryLanguage
  • -///
  • @ref Glossary
  • -///
-/// @else -/// @copydetails UserManualServerBasicsTOC -///
    -///
  • Arango Query Language
  • -///
-/// @endif -//////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// /// @page UserManualServerBasicsTOC /// @@ -61,26 +44,74 @@ //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// -/// @page UserManualServerBasics Basics +/// @page UserManualServerBasics About ArangoDB /// -/// The ArangoDB groups documents into collections. Each collection can be -/// accessed using queries. For simple queries involving just one collection, -/// you can use a simple interface from within JavaScript code, see ArangoDB -/// shell user manual. This interface allows you to select documents from one -/// collection based on simple search criteria. For more complex queries, you -/// can use the Arango Query Language, which is an evolution of SQL resp. UNQL. +/// We recently started a new open source project - a universal nosql database +/// called AvocadoDB which became ArangoDB in May 2012. +/// +/// Key features include: +/// +///
    +///
  • Schema-free schemata let you combine the space efficiency of MySQL with +/// the performance power of NoSQL
  • +///
  • Use ArangoDB as an application server and fuse your application and +/// database together for maximal throughput
  • +///
  • JavaScript for all: no language zoo, you can use one language from your +/// browser to your back-end
  • +///
  • ArangoDB is multi-threaded - exploit the power of all your cores
  • +///
  • Flexible data modeling: model your data as combination of key-value pairs, +/// documents or graphs - perfect for social relations
  • +///
  • Free index choice: use the correct index for your problem, be it a skip +/// list or a n-gram search
  • +///
  • Configurable durability: let the application decide if it needs more +/// durability or more performance
  • +///
  • No-nonsense storage: ArangoDB uses all of the power of modern storage +/// hardware, like SSD and large caches
  • +///
  • It is open source (Apache Licence 2.0)
  • +///
+/// +/// For more in-depth information +/// +///
    +///
  • read more on the +/// design goals of ArangoDB
  • +///
  • watch the video - Martin Schoenert, +/// architect of ArangoDB, gives an introduction of what the ArangoDB project +/// is about.
  • +///
  • or give it a @ref InstallManual "try".
  • +///
+/// +/// The ArangoDB database groups documents into collections. Each collection can +/// be accessed using queries. For simple queries involving just one collection +/// and one search criteria, you can use a simple interface from within +/// JavaScript code or other languages supported by an API. This interface +/// allows you to select documents from one collection based on simple search +/// criteria. For more complex queries, you can use the Arango Query Language, +/// which is an evolution of SQL resp. UNQL for the NoSQL world. +/// +/// The ArangoDB database packages comes with various programs: +/// +/// - @LIT{arangod}: The ArangoDB database daemon. This server program is +/// intended to run as daemon process and to server the various clients +/// connection to the server via TCP / HTTP. See @ref +/// UserManualServerStartStop. +/// - @LIT{arangosh}: The ArangoDB shell. A client that implements a +/// read-eval-print loop (REPL) and provides functions to access and +/// administrate the ArangoDB server. See @ref UserManualShellStartStop. +/// - @LIT{arangoimp}: A buld importer for the ArangoDB server. +/// See @ref UserManualImporterStartStop. /// /// @EMBEDTOC{UserManualServerBasicsTOC} /// -/// @section UserManualServerStartStop Starting the ArangoDB -///////////////////////////////////////////////////////////// +/// @section UserManualServerStartStop Starting the ArangoDB Server +/////////////////////////////////////////////////////////////////// /// -/// The ArangoDB has two modes of operation: as server, where it will answer to -/// client requests and an emergency console, where you can access the database -/// directly. The latter should - as the name suggests - only be used in case of -/// an emergency, for example, a corrupted collection. Using the emergency -/// console allows you to issue all commands normally available in actions and -/// transactions. +/// The ArangoDB database server has two modes of operation: as server, where it +/// will answer to client requests and an emergency console, where you can +/// access the database directly. The latter should - as the name suggests - +/// only be used in case of an emergency, for example, a corrupted +/// collection. Using the emergency console allows you to issue all commands +/// normally available in actions and transactions. /// /// You should never start more than one server for the same database, /// independent from the mode of operation. @@ -88,12 +119,19 @@ /// @subsection UserManualServerStartStopHttp Starting the HTTP Server ////////////////////////////////////////////////////////////////////// /// -/// The following command starts the ArangoDB in server mode. You will be able -/// to access the server using HTTP request on port 8529. See below for a list -/// of frequently used options, see @ref CommandLine "here" for a complete list. +/// The following command starts the ArangoDB database in server mode. You will +/// be able to access the server using HTTP request on port 8529. See @ref +/// UserManualServerStartStopOptions "below" for a list of frequently used +/// options, see @ref CommandLine "here" for a complete list. /// /// @verbinclude option-database-directory /// +/// After starting the server, point your favorite browser to: +/// +/// @LIT{http://localhost:8529/} +/// +/// to access the administration front-end. +/// /// @subsection UserManualServerStartStopDebug Starting the Emergency Console ///////////////////////////////////////////////////////////////////////////// /// diff --git a/V8/v8-actions.cpp b/V8/v8-actions.cpp index f3c925d6b3..04fd0fcfe9 100644 --- a/V8/v8-actions.cpp +++ b/V8/v8-actions.cpp @@ -150,7 +150,7 @@ static TRI_action_options_t ParseActionOptions (TRI_v8_global_t* v8g, v8::Handle options) { TRI_action_options_t ao; - // check "parameter" field + // check "parameters" field if (options->Has(v8g->ParametersKey)) { v8::Handle parameters = options->Get(v8g->ParametersKey); @@ -159,6 +159,14 @@ static TRI_action_options_t ParseActionOptions (TRI_v8_global_t* v8g, } } + // check the "prefix" field + if (options->Has(v8g->PrefixKey)) { + ao._prefix = TRI_ObjectToBoolean(options->Get(v8g->PrefixKey)); + } + else { + ao._prefix = false; + } + // and return the result return ao; } @@ -179,7 +187,7 @@ static TRI_action_options_t ParseActionOptions (TRI_v8_global_t* v8g, //////////////////////////////////////////////////////////////////////////////// /// @brief defines a new action /// -/// @FUN{defineSystemAction(@FA{name}, @FA{queue}, @FA{callback}, @FA{parameter})} +/// @FUN{defineAction(@FA{name}, @FA{queue}, @FA{callback}, @FA{parameter})} /// /// Possible queues are: /// - "CLIENT" @@ -206,10 +214,6 @@ static v8::Handle JS_DefineAction (v8::Arguments const& argv) { string name = *utf8name; - if (name.empty()) { - return scope.Close(v8::ThrowException(v8::String::New(" must be non-empty"))); - } - // extract the action queue v8::String::Utf8Value utf8queue(argv[1]); @@ -339,14 +343,24 @@ TRI_action_t const* TRI_LookupActionVocBase (triagens::rest::HttpRequest* reques // check if we know a callback vector suffix = request->suffix(); + bool poped = false; // find longest prefix while (true) { string name = StringUtils::join(suffix, '/'); map::iterator i = Actions.find(name); - + if (i != Actions.end()) { - return i->second; + TRI_action_t* action = i->second; + + if (action->_options._prefix) { + return action; + } + else { + if (! poped) { + return action; + } + } } if (suffix.empty()) { @@ -354,6 +368,7 @@ TRI_action_t const* TRI_LookupActionVocBase (triagens::rest::HttpRequest* reques } suffix.pop_back(); + poped = true; } return 0; @@ -621,6 +636,7 @@ void TRI_InitV8Actions (v8::Handle context, char const* actionQueue v8g->ContentTypeKey = v8::Persistent::New(v8::String::New("contentType")); v8g->HeadersKey = v8::Persistent::New(v8::String::New("headers")); v8g->ParametersKey = v8::Persistent::New(v8::String::New("parameters")); + v8g->PrefixKey = v8::Persistent::New(v8::String::New("prefix")); v8g->RequestBodyKey = v8::Persistent::New(v8::String::New("requestBody")); v8g->RequestTypeKey = v8::Persistent::New(v8::String::New("requestType")); v8g->ResponseCodeKey = v8::Persistent::New(v8::String::New("responseCode")); diff --git a/V8/v8-actions.h b/V8/v8-actions.h index 7090330346..e2fb4dcda3 100644 --- a/V8/v8-actions.h +++ b/V8/v8-actions.h @@ -183,10 +183,12 @@ TRI_action_parameter_t; typedef struct TRI_action_options_s { TRI_action_options_s () - : _parameters() { + : _parameters(), + _prefix(false) { } std::map _parameters; + bool _prefix; } TRI_action_options_t; diff --git a/V8/v8-globals.h b/V8/v8-globals.h index 8ed941ed66..ea1b7d7267 100644 --- a/V8/v8-globals.h +++ b/V8/v8-globals.h @@ -86,6 +86,7 @@ typedef struct TRI_v8_global_s { ContentTypeKey(), JournalSizeKey(), ParametersKey(), + PrefixKey(), ResponseCodeKey(), WaitForSyncKey(), DocumentIdRegex(), @@ -342,6 +343,12 @@ typedef struct TRI_v8_global_s { v8::Persistent ParametersKey; +//////////////////////////////////////////////////////////////////////////////// +/// @brief "prefix" key name +//////////////////////////////////////////////////////////////////////////////// + + v8::Persistent PrefixKey; + //////////////////////////////////////////////////////////////////////////////// /// @brief "requestBody" key name //////////////////////////////////////////////////////////////////////////////// diff --git a/js/actions/system/api-system.js b/js/actions/system/api-system.js index 253fed2cfe..9aa2e542d3 100644 --- a/js/actions/system/api-system.js +++ b/js/actions/system/api-system.js @@ -36,6 +36,31 @@ var actions = require("actions"); /// @{ //////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +/// @brief returns system status information for the server +//////////////////////////////////////////////////////////////////////////////// + +actions.defineHttp({ + url : "", + context : "admin", + prefix : false, + + callback : function (req, res) { + var dest = "/_admin/html/index.html"; + + res.responseCode = actions.HTTP_MOVED_PERMANENTLY; + res.contentType = "text/html"; + + res.body = "Moved

Moved

This page has moved to " + + dest + + ".

"; + + res.headers = { location : dest }; + } +}); + //////////////////////////////////////////////////////////////////////////////// /// @fn JSF_GET_admin_status /// @brief returns system status information for the server diff --git a/js/server/modules/actions.js b/js/server/modules/actions.js index 75a846098c..2da36297c6 100644 --- a/js/server/modules/actions.js +++ b/js/server/modules/actions.js @@ -51,6 +51,11 @@ var console = require("console"); /// @FA{options.url} is a prefix of the given url and no longer definition /// matches. /// +/// @FA{options.prefix} +/// +/// If @LIT{false}, then only use the action for excat matches. The default is +/// @LIT{true}. +/// /// @FA{options.context} /// /// The context to which this actions belongs. Possible values are "admin", @@ -89,7 +94,7 @@ var console = require("console"); /// /// @FA{options.parameters} /// -/// Normally the paramaters are passed to the callback as strings. You can +/// Normally the parameters are passed to the callback as strings. You can /// use the @FA{options}, to force a converstion of the parameter to /// /// - @c "collection" @@ -103,7 +108,8 @@ function DefineHttp (options) { var url = options.url; var contexts = options.context; var callback = options.callback; - var parameter = options.parameter; + var parameters = options.parameters; + var prefix = options.prefix || false; var userContext = false; if (! contexts) { @@ -134,6 +140,8 @@ function DefineHttp (options) { return; } + var parameter = { parameters : parameters, prefix : prefix }; + // console.debug("callback: %s", callback); for (var i = 0; i < contexts.length; ++i) { @@ -535,18 +543,35 @@ exports.POST = "POST"; exports.PUT = "PUT"; // HTTP 2xx -exports.HTTP_OK = 200; -exports.HTTP_CREATED = 201; -exports.HTTP_ACCEPTED = 202; +exports.HTTP_OK = 200; +exports.HTTP_CREATED = 201; +exports.HTTP_ACCEPTED = 202; +exports.HTTP_PARTIAL = 203; +exports.HTTP_NO_CONTENT = 204; + +// HTTP 3xx +exports.HTTP_MOVED_PERMANENTLY = 301; +exports.HTTP_FOUND = 302; +exports.HTTP_SEE_OTHER = 303; +exports.HTTP_NOT_MODIFIED = 304; +exports.HTTP_TEMPORARY_REDIRECT = 307; // HTTP 4xx -exports.HTTP_BAD = 400; -exports.HTTP_NOT_FOUND = 404; -exports.HTTP_METHOD_NOT_ALLOWED = 405; -exports.HTTP_CONFLICT = 409; +exports.HTTP_BAD = 400; +exports.HTTP_UNAUTHORIZED = 401; +exports.HTTP_PAYMENT = 402; +exports.HTTP_FORBIDDEN = 403; +exports.HTTP_NOT_FOUND = 404; +exports.HTTP_METHOD_NOT_ALLOWED = 405; +exports.HTTP_CONFLICT = 409; +exports.HTTP_PRECONDITION_FAILED = 412; +exports.HTTP_UNPROCESSABLE_ENTIT = 422; // HTTP 5xx -exports.HTTP_SERVER_ERROR = 500; +exports.HTTP_SERVER_ERROR = 500; +exports.HTTP_NOT_IMPLEMENTED = 501; +exports.HTTP_BAD_GATEWAY = 502; +exports.HTTP_SERVICE_UNAVAILABLE = 503; // copy error codes for (var name in internal.errors) { From 91ec3ba3c1db589d0323b5aab4ea7c149cba6562 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sun, 13 May 2012 15:18:42 +0200 Subject: [PATCH 19/29] added user-manual --- RestServer/user-manual.dox | 49 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 RestServer/user-manual.dox diff --git a/RestServer/user-manual.dox b/RestServer/user-manual.dox new file mode 100644 index 0000000000..05975700d3 --- /dev/null +++ b/RestServer/user-manual.dox @@ -0,0 +1,49 @@ +//////////////////////////////////////////////////////////////////////////////// +/// @brief user guide guide +/// +/// @file +/// +/// DISCLAIMER +/// +/// Copyright 2012 triagens GmbH, Cologne, Germany +/// +/// Licensed 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. +/// +/// Copyright holder is triAGENS GmbH, Cologne, Germany +/// +/// @author Dr. Frank Celler +/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +/// @page UserManual ArangoDB's User Manual +/// +/// @if LATEX +///
    +///
  • @ref UserManualServerBasics
  • +///
  • ArangoQueryLanguage
  • +///
  • @ref Glossary
  • +///
+/// @else +/// @copydetails UserManualServerBasicsTOC +///
    +///
  • Arango Query Language
  • +///
+/// @endif +//////////////////////////////////////////////////////////////////////////////// + +// Local Variables: +// mode: c++ +// mode: outline-minor +// outline-regexp: "^\\(/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|// --SECTION--\\|/// @page\\|/// @\\}\\)" +// End: From d514e197c25e87dadb176d85a23ca8a5d6e584f5 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sun, 13 May 2012 15:40:23 +0200 Subject: [PATCH 20/29] user manual --- Doxygen/Examples.ArangoDB/arangosh-options | 16 ++ .../{avocsh1 => arangosh-start} | 25 +-- Doxygen/Examples.ArangoDB/avocsh2 | 11 -- .../Examples.ArangoDB/start-emergency-console | 8 + Doxygen/Examples.ArangoDB/start1 | 8 - Makefile.files | 4 +- RestServer/user-manual-avocsh.dox | 96 ---------- RestServer/user-manual-server.dox | 175 ----------------- RestServer/user-manual.dox | 179 +++++++++++++++++- js/client/client.js | 24 +-- js/client/js-client.h | 24 +-- 11 files changed, 239 insertions(+), 331 deletions(-) create mode 100644 Doxygen/Examples.ArangoDB/arangosh-options rename Doxygen/Examples.ArangoDB/{avocsh1 => arangosh-start} (57%) delete mode 100644 Doxygen/Examples.ArangoDB/avocsh2 create mode 100644 Doxygen/Examples.ArangoDB/start-emergency-console delete mode 100644 Doxygen/Examples.ArangoDB/start1 delete mode 100644 RestServer/user-manual-avocsh.dox delete mode 100644 RestServer/user-manual-server.dox diff --git a/Doxygen/Examples.ArangoDB/arangosh-options b/Doxygen/Examples.ArangoDB/arangosh-options new file mode 100644 index 0000000000..08c41ed30f --- /dev/null +++ b/Doxygen/Examples.ArangoDB/arangosh-options @@ -0,0 +1,16 @@ +> ./arangosh --help +STANDARD options: + --help help message + --log.level log level (default: "info") + --max-upload-size maximum size of import chunks (default: 500000) + --no-auto-complete disable auto completion + --no-colors deactivate color support + --pager output pager (default: "less -X -R -F -L") + --pretty-print pretty print values + --server server address and port (default: "127.0.0.1:8529") + --startup.directory startup paths containing the JavaScript files; multiple directories can be + separated by cola + --startup.modules-path one or more directories separated by cola (default: + "./js/client/modules;./js/common/modules") + --unit-tests do not start as shell, run unit tests instead + --use-pager use pager diff --git a/Doxygen/Examples.ArangoDB/avocsh1 b/Doxygen/Examples.ArangoDB/arangosh-start similarity index 57% rename from Doxygen/Examples.ArangoDB/avocsh1 rename to Doxygen/Examples.ArangoDB/arangosh-start index 6ced4819b1..42f3b356a3 100644 --- a/Doxygen/Examples.ArangoDB/avocsh1 +++ b/Doxygen/Examples.ArangoDB/arangosh-start @@ -1,26 +1,27 @@ -> ./avocsh - _ - __ ___ _____ ___ ___| |__ - / _` \ \ / / _ \ / __/ __| '_ \ - | (_| |\ V / (_) | (__\__ \ | | | - \__,_| \_/ \___/ \___|___/_| |_| + _ + __ _ _ __ __ _ _ __ __ _ ___ ___| |__ + / _` | '__/ _` | '_ \ / _` |/ _ \/ __| '_ \ +| (_| | | | (_| | | | | (_| | (_) \__ \ | | | + \__,_|_| \__,_|_| |_|\__, |\___/|___/_| |_| + |___/ -Welcome to avocsh x.y.z. Copyright (c) 2012 triAGENS GmbH. -Using Google V8 3.8.5 JavaScript engine. +Welcome to arangosh 0.5.0. Copyright (c) 2012 triAGENS GmbH. +Using Google V8 3.9.4 JavaScript engine. Using READLINE 6.1. -Connected to Arango DB 127.0.0.1:8529 Version 0.x.y +Connected to Arango DB 127.0.0.1:8529 Version 0.5.0 ------------------------------------- Help ------------------------------------- Predefined objects: - arango: ArangoConnection - db: ArangoDatabase + arango: ArangoConnection + db: ArangoDatabase Example: > db._collections(); list all collections > db..all(); list all documents > id = db..save({ ... }); save a document - > db..delete(<_id>); delete a document + > db..remove(<_id>); delete a document > db..document(<_id>); get a document > help show help pages > helpQueries query help > exit +arangosh> \ No newline at end of file diff --git a/Doxygen/Examples.ArangoDB/avocsh2 b/Doxygen/Examples.ArangoDB/avocsh2 deleted file mode 100644 index 7cc4574ffa..0000000000 --- a/Doxygen/Examples.ArangoDB/avocsh2 +++ /dev/null @@ -1,11 +0,0 @@ -> ./avocsh --help -STANDARD options: - --help help message - --log.level log level (default: "info") - --no-auto-complete disable auto completion - --no-colors deactivate color support - --pager output pager (default: 'more') (default: "more") - --pretty-print pretty print values - --server server address and port (default: "127.0.0.1:8529") - --startup startup path containing the JavaScript files - --use-pager use pager diff --git a/Doxygen/Examples.ArangoDB/start-emergency-console b/Doxygen/Examples.ArangoDB/start-emergency-console new file mode 100644 index 0000000000..38d80cb4c0 --- /dev/null +++ b/Doxygen/Examples.ArangoDB/start-emergency-console @@ -0,0 +1,8 @@ +> ./arangod --console --log error /tmp/vocbase +ArangoDB shell [V8 version 3.9.4, DB version 0.5.0] + +arango> 1 + 2; +3 + +arango> db.geo.count(); +703 diff --git a/Doxygen/Examples.ArangoDB/start1 b/Doxygen/Examples.ArangoDB/start1 deleted file mode 100644 index 3cbbdd4801..0000000000 --- a/Doxygen/Examples.ArangoDB/start1 +++ /dev/null @@ -1,8 +0,0 @@ -> ./arango --shell --log error /tmp/vocbase -ArangoDB shell [V8 version 3.6.5.1, DB version 1 (9650)] - -arango> 1 + 2; -3 - -arango> db.geo.count(); -703 diff --git a/Makefile.files b/Makefile.files index 94565d91bb..c93db282c7 100644 --- a/Makefile.files +++ b/Makefile.files @@ -389,7 +389,5 @@ WIKI = \ ShellIndex \ SimpleQueries \ UserManual \ - UserManualServerBasics \ - UserManualShell \ - UserManualShellStartStop \ + UserManualBasics \ jsUnity diff --git a/RestServer/user-manual-avocsh.dox b/RestServer/user-manual-avocsh.dox deleted file mode 100644 index e0ff8a86ce..0000000000 --- a/RestServer/user-manual-avocsh.dox +++ /dev/null @@ -1,96 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -/// @brief installation guide -/// -/// @file -/// -/// DISCLAIMER -/// -/// Copyright 2012 triAGENS GmbH, Cologne, Germany -/// -/// Licensed 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. -/// -/// Copyright holder is triAGENS GmbH, Cologne, Germany -/// -/// @author Dr. Frank Celler -/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -/// @page UserManualShell ArangoDB Shell User Manual -/// -///
    -///
  1. @ref UserManualShellBasics -///
      -///
    1. @ref UserManualShellStartStop -///
    2. -///
    3. @ref SimpleQueries -///
    4. -///
    -///
  2. -///
-//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -/// @page UserManualShellBasics Basics -/// -/// The ArangoDB consists of a server, which can be accessed by clients -/// using the appropriate client API. A simple JavaScript shell can be used -/// to administrate the server, when no HTTP access is possible or when -/// more complex administration tasks are required. This shell can also -/// be used to query documents for debugging. -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -/// @page UserManualShellStartStopTOC -/// -///
    -///
  1. @ref UserManualShellStartStopShell -///
  2. -///
  3. @ref UserManualShellStartStopOptions -///
  4. -///
-//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -/// @page UserManualShellStartStop Starting the ArangoDB Shell -/// -/// After starting the ArangoDB server, you can access the server -/// using the avocsh JavaScript shell. -/// -///
-/// @copydoc UserManualShellStartStopTOC -///
-/// -/// @section UserManualShellStartStopShell avocsh -/// -/// After the server has been @ref UserManualServerStartStop "started", -/// you can use the ArangoDB shell to administrate the server. Without -/// any arguments, the ArangoDB shell will try to contact the server -/// on port 8529 on the localhost. -/// -/// @verbinclude avocsh1 -/// -/// The shell will print its own version number and, if successfully connected -/// to a server, the version number of the ArangoDB server. -/// -/// @section UserManualShellStartStopOptions Command-Line Options -/// -/// Use @LIT{--help} to get a list of command-line options: -/// -/// @verbinclude avocsh2 -//////////////////////////////////////////////////////////////////////////////// - -// Local Variables: -// mode: outline-minor -// outline-regexp: "^\\(/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|// --SECTION--\\|/// @page\\|/// @\\}\\)" -// End: diff --git a/RestServer/user-manual-server.dox b/RestServer/user-manual-server.dox deleted file mode 100644 index e7526d7e30..0000000000 --- a/RestServer/user-manual-server.dox +++ /dev/null @@ -1,175 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -/// @brief user guide guide -/// -/// @file -/// -/// DISCLAIMER -/// -/// Copyright 2012 triagens GmbH, Cologne, Germany -/// -/// Licensed 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. -/// -/// Copyright holder is triAGENS GmbH, Cologne, Germany -/// -/// @author Dr. Frank Celler -/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -/// @page UserManualServerBasicsTOC -/// -///
    -///
  • @ref UserManualServerBasics -///
      -///
    • @ref UserManualServerStartStop -///
        -///
      • @ref UserManualServerStartStopHttp
      • -///
      • @ref UserManualServerStartStopDebug
      • -///
      • @ref UserManualServerStartStopOptions
      • -///
      -///
    • -///
    -///
  • -///
-//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -/// @page UserManualServerBasics About ArangoDB -/// -/// We recently started a new open source project - a universal nosql database -/// called AvocadoDB which became ArangoDB in May 2012. -/// -/// Key features include: -/// -///
    -///
  • Schema-free schemata let you combine the space efficiency of MySQL with -/// the performance power of NoSQL
  • -///
  • Use ArangoDB as an application server and fuse your application and -/// database together for maximal throughput
  • -///
  • JavaScript for all: no language zoo, you can use one language from your -/// browser to your back-end
  • -///
  • ArangoDB is multi-threaded - exploit the power of all your cores
  • -///
  • Flexible data modeling: model your data as combination of key-value pairs, -/// documents or graphs - perfect for social relations
  • -///
  • Free index choice: use the correct index for your problem, be it a skip -/// list or a n-gram search
  • -///
  • Configurable durability: let the application decide if it needs more -/// durability or more performance
  • -///
  • No-nonsense storage: ArangoDB uses all of the power of modern storage -/// hardware, like SSD and large caches
  • -///
  • It is open source (Apache Licence 2.0)
  • -///
-/// -/// For more in-depth information -/// -///
    -///
  • read more on the -/// design goals of ArangoDB
  • -///
  • watch the video - Martin Schoenert, -/// architect of ArangoDB, gives an introduction of what the ArangoDB project -/// is about.
  • -///
  • or give it a @ref InstallManual "try".
  • -///
-/// -/// The ArangoDB database groups documents into collections. Each collection can -/// be accessed using queries. For simple queries involving just one collection -/// and one search criteria, you can use a simple interface from within -/// JavaScript code or other languages supported by an API. This interface -/// allows you to select documents from one collection based on simple search -/// criteria. For more complex queries, you can use the Arango Query Language, -/// which is an evolution of SQL resp. UNQL for the NoSQL world. -/// -/// The ArangoDB database packages comes with various programs: -/// -/// - @LIT{arangod}: The ArangoDB database daemon. This server program is -/// intended to run as daemon process and to server the various clients -/// connection to the server via TCP / HTTP. See @ref -/// UserManualServerStartStop. -/// - @LIT{arangosh}: The ArangoDB shell. A client that implements a -/// read-eval-print loop (REPL) and provides functions to access and -/// administrate the ArangoDB server. See @ref UserManualShellStartStop. -/// - @LIT{arangoimp}: A buld importer for the ArangoDB server. -/// See @ref UserManualImporterStartStop. -/// -/// @EMBEDTOC{UserManualServerBasicsTOC} -/// -/// @section UserManualServerStartStop Starting the ArangoDB Server -/////////////////////////////////////////////////////////////////// -/// -/// The ArangoDB database server has two modes of operation: as server, where it -/// will answer to client requests and an emergency console, where you can -/// access the database directly. The latter should - as the name suggests - -/// only be used in case of an emergency, for example, a corrupted -/// collection. Using the emergency console allows you to issue all commands -/// normally available in actions and transactions. -/// -/// You should never start more than one server for the same database, -/// independent from the mode of operation. -/// -/// @subsection UserManualServerStartStopHttp Starting the HTTP Server -////////////////////////////////////////////////////////////////////// -/// -/// The following command starts the ArangoDB database in server mode. You will -/// be able to access the server using HTTP request on port 8529. See @ref -/// UserManualServerStartStopOptions "below" for a list of frequently used -/// options, see @ref CommandLine "here" for a complete list. -/// -/// @verbinclude option-database-directory -/// -/// After starting the server, point your favorite browser to: -/// -/// @LIT{http://localhost:8529/} -/// -/// to access the administration front-end. -/// -/// @subsection UserManualServerStartStopDebug Starting the Emergency Console -///////////////////////////////////////////////////////////////////////////// -/// -/// The following command starts a emergency console. See below for a list of -/// frequently used options, see @ref CommandLine "here" for a complete list. -/// -/// @verbinclude start1 -/// -/// @subsection UserManualServerStartStopOptions Frequently Used Options -//////////////////////////////////////////////////////////////////////// -/// -/// The following command-line options are frequently used. For a full -/// list of options see @ref CommandLine "here". -/// -/// @CMDOPT{@CA{database-directory}} -/// -/// Uses the @CA{database-directory} as base directory. There is an alternative -/// version available for use in configuration files, see @ref -/// CommandLineArango "here". -/// -/// @copydetails triagens::rest::ApplicationServerImpl::options -/// -/// @CMDOPT{--log @CA{level}} -/// -/// Allows the user to choose the level of information which is logged by the -/// server. The @CA{level} is specified as a string and can be one of the -/// following values: fatal, error, warning, info, debug, trace. For more -/// information see @ref CommandLineLogging "here". -/// -/// @copydetails triagens::arango::ArangoServer::_httpPort -/// -/// @CMDOPT{--shell} -/// -/// Opens a debug shell instead of starting the HTTP server. -//////////////////////////////////////////////////////////////////////////////// - -// Local Variables: -// mode: c++ -// mode: outline-minor -// outline-regexp: "^\\(/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|// --SECTION--\\|/// @page\\|/// @\\}\\)" -// End: diff --git a/RestServer/user-manual.dox b/RestServer/user-manual.dox index 05975700d3..08249efe36 100644 --- a/RestServer/user-manual.dox +++ b/RestServer/user-manual.dox @@ -30,18 +30,193 @@ /// /// @if LATEX ///
    -///
  • @ref UserManualServerBasics
  • +///
  • @ref UserManualBasics
  • ///
  • ArangoQueryLanguage
  • ///
  • @ref Glossary
  • ///
/// @else -/// @copydetails UserManualServerBasicsTOC +/// @copydetails UserManualBasicsTOC ///
    ///
  • Arango Query Language
  • ///
/// @endif //////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +/// @page UserManualBasicsTOC +/// +///
    +///
  • @ref UserManualBasics +///
      +///
    • @ref UserManualServerStartStop +///
        +///
      • @ref UserManualServerStartStopHttp
      • +///
      • @ref UserManualServerStartStopOptions
      • +///
      +///
    • +///
    • @ref UserManualShellStartStop +///
    • +///
    • @ref UserManualShellStartStopOptions
    • +/// +///
    • @ref UserManualServerStartStopDebug +///
    • +///
    +///
  • +///
+//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +/// @page UserManualBasics About ArangoDB +/// +/// We recently started a new open source project - a universal nosql database +/// called AvocadoDB which became ArangoDB in May 2012. +/// +/// Key features include: +/// +///
    +///
  • Schema-free schemata let you combine the space efficiency of MySQL with +/// the performance power of NoSQL
  • +///
  • Use ArangoDB as an application server and fuse your application and +/// database together for maximal throughput
  • +///
  • JavaScript for all: no language zoo, you can use one language from your +/// browser to your back-end
  • +///
  • ArangoDB is multi-threaded - exploit the power of all your cores
  • +///
  • Flexible data modeling: model your data as combination of key-value pairs, +/// documents or graphs - perfect for social relations
  • +///
  • Free index choice: use the correct index for your problem, be it a skip +/// list or a n-gram search
  • +///
  • Configurable durability: let the application decide if it needs more +/// durability or more performance
  • +///
  • No-nonsense storage: ArangoDB uses all of the power of modern storage +/// hardware, like SSD and large caches
  • +///
  • It is open source (Apache Licence 2.0)
  • +///
+/// +/// For more in-depth information +/// +///
    +///
  • read more on the +/// design goals of ArangoDB
  • +///
  • watch the video - Martin Schoenert, +/// architect of ArangoDB, gives an introduction of what the ArangoDB project +/// is about.
  • +///
  • or give it a @ref InstallManual "try".
  • +///
+/// +/// The ArangoDB database groups documents into collections. Each collection can +/// be accessed using queries. For simple queries involving just one collection +/// and one search criteria, you can use a simple interface from within +/// JavaScript code or other languages supported by an API. This interface +/// allows you to select documents from one collection based on simple search +/// criteria. For more complex queries, you can use the Arango Query Language, +/// which is an evolution of SQL resp. UNQL for the NoSQL world. +/// +/// The ArangoDB database packages comes with various programs: +/// +/// - @LIT{arangod}: The ArangoDB database daemon. This server program is +/// intended to run as daemon process and to server the various clients +/// connection to the server via TCP / HTTP. See @ref +/// UserManualServerStartStop. +/// - @LIT{arangosh}: The ArangoDB shell. A client that implements a +/// read-eval-print loop (REPL) and provides functions to access and +/// administrate the ArangoDB server. See @ref UserManualShellStartStop. +/// - @LIT{arangoimp}: A buld importer for the ArangoDB server. +/// See @ref UserManualImporterStartStop. +/// +/// @EMBEDTOC{UserManualBasicsTOC} +/// +/// @section UserManualServerStartStop Starting the ArangoDB Server +/////////////////////////////////////////////////////////////////// +/// +/// The ArangoDB database server has two modes of operation: as server, where it +/// will answer to client requests and an emergency console, where you can +/// access the database directly. The latter should - as the name suggests - +/// only be used in case of an emergency, for example, a corrupted +/// collection. Using the emergency console allows you to issue all commands +/// normally available in actions and transactions. +/// +/// You should never start more than one server for the same database, +/// independent from the mode of operation. +/// +/// @subsection UserManualServerStartStopHttp Starting the HTTP Server +////////////////////////////////////////////////////////////////////// +/// +/// The following command starts the ArangoDB database in server mode. You will +/// be able to access the server using HTTP request on port 8529. See @ref +/// UserManualServerStartStopOptions "below" for a list of frequently used +/// options, see @ref CommandLine "here" for a complete list. +/// +/// @verbinclude option-database-directory +/// +/// After starting the server, point your favorite browser to: +/// +/// @LIT{http://localhost:8529/} +/// +/// to access the administration front-end. +/// +/// @subsection UserManualServerStartStopOptions Frequently Used Options +//////////////////////////////////////////////////////////////////////// +/// +/// The following command-line options are frequently used. For a full +/// list of options see @ref CommandLine "here". +/// +/// @CMDOPT{@CA{database-directory}} +//////////////////////////////////// +/// +/// Uses the @CA{database-directory} as base directory. There is an alternative +/// version available for use in configuration files, see @ref +/// CommandLineArango "here". +/// +/// @copydetails triagens::rest::ApplicationServerImpl::options +/////////////////////////////////////////////////////////////// +/// +/// @CMDOPT{--log @CA{level}} +///////////////////////////// +/// +/// Allows the user to choose the level of information which is logged by the +/// server. The @CA{level} is specified as a string and can be one of the +/// following values: fatal, error, warning, info, debug, trace. For more +/// information see @ref CommandLineLogging "here". +/// +/// @copydetails triagens::arango::ArangoServer::_httpPort +////////////////////////////////////////////////////////// +/// +/// @CMDOPT{--daemon} +///////////////////// +/// +/// Runs the server as a daemon (as a background process). +/// +/// @section UserManualShellStartStop Starting the ArangoDB Shell +///////////////////////////////////////////////////////////////// +/// +/// After the server has been @ref UserManualServerStartStop "started", +/// you can use the ArangoDB shell to administrate the server. Without +/// any arguments, the ArangoDB shell will try to contact the server +/// on port 8529 on the localhost. +/// +/// @verbinclude arangosh-start +/// +/// The shell will print its own version number and, if successfully connected +/// to a server, the version number of the ArangoDB server. +/// +/// @section UserManualShellStartStopOptions Command-Line Options +/// +/// Use @LIT{--help} to get a list of command-line options: +/// +/// @verbinclude avocsh2 +/// +/// @section UserManualServerStartStopDebug Starting the ArangoDB Emergency Console +/////////////////////////////////////////////////////////////////////////////////// +/// +/// The following command starts a emergency console. See below for a list of +/// frequently used options, see @ref CommandLine "here" for a complete list. +/// +/// @note Never start the emergency console for a database which also has a +/// server attached to it. +/// +/// @verbinclude start-emergency-console +//////////////////////////////////////////////////////////////////////////////// + // Local Variables: // mode: c++ // mode: outline-minor diff --git a/js/client/client.js b/js/client/client.js index a602c4be2a..c101f606cd 100644 --- a/js/client/client.js +++ b/js/client/client.js @@ -394,8 +394,8 @@ ModuleCache["/internal"].exports.ArangoDatabase = ArangoDatabase; //////////////////////////////////////////////////////////////////////////////// helpArangoDatabase = TRI_CreateHelpHeadline("ArangoDatabase help") + -'ArangoDatabase constructor: ' + "\n" + -' > db = new ArangoDatabase(connection); ' + "\n" + +'ArangoDatabase constructor: ' + "\n" + +' > db = new ArangoDatabase(connection); ' + "\n" + ' ' + "\n" + 'Administration Functions: ' + "\n" + ' _help(); this help ' + "\n" + @@ -826,8 +826,8 @@ ModuleCache["/internal"].exports.ArangoEdges = ArangoEdges; //////////////////////////////////////////////////////////////////////////////// helpArangoEdges = TRI_CreateHelpHeadline("ArangoEdges help") + -'ArangoEdges constructor: ' + "\n" + -' > edges = new ArangoEdges(connection); ' + "\n" + +'ArangoEdges constructor: ' + "\n" + +' > edges = new ArangoEdges(connection); ' + "\n" + ' ' + "\n" + 'Administration Functions: ' + "\n" + ' _help(); this help ' + "\n" + @@ -954,7 +954,7 @@ ArangoCollection.STATUS_DELETED = 5; //////////////////////////////////////////////////////////////////////////////// helpArangoCollection = TRI_CreateHelpHeadline("ArangoCollection help") + -'ArangoCollection constructor: ' + "\n" + +'ArangoCollection constructor: ' + "\n" + ' > col = db.mycoll; ' + "\n" + ' > col = db._create("mycoll"); ' + "\n" + ' ' + "\n" + @@ -1665,7 +1665,7 @@ ModuleCache["/internal"].exports.ArangoEdgesCollection = ArangoEdgesCollection; //////////////////////////////////////////////////////////////////////////////// helpArangoEdgesCollection = TRI_CreateHelpHeadline("ArangoEdgesCollection help") + -'ArangoEdgesCollection constructor: ' + "\n" + +'ArangoEdgesCollection constructor: ' + "\n" + ' > col = edges.mycoll; ' + "\n" + ' > col = db._create("mycoll"); ' + "\n" + ' ' + "\n" + @@ -1899,7 +1899,7 @@ function ArangoQueryCursor (database, data) { //////////////////////////////////////////////////////////////////////////////// helpArangoQueryCursor = TRI_CreateHelpHeadline("ArangoQueryCursor help") + -'ArangoQueryCursor constructor: ' + "\n" + +'ArangoQueryCursor constructor: ' + "\n" + ' > cu1 = qi1.execute(); ' + "\n" + 'Functions: ' + "\n" + ' hasMore(); returns true if there ' + "\n" + @@ -2116,8 +2116,8 @@ function ArangoStatement (database, data) { //////////////////////////////////////////////////////////////////////////////// helpArangoStatement = TRI_CreateHelpHeadline("ArangoStatement help") + -'ArangoStatement constructor: ' + "\n" + -' > st = new ArangoStatement({ "query" : "for ..." }); ' + "\n" + +'ArangoStatement constructor: ' + "\n" + +' > st = new ArangoStatement({ "query" : "for ..." }); ' + "\n" + ' > st = db._createStatement({ "query" : "for ..." }); ' + "\n" + 'Functions: ' + "\n" + ' bind(, ); bind single variable ' + "\n" + @@ -2329,8 +2329,8 @@ ArangoStatement.prototype.execute = function () { HELP = TRI_CreateHelpHeadline("Help") + 'Predefined objects: ' + "\n" + -' arango: ArangoConnection ' + "\n" + -' db: ArangoDatabase ' + "\n" + +' arango: ArangoConnection ' + "\n" + +' db: ArangoDatabase ' + "\n" + 'Example: ' + "\n" + ' > db._collections(); list all collections ' + "\n" + ' > db..all(); list all documents ' + "\n" + @@ -2347,7 +2347,7 @@ HELP = TRI_CreateHelpHeadline("Help") + helpQueries = TRI_CreateHelpHeadline("Select query help") + 'Create a select query: ' + "\n" + -' > st = new ArangoStatement(db, { "query" : "for..." }); ' + "\n" + +' > st = new ArangoStatement(db, { "query" : "for..." }); ' + "\n" + ' > st = db._createStatement({ "query" : "for..." }); ' + "\n" + 'Set query options: ' + "\n" + ' > st.setBatchSize(); set the max. number of results ' + "\n" + diff --git a/js/client/js-client.h b/js/client/js-client.h index fd6369af9c..c11ece5ed7 100644 --- a/js/client/js-client.h +++ b/js/client/js-client.h @@ -395,8 +395,8 @@ static string JS_client_client = "////////////////////////////////////////////////////////////////////////////////\n" "\n" "helpArangoDatabase = TRI_CreateHelpHeadline(\"ArangoDatabase help\") +\n" - "'ArangoDatabase constructor: ' + \"\\n\" +\n" - "' > db = new ArangoDatabase(connection); ' + \"\\n\" +\n" + "'ArangoDatabase constructor: ' + \"\\n\" +\n" + "' > db = new ArangoDatabase(connection); ' + \"\\n\" +\n" "' ' + \"\\n\" +\n" "'Administration Functions: ' + \"\\n\" +\n" "' _help(); this help ' + \"\\n\" +\n" @@ -827,8 +827,8 @@ static string JS_client_client = "////////////////////////////////////////////////////////////////////////////////\n" "\n" "helpArangoEdges = TRI_CreateHelpHeadline(\"ArangoEdges help\") +\n" - "'ArangoEdges constructor: ' + \"\\n\" +\n" - "' > edges = new ArangoEdges(connection); ' + \"\\n\" +\n" + "'ArangoEdges constructor: ' + \"\\n\" +\n" + "' > edges = new ArangoEdges(connection); ' + \"\\n\" +\n" "' ' + \"\\n\" +\n" "'Administration Functions: ' + \"\\n\" +\n" "' _help(); this help ' + \"\\n\" +\n" @@ -955,7 +955,7 @@ static string JS_client_client = "////////////////////////////////////////////////////////////////////////////////\n" "\n" "helpArangoCollection = TRI_CreateHelpHeadline(\"ArangoCollection help\") +\n" - "'ArangoCollection constructor: ' + \"\\n\" +\n" + "'ArangoCollection constructor: ' + \"\\n\" +\n" "' > col = db.mycoll; ' + \"\\n\" +\n" "' > col = db._create(\"mycoll\"); ' + \"\\n\" +\n" "' ' + \"\\n\" +\n" @@ -1666,7 +1666,7 @@ static string JS_client_client = "////////////////////////////////////////////////////////////////////////////////\n" "\n" "helpArangoEdgesCollection = TRI_CreateHelpHeadline(\"ArangoEdgesCollection help\") +\n" - "'ArangoEdgesCollection constructor: ' + \"\\n\" +\n" + "'ArangoEdgesCollection constructor: ' + \"\\n\" +\n" "' > col = edges.mycoll; ' + \"\\n\" +\n" "' > col = db._create(\"mycoll\"); ' + \"\\n\" +\n" "' ' + \"\\n\" +\n" @@ -1900,7 +1900,7 @@ static string JS_client_client = "////////////////////////////////////////////////////////////////////////////////\n" "\n" "helpArangoQueryCursor = TRI_CreateHelpHeadline(\"ArangoQueryCursor help\") +\n" - "'ArangoQueryCursor constructor: ' + \"\\n\" +\n" + "'ArangoQueryCursor constructor: ' + \"\\n\" +\n" "' > cu1 = qi1.execute(); ' + \"\\n\" +\n" "'Functions: ' + \"\\n\" +\n" "' hasMore(); returns true if there ' + \"\\n\" +\n" @@ -2117,8 +2117,8 @@ static string JS_client_client = "////////////////////////////////////////////////////////////////////////////////\n" "\n" "helpArangoStatement = TRI_CreateHelpHeadline(\"ArangoStatement help\") +\n" - "'ArangoStatement constructor: ' + \"\\n\" +\n" - "' > st = new ArangoStatement({ \"query\" : \"for ...\" }); ' + \"\\n\" +\n" + "'ArangoStatement constructor: ' + \"\\n\" +\n" + "' > st = new ArangoStatement({ \"query\" : \"for ...\" }); ' + \"\\n\" +\n" "' > st = db._createStatement({ \"query\" : \"for ...\" }); ' + \"\\n\" +\n" "'Functions: ' + \"\\n\" +\n" "' bind(, ); bind single variable ' + \"\\n\" +\n" @@ -2330,8 +2330,8 @@ static string JS_client_client = "\n" "HELP = TRI_CreateHelpHeadline(\"Help\") +\n" "'Predefined objects: ' + \"\\n\" +\n" - "' arango: ArangoConnection ' + \"\\n\" +\n" - "' db: ArangoDatabase ' + \"\\n\" +\n" + "' arango: ArangoConnection ' + \"\\n\" +\n" + "' db: ArangoDatabase ' + \"\\n\" +\n" "'Example: ' + \"\\n\" +\n" "' > db._collections(); list all collections ' + \"\\n\" +\n" "' > db..all(); list all documents ' + \"\\n\" +\n" @@ -2348,7 +2348,7 @@ static string JS_client_client = "\n" "helpQueries = TRI_CreateHelpHeadline(\"Select query help\") +\n" "'Create a select query: ' + \"\\n\" +\n" - "' > st = new ArangoStatement(db, { \"query\" : \"for...\" }); ' + \"\\n\" +\n" + "' > st = new ArangoStatement(db, { \"query\" : \"for...\" }); ' + \"\\n\" +\n" "' > st = db._createStatement({ \"query\" : \"for...\" }); ' + \"\\n\" +\n" "'Set query options: ' + \"\\n\" +\n" "' > st.setBatchSize(); set the max. number of results ' + \"\\n\" +\n" From 268878845451a6bf5178821661ac3c22fb00b1fb Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sun, 13 May 2012 15:53:44 +0200 Subject: [PATCH 21/29] user manual --- .../{user-manual-server.tex => user-manual.tex} | 4 ++-- Makefile.doxygen | 4 ++-- Makefile.in | 8 +++----- Makefile.local | 2 +- RestServer/user-manual.dox | 13 ++++++++----- 5 files changed, 16 insertions(+), 15 deletions(-) rename Doxygen/latex/{user-manual-server.tex => user-manual.tex} (83%) diff --git a/Doxygen/latex/user-manual-server.tex b/Doxygen/latex/user-manual.tex similarity index 83% rename from Doxygen/latex/user-manual-server.tex rename to Doxygen/latex/user-manual.tex index 4b5b45d07d..5778737a30 100644 --- a/Doxygen/latex/user-manual-server.tex +++ b/Doxygen/latex/user-manual.tex @@ -1,6 +1,6 @@ \input{header.tex} \begin{center} -{\Large ArangoDB User Manual }\\ +{\Large ArangoDB's User Manual }\\ \vspace*{1cm} {\large The ArangoDB Team}\\ \vspace*{0.5cm} @@ -13,6 +13,6 @@ \tableofcontents \clearemptydoublepage \pagenumbering{arabic} -\input{UserManualServer.inc} +\input{UserManual.inc} \printindex \end{document} diff --git a/Makefile.doxygen b/Makefile.doxygen index 188d6511cb..f60452ef3a 100644 --- a/Makefile.doxygen +++ b/Makefile.doxygen @@ -85,8 +85,8 @@ latex: Doxygen/arango-latex.doxy $(DOXYGEN) python @top_srcdir@/Doxygen/Scripts/tex2tex.py Doxygen/latex/InstallManual.tex > Doxygen/latex/InstallManual.inc.tex cd Doxygen/latex && pdflatex -interaction batchmode install-manual.tex || true - python @top_srcdir@/Doxygen/Scripts/tex2tex.py Doxygen/latex/UserManualServer.tex > Doxygen/latex/UserManualServer.inc.tex - cd Doxygen/latex && pdflatex -interaction batchmode user-manual-server.tex || true + python @top_srcdir@/Doxygen/Scripts/tex2tex.py Doxygen/latex/UserManual.tex > Doxygen/latex/UserManual.inc.tex + cd Doxygen/latex && pdflatex -interaction batchmode user-manual.tex || true python @top_srcdir@/Doxygen/Scripts/tex2tex.py Doxygen/latex/ImplementorManual.tex > Doxygen/latex/ImplementorManual.inc.tex cd Doxygen/latex && pdflatex -interaction batchmode implementor-manual.tex || true diff --git a/Makefile.in b/Makefile.in index 118fb44ac8..6a586c87a4 100644 --- a/Makefile.in +++ b/Makefile.in @@ -982,9 +982,7 @@ WIKI = \ ShellIndex \ SimpleQueries \ UserManual \ - UserManualServerBasics \ - UserManualShell \ - UserManualShellStartStop \ + UserManualBasics \ jsUnity FORCE = 0 @@ -2939,8 +2937,8 @@ latex: Doxygen/arango-latex.doxy $(DOXYGEN) python @top_srcdir@/Doxygen/Scripts/tex2tex.py Doxygen/latex/InstallManual.tex > Doxygen/latex/InstallManual.inc.tex cd Doxygen/latex && pdflatex -interaction batchmode install-manual.tex || true - python @top_srcdir@/Doxygen/Scripts/tex2tex.py Doxygen/latex/UserManualServer.tex > Doxygen/latex/UserManualServer.inc.tex - cd Doxygen/latex && pdflatex -interaction batchmode user-manual-server.tex || true + python @top_srcdir@/Doxygen/Scripts/tex2tex.py Doxygen/latex/UserManual.tex > Doxygen/latex/UserManual.inc.tex + cd Doxygen/latex && pdflatex -interaction batchmode user-manual.tex || true python @top_srcdir@/Doxygen/Scripts/tex2tex.py Doxygen/latex/ImplementorManual.tex > Doxygen/latex/ImplementorManual.inc.tex cd Doxygen/latex && pdflatex -interaction batchmode implementor-manual.tex || true diff --git a/Makefile.local b/Makefile.local index 76a90eb12d..3bf13d4f87 100755 --- a/Makefile.local +++ b/Makefile.local @@ -21,5 +21,5 @@ publish-html: publish-pdf: scp Doxygen/latex/install-manual.pdf $(MANUAL_DST) - scp Doxygen/latex/user-manual-server.pdf $(MANUAL_DST) + scp Doxygen/latex/user-manual.pdf $(MANUAL_DST) scp Doxygen/latex/implementor-manual.pdf $(MANUAL_DST) diff --git a/RestServer/user-manual.dox b/RestServer/user-manual.dox index 08249efe36..da13015cd6 100644 --- a/RestServer/user-manual.dox +++ b/RestServer/user-manual.dox @@ -55,8 +55,10 @@ /// /// ///
  • @ref UserManualShellStartStop +///
      +///
    • @ref UserManualShellStartStopOptions
    • +///
    ///
  • -///
  • @ref UserManualShellStartStopOptions
  • /// ///
  • @ref UserManualServerStartStopDebug ///
  • @@ -120,7 +122,7 @@ /// - @LIT{arangosh}: The ArangoDB shell. A client that implements a /// read-eval-print loop (REPL) and provides functions to access and /// administrate the ArangoDB server. See @ref UserManualShellStartStop. -/// - @LIT{arangoimp}: A buld importer for the ArangoDB server. +/// - @LIT{arangoimp}: A bulk importer for the ArangoDB server. /// See @ref UserManualImporterStartStop. /// /// @EMBEDTOC{UserManualBasicsTOC} @@ -199,11 +201,12 @@ /// The shell will print its own version number and, if successfully connected /// to a server, the version number of the ArangoDB server. /// -/// @section UserManualShellStartStopOptions Command-Line Options +/// @subsection UserManualShellStartStopOptions Command-Line Options +//////////////////////////////////////////////////////////////////// /// /// Use @LIT{--help} to get a list of command-line options: /// -/// @verbinclude avocsh2 +/// @verbinclude arangosh-options /// /// @section UserManualServerStartStopDebug Starting the ArangoDB Emergency Console /////////////////////////////////////////////////////////////////////////////////// @@ -212,7 +215,7 @@ /// frequently used options, see @ref CommandLine "here" for a complete list. /// /// @note Never start the emergency console for a database which also has a -/// server attached to it. +/// server attached to it. In general the ArangoDB shell is what you want. /// /// @verbinclude start-emergency-console //////////////////////////////////////////////////////////////////////////////// From c909ec20f32bd56b61d4bea92fac31b8bc2f1b45 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Mon, 14 May 2012 14:51:55 +0200 Subject: [PATCH 22/29] more doc --- ApplicationServer/ApplicationServerImpl.h | 39 ++--- .../ApplicationServerSchedulerImpl.h | 13 +- Doxygen/Examples.ArangoDB/arangosh-start | 1 + Doxygen/arango-html.doxy | 20 +-- Doxygen/arango-latex.doxy | 20 +-- Doxygen/arango.template | 20 +-- Doxygen/arango.template.in | 20 +-- Doxygen/latex/header.tex | 4 +- RestServer/ArangoServer.h | 6 +- RestServer/command-line-options.dox | 120 ++++++++++++++++ RestServer/ref-manual.dox | 134 ------------------ RestServer/simple-queries.dox | 134 +++++++++--------- RestServer/user-manual.dox | 61 +++++--- js/actions/system/api-system.js | 36 +++-- js/common/modules/simple-query-basics.js | 14 +- js/server/modules/actions.js | 6 +- 16 files changed, 329 insertions(+), 319 deletions(-) diff --git a/ApplicationServer/ApplicationServerImpl.h b/ApplicationServer/ApplicationServerImpl.h index 917911aa48..556b6b6560 100644 --- a/ApplicationServer/ApplicationServerImpl.h +++ b/ApplicationServer/ApplicationServerImpl.h @@ -41,31 +41,31 @@ //////////////////////////////////////////////////////////////////////////////// /// @page CommandLineLoggingTOC /// -///
      +///
        ///
      • @ref CommandLineLoggingGeneral -///
          +///
            ///
          • @ref CommandLineLoggingLogFile "log.file"
          • ///
          • @ref CommandLineLoggingLogSeverity "log.severity"
          • ///
          • @ref CommandLineLoggingLogSyslog "log.syslog"
          • -///
        +///
      /// ///
    1. @ref CommandLineLoggingHuman -///
        +///
          ///
        • @ref CommandLineLoggingLogLevel "log.level"
        • ///
        • @ref CommandLineLoggingLogLineNumber "log.line-number"
        • ///
        • @ref CommandLineLoggingLogPrefix "log.prefix"
        • ///
        • @ref CommandLineLoggingLogThread "log.thread"
        • -///
      +/// ///
    2. ///
    3. @ref CommandLineLoggingMachine -///
        +///
          ///
        • @ref CommandLineLoggingLogApplication "log.application"
        • ///
        • @ref CommandLineLoggingLogFacility "log.facility"
        • ///
        • @ref CommandLineLoggingLogFormat "log.format"
        • ///
        • @ref CommandLineLoggingLogHostName "log.hostname"
        • -///
      +/// ///
    4. -///
    +/// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// @@ -77,20 +77,14 @@ /// are used to provide statistics about executed requests and timings about /// computation steps. /// -///
    -/// @copydoc CommandLineLoggingTOC -///
    -/// /// @section CommandLineLoggingGeneral General Logging Options ////////////////////////////////////////////////////////////// /// /// @anchor CommandLineLoggingLogFile /// @copydetails triagens::rest::ApplicationServerImpl::logFile -///
    /// /// @anchor CommandLineLoggingLogSeverity /// @copydetails triagens::rest::ApplicationServerImpl::logSeverity -///
    /// /// @anchor CommandLineLoggingLogSyslog /// @copydetails triagens::rest::ApplicationServerImpl::logSyslog @@ -100,34 +94,27 @@ /// /// @anchor CommandLineLoggingLogLevel /// @copydetails triagens::rest::ApplicationServerImpl::logLevel -///
    /// /// @anchor CommandLineLoggingLogLineNumber /// @copydetails triagens::rest::ApplicationServerImpl::logLineNumber -///
    /// /// @anchor CommandLineLoggingLogPrefix /// @copydetails triagens::rest::ApplicationServerImpl::logPrefix -///
    /// /// @anchor CommandLineLoggingLogThread /// @copydetails triagens::rest::ApplicationServerImpl::logThreadId -///
    /// /// @section CommandLineLoggingMachine Maschine Readable Logging //////////////////////////////////////////////////////////////// /// /// @anchor CommandLineLoggingLogApplication /// @copydetails triagens::rest::ApplicationServerImpl::logApplicationName -///
    /// /// @anchor CommandLineLoggingLogFacility /// @copydetails triagens::rest::ApplicationServerImpl::logFacility -///
    /// /// @anchor CommandLineLoggingLogFormat /// @copydetails triagens::rest::ApplicationServerImpl::logFormat -///
    /// /// @anchor CommandLineLoggingLogHostName /// @copydetails triagens::rest::ApplicationServerImpl::logHostName @@ -136,19 +123,15 @@ //////////////////////////////////////////////////////////////////////////////// /// @page CommandLineRandomTOC /// -///
      +///
        ///
      • @ref CommandLineRandomGenerator "random.generator"
      • ///
      • @ref CommandLineRandomGenerator "random.no-seed"
      • -///
    +/// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /// @page CommandLineRandom Command-Line Options for Random Numbers /// -///
    -/// @copydoc CommandLineRandomTOC -///
    -/// /// @anchor CommandLineRandomGenerator /// @copydetails triagens::rest::ApplicationServerImpl::randomGenerator //////////////////////////////////////////////////////////////////////////////// @@ -665,8 +648,6 @@ namespace triagens { /// algorithm. Algorithm 4 is a combination of the blocking random number /// generator and the Mersenne Twister. /// -///
    -/// /// @CMDOPT{--random.no-seed} /// /// By default, the random generator is seeded. Setting this option causes the diff --git a/ApplicationServer/ApplicationServerSchedulerImpl.h b/ApplicationServer/ApplicationServerSchedulerImpl.h index ba847782e0..e688c7b95a 100644 --- a/ApplicationServer/ApplicationServerSchedulerImpl.h +++ b/ApplicationServer/ApplicationServerSchedulerImpl.h @@ -35,32 +35,23 @@ //////////////////////////////////////////////////////////////////////////////// /// @page CommandLineSchedulerTOC /// -///
      +///
        ///
      • @ref CommandLineSchedulerThreads "scheduler.threads"
      • ///
      • @ref CommandLineSchedulerBackend "scheduler.backend"
      • ///
      • @ref CommandLineSchedulerShowIoBackends "show-io-backends"
      • -///
    +/// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /// @page CommandLineScheduler Command-Line Options for Communication /// -///
    -/// @copydoc CommandLineSchedulerTOC -///
    -/// /// @anchor CommandLineSchedulerThreads -/////////////////////////////////////// /// @copydetails triagens::rest::ApplicationServerSchedulerImpl::_nrSchedulerThreads -///
    /// /// @anchor CommandLineSchedulerBackend -/////////////////////////////////////// /// @copydetails triagens::rest::ApplicationServerSchedulerImpl::_backend -///
    /// /// @anchor CommandLineSchedulerShowIoBackends -////////////////////////////////////////////// /// @CMDOPT{--show-io-backends} /// /// If this option is specified, then the server will list available backends diff --git a/Doxygen/Examples.ArangoDB/arangosh-start b/Doxygen/Examples.ArangoDB/arangosh-start index 42f3b356a3..fb691d2a92 100644 --- a/Doxygen/Examples.ArangoDB/arangosh-start +++ b/Doxygen/Examples.ArangoDB/arangosh-start @@ -1,3 +1,4 @@ +> ./arangosh _ __ _ _ __ __ _ _ __ __ _ ___ ___| |__ / _` | '__/ _` | '_ \ / _` |/ _ \/ __| '_ \ diff --git a/Doxygen/arango-html.doxy b/Doxygen/arango-html.doxy index e13d5f3534..95a13f26a8 100644 --- a/Doxygen/arango-html.doxy +++ b/Doxygen/arango-html.doxy @@ -190,13 +190,13 @@ TAB_SIZE = 8 # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. -ALIASES += FUN{1}="\1" -ALIASES += FUN{2}="\1, \2" -ALIASES += FUN{3}="\1, \2, \3" -ALIASES += FUN{4}="\1, \2, \3, \4" -ALIASES += FUN{5}="\1, \2, \3, \4, \5" -ALIASES += FUN{6}="\1, \2, \3, \4, \5, \6" -ALIASES += FUN{7}="\1, \2, \3, \4, \5, \6, \7" +ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
    \1
    @endif" +ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2@latexonly}\vskip 1em@endlatexonly@else
    \1, \2
    @endif" +ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3
    @endif" +ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4
    @endif" +ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4, \5
    @endif" +ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4, \5, \6
    @endif" +ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4, \5, \6, \7
    @endif" ALIASES += FA{1}="\1" ALIASES += FN{1}="\1" ALIASES += VAR{1}="\1" @@ -204,17 +204,21 @@ ALIASES += LIT{1}="\1" ALIASES += CODE{1}="\1" ALIASES += CODE{2}="\1, \2" ALIASES += CODE{3}="\1, \2, \3" -ALIASES += CMDOPT{1}="\1" +ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
    \1
    @endif" ALIASES += CA{1}="\1" ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
    " ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
    @copydoc \1
    @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
    \1 (\2)

    @endif" ALIASES += LATEXBREAK="@latexonly\vskip -0.5em\hskip 1.0em@endlatexonly" +ALIASES += EXTREF{2}="@if LATEX \2 (see @latexonly \url{\1}@endlatexonly)@else\2@endif" +ALIASES += INTREF{2}="@if LATEX \2@else@ref \1 \"\2\"@endif" +ALIASES += SPC=" " # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. diff --git a/Doxygen/arango-latex.doxy b/Doxygen/arango-latex.doxy index b4968ad7d0..8459fdaa76 100644 --- a/Doxygen/arango-latex.doxy +++ b/Doxygen/arango-latex.doxy @@ -190,13 +190,13 @@ TAB_SIZE = 8 # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. -ALIASES += FUN{1}="\1" -ALIASES += FUN{2}="\1, \2" -ALIASES += FUN{3}="\1, \2, \3" -ALIASES += FUN{4}="\1, \2, \3, \4" -ALIASES += FUN{5}="\1, \2, \3, \4, \5" -ALIASES += FUN{6}="\1, \2, \3, \4, \5, \6" -ALIASES += FUN{7}="\1, \2, \3, \4, \5, \6, \7" +ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
    \1
    @endif" +ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2@latexonly}\vskip 1em@endlatexonly@else
    \1, \2
    @endif" +ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3
    @endif" +ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4
    @endif" +ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4, \5
    @endif" +ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4, \5, \6
    @endif" +ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4, \5, \6, \7
    @endif" ALIASES += FA{1}="\1" ALIASES += FN{1}="\1" ALIASES += VAR{1}="\1" @@ -204,17 +204,21 @@ ALIASES += LIT{1}="\1" ALIASES += CODE{1}="\1" ALIASES += CODE{2}="\1, \2" ALIASES += CODE{3}="\1, \2, \3" -ALIASES += CMDOPT{1}="\1" +ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
    \1
    @endif" ALIASES += CA{1}="\1" ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
    " ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
    @copydoc \1
    @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
    \1 (\2)

    @endif" ALIASES += LATEXBREAK="@latexonly\vskip -0.5em\hskip 1.0em@endlatexonly" +ALIASES += EXTREF{2}="@if LATEX \2 (see @latexonly \url{\1}@endlatexonly)@else\2@endif" +ALIASES += INTREF{2}="@if LATEX \2@else@ref \1 \"\2\"@endif" +ALIASES += SPC=" " # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. diff --git a/Doxygen/arango.template b/Doxygen/arango.template index 61c9e57d7e..b74138152c 100644 --- a/Doxygen/arango.template +++ b/Doxygen/arango.template @@ -190,13 +190,13 @@ TAB_SIZE = 8 # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. -ALIASES += FUN{1}="\1" -ALIASES += FUN{2}="\1, \2" -ALIASES += FUN{3}="\1, \2, \3" -ALIASES += FUN{4}="\1, \2, \3, \4" -ALIASES += FUN{5}="\1, \2, \3, \4, \5" -ALIASES += FUN{6}="\1, \2, \3, \4, \5, \6" -ALIASES += FUN{7}="\1, \2, \3, \4, \5, \6, \7" +ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
    \1
    @endif" +ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2@latexonly}\vskip 1em@endlatexonly@else
    \1, \2
    @endif" +ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3
    @endif" +ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4
    @endif" +ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4, \5
    @endif" +ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4, \5, \6
    @endif" +ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4, \5, \6, \7
    @endif" ALIASES += FA{1}="\1" ALIASES += FN{1}="\1" ALIASES += VAR{1}="\1" @@ -204,17 +204,21 @@ ALIASES += LIT{1}="\1" ALIASES += CODE{1}="\1" ALIASES += CODE{2}="\1, \2" ALIASES += CODE{3}="\1, \2, \3" -ALIASES += CMDOPT{1}="\1" +ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
    \1
    @endif" ALIASES += CA{1}="\1" ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
    " ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
    @copydoc \1
    @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
    \1 (\2)

    @endif" ALIASES += LATEXBREAK="@latexonly\vskip -0.5em\hskip 1.0em@endlatexonly" +ALIASES += EXTREF{2}="@if LATEX \2 (see @latexonly \url{\1}@endlatexonly)@else\2@endif" +ALIASES += INTREF{2}="@if LATEX \2@else@ref \1 \"\2\"@endif" +ALIASES += SPC=" " # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. diff --git a/Doxygen/arango.template.in b/Doxygen/arango.template.in index dc20d6e63a..e856b14206 100644 --- a/Doxygen/arango.template.in +++ b/Doxygen/arango.template.in @@ -190,13 +190,13 @@ TAB_SIZE = 8 # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. -ALIASES += FUN{1}="\1" -ALIASES += FUN{2}="\1, \2" -ALIASES += FUN{3}="\1, \2, \3" -ALIASES += FUN{4}="\1, \2, \3, \4" -ALIASES += FUN{5}="\1, \2, \3, \4, \5" -ALIASES += FUN{6}="\1, \2, \3, \4, \5, \6" -ALIASES += FUN{7}="\1, \2, \3, \4, \5, \6, \7" +ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
    \1
    @endif" +ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2@latexonly}\vskip 1em@endlatexonly@else
    \1, \2
    @endif" +ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3
    @endif" +ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4
    @endif" +ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4, \5
    @endif" +ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4, \5, \6
    @endif" +ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}\vskip 1em@endlatexonly@else
    \1, \2, \3, \4, \5, \6, \7
    @endif" ALIASES += FA{1}="\1" ALIASES += FN{1}="\1" ALIASES += VAR{1}="\1" @@ -204,17 +204,21 @@ ALIASES += LIT{1}="\1" ALIASES += CODE{1}="\1" ALIASES += CODE{2}="\1, \2" ALIASES += CODE{3}="\1, \2, \3" -ALIASES += CMDOPT{1}="\1" +ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
    \1
    @endif" ALIASES += CA{1}="\1" ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
    " ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="@PACKAGE_VERSION@" ALIASES += EMBEDTOC{1}="@ifnot LATEX
    @copydoc \1
    @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
    \1 (\2)

    @endif" ALIASES += LATEXBREAK="@latexonly\vskip -0.5em\hskip 1.0em@endlatexonly" +ALIASES += EXTREF{2}="@if LATEX \2 (see @latexonly \url{\1}@endlatexonly)@else\2@endif" +ALIASES += INTREF{2}="@if LATEX \2@else@ref \1 \"\2\"@endif" +ALIASES += SPC=" " # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. diff --git a/Doxygen/latex/header.tex b/Doxygen/latex/header.tex index d50d70a7ca..f23f3bbc66 100644 --- a/Doxygen/latex/header.tex +++ b/Doxygen/latex/header.tex @@ -13,6 +13,7 @@ \usepackage{mathptmx} \usepackage[scaled=.90]{helvet} \usepackage{courier} +\usepackage[hyphens]{url} \usepackage{doxygen} \usepackage{listings} \lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=8,numbers=left } @@ -21,8 +22,9 @@ \let\DoxyVerbInclude=\undefined \renewcommand{\footrulewidth}{0.4pt} \newcommand{\examplecap}{} +\newcommand{\examplesize}{\ttfamily} \lstnewenvironment{DoxyVerbInclude}{% - \lstset{numbers=none,backgroundcolor=\color{lightgray},language=,basicstyle=\ttfamily,breaklines=true,breakatwhitespace=false,caption=\protect\examplecap,captionpos=below} + \lstset{numbers=none,backgroundcolor=\color{lightgray},language=,basicstyle=\protect\examplesize,breaklines=true,breakatwhitespace=false,caption=\protect\examplecap,captionpos=below}% }{% } \definecolor{gray}{gray}{.8} diff --git a/RestServer/ArangoServer.h b/RestServer/ArangoServer.h index e0e4bcd9ec..d18de4abbe 100644 --- a/RestServer/ArangoServer.h +++ b/RestServer/ArangoServer.h @@ -230,9 +230,9 @@ namespace triagens { /// /// @CMDOPT{--server.http-port @CA{address}:@CA{port}} /// -/// Specifies the @CA{port} for HTTP requests by clients. This will bind to the -/// given @CA{address}, which can be a numeric value like @CODE{192.168.1.1} or -/// a name. +/// Specifies the @CA{address} and @CA{port} for HTTP requests by clients. This +/// will bind to the given @CA{address}, which can be a numeric value like +/// @CODE{192.168.1.1} or a name. /// /// @CMDOPT{--port @CA{port}} /// diff --git a/RestServer/command-line-options.dox b/RestServer/command-line-options.dox index 67815d935e..b380d698ae 100644 --- a/RestServer/command-line-options.dox +++ b/RestServer/command-line-options.dox @@ -25,6 +25,126 @@ /// @author Copyright 2012, triAGENS GmbH, Cologne, Germany //////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +/// @page CommandLineTOC +/// +///
      +///
    • @ref CommandLine +///
        +///
      • @ref CommandLineGeneralOptions +///
          +///
        • @ref CommandLineHelp "help"
        • +///
        • @ref CommandLineVersion "version"
        • +///
        • @ref CommandLineConfiguration "configuration"
        • +///
        • @ref CommandLineDaemon "daemon"
        • +///
        • @ref CommandLineSupervisor "supervisor"
        • +///
        • @ref CommandLineUid "uid"
        • +///
        • @ref CommandLineGid "gid"
        • +///
        • @ref CommandLinePidFile "pid-file"
        • +///
        +///
      • +///
      • @ref CommandLineArango +///
          +///
        • @ref CommandLineArangoHttpPort "server.http-port"
        • +///
        • @ref CommandLineArangoAdminPort "server.admin-port"
        • +///
        • @ref CommandLineArangoDirectory "database.directory"
        • +///
        • @ref CommandLineArangoMaximalJournalSize "database.maximal-journal-size"
        • +///
        • @ref CommandLineArangoRemoveOnDrop "database.remove-on-drop"
        • +///
        +///
      • +///
      • @ref CommandLineLoggingInc +/// @copydetails CommandLineLoggingTOC +///
      • +///
      • @ref CommandLineSchedulerInc +/// @copydetails CommandLineSchedulerTOC +///
      • +///
      • @ref CommandLineRandomInc +/// @copydetails CommandLineRandomTOC +///
      • +///
      +///
    • +///
    +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +/// @page CommandLine Command-Line Options +/// +/// @EMBEDTOC{CommandLineTOC} +/// +/// @section CommandLineGeneralOptions General Options +////////////////////////////////////////////////////// +/// +/// @anchor CommandLineHelp +/// @copydetails triagens::rest::ApplicationServerImpl::options +/// +/// @anchor CommandLineVersion +/// @copydetails triagens::rest::ApplicationServerImpl::version +/// +/// @anchor CommandLineConfiguration +/// @copydetails triagens::rest::ApplicationServerImpl::initFile +/// +/// @anchor CommandLineDaemon +/// @CMDOPT{--daemon} +/// +/// Runs the server as a daemon (as a background process). This parameter can +/// only be set if the pid (process id) file is specified. That is, unless a +/// value to the parameter pid-file is given, then the server will report an +/// error and exit. +/// +/// @anchor CommandLineSupervisor +/// @CMDOPT{--supervisor} +/// +/// Executes the server in supervisor mode. In the event that the server +/// unexpectedly terminates due to an internal error, the supervisor will +/// automatically restart the server. Setting this flag automatically implies +/// that the server will run as a daemon. Note that, as with the daemon flag, +/// this flag requires that the pid-file parameter will set. +/// +/// @anchor CommandLineUid +/// @copydetails triagens::rest::ApplicationServerImpl::uid +/// +/// @anchor CommandLineGid +/// @copydetails triagens::rest::ApplicationServerImpl::gid +/// +/// @anchor CommandLinePidFile +/// @copydetails triagens::rest::AnyServer::_pidFile +/// +/// @section CommandLineArango Command-Line Options for the ArangoDB +//////////////////////////////////////////////////////////////////// +/// +/// @anchor CommandLineArangoHttpPort +/// @copydetails triagens::arango::ArangoServer::_httpPort +/// +/// @anchor CommandLineArangoAdminPort +/// @copydetails triagens::arango::ArangoServer::_adminPort +/// +/// @anchor CommandLineArangoDirectory +/// @copydetails triagens::arango::ArangoServer::_databasePath +/// +/// @anchor CommandLineArangoMaximalJournalSize +/// @copydetails triagens::arango::ArangoServer::_defaultMaximalSize +/// +/// @anchor CommandLineArangoRemoveOnDrop +/// @copydetails triagens::arango::ArangoServer::_removeOnDrop +/// +/// @section CommandLineSchedulerInc Command-Line Options for Communication +/////////////////////////////////////////////////////////////////////////// +/// +/// @copydetails CommandLineScheduler +/// +/// @section CommandLineLoggingInc Command-Line Options for Logging +/////////////////////////////////////////////////////////////////// +/// +/// @copydetails CommandLineLogging +/// +/// @section CommandLineRandomInc Command-Line Options for Random Numbers +///////////////////////////////////////////////////////////////////////// +/// +/// @copydetails CommandLineRandom +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// + // Local Variables: // mode: c++ // mode: outline-minor diff --git a/RestServer/ref-manual.dox b/RestServer/ref-manual.dox index 2696bd58a3..eb5fb3f556 100644 --- a/RestServer/ref-manual.dox +++ b/RestServer/ref-manual.dox @@ -121,140 +121,6 @@ /// @endif //////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////// -/// @page CommandLineSubTOC -/// -///
      -///
    • @ref CommandLineArango
    • -///
    • @ref CommandLineScheduler
    • -///
    • @ref CommandLineLogging
    • -///
    • @ref CommandLineRandom
    • -///
    -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -/// @page CommandLineTOC -/// -///
      -///
    • @ref CommandLineHelp "help"
    • -///
    • @ref CommandLineVersion "version"
    • -///
    • @ref CommandLineConfiguration "configuration"
    • -///
    • @ref CommandLineDaemon "daemon"
    • -///
    • @ref CommandLineSupervisor "supervisor"
    • -///
    • @ref CommandLineUid "uid"
    • -///
    • @ref CommandLineGid "gid"
    • -///
    • @ref CommandLinePidFile "pid-file"
    • -///
    -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -/// @page CommandLine Command-Line Options -/// -///
    -/// @copydoc CommandLineTOC -///
    -/// -/// @section GeneralOptions General Options -/////////////////////////////////////////// -/// -/// @anchor CommandLineHelp -/////////////////////////// -/// @copydetails triagens::rest::ApplicationServerImpl::options -///
    -/// -/// @anchor CommandLineVersion -////////////////////////////// -/// @copydetails triagens::rest::ApplicationServerImpl::version -///
    -/// -/// @anchor CommandLineConfiguration -//////////////////////////////////// -/// @copydetails triagens::rest::ApplicationServerImpl::initFile -///
    -/// -/// @anchor CommandLineDaemon -///////////////////////////// -/// @CMDOPT{--daemon} -/// -/// Runs the server as a daemon (as a background process). This parameter can -/// only be set if the pid (process id) file is specified. That is, unless a -/// value to the parameter pid-file is given, then the server will report an -/// error and exit. -/// -///
    -/// -/// @anchor CommandLineSupervisor -///////////////////////////////// -/// @CMDOPT{--supervisor} -/// -/// Executes the server in supervisor mode. In the event that the server -/// unexpectedly terminates due to an internal error, the supervisor will -/// automatically restart the server. Setting this flag automatically implies -/// that the server will run as a daemon. Note that, as with the daemon flag, -/// this flag requires that the pid-file parameter will set. -/// -///
    -/// -/// @anchor CommandLineUid -////////////////////////// -/// @copydetails triagens::rest::ApplicationServerImpl::uid -///
    -/// -/// @anchor CommandLineGid -////////////////////////// -/// @copydetails triagens::rest::ApplicationServerImpl::gid -///
    -/// -/// @anchor CommandLinePidFile -////////////////////////////// -/// @copydetails triagens::rest::AnyServer::_pidFile -///
    -/// -/// Next steps: -/////////////// -/// -/// @copydetails CommandLineSubTOC -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -/// @page CommandLineArangoTOC -/// -///
      -///
    • @ref CommandLineArangoHttpPort "server.http-port"
    • -///
    • @ref CommandLineArangoAdminPort "server.admin-port"
    • -///
    • @ref CommandLineArangoDirectory "database.directory"
    • -///
    • @ref CommandLineArangoMaximalJournalSize "database.maximal-journal-size"
    • -///
    • @ref CommandLineArangoRemoveOnDrop "database.remove-on-drop"
    • -///
    -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -/// @page CommandLineArango Command-Line Options for the ArangoDB -/// -///
    -/// @copydoc CommandLineArangoTOC -///
    -/// -/// @anchor CommandLineArangoHttpPort -/// @copydetails triagens::arango::ArangoServer::_httpPort -///
    -/// -/// @anchor CommandLineArangoAdminPort -/// @copydetails triagens::arango::ArangoServer::_adminPort -///
    -/// -/// @anchor CommandLineArangoDirectory -/// @copydetails triagens::arango::ArangoServer::_databasePath -///
    -/// -/// @anchor CommandLineArangoMaximalJournalSize -/// @copydetails triagens::arango::ArangoServer::_defaultMaximalSize -///
    -/// -/// @anchor CommandLineArangoRemoveOnDrop -/// @copydetails triagens::arango::ArangoServer::_removeOnDrop -//////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// /// @page DBAdminTOC /// diff --git a/RestServer/simple-queries.dox b/RestServer/simple-queries.dox index dd09f52851..bf91409a9f 100644 --- a/RestServer/simple-queries.dox +++ b/RestServer/simple-queries.dox @@ -28,84 +28,84 @@ //////////////////////////////////////////////////////////////////////////////// /// @page SimpleQueriesTOC /// -///
      -///
    1. @ref SimpleQueriesQueries -///
        -///
      1. @ref SimpleQueryDocument "collection.document(document-reference)"
      2. -///
      3. @ref SimpleQueryAll "collection.all()"
      4. -///
      5. @ref SimpleQueryByExample "collection.byExample(example)"
      6. -///
      7. @ref SimpleQueryFirstExample "collection.firstExample(example)"
      8. -///
      9. @ref SimpleQueryCollectionCount "collection.count()"
      10. -///
      11. @ref SimpleQueryToArray "collection.toArray()"
      12. -///
      +///
        +///
      • @ref SimpleQueries +///
          +///
        • @ref SimpleQueriesQueries +///
            +///
          • @ref SimpleQueryDocument "collection.document"
          • +///
          • @ref SimpleQueryAll "collection.all"
          • +///
          • @ref SimpleQueryByExample "collection.byExample"
          • +///
          • @ref SimpleQueryFirstExample "collection.firstExample"
          • +///
          • @ref SimpleQueryCollectionCount "collection.count"
          • +///
          • @ref SimpleQueryToArray "collection.toArray"
          • +///
          +///
        • +///
        • @ref SimpleQueriesGeoQueries +///
            +///
          • @ref SimpleQueryNear "collection.near"
          • +///
          • @ref SimpleQueryWithin "collection.within"
          • +///
          • @ref SimpleQueryGeo "collection.geo"
          • +///
          +///
        • +///
        • @ref SimpleQueriesEdgesQueries +///
            +///
          • @ref SimpleQueryEdges "edges-collection.edges"
          • +///
          • @ref SimpleQueryInEdges "edges-collection.inEdges"
          • +///
          • @ref SimpleQueryOutEdges "edges-collection.outEdges"
          • +///
          +///
        • +///
        • @ref SimpleQueriesPagination +///
            +///
          • @ref SimpleQueryLimit "query.limit"
          • +///
          • @ref SimpleQuerySkip "query.skip"
          • +///
          +///
        • +///
        • @ref SimpleQueriesCursor +///
            +///
          • @ref SimpleQueryHasNext "query.hasNext"
          • +///
          • @ref SimpleQueryNext "query.next"
          • +///
          • @ref SimpleQueryDispose "query.dispose"
          • +///
          • @ref SimpleQueryCount "query.count"
          • +///
          +///
        • +///
        ///
      • -///
      • @ref SimpleQueriesGeoQueries -///
          -///
        1. @ref SimpleQueryNear "collection.near(latitude, longitude)"
        2. -///
        3. @ref SimpleQueryWithin "collection.within(latitude, longitude)"
        4. -///
        5. @ref SimpleQueryGeo "collection.geo(location)"
        6. -///
        -///
      • -///
      • @ref SimpleQueriesEdgesQueries -///
          -///
        1. @ref SimpleQueryEdges "edges-collection.edges(vertex)"
        2. -///
        3. @ref SimpleQueryInEdges "edges-collection.inEdges(vertex)"
        4. -///
        5. @ref SimpleQueryOutEdges "edges-collection.outEdges(vertex)"
        6. -///
        -///
      • -///
      • @ref SimpleQueriesPagination -///
          -///
        1. @ref SimpleQueryLimit "query.limit(limit)"
        2. -///
        3. @ref SimpleQuerySkip "query.skip(skip)"
        4. -///
        -///
      • -///
      • @ref SimpleQueriesSequentialAccess -///
          -///
        1. @ref SimpleQueryHasNext "query.hasNext()"
        2. -///
        3. @ref SimpleQueryNext "query.next()"
        4. -///
        5. @ref SimpleQueryCount "query.count()"
        6. -///
        -///
      • -///
    +/// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /// @page SimpleQueries Simple Queries /// -/// Simple queries can be used if the query condition is straight forward -/// simple, i. e., a document reference, all documents, a query-by-example, or a -/// simple geo query. In a simple query you can specify exactly one collection -/// and one condition. -/// -///
    -/// @copydoc SimpleQueriesTOC -///
    +/// Simple queries can be used if the query condition is straight forward, +/// i. e., a document reference, all documents, a query-by-example, or a simple +/// geo query. In a simple query you can specify exactly one collection and one +/// query criteria. In the following sections we describe the JavaScript shell +/// interface for simple queries, which you can use within the ArangoDB shell +/// and within actions and transactions. /// /// If a query returns a cursor, then you can use @FN{hasNext} and @FN{next} to /// iterate over the result set or @FN{toArray} to convert it to an array. /// +/// @EMBEDTOC{ SimpleQueriesTOC} +/// /// @section SimpleQueriesQueries Queries ///////////////////////////////////////// /// /// @anchor SimpleQueryDocument /// @copydetails JS_DocumentVocbaseCol -///
    /// /// @anchor SimpleQueryAll /// @copydetails JSF_ArangoCollection_prototype_all -///
    /// /// @anchor SimpleQueryByExample /// @copydetails JSF_ArangoCollection_prototype_byExample -///
    /// /// @anchor SimpleQueryFirstExample /// @copydetails JSF_ArangoCollection_prototype_firstExample -///
    /// /// @anchor SimpleQueryCollectionCount /// @copydetails JS_CountVocbaseCol -///
    /// /// @anchor SimpleQueryToArray /// @copydetails JSF_ArangoCollection_prototype_toArray @@ -113,31 +113,27 @@ /// @section SimpleQueriesGeoQueries Geo Queries //////////////////////////////////////////////// /// -/// The ArangoDB allows to selects documents based on geographic -/// coordinates. In order for this to work, a geo-spatial index must be defined. -/// This index will use a very elaborate algorithm to lookup neighbours that is -/// a magnitude faster than a simple R* index. +/// The ArangoDB allows to selects documents based on geographic coordinates. In +/// order for this to work, a geo-spatial index must be defined. This index +/// will use a very elaborate algorithm to lookup neighbors that is a magnitude +/// faster than a simple R* index. /// /// In general a geo coordinate is a pair of latitude and longitude. This can /// either be an list with two elements like @CODE{[ -10\, +30 ]} (latitude -/// first, followed by longitude) or an object like @CODE{{ lon: -10\, lat: +30 -/// }}. In order to find all documents within a given radius around a -/// coordinate use the @FN{within} operator. In order to find all -/// documents near a given document use the @FN{near} operator. +/// first, followed by longitude) or an object like @CODE{{ lon: -10\, lat: +30}}. +/// In order to find all documents within a given radius around a coordinate +/// use the @FN{within} operator. In order to find all documents near a given +/// document use the @FN{near} operator. /// /// It is possible to define more than one geo-spatial index per collection. In /// this case you must give a hint using the @FN{geo} operator which of indexes /// should be used in a query. /// -///
    -/// /// @anchor SimpleQueryNear /// @copydetails JSF_ArangoCollection_prototype_near -///
    /// /// @anchor SimpleQueryWithin /// @copydetails JSF_ArangoCollection_prototype_within -///
    /// /// @anchor SimpleQueryGeo /// @copydetails JSF_ArangoCollection_prototype_geo @@ -147,11 +143,9 @@ /// /// @anchor SimpleQueryEdges /// @copydetails JS_EdgesQuery -///
    /// /// @anchor SimpleQueryInEdges /// @copydetails JS_InEdgesQuery -///
    /// /// @anchor SimpleQueryOutEdges /// @copydetails JS_OutEdgesQuery @@ -174,21 +168,21 @@ /// /// @anchor SimpleQueryLimit /// @copydetails JSF_SimpleQuery_prototype_limit -///
    /// /// @anchor SimpleQuerySkip /// @copydetails JSF_SimpleQuery_prototype_skip /// -/// @section SimpleQueriesSequentialAccess Sequential Access -//////////////////////////////////////////////////////////// +/// @section SimpleQueriesCursor Sequential Access and Cursors +////////////////////////////////////////////////////////////// /// /// @anchor SimpleQueryHasNext /// @copydetails JSF_SimpleQuery_prototype_hasNext -///
    /// /// @anchor SimpleQueryNext /// @copydetails JSF_SimpleQuery_prototype_next -///
    +/// +/// @anchor SimpleQueryDispose +/// @copydetails JSF_SimpleQuery_prototype_dispose /// /// @anchor SimpleQueryCount /// @copydetails JSF_SimpleQuery_prototype_count diff --git a/RestServer/user-manual.dox b/RestServer/user-manual.dox index da13015cd6..8dd8a8430f 100644 --- a/RestServer/user-manual.dox +++ b/RestServer/user-manual.dox @@ -31,14 +31,19 @@ /// @if LATEX ///
      ///
    • @ref UserManualBasics
    • +///
    • @ref SimpleQueries
    • ///
    • ArangoQueryLanguage
    • +/// @latexonly\appendix@endlatexonly +///
    • @ref CommandLine
    • ///
    • @ref Glossary
    • ///
    /// @else /// @copydetails UserManualBasicsTOC +/// @copydetails SimpleQueriesTOC ///
      ///
    • Arango Query Language
    • ///
    +/// @copydetails CommandLineTOC /// @endif //////////////////////////////////////////////////////////////////////////////// @@ -54,6 +59,7 @@ ///
  • @ref UserManualServerStartStopOptions
  • /// /// +///
  • @ref UserManualServerFE
  • ///
  • @ref UserManualShellStartStop ///
      ///
    • @ref UserManualShellStartStopOptions
    • @@ -97,21 +103,22 @@ /// For more in-depth information /// ///
        -///
      • read more on the -/// design goals of ArangoDB
      • -///
      • watch the video - Martin Schoenert, +///
      • read more on the@SPC@EXTREF{http://www.arangodb.org/2012/03/07/arangodbs-design-objectives,design goals of ArangoDB}
      • +///
      • @EXTREF{http://vimeo.com/36411892,watch the video}@SPC- Martin Schoenert, /// architect of ArangoDB, gives an introduction of what the ArangoDB project /// is about.
      • -///
      • or give it a @ref InstallManual "try".
      • +///
      • or give it a@SPC@INTREF{InstallManual,try}.
      • ///
      /// -/// The ArangoDB database groups documents into collections. Each collection can -/// be accessed using queries. For simple queries involving just one collection -/// and one search criteria, you can use a simple interface from within -/// JavaScript code or other languages supported by an API. This interface -/// allows you to select documents from one collection based on simple search -/// criteria. For more complex queries, you can use the Arango Query Language, -/// which is an evolution of SQL resp. UNQL for the NoSQL world. +/// The ArangoDB database groups documents into collections. Collections and +/// documents can be accessed using queries. For simple queries involving just +/// one collection and one search criteria, you can use a simple interface from +/// within JavaScript code or other languages supported by an API. This +/// interface allows you to select documents from one collection based on just +/// one search criteria. For more complex queries, you can use the Arango Query +/// Language (AQL), which is an evolution of SQL resp. UNQL for the NoSQL +/// world. AQL allows you to use more then one collection, similar to joins from +/// SQL, while still retaining the document and list structures like UNQL. /// /// The ArangoDB database packages comes with various programs: /// @@ -131,8 +138,8 @@ /////////////////////////////////////////////////////////////////// /// /// The ArangoDB database server has two modes of operation: as server, where it -/// will answer to client requests and an emergency console, where you can -/// access the database directly. The latter should - as the name suggests - +/// will answer to client requests and an emergency console, in which you can +/// access the database directly. The latter - as the name suggests - should /// only be used in case of an emergency, for example, a corrupted /// collection. Using the emergency console allows you to issue all commands /// normally available in actions and transactions. @@ -148,7 +155,7 @@ /// UserManualServerStartStopOptions "below" for a list of frequently used /// options, see @ref CommandLine "here" for a complete list. /// -/// @verbinclude option-database-directory +/// @TINYEXAMPLE{option-database-directory,starting the server} /// /// After starting the server, point your favorite browser to: /// @@ -188,6 +195,26 @@ /// /// Runs the server as a daemon (as a background process). /// +/// @section UserManualServerFE ArangoDB's Front-End +//////////////////////////////////////////////////// +/// +/// The ArangoDB server has a graphical front-end, which allows you to inspect +/// the current state of the server. You can read the front-end using the +/// following URL: +/// +/// @LIT{http://localhost:8529/_admin} +/// +/// Unless you have loaded an application into the ArangoDB server which remaps +/// the paths, the front-end will also be available under +/// @LIT{http://localhost:8529/}. +/// +/// @htmlonly ArangoDB Fron-End@endhtmlonly +/// @latexonly\includegraphics[width=12cm]{images/fe1.png}@endlatexonly +/// +/// The front-end allows you the browser through the collections and +/// documents. If you need to administrate the database, please use +/// the ArgangoDB shell described in the next section. +/// /// @section UserManualShellStartStop Starting the ArangoDB Shell ///////////////////////////////////////////////////////////////// /// @@ -196,7 +223,7 @@ /// any arguments, the ArangoDB shell will try to contact the server /// on port 8529 on the localhost. /// -/// @verbinclude arangosh-start +/// @TINYEXAMPLE{arangosh-start,starting the shell} /// /// The shell will print its own version number and, if successfully connected /// to a server, the version number of the ArangoDB server. @@ -206,7 +233,7 @@ /// /// Use @LIT{--help} to get a list of command-line options: /// -/// @verbinclude arangosh-options +/// @TINYEXAMPLE{arangosh-options,shell options} /// /// @section UserManualServerStartStopDebug Starting the ArangoDB Emergency Console /////////////////////////////////////////////////////////////////////////////////// @@ -217,7 +244,7 @@ /// @note Never start the emergency console for a database which also has a /// server attached to it. In general the ArangoDB shell is what you want. /// -/// @verbinclude start-emergency-console +/// @EXAMPLE{start-emergency-console,emergency console} //////////////////////////////////////////////////////////////////////////////// // Local Variables: diff --git a/js/actions/system/api-system.js b/js/actions/system/api-system.js index 9aa2e542d3..26d2e084c2 100644 --- a/js/actions/system/api-system.js +++ b/js/actions/system/api-system.js @@ -40,25 +40,33 @@ var actions = require("actions"); /// @brief returns system status information for the server //////////////////////////////////////////////////////////////////////////////// +function AdminRedirect (req, res) { + var dest = "/_admin/html/index.html"; + + res.responseCode = actions.HTTP_MOVED_PERMANENTLY; + res.contentType = "text/html"; + + res.body = "Moved

      Moved

      This page has moved to " + + dest + + ".

      "; + + res.headers = { location : dest }; +} + actions.defineHttp({ url : "", context : "admin", prefix : false, + callback : AdminRedirect +}); - callback : function (req, res) { - var dest = "/_admin/html/index.html"; - - res.responseCode = actions.HTTP_MOVED_PERMANENTLY; - res.contentType = "text/html"; - - res.body = "Moved

      Moved

      This page has moved to " - + dest - + ".

      "; - - res.headers = { location : dest }; - } +actions.defineHttp({ + url : "_admin", + context : "admin", + prefix : false, + callback : AdminRedirect }); //////////////////////////////////////////////////////////////////////////////// diff --git a/js/common/modules/simple-query-basics.js b/js/common/modules/simple-query-basics.js index ecb2debab8..0bdfbe4324 100644 --- a/js/common/modules/simple-query-basics.js +++ b/js/common/modules/simple-query-basics.js @@ -93,8 +93,8 @@ ArangoEdgesCollection.prototype.all = ArangoCollection.prototype.all; /// /// Limits the result to @FA{limit} documents instead of the default 100. /// -/// @note @FA{limit} can be more than 100, this will raise the default -/// limit. +/// @note Unlike with multiple explicit limits, @FA{limit} will raise +/// the implicit default limit imposed by @FN{within}. /// /// @FUN{@FA{collection}.near(@FA{latitude}, @FA{longitude}).distance()} //////////////////////////////////////////////////////////////////////// @@ -679,7 +679,7 @@ SimpleQuery.prototype.toArray = function () { //////////////////////////////////////////////////////////////////////////////// /// @brief counts the number of documents /// -/// @FUN{count()} +/// @FUN{@FA{cursor}.count()} /// /// The @FN{count} operator counts the number of document in the result set and /// returns that number. The @FN{count} operator ignores any limits and returns @@ -688,7 +688,7 @@ SimpleQuery.prototype.toArray = function () { /// @note Not all simple queries support counting. In this case @LIT{null} is /// returned. /// -/// @FUN{count(@LIT{true})} +/// @FUN{@FA{cursor}.count(@LIT{true})} /// /// If the result set was limited by the @FN{limit} operator or documents were /// skiped using the @FN{skip} operator, the @FN{count} operator with argument @@ -723,7 +723,7 @@ SimpleQuery.prototype.count = function (applyPagination) { //////////////////////////////////////////////////////////////////////////////// /// @brief checks if the cursor is exhausted /// -/// @FUN{hasNext()} +/// @FUN{@FA{cursor}.hasNext()} /// /// The @FN{hasNext} operator returns @LIT{true}, then the cursor still has /// documents. In this case the next document can be accessed using the @@ -743,7 +743,7 @@ SimpleQuery.prototype.hasNext = function () { //////////////////////////////////////////////////////////////////////////////// /// @brief returns the next result document /// -/// @FUN{next()} +/// @FUN{@FA{cursor}.next()} /// /// If the @FN{hasNext} operator returns @LIT{true}, then the underlying /// cursor of the simple query still has documents. In this case the @@ -765,7 +765,7 @@ SimpleQuery.prototype.next = function() { //////////////////////////////////////////////////////////////////////////////// /// @brief disposes the result /// -/// @FUN{dispose()} +/// @FUN{@FA{cursor}.dispose()} /// /// If you are no longer interested in any further results, you should call /// @FN{dispose} in order to free any resources associated with the query. diff --git a/js/server/modules/actions.js b/js/server/modules/actions.js index 2da36297c6..7baeba55a5 100644 --- a/js/server/modules/actions.js +++ b/js/server/modules/actions.js @@ -109,7 +109,7 @@ function DefineHttp (options) { var contexts = options.context; var callback = options.callback; var parameters = options.parameters; - var prefix = options.prefix || false; + var prefix = true; var userContext = false; if (! contexts) { @@ -140,6 +140,10 @@ function DefineHttp (options) { return; } + if (options.hasOwnProperty("prefix")) { + prefix = options.prefix; + } + var parameter = { parameters : parameters, prefix : prefix }; // console.debug("callback: %s", callback); From 56c53e5741ed0107e4ccd9f0cd59b4163131ab79 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Mon, 14 May 2012 21:44:29 +0200 Subject: [PATCH 23/29] doc user-manual --- Doxygen/Examples.Durham/shell-edge-edges | 10 ++ Doxygen/Examples.Durham/shell-edge-in-edges | 13 ++ Doxygen/Examples.Durham/shell-edge-out-edges | 13 ++ ...hell_read-document => shell-read-document} | 0 ...-handle => shell-read-document-bad-handle} | 0 ...ot-found => shell-read-document-not-found} | 0 Doxygen/Examples.Durham/shell_edge-edges | 2 - Doxygen/Examples.Durham/shell_edge-in-edges | 4 - Doxygen/Examples.Durham/shell_edge-out-edges | 4 - Doxygen/Scripts/tex2tex.py | 11 +- Doxygen/arango-html.doxy | 16 +- Doxygen/arango-latex.doxy | 17 +- Doxygen/arango.template | 16 +- Doxygen/arango.template.in | 16 +- Doxygen/latex/header.tex | 2 +- Makefile.in | 145 ++++++++---------- RestServer/aql.dox | 59 +++++-- RestServer/simple-queries.dox | 7 +- RestServer/user-manual.dox | 16 +- V8/v8-query.cpp | 13 +- V8/v8-vocbase.cpp | 28 ++-- js/common/modules/simple-query-basics.js | 69 ++++++--- js/server/modules/simple-query.js | 19 +-- 23 files changed, 274 insertions(+), 206 deletions(-) create mode 100644 Doxygen/Examples.Durham/shell-edge-edges create mode 100644 Doxygen/Examples.Durham/shell-edge-in-edges create mode 100644 Doxygen/Examples.Durham/shell-edge-out-edges rename Doxygen/Examples.Durham/{shell_read-document => shell-read-document} (100%) rename Doxygen/Examples.Durham/{shell_read-document-bad-handle => shell-read-document-bad-handle} (100%) rename Doxygen/Examples.Durham/{shell_read-document-not-found => shell-read-document-not-found} (100%) delete mode 100644 Doxygen/Examples.Durham/shell_edge-edges delete mode 100644 Doxygen/Examples.Durham/shell_edge-in-edges delete mode 100644 Doxygen/Examples.Durham/shell_edge-out-edges diff --git a/Doxygen/Examples.Durham/shell-edge-edges b/Doxygen/Examples.Durham/shell-edge-edges new file mode 100644 index 0000000000..445e7c528b --- /dev/null +++ b/Doxygen/Examples.Durham/shell-edge-edges @@ -0,0 +1,10 @@ +arango> edges.relation.edges("86294/1593622"); +[ + { + "_id" : "1659158/3100950", + "_rev" : 3100950, + "_from" : "86294/1528086", + "_to" : "86294/1593622", + "label" : "knows" + } +] diff --git a/Doxygen/Examples.Durham/shell-edge-in-edges b/Doxygen/Examples.Durham/shell-edge-in-edges new file mode 100644 index 0000000000..f6b3b9226d --- /dev/null +++ b/Doxygen/Examples.Durham/shell-edge-in-edges @@ -0,0 +1,13 @@ +arango> edges.relation.inEdges("86294/1528086"); +[ ] +arango> edges.relation.inEdges("86294/1593622"); +[ + { + "_id" : "1659158/3100950", + "_rev" : 3100950, + "_from" : "86294/1528086", + "_to" : "86294/1593622", + "label" : + "knows" + } +] diff --git a/Doxygen/Examples.Durham/shell-edge-out-edges b/Doxygen/Examples.Durham/shell-edge-out-edges new file mode 100644 index 0000000000..5663f994a6 --- /dev/null +++ b/Doxygen/Examples.Durham/shell-edge-out-edges @@ -0,0 +1,13 @@ +arango> edges.relation.outEdges("86294/1528086"); +[ + { + "_id" : "1659158/3100950", + "_rev" : 3100950, + "_from" : "86294/1528086", + "_to" : "86294/1593622", + "label" : + "knows" + } +] +arango> edges.relation.outEdges("86294/1593622"); +[ ] diff --git a/Doxygen/Examples.Durham/shell_read-document b/Doxygen/Examples.Durham/shell-read-document similarity index 100% rename from Doxygen/Examples.Durham/shell_read-document rename to Doxygen/Examples.Durham/shell-read-document diff --git a/Doxygen/Examples.Durham/shell_read-document-bad-handle b/Doxygen/Examples.Durham/shell-read-document-bad-handle similarity index 100% rename from Doxygen/Examples.Durham/shell_read-document-bad-handle rename to Doxygen/Examples.Durham/shell-read-document-bad-handle diff --git a/Doxygen/Examples.Durham/shell_read-document-not-found b/Doxygen/Examples.Durham/shell-read-document-not-found similarity index 100% rename from Doxygen/Examples.Durham/shell_read-document-not-found rename to Doxygen/Examples.Durham/shell-read-document-not-found diff --git a/Doxygen/Examples.Durham/shell_edge-edges b/Doxygen/Examples.Durham/shell_edge-edges deleted file mode 100644 index 804b2a0196..0000000000 --- a/Doxygen/Examples.Durham/shell_edge-edges +++ /dev/null @@ -1,2 +0,0 @@ -arango> edges.relation.edges("86294/1593622"); -[{ "_id" : "1659158/3100950", "_rev" : 3100950, "_from" : "86294/1528086", "_to" : "86294/1593622", "label" : "knows" }] diff --git a/Doxygen/Examples.Durham/shell_edge-in-edges b/Doxygen/Examples.Durham/shell_edge-in-edges deleted file mode 100644 index 2aa598fb08..0000000000 --- a/Doxygen/Examples.Durham/shell_edge-in-edges +++ /dev/null @@ -1,4 +0,0 @@ -arango> edges.relation.inEdges("86294/1528086"); -[ ] -arango> edges.relation.inEdges("86294/1593622"); -[{ "_id" : "1659158/3100950", "_rev" : 3100950, "_from" : "86294/1528086", "_to" : "86294/1593622", "label" : "knows" }] diff --git a/Doxygen/Examples.Durham/shell_edge-out-edges b/Doxygen/Examples.Durham/shell_edge-out-edges deleted file mode 100644 index 01e45de2ab..0000000000 --- a/Doxygen/Examples.Durham/shell_edge-out-edges +++ /dev/null @@ -1,4 +0,0 @@ -arango> edges.relation.outEdges("86294/1528086"); -[{ "_id" : "1659158/3100950", "_rev" : 3100950, "_from" : "86294/1528086", "_to" : "86294/1593622", "label" : "knows" }] -arango> edges.relation.outEdges("86294/1593622"); -[ ] diff --git a/Doxygen/Scripts/tex2tex.py b/Doxygen/Scripts/tex2tex.py index 3a978d739d..d7b7bde3f7 100644 --- a/Doxygen/Scripts/tex2tex.py +++ b/Doxygen/Scripts/tex2tex.py @@ -46,6 +46,7 @@ DEBUG = False ################################################################################ r1 = re.compile(r'\\item \\doxyref{(.*)}{p.}{(.*)} *') +r2 = re.compile(r' *\\appendix *') f = open(file_name, "r") @@ -67,7 +68,15 @@ for line in f: titel = m.group(1) inc = m.group(2) - print "\\chapter{%s}\\input{%s}" % (titel, inc) + print "\\chapter{%s}\\label{%s}\\input{%s}" % (titel, inc, inc) + + continue + #endif + + m = r2.match(line) + + if m: + print "\\appendix" #endif #endif #endfor diff --git a/Doxygen/arango-html.doxy b/Doxygen/arango-html.doxy index 05f7af1e7f..a4b170593b 100644 --- a/Doxygen/arango-html.doxy +++ b/Doxygen/arango-html.doxy @@ -190,13 +190,13 @@ TAB_SIZE = 8 # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. -ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
      \1
      @endif" -ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2@latexonly}\vskip 1em@endlatexonly@else
      \1, \2
      @endif" -ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3
      @endif" -ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4
      @endif" -ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4, \5
      @endif" -ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4, \5, \6
      @endif" -ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4, \5, \6, \7
      @endif" +ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1@latexonly}}\vskip 0.7em@endlatexonly@else
      \1
      @endif" +ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2
      @endif" +ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3
      @endif" +ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4
      @endif" +ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4, \5
      @endif" +ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4, \5, \6
      @endif" +ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4, \5, \6, \7
      @endif" ALIASES += FA{1}="\1" ALIASES += FN{1}="\1" ALIASES += VAR{1}="\1" @@ -204,7 +204,7 @@ ALIASES += LIT{1}="\1" ALIASES += CODE{1}="\1" ALIASES += CODE{2}="\1, \2" ALIASES += CODE{3}="\1, \2, \3" -ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
      \1
      @endif" +ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1@latexonly}}\vskip 0.7em@endlatexonly@else
      \1
      @endif" ALIASES += CA{1}="\1" ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" diff --git a/Doxygen/arango-latex.doxy b/Doxygen/arango-latex.doxy index 8459fdaa76..18c84f6e10 100644 --- a/Doxygen/arango-latex.doxy +++ b/Doxygen/arango-latex.doxy @@ -190,13 +190,13 @@ TAB_SIZE = 8 # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. -ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
      \1
      @endif" -ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2@latexonly}\vskip 1em@endlatexonly@else
      \1, \2
      @endif" -ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3
      @endif" -ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4
      @endif" -ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4, \5
      @endif" -ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4, \5, \6
      @endif" -ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4, \5, \6, \7
      @endif" +ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1@latexonly}}\vskip 0.7em@endlatexonly@else
      \1
      @endif" +ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2
      @endif" +ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3
      @endif" +ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4
      @endif" +ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4, \5
      @endif" +ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4, \5, \6
      @endif" +ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4, \5, \6, \7
      @endif" ALIASES += FA{1}="\1" ALIASES += FN{1}="\1" ALIASES += VAR{1}="\1" @@ -204,7 +204,7 @@ ALIASES += LIT{1}="\1" ALIASES += CODE{1}="\1" ALIASES += CODE{2}="\1, \2" ALIASES += CODE{3}="\1, \2, \3" -ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
      \1
      @endif" +ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1@latexonly}}\vskip 0.7em@endlatexonly@else
      \1
      @endif" ALIASES += CA{1}="\1" ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" @@ -702,6 +702,7 @@ EXCLUDE_SYMBOLS = # the \include command). EXAMPLE_PATH = \ + ./Doxygen/Examples.Ahuacatl \ ./Doxygen/Examples.ArangoDB \ ./Doxygen/Examples.Durham \ ./Doxygen/Examples.Fyn \ diff --git a/Doxygen/arango.template b/Doxygen/arango.template index c2ccf15b8a..9a73ee692a 100644 --- a/Doxygen/arango.template +++ b/Doxygen/arango.template @@ -190,13 +190,13 @@ TAB_SIZE = 8 # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. -ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
      \1
      @endif" -ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2@latexonly}\vskip 1em@endlatexonly@else
      \1, \2
      @endif" -ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3
      @endif" -ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4
      @endif" -ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4, \5
      @endif" -ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4, \5, \6
      @endif" -ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4, \5, \6, \7
      @endif" +ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1@latexonly}}\vskip 0.7em@endlatexonly@else
      \1
      @endif" +ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2
      @endif" +ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3
      @endif" +ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4
      @endif" +ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4, \5
      @endif" +ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4, \5, \6
      @endif" +ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4, \5, \6, \7
      @endif" ALIASES += FA{1}="\1" ALIASES += FN{1}="\1" ALIASES += VAR{1}="\1" @@ -204,7 +204,7 @@ ALIASES += LIT{1}="\1" ALIASES += CODE{1}="\1" ALIASES += CODE{2}="\1, \2" ALIASES += CODE{3}="\1, \2, \3" -ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
      \1
      @endif" +ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1@latexonly}}\vskip 0.7em@endlatexonly@else
      \1
      @endif" ALIASES += CA{1}="\1" ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" diff --git a/Doxygen/arango.template.in b/Doxygen/arango.template.in index 7c3a41be34..7fc7e536f1 100644 --- a/Doxygen/arango.template.in +++ b/Doxygen/arango.template.in @@ -190,13 +190,13 @@ TAB_SIZE = 8 # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. -ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
      \1
      @endif" -ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2@latexonly}\vskip 1em@endlatexonly@else
      \1, \2
      @endif" -ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3
      @endif" -ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4
      @endif" -ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4, \5
      @endif" -ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4, \5, \6
      @endif" -ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}\vskip 1em@endlatexonly@else
      \1, \2, \3, \4, \5, \6, \7
      @endif" +ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1@latexonly}}\vskip 0.7em@endlatexonly@else
      \1
      @endif" +ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2
      @endif" +ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3
      @endif" +ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4
      @endif" +ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4, \5
      @endif" +ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4, \5, \6
      @endif" +ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}}\vskip 0.7em@endlatexonly@else
      \1, \2, \3, \4, \5, \6, \7
      @endif" ALIASES += FA{1}="\1" ALIASES += FN{1}="\1" ALIASES += VAR{1}="\1" @@ -204,7 +204,7 @@ ALIASES += LIT{1}="\1" ALIASES += CODE{1}="\1" ALIASES += CODE{2}="\1, \2" ALIASES += CODE{3}="\1, \2, \3" -ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1@latexonly}\vskip 1em@endlatexonly@else
      \1
      @endif" +ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1@latexonly}}\vskip 0.7em@endlatexonly@else
      \1
      @endif" ALIASES += CA{1}="\1" ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" diff --git a/Doxygen/latex/header.tex b/Doxygen/latex/header.tex index f23f3bbc66..ffc36bef23 100644 --- a/Doxygen/latex/header.tex +++ b/Doxygen/latex/header.tex @@ -27,7 +27,7 @@ \lstset{numbers=none,backgroundcolor=\color{lightgray},language=,basicstyle=\protect\examplesize,breaklines=true,breakatwhitespace=false,caption=\protect\examplecap,captionpos=below}% }{% } -\definecolor{gray}{gray}{.8} +\definecolor{gray}{gray}{.9} \definecolor{lightgray}{gray}{.95} \setlength{\headheight}{15pt} \begin{document} diff --git a/Makefile.in b/Makefile.in index ec9522dc8b..50c289ee10 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -158,11 +158,11 @@ CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru -AM_V_AR = $(am__v_AR_@AM_V@) -am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) am__v_AR_0 = @echo " AR " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ libarango_a_AR = $(AR) $(ARFLAGS) libarango_a_LIBADD = @@ -433,27 +433,27 @@ am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) am__v_CXXLD_0 = @echo " CXXLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libarango_a_SOURCES) $(UnitTests_basics_suite_SOURCES) \ $(UnitTests_geo_suite_SOURCES) $(arangod_SOURCES) \ @@ -484,12 +484,6 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } DATA = $(nobase_pkgdata_DATA) ETAGS = etags CTAGS = ctags @@ -497,16 +491,12 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi + { test ! -d "$(distdir)" \ + || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr "$(distdir)"; }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1074,7 +1064,7 @@ all: $(BUILT_SOURCES) .SUFFIXES: .SUFFIXES: .c .cpp .o .obj -am--refresh: Makefile +am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.files $(srcdir)/Makefile.doxygen $(srcdir)/Makefile.javascript $(srcdir)/Makefile.unittests $(srcdir)/Makefile.flex $(srcdir)/Makefile.bison $(srcdir)/m4/Makefile.all-in-one-libev $(srcdir)/m4/Makefile.all-in-one-v8 $(srcdir)/m4/Makefile.all-in-one-mruby $(am__configure_deps) @for dep in $?; do \ @@ -1099,7 +1089,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(srcdir)/Makefile.files $(srcdir)/Makefile.doxygen $(srcdir)/Makefile.javascript $(srcdir)/Makefile.unittests $(srcdir)/Makefile.flex $(srcdir)/Makefile.bison $(srcdir)/m4/Makefile.all-in-one-libev $(srcdir)/m4/Makefile.all-in-one-v8 $(srcdir)/m4/Makefile.all-in-one-mruby: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1111,8 +1100,10 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): config/config.h: config/stamp-h1 - @if test ! -f $@; then rm -f config/stamp-h1; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) config/stamp-h1; else :; fi + @if test ! -f $@; then \ + rm -f config/stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) config/stamp-h1; \ + else :; fi config/stamp-h1: $(top_srcdir)/config/config.h.in $(top_builddir)/config.status @rm -f config/stamp-h1 @@ -1123,8 +1114,10 @@ $(top_srcdir)/config/config.h.in: $(am__configure_deps) touch $@ BasicsC/local-configuration.h: BasicsC/stamp-h2 - @if test ! -f $@; then rm -f BasicsC/stamp-h2; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) BasicsC/stamp-h2; else :; fi + @if test ! -f $@; then \ + rm -f BasicsC/stamp-h2; \ + $(MAKE) $(AM_MAKEFLAGS) BasicsC/stamp-h2; \ + else :; fi BasicsC/stamp-h2: $(top_srcdir)/BasicsC/local-configuration.h.in $(top_builddir)/config.status @rm -f BasicsC/stamp-h2 @@ -1428,7 +1421,7 @@ MRuby/MRLineEditor.$(OBJEXT): MRuby/$(am__dirstamp) \ MRuby/$(DEPDIR)/$(am__dirstamp) MRuby/mr-utils.$(OBJEXT): MRuby/$(am__dirstamp) \ MRuby/$(DEPDIR)/$(am__dirstamp) -libarango.a: $(libarango_a_OBJECTS) $(libarango_a_DEPENDENCIES) $(EXTRA_libarango_a_DEPENDENCIES) +libarango.a: $(libarango_a_OBJECTS) $(libarango_a_DEPENDENCIES) $(AM_V_at)-rm -f libarango.a $(AM_V_AR)$(libarango_a_AR) libarango.a $(libarango_a_OBJECTS) $(libarango_a_LIBADD) $(AM_V_at)$(RANLIB) libarango.a @@ -1562,7 +1555,7 @@ UnitTests/Jutland/StringBufferTest.$(OBJEXT): \ UnitTests/Jutland/StringUtilsTest.$(OBJEXT): \ UnitTests/Jutland/$(am__dirstamp) \ UnitTests/Jutland/$(DEPDIR)/$(am__dirstamp) -UnitTests/basics_suite$(EXEEXT): $(UnitTests_basics_suite_OBJECTS) $(UnitTests_basics_suite_DEPENDENCIES) $(EXTRA_UnitTests_basics_suite_DEPENDENCIES) UnitTests/$(am__dirstamp) +UnitTests/basics_suite$(EXEEXT): $(UnitTests_basics_suite_OBJECTS) $(UnitTests_basics_suite_DEPENDENCIES) UnitTests/$(am__dirstamp) @rm -f UnitTests/basics_suite$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(UnitTests_basics_suite_OBJECTS) $(UnitTests_basics_suite_LDADD) $(LIBS) UnitTests/Cambridge/$(am__dirstamp): @@ -1577,7 +1570,7 @@ UnitTests/Cambridge/Runner.$(OBJEXT): \ UnitTests/Cambridge/georeg.$(OBJEXT): \ UnitTests/Cambridge/$(am__dirstamp) \ UnitTests/Cambridge/$(DEPDIR)/$(am__dirstamp) -UnitTests/geo_suite$(EXEEXT): $(UnitTests_geo_suite_OBJECTS) $(UnitTests_geo_suite_DEPENDENCIES) $(EXTRA_UnitTests_geo_suite_DEPENDENCIES) UnitTests/$(am__dirstamp) +UnitTests/geo_suite$(EXEEXT): $(UnitTests_geo_suite_OBJECTS) $(UnitTests_geo_suite_DEPENDENCIES) UnitTests/$(am__dirstamp) @rm -f UnitTests/geo_suite$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(UnitTests_geo_suite_OBJECTS) $(UnitTests_geo_suite_LDADD) $(LIBS) Admin/$(am__dirstamp): @@ -1889,7 +1882,7 @@ VocBase/voc-shaper.$(OBJEXT): VocBase/$(am__dirstamp) \ VocBase/$(DEPDIR)/$(am__dirstamp) VocBase/vocbase.$(OBJEXT): VocBase/$(am__dirstamp) \ VocBase/$(DEPDIR)/$(am__dirstamp) -arangod$(EXEEXT): $(arangod_OBJECTS) $(arangod_DEPENDENCIES) $(EXTRA_arangod_DEPENDENCIES) +arangod$(EXEEXT): $(arangod_OBJECTS) $(arangod_DEPENDENCIES) @rm -f arangod$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(arangod_OBJECTS) $(arangod_LDADD) $(LIBS) SimpleHttpClient/$(am__dirstamp): @@ -1916,7 +1909,7 @@ V8Client/V8ClientConnection.$(OBJEXT): V8Client/$(am__dirstamp) \ V8Client/$(DEPDIR)/$(am__dirstamp) V8Client/arangoimp.$(OBJEXT): V8Client/$(am__dirstamp) \ V8Client/$(DEPDIR)/$(am__dirstamp) -arangoimp$(EXEEXT): $(arangoimp_OBJECTS) $(arangoimp_DEPENDENCIES) $(EXTRA_arangoimp_DEPENDENCIES) +arangoimp$(EXEEXT): $(arangoimp_OBJECTS) $(arangoimp_DEPENDENCIES) @rm -f arangoimp$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(arangoimp_OBJECTS) $(arangoimp_LDADD) $(LIBS) MRClient/$(am__dirstamp): @@ -1927,12 +1920,12 @@ MRClient/$(DEPDIR)/$(am__dirstamp): @: > MRClient/$(DEPDIR)/$(am__dirstamp) MRClient/arangoirb.$(OBJEXT): MRClient/$(am__dirstamp) \ MRClient/$(DEPDIR)/$(am__dirstamp) -arangoirb$(EXEEXT): $(arangoirb_OBJECTS) $(arangoirb_DEPENDENCIES) $(EXTRA_arangoirb_DEPENDENCIES) +arangoirb$(EXEEXT): $(arangoirb_OBJECTS) $(arangoirb_DEPENDENCIES) @rm -f arangoirb$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(arangoirb_OBJECTS) $(arangoirb_LDADD) $(LIBS) V8Client/arangosh.$(OBJEXT): V8Client/$(am__dirstamp) \ V8Client/$(DEPDIR)/$(am__dirstamp) -arangosh$(EXEEXT): $(arangosh_OBJECTS) $(arangosh_DEPENDENCIES) $(EXTRA_arangosh_DEPENDENCIES) +arangosh$(EXEEXT): $(arangosh_OBJECTS) $(arangosh_DEPENDENCIES) @rm -f arangosh$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(arangosh_OBJECTS) $(arangosh_LDADD) $(LIBS) @@ -2399,33 +2392,37 @@ distclean-compile: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` install-nobase_pkgdataDATA: $(nobase_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @@ -2446,7 +2443,9 @@ uninstall-nobase_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(nobase_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ - dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -2544,11 +2543,7 @@ dist-gzip: distdir $(am__remove_distdir) dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir @@ -2556,7 +2551,7 @@ dist-lzma: distdir $(am__remove_distdir) dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir @@ -2587,8 +2582,6 @@ distcheck: dist bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ @@ -2608,7 +2601,6 @@ distcheck: dist && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ @@ -2637,16 +2629,8 @@ distcheck: dist list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + @$(am__cd) '$(distuninstallcheck_dir)' \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ @@ -2681,15 +2665,10 @@ install-am: all-am installcheck: installcheck-am install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: @@ -2855,8 +2834,8 @@ uninstall-am: uninstall-binPROGRAMS uninstall-nobase_pkgdataDATA \ .PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ clean-binPROGRAMS clean-generic clean-local \ clean-noinstLIBRARIES clean-noinstPROGRAMS clean-sbinPROGRAMS \ - ctags dist dist-all dist-bzip2 dist-gzip dist-lzip dist-lzma \ - dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ + ctags dist dist-all dist-bzip2 dist-gzip dist-lzma dist-shar \ + dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-compile distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ @@ -3004,7 +2983,7 @@ unittests-brief: \ unittests-verbose: @echo "################################################################################" @echo "## ##" - @echo "## ArangoDB Unit-Tests ##" + @echo "## ArangoDB Unit-Tests ##" @echo "## ##" @echo "## > make unittests ##" @echo "## > make unittests FORCE=1 ##" diff --git a/RestServer/aql.dox b/RestServer/aql.dox index 03680ffa13..dee3b500b6 100644 --- a/RestServer/aql.dox +++ b/RestServer/aql.dox @@ -25,10 +25,43 @@ /// @author Copyright 2012, triAGENS GmbH, Cologne, Germany //////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +/// @page AqlTOC +/// +///
        +///
      • @ref Aql +///
          +///
        • @ref AqlPurpose +///
        • +///
        • @ref AqlBasics +///
            +///
          • @ref AqlWhitespace
          • +///
          • @ref AqlKeywords
          • +///
          • @ref AqlNames
          • +///
          • @ref AqlTypes
          • +///
          • @ref AqlParameter
          • +///
          • @ref AqlTypeOrder
          • +///
          • @ref AqlData
          • +///
          • @ref AqlOperators
          • +///
          • @ref AqlFunctions
          • +///
          +///
        • +///
        • @ref AqlOperations +///
            +///
          • @ref AqlWhitespace
          • +///
          +///
        • +///
        +///
      • +///
      +//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// /// @page Aql ArangoDB Query Language (AQL) /// -/// @section AqlPurpose Purpose +/// @EMBEDTOC{AqlTOC} +/// +/// @section AqlPurpose Introduction /// /// The ArangoDB query language (AQL) can be used to retrieve data that is /// stored in ArangoDB. The general workflow when executing a query is as follows: @@ -62,7 +95,7 @@ /// However, for the parser any whitespace (spaces, carriage returns, line /// feeds, and tab stops) does not have any special meaning except that it /// separates individual tokens in the query. Whitespace within strings or -/// names must be enclosed in quotes in order to be preseved. +/// names must be enclosed in quotes in order to be preserved. /// /// @subsection AqlKeywords Keywords /// @@ -80,7 +113,8 @@ /// of multiple of the above operations. /// /// An example AQL query might look like this: -/// @verbinclude aqlqueryintro +/// +/// @EXAMPLE{aqlqueryintro,find all active newbies} /// /// In this example query, the terms @LIT{FOR}, @LIT{FILTER}, and @LIT{RETURN} /// initiate the higher-level operation according to their name. These terms @@ -101,6 +135,7 @@ /// /// In addition to the higher-level operations keywords, there are other keywords. /// The current list of keywords is: +/// /// - FOR /// - RETURN /// - FILTER @@ -131,7 +166,7 @@ /// backticks allows using otherwise-reserved keywords as names. An example /// for this is: /// -/// @verbinclude aqlnamebackticks +/// @EXAMPLE{aqlnamebackticks,quoting keywords} /// /// Due to the backticks, @LIT{filter} and @LIT{sort} are interpreted as names /// and not as keywords here. @@ -155,7 +190,7 @@ /// To avoid any ambiguity, it is not allowed to refer to an unqualified /// attribute name. /// -/// @verbinclude aqlattributenamesvalid +/// @EXAMPLE{aqlattributenamesvalid,active user with active friends} /// /// In the above example, the attribute names @LIT{active}, @LIT{name}, /// @LIT{id}, and @LIT{userId} are qualified using the collection names @@ -168,7 +203,7 @@ /// within the context of the query. Variable names must be different from /// the names of any collection name used in the same query. /// -/// @verbinclude aqlvariablenames +/// @EXAMPLE{aqlvariablenames,variable assignment} /// /// In the above query, @LIT{users} is a collection name, and both @LIT{u} /// and @LIT{friends} are variable names. This is because the @LIT{FOR} and @@ -185,6 +220,7 @@ /// /// AQL supports both primitive and compound data types. The following types are /// available: +/// /// - primitive types: consisting of exactly one value /// - null: an empty value, also: the absence of a value /// - bool: boolean truth value with possible values @LIT{false} and @LIT{true} @@ -223,6 +259,7 @@ /// @subsubsection AqlCompoundLists Lists /// /// AQL supports two compound types: +/// /// - lists: a composition of unnamed values, each accessible by their positions /// - documents: a composition of named values, each accessible by their names /// @@ -230,9 +267,9 @@ /// sequences of (unnamed/anonymous) values. Individual list elements can be /// accessed by their positions. The order of elements in a list is important. /// -/// An @LIT{list-declaration} starts with the @LIT{[} symbol and ends +/// An @LIT{list-declaration} starts with the @LIT{[} symbol and ends /// with the @LIT{]} symbol. A @LIT{list-declaration} contains zero or -/// many @LIT{expression}s, seperated from each other with the +/// many @LIT{expression}s, seperated from each other with the /// @LIT{\,} symbol. /// /// In the easiest case, a list is empty and thus looks like: @@ -285,7 +322,7 @@ /// parameter name. The bind parameter values need to be passed when the query /// is executed, but not as part of the query text but in a separate data structure. /// -/// @verbinclude aqlbind +/// @EXAMPLE{aqlbind,using a bind variable} /// /// @subsection AqlTypeOrder Type and value order /// @@ -380,7 +417,7 @@ /// @LIT{users} that have a value of @LIT{null} in the attribute @LIT{name}, plus /// all documents from @LIT{users} that do not have the @LIT{name} attribute at all: /// -/// @verbinclude aqlnull +/// @EXAMPLE{aqlnull,all users without a name} /// /// Furthermore, @LIT{null} is less than any other value (excluding @LIT{null} /// itself). That means documents with non-existing attributes might be included @@ -392,7 +429,7 @@ /// also all documents from the collection that do not have the attribute @LIT{age} /// at all. /// -/// @verbinclude aqlnull2 +/// @EXAMPLE{aqlnull2,all users younger than 39} /// /// This behavior should always be taken into account when writing queries. /// diff --git a/RestServer/simple-queries.dox b/RestServer/simple-queries.dox index bf91409a9f..fecfd66a83 100644 --- a/RestServer/simple-queries.dox +++ b/RestServer/simple-queries.dox @@ -82,7 +82,8 @@ /// geo query. In a simple query you can specify exactly one collection and one /// query criteria. In the following sections we describe the JavaScript shell /// interface for simple queries, which you can use within the ArangoDB shell -/// and within actions and transactions. +/// and within actions and transactions. For other languages see the +/// corresponding language API documentation. /// /// If a query returns a cursor, then you can use @FN{hasNext} and @FN{next} to /// iterate over the result set or @FN{toArray} to convert it to an array. @@ -119,8 +120,8 @@ /// faster than a simple R* index. /// /// In general a geo coordinate is a pair of latitude and longitude. This can -/// either be an list with two elements like @CODE{[ -10\, +30 ]} (latitude -/// first, followed by longitude) or an object like @CODE{{ lon: -10\, lat: +30}}. +/// either be an list with two elements like @CODE{[-10\, +30]} (latitude +/// first, followed by longitude) or an object like @CODE{{lon: -10\, lat: +30}}. /// In order to find all documents within a given radius around a coordinate /// use the @FN{within} operator. In order to find all documents near a given /// document use the @FN{near} operator. diff --git a/RestServer/user-manual.dox b/RestServer/user-manual.dox index 8dd8a8430f..9d0ee53f6b 100644 --- a/RestServer/user-manual.dox +++ b/RestServer/user-manual.dox @@ -32,7 +32,8 @@ ///
        ///
      • @ref UserManualBasics
      • ///
      • @ref SimpleQueries
      • -///
      • ArangoQueryLanguage
      • +///
      • @ref Aql
      • +/// /// @latexonly\appendix@endlatexonly ///
      • @ref CommandLine
      • ///
      • @ref Glossary
      • @@ -40,9 +41,7 @@ /// @else /// @copydetails UserManualBasicsTOC /// @copydetails SimpleQueriesTOC -///
          -///
        • Arango Query Language
        • -///
        +/// @copydetails AqlTOC /// @copydetails CommandLineTOC /// @endif //////////////////////////////////////////////////////////////////////////////// @@ -55,7 +54,6 @@ ///
          ///
        • @ref UserManualServerStartStop ///
            -///
          • @ref UserManualServerStartStopHttp
          • ///
          • @ref UserManualServerStartStopOptions
          • ///
          ///
        • @@ -147,11 +145,8 @@ /// You should never start more than one server for the same database, /// independent from the mode of operation. /// -/// @subsection UserManualServerStartStopHttp Starting the HTTP Server -////////////////////////////////////////////////////////////////////// -/// /// The following command starts the ArangoDB database in server mode. You will -/// be able to access the server using HTTP request on port 8529. See @ref +/// be able to access the server using HTTP requests on port 8529. See @ref /// UserManualServerStartStopOptions "below" for a list of frequently used /// options, see @ref CommandLine "here" for a complete list. /// @@ -204,8 +199,9 @@ /// /// @LIT{http://localhost:8529/_admin} /// -/// Unless you have loaded an application into the ArangoDB server which remaps +/// Unless you have loaded an application into the ArangoDB server, which remaps /// the paths, the front-end will also be available under +/// /// @LIT{http://localhost:8529/}. /// /// @htmlonly ArangoDB Fron-End@endhtmlonly diff --git a/V8/v8-query.cpp b/V8/v8-query.cpp index c1e6bc047c..b497bc5aaa 100644 --- a/V8/v8-query.cpp +++ b/V8/v8-query.cpp @@ -866,11 +866,12 @@ static v8::Handle JS_ByExampleHashIndex (v8::Arguments const& argv) { /// @FUN{@FA{edge-collection}.edges(@FA{vertices})} /// /// The @FN{edges} operator finds all edges starting from (outbound) or ending -/// in (inbound) a document from @FA{vertices}. +/// in (inbound) a document from @FA{vertices}, which must a list of documents +/// or document handles. /// /// @EXAMPLES /// -/// @verbinclude shell_edge-edges +/// @verbinclude shell-edge-edges //////////////////////////////////////////////////////////////////////////////// static v8::Handle JS_EdgesQuery (v8::Arguments const& argv) { @@ -887,11 +888,11 @@ static v8::Handle JS_EdgesQuery (v8::Arguments const& argv) { /// @FUN{@FA{edge-collection}.inEdges(@FA{vertices})} /// /// The @FN{edges} operator finds all edges ending in (inbound) a document from -/// @FA{vertices}. +/// @FA{vertices}, which must a list of documents or document handles. /// /// @EXAMPLES /// -/// @verbinclude shell_edge-in-edges +/// @verbinclude shell-edge-in-edges //////////////////////////////////////////////////////////////////////////////// static v8::Handle JS_InEdgesQuery (v8::Arguments const& argv) { @@ -989,11 +990,11 @@ static v8::Handle JS_NearQuery (v8::Arguments const& argv) { /// @FUN{@FA{edge-collection}.outEdges(@FA{vertices})} /// /// The @FN{edges} operator finds all edges starting from (outbound) a document -/// from @FA{vertices}. +/// from @FA{vertices}, which must a list of documents or document handles. /// /// @EXAMPLES /// -/// @verbinclude shell_edge-out-edges +/// @verbinclude shell-edge-out-edges //////////////////////////////////////////////////////////////////////////////// static v8::Handle JS_OutEdgesQuery (v8::Arguments const& argv) { diff --git a/V8/v8-vocbase.cpp b/V8/v8-vocbase.cpp index e3230a8409..034de329c3 100644 --- a/V8/v8-vocbase.cpp +++ b/V8/v8-vocbase.cpp @@ -1878,11 +1878,10 @@ static v8::Handle JS_RemoveVocbaseCol (v8::Arguments const& argv) { /// /// @FUN{@FA{collection}.document(@FA{document})} /// -/// The @FN{document} method finds a document given it's identifier. It -/// returns the document. Note that the returned docuement contains two -/// pseudo-attributes, namely @LIT{_id} and @LIT{_rev}. @LIT{_id} -/// contains the @FA{docuement-handle} and @LIT{_rev} the revision of -/// the document. +/// The @FN{document} method finds a document given it's identifier. It returns +/// the document. Note that the returned document contains two +/// pseudo-attributes, namely @LIT{_id} and @LIT{_rev}. @LIT{_id} contains the +/// document-handle and @LIT{_rev} the revision of the document. /// /// An error is thrown if there @LIT{_rev} does not longer match the current /// revision of the document. @@ -1899,17 +1898,17 @@ static v8::Handle JS_RemoveVocbaseCol (v8::Arguments const& argv) { /// /// @EXAMPLES /// -/// Return the document for a document-handle: +/// Returns the document for a document-handle: /// -/// @verbinclude shell_read-document +/// @TINYEXAMPLE{shell-read-document,read document from a collection} /// /// An error is raised if the document is unknown: /// -/// @verbinclude shell_read-document-not-found +/// @TINYEXAMPLE{shell-read-document-not-found,unknown handle} /// /// An error is raised if the handle is invalid: /// -/// @verbinclude shell_read-document-bad-handle +/// @TINYEXAMPLE{shell-read-document-bad-handle,invalid handle} //////////////////////////////////////////////////////////////////////////////// static v8::Handle JS_DocumentVocbaseCol (v8::Arguments const& argv) { @@ -3322,11 +3321,10 @@ static v8::Handle JS_RemoveVocbase (v8::Arguments const& argv) { /// /// @FUN{@FA{db}._document(@FA{document})} /// -/// The @FN{document} method finds a document given it's identifier. It -/// returns the document. Note that the returned docuement contains two -/// pseudo-attributes, namely @LIT{_id} and @LIT{_rev}. @LIT{_id} -/// contains the @FA{docuement-handle} and @LIT{_rev} the revision of -/// the document. +/// The @FN{document} method finds a document given it's identifier. It returns +/// the document. Note that the returned document contains two +/// pseudo-attributes, namely @LIT{_id} and @LIT{_rev}. @LIT{_id} contains the +/// document handle and @LIT{_rev} the revision of the document. /// /// An error is thrown if there @LIT{_rev} does not longer match the current /// revision of the document. @@ -3338,7 +3336,7 @@ static v8::Handle JS_RemoveVocbase (v8::Arguments const& argv) { /// /// @EXAMPLES /// -/// Return the document: +/// Returns the document: /// /// @verbinclude shell_read-document-db //////////////////////////////////////////////////////////////////////////////// diff --git a/js/common/modules/simple-query-basics.js b/js/common/modules/simple-query-basics.js index 0bdfbe4324..394a111b3a 100644 --- a/js/common/modules/simple-query-basics.js +++ b/js/common/modules/simple-query-basics.js @@ -86,7 +86,8 @@ ArangoEdgesCollection.prototype.all = ArangoCollection.prototype.all; /// for the document. If you have more then one geo-spatial index, you can use /// the @FN{geo} operator to select a particular index. /// -/// @note @FN{near} does not support negative skips. +/// @note @FN{near} does not support negative skips. However, you can still use +/// @FN{limit} followed to @FN{skip}. /// /// @FUN{@FA{collection}.near(@FA{latitude}, @FA{longitude}).limit(@FA{limit})} /////////////////////////////////////////////////////////////////////////////// @@ -112,11 +113,12 @@ ArangoEdgesCollection.prototype.all = ArangoCollection.prototype.all; /// /// To get the nearst two locations: /// -/// @verbinclude simple-query-near +/// @TINYEXAMPLE{simple-query-near,nearest two location} /// -/// If you need the distance as well, then you can use: +/// If you need the distance as well, then you can use the @FN{distance} +/// operator: /// -/// @verbinclude simple-query-near2 +/// @TINYEXAMPLE{simple-query-near2,nearest two location with distance in meter} //////////////////////////////////////////////////////////////////////////////// ArangoCollection.prototype.near = function (lat, lon) { @@ -139,14 +141,14 @@ ArangoEdgesCollection.prototype.near = ArangoCollection.prototype.near; /// for the document. If you have more then one geo-spatial index, you can use /// the @FN{geo} operator to select a particular index. /// -/// @FUN{@FA{collection}.within(@FA{latitude}, @FA{longitude}, @FA{radius}).distance()} -/////////////////////////////////////////////////////////////////////////////////////// +/// @FUN{@FA{collection}.within(@FA{latitude}, @FA{longitude}, @FA{radius})@LATEXBREAK.distance()} +////////////////////////////////////////////////////////////////////////////////////////////////// /// /// This will add an attribute @LIT{_distance} to all documents returned, which /// contains the distance between the given point and the document in meter. /// -/// @FUN{@FA{collection}.within(@FA{latitude}, @FA{longitude}, @FA{radius}).distance(@FA{name})} -//////////////////////////////////////////////////////////////////////////////////////////////// +/// @FUN{@FA{collection}.within(@FA{latitude}, @FA{longitude}, @FA{radius})@LATEXBREAK.distance(@FA{name})} +/////////////////////////////////////////////////////////////////////////////////////////////////////////// /// /// This will add an attribute @FA{name} to all documents returned, which /// contains the distance between the given point and the document in meter. @@ -155,7 +157,7 @@ ArangoEdgesCollection.prototype.near = ArangoCollection.prototype.near; /// /// To find all documents within a radius of 2000 km use: /// -/// @verbinclude simple-query-within +/// @TINYEXAMPLE{simple-query-within,within a radius} //////////////////////////////////////////////////////////////////////////////// ArangoCollection.prototype.within = function (lat, lon, radius) { @@ -191,7 +193,7 @@ ArangoEdgesCollection.prototype.within = ArangoCollection.prototype.within; /// and a destination stored in the attribute @LIT{work}. Than you can use the /// @FN{geo} operator to select, which coordinates to use in a near query. /// -/// @verbinclude simple-query-geo +/// @TINYEXAMPLE{simple-query-geo,use a specific index} //////////////////////////////////////////////////////////////////////////////// ArangoCollection.prototype.geo = function(loc, order) { @@ -261,16 +263,41 @@ ArangoEdgesCollection.prototype.geo = ArangoCollection.geo; /// /// @FUN{@FA{collection}.byExample(@FA{example})} /// -/// Selects all documents of a collection that match the specified example and -/// returns a cursor. Allowed attribute types for searching are numbers, -/// strings, and boolean values. +/// Selects all documents of a collection that match the specified +/// example and returns a cursor. /// /// You can use @FN{toArray}, @FN{next}, or @FN{hasNext} to access the /// result. The result can be limited using the @FN{skip} and @FN{limit} /// operator. /// -/// @note An attribute name of the form @LIT{a.b} is interpreted as attribute -/// path, not as attribute. +/// An attribute name of the form @LIT{a.b} is interpreted as attribute path, +/// not as attribute. If you use +/// +/// @LIT{{ a : { c : 1 }}} +/// +/// as example, then you will find all documents, such that the attribute +/// @LIT{a} contains a document of the form @LIT{{c : 1 }}. E.g., the document +/// +/// @LIT{{ a : { c : 1 }\, b : 1 }} +/// +/// will match, but the document +/// +/// @LIT{{ a : { c : 1\, b : 1 }}} +/// +/// will not. +/// +/// However, if you use +/// +/// @LIT{{ a.c : 1 }}, +/// +/// then you will find all documents, which contain a sub-document in @LIT{a} +/// that has an attribute @LIT{c} of value @LIT{1}. E.g., both documents +/// +/// @LIT{{ a : { c : 1 }\, b : 1 }} and +/// +/// @LIT{{ a : { c : 1\, b : 1 }}} +/// +/// will match. /// /// @FUN{@FA{collection}.byExample(@FA{path1}, @FA{value1}, ...)} /// @@ -280,11 +307,11 @@ ArangoEdgesCollection.prototype.geo = ArangoCollection.geo; /// /// Use @FN{toArray} to get all documents at once: /// -/// @verbinclude simple18 +/// @TINYEXAMPLE{simple18,convert into a list} /// /// Use @FN{next} to loop over all documents: /// -/// @verbinclude simple19 +/// @TINYEXAMPLE{simple19,iterate over the result-set} //////////////////////////////////////////////////////////////////////////////// ArangoCollection.prototype.byExample = function () { @@ -768,12 +795,8 @@ SimpleQuery.prototype.next = function() { /// @FUN{@FA{cursor}.dispose()} /// /// If you are no longer interested in any further results, you should call -/// @FN{dispose} in order to free any resources associated with the query. -/// After calling @FN{dispose} you can no longer access the query. -/// -/// @EXAMPLES -/// -/// @verbinclude simple5 +/// @FN{dispose} in order to free any resources associated with the cursor. +/// After calling @FN{dispose} you can no longer access the cursor. //////////////////////////////////////////////////////////////////////////////// SimpleQuery.prototype.dispose = function() { diff --git a/js/server/modules/simple-query.js b/js/server/modules/simple-query.js index d6db747a2a..2b68fbde47 100644 --- a/js/server/modules/simple-query.js +++ b/js/server/modules/simple-query.js @@ -153,22 +153,19 @@ SQ.SimpleQueryByExample.prototype.execute = function () { //////////////////////////////////////////////////////////////////////////////// /// @brief constructs a query-by-example for a collection /// -/// @FUN{@FA{collection}.firstExample(@FA{path1}, @FA{value1}, ...)} -/// -/// Returns the first documents of a collection that match the specified example -/// or @LIT{null}. The example must be specified as paths and -/// values. Allowed attribute types for searching are numbers, strings, and -/// boolean values. -/// /// @FUN{@FA{collection}.firstExample(@FA{example})} /// -/// As alternative you can supply an example as single argument. Note that an -/// attribute name of the form @LIT{a.b} is interpreted as attribute path, not -/// as attribute. +/// Returns the a document of a collection that match the specified example or +/// @LIT{null}. The example must be specified as paths and values. See @ref +/// JSF_ArangoCollection_prototype_byExample for details. +/// +/// @FUN{@FA{collection}.firstExample(@FA{path1}, @FA{value1}, ...)} +/// +/// As alternative you can supply a list of paths and values. /// /// @EXAMPLES /// -/// @verbinclude shell-simple-query-first-example +/// @TINYEXAMPLE{shell-simple-query-first-example,finds a document with a given name} //////////////////////////////////////////////////////////////////////////////// ArangoCollection.prototype.firstExample = function () { From 209ceddeae80ae95ab954d7675b224c61da551c5 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Mon, 14 May 2012 21:51:01 +0200 Subject: [PATCH 24/29] fe picture --- Doxygen/latex/images/fe1.png | Bin 0 -> 88722 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Doxygen/latex/images/fe1.png diff --git a/Doxygen/latex/images/fe1.png b/Doxygen/latex/images/fe1.png new file mode 100644 index 0000000000000000000000000000000000000000..e73c3f913adfe607ebbe41eba5295377e74dd3e6 GIT binary patch literal 88722 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 z Date: Mon, 14 May 2012 22:15:31 +0200 Subject: [PATCH 25/29] user manual --- Doxygen/arango-html.doxy | 4 ++-- Doxygen/arango-latex.doxy | 4 ++-- Doxygen/arango.template | 4 ++-- Doxygen/arango.template.in | 4 ++-- Doxygen/latex/header.tex | 9 ++++++++- RestServer/aql.dox | 34 +++++++++++++++++++++++----------- 6 files changed, 39 insertions(+), 20 deletions(-) diff --git a/Doxygen/arango-html.doxy b/Doxygen/arango-html.doxy index a4b170593b..bf5d48a9ac 100644 --- a/Doxygen/arango-html.doxy +++ b/Doxygen/arango-html.doxy @@ -210,8 +210,8 @@ ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
          " -ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" -ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" +ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\set{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX


          @copydoc \1
          @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
          \1 (\2)

          @endif" diff --git a/Doxygen/arango-latex.doxy b/Doxygen/arango-latex.doxy index 18c84f6e10..bd573a47a0 100644 --- a/Doxygen/arango-latex.doxy +++ b/Doxygen/arango-latex.doxy @@ -210,8 +210,8 @@ ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
          " -ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" -ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" +ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\set{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
          @copydoc \1
          @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
          \1 (\2)

          @endif" diff --git a/Doxygen/arango.template b/Doxygen/arango.template index 9a73ee692a..d30f501c1f 100644 --- a/Doxygen/arango.template +++ b/Doxygen/arango.template @@ -210,8 +210,8 @@ ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
          " -ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" -ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" +ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\set{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
          @copydoc \1
          @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
          \1 (\2)

          @endif" diff --git a/Doxygen/arango.template.in b/Doxygen/arango.template.in index 7fc7e536f1..6be92b6b7a 100644 --- a/Doxygen/arango.template.in +++ b/Doxygen/arango.template.in @@ -210,8 +210,8 @@ ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
          " -ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" -ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" +ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\set{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="@PACKAGE_VERSION@" ALIASES += EMBEDTOC{1}="@ifnot LATEX
          @copydoc \1
          @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
          \1 (\2)

          @endif" diff --git a/Doxygen/latex/header.tex b/Doxygen/latex/header.tex index ffc36bef23..d34e13a837 100644 --- a/Doxygen/latex/header.tex +++ b/Doxygen/latex/header.tex @@ -16,15 +16,22 @@ \usepackage[hyphens]{url} \usepackage{doxygen} \usepackage{listings} +\usepackage{ifthen} \lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=8,numbers=left } \makeindex \setcounter{tocdepth}{3} \let\DoxyVerbInclude=\undefined \renewcommand{\footrulewidth}{0.4pt} +\newboolean{hascap} \newcommand{\examplecap}{} +\setboolean{hascap}{false} \newcommand{\examplesize}{\ttfamily} \lstnewenvironment{DoxyVerbInclude}{% - \lstset{numbers=none,backgroundcolor=\color{lightgray},language=,basicstyle=\protect\examplesize,breaklines=true,breakatwhitespace=false,caption=\protect\examplecap,captionpos=below}% + \ifhascap% + \lstset{basicstyle=\protect\examplesize,caption=\protect\examplecap,numbers=none,backgroundcolor=\color{lightgray},language=,breaklines=true,breakatwhitespace=false,captionpos=below}% + \else% + \lstset{basicstyle=\protect\examplesize,numbers=none,backgroundcolor=\color{lightgray},language=,breaklines=true,breakatwhitespace=false,captionpos=below}% + \fi% }{% } \definecolor{gray}{gray}{.9} diff --git a/RestServer/aql.dox b/RestServer/aql.dox index dee3b500b6..0c8c6c05d3 100644 --- a/RestServer/aql.dox +++ b/RestServer/aql.dox @@ -48,7 +48,19 @@ /// ///
        • @ref AqlOperations ///
            -///
          • @ref AqlWhitespace
          • +///
          • @ref AqlOperationFor
          • +///
          • @ref AqlOperationReturn
          • +///
          • @ref AqlOperationFilter
          • +///
          • @ref AqlOperationSort
          • +///
          • @ref AqlOperationLimit
          • +///
          • @ref AqlOperationLet
          • +///
          • @ref AqlOperationCollect
          • +///
          +///
        • +///
        • @ref AqlAdvanced +///
            +///
          • @ref AqlSubqueries
          • +///
          • @ref AqlExpansion
          • ///
          ///
        • ///
        @@ -639,7 +651,7 @@ /// allowed, too. The current list element is made available for further processing /// in the variable specified by @LIT{variable-name}. /// -/// @verbinclude aqlfor +/// @EXAMPLE{aqlfor,for loop} /// /// This will iterate over all elements from the list @LIT{users} (note: this list /// consists of all documents from the collection named "users" in this case) and @@ -655,13 +667,13 @@ /// /// Another example that uses a statically declared list of values to iterate over: /// -/// @verbinclude aqlforstatic +/// @EXAMPLE{aqlforstatic,for loop with static content} /// /// Nesting of multiple @LIT{FOR} statements is allowed, too. When @LIT{FOR} statements /// are nested, a cross product of the list elements returned by the individual @LIT{FOR} /// statements will be created. /// -/// @verbinclude aqlfornested +/// @EXAMPLE{aqlfornested,nested for loop} /// /// In this example, there are two list iterations: an outer iteration /// over the list @LIT{users} plus an inner iteration over the list @LIT{locations}. @@ -707,7 +719,7 @@ /// further and not be part of the result. If the condition is true, the current element is /// not skipped and can be further processed. /// -/// @verbinclude aqlfilter +/// @EXAMPLE{aqlfilter,all active user younger than 39} /// /// In the above example, all list elements from @LIT{users} will be included that have an /// attribute @LIT{active} with value @LIT{true} and that have an attribute @LIT{age} with a @@ -718,7 +730,7 @@ /// same block. If multiple @LIT{FILTER} statements are used, their results will be combined /// with a logical and, meaning all filter conditions must be true to include an element. /// -/// @verbinclude aqlfiltermultiple +/// @EXAMPLE{aqlfiltermultiple,two filter criteria} /// /// @subsection AqlOperationSort SORT /// @@ -737,7 +749,7 @@ /// Note: when iterating over collection-based lists, the order of documents is always /// undefined unless an explicit sort order is defined using @LIT{SORT}. /// -/// @verbinclude aqlsort +/// @EXAMPLE{aqlsort,sort by name} /// /// @subsection AqlOperationLimit LIMIT /// @@ -756,7 +768,7 @@ /// It must be 0 or greater. The @LIT{count} value specifies how many elements should be /// at most included in the result. /// -/// @verbinclude aqllimit +/// @EXAMPLE{aqllimit,first five users} /// /// @subsection AqlOperationLet LET /// @@ -769,7 +781,7 @@ /// @LIT{LET} statements are mostly used to declare complex computations and to avoid /// repeated computations of the same value at multiple parts of a query. /// -/// @verbinclude aqllet +/// @EXAMPLE{aqllet,save result} /// /// In the above example, the computation of the number of recommendations is factored /// out using a @LIT{LET} statement, thus avoiding computing the value twice in the @@ -778,7 +790,7 @@ /// Another use case for @LIT{LET} is to declare a complex computation in a subquery, /// making the whole query more readable. /// -/// @verbinclude aqllet2 +/// @EXAMPLE{aqllet2,save sub-query} /// /// @subsection AqlOperationCollect COLLECT /// @@ -797,7 +809,7 @@ /// a variable (specified by @LIT{groups}) that contains all elements that fell into /// the group. Specifying the @LIT{INTO} clause is optional- /// -/// @verbinclude aqlcollect +/// @EXAMPLE{aqlcollect,find all user living in a city} /// /// In the above example, the list of @LIT{users} will be grouped by the attribute /// @LIT{city}. The result is a new list of documents, with one element per distinct From 308e9c3476f20eb4530b0e1bec5cde93df869a7d Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Mon, 14 May 2012 22:36:10 +0200 Subject: [PATCH 26/29] user manual --- Doxygen/Scripts/xml2md.py | 5 +++++ Doxygen/arango-html.doxy | 2 +- Doxygen/arango-latex.doxy | 2 +- Doxygen/arango-xml.doxy | 22 +++++++++++-------- Doxygen/arango.template | 2 +- Doxygen/arango.template.in | 2 +- RestServer/shell-document.dox | 40 ++++++++++++++++------------------- RestServer/shell-edge.dox | 29 ++++++++++++------------- RestServer/simple-queries.dox | 23 -------------------- RestServer/user-manual.dox | 4 ++++ V8/v8-vocbase.cpp | 18 +++++++++------- 11 files changed, 67 insertions(+), 82 deletions(-) diff --git a/Doxygen/Scripts/xml2md.py b/Doxygen/Scripts/xml2md.py index 302344e556..88848e360c 100644 --- a/Doxygen/Scripts/xml2md.py +++ b/Doxygen/Scripts/xml2md.py @@ -173,6 +173,9 @@ replDict["e_xmlonly"] = "" replDict["s_latexonly"] = "" replDict["e_latexonly"] = "" +replDict["s_nonbreakablespace"] = " " +replDict["e_nonbreakablespace"] = "" + ################################################################################ #### @brief generate code for text value ################################################################################ @@ -235,6 +238,8 @@ gencDict["htmlonly"] = False gencDict["latexonly"] = False gencDict["xmlonly"] = True +gencDict["nonbreakablespace"] = True + ################################################################################ #### @brief table entry ################################################################################ diff --git a/Doxygen/arango-html.doxy b/Doxygen/arango-html.doxy index bf5d48a9ac..8c4ee37ab8 100644 --- a/Doxygen/arango-html.doxy +++ b/Doxygen/arango-html.doxy @@ -211,7 +211,7 @@ ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
        " ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}@endlatexonly" -ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\set{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
        @copydoc \1
        @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
        \1 (\2)

        @endif" diff --git a/Doxygen/arango-latex.doxy b/Doxygen/arango-latex.doxy index bd573a47a0..367a386807 100644 --- a/Doxygen/arango-latex.doxy +++ b/Doxygen/arango-latex.doxy @@ -211,7 +211,7 @@ ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
        " ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}@endlatexonly" -ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\set{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
        @copydoc \1
        @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
        \1 (\2)

        @endif" diff --git a/Doxygen/arango-xml.doxy b/Doxygen/arango-xml.doxy index 19a34e8f34..b01ddd6073 100644 --- a/Doxygen/arango-xml.doxy +++ b/Doxygen/arango-xml.doxy @@ -190,13 +190,13 @@ TAB_SIZE = 8 # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. -ALIASES += FUN{1}="\1" -ALIASES += FUN{2}="\1, \2" -ALIASES += FUN{3}="\1, \2, \3" -ALIASES += FUN{4}="\1, \2, \3, \4" -ALIASES += FUN{5}="\1, \2, \3, \4, \5" -ALIASES += FUN{6}="\1, \2, \3, \4, \5, \6" -ALIASES += FUN{7}="\1, \2, \3, \4, \5, \6, \7" +ALIASES += FUN{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1@latexonly}}\vskip 0.7em@endlatexonly@else
        \1
        @endif" +ALIASES += FUN{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2@latexonly}}\vskip 0.7em@endlatexonly@else
        \1, \2
        @endif" +ALIASES += FUN{3}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3@latexonly}}\vskip 0.7em@endlatexonly@else
        \1, \2, \3
        @endif" +ALIASES += FUN{4}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4@latexonly}}\vskip 0.7em@endlatexonly@else
        \1, \2, \3, \4
        @endif" +ALIASES += FUN{5}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5@latexonly}}\vskip 0.7em@endlatexonly@else
        \1, \2, \3, \4, \5
        @endif" +ALIASES += FUN{6}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5, \6@latexonly}}\vskip 0.7em@endlatexonly@else
        \1, \2, \3, \4, \5, \6
        @endif" +ALIASES += FUN{7}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1, \2, \3, \4, \5, \6, \7@latexonly}}\vskip 0.7em@endlatexonly@else
        \1, \2, \3, \4, \5, \6, \7
        @endif" ALIASES += FA{1}="\1" ALIASES += FN{1}="\1" ALIASES += VAR{1}="\1" @@ -204,17 +204,21 @@ ALIASES += LIT{1}="\1" ALIASES += CODE{1}="\1" ALIASES += CODE{2}="\1, \2" ALIASES += CODE{3}="\1, \2, \3" -ALIASES += CMDOPT{1}="\1" +ALIASES += CMDOPT{1}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{\parbox{\textwidth}{@endlatexonly\1@latexonly}}\vskip 0.7em@endlatexonly@else
        \1
        @endif" ALIASES += CA{1}="\1" ALIASES += CO{1}="\1" ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
        " -ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}@endlatexonly@verbinclude \1@latexonly\renewcommand{\examplecap}{}@endlatexonly" +ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\set{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
        @copydoc \1
        @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
        \1 (\2)

        @endif" ALIASES += LATEXBREAK="@latexonly\vskip -0.5em\hskip 1.0em@endlatexonly" +ALIASES += EXTREF{2}="@if LATEX \2 (see @latexonly \url{\1}@endlatexonly)@else
        \2@endif" +ALIASES += INTREF{2}="@if LATEX \2@else@ref \1 \"\2\"@endif" +ALIASES += SPC=" " # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. diff --git a/Doxygen/arango.template b/Doxygen/arango.template index d30f501c1f..6c6de052ec 100644 --- a/Doxygen/arango.template +++ b/Doxygen/arango.template @@ -211,7 +211,7 @@ ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
        " ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}@endlatexonly" -ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\set{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
        @copydoc \1
        @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
        \1 (\2)

        @endif" diff --git a/Doxygen/arango.template.in b/Doxygen/arango.template.in index 6be92b6b7a..0332873531 100644 --- a/Doxygen/arango.template.in +++ b/Doxygen/arango.template.in @@ -211,7 +211,7 @@ ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
        " ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}@endlatexonly" -ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\set{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="@PACKAGE_VERSION@" ALIASES += EMBEDTOC{1}="@ifnot LATEX
        @copydoc \1
        @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
        \1 (\2)

        @endif" diff --git a/RestServer/shell-document.dox b/RestServer/shell-document.dox index ff194b3296..8e7f3fb3ee 100644 --- a/RestServer/shell-document.dox +++ b/RestServer/shell-document.dox @@ -28,45 +28,47 @@ //////////////////////////////////////////////////////////////////////////////// /// @page ShellDocumentTOC /// -///
          -///
        1. @ref ShellDocumentIntro
        2. -///
        3. @ref ShellDocumentResource
        4. -///
        5. @ref ShellDocumentShell -/// @copydetails ShellDocumentCallsTOC +///
            +///
          • @ref ShellDocument +///
              +///
            • @ref ShellDocumentIntro
            • +///
            • @ref ShellDocumentResource
            • +///
            • @ref ShellDocumentShell +/// @copydetails ShellDocumentCallsTOC +///
            • +///
            ///
          • -///
        +///
      //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /// @page ShellDocumentCallsTOC /// -///
        +///
          ///
        • @ref ShellDocumentCollectionMethods -///
            +///
              ///
            • @ref ShellDocumentRead "collection.document(document-handle)"
            • ///
            • @ref ShellDocumentCreate "collection.save(data)"
            • ///
            • @ref ShellDocumentUpdate "collection.replace(document, data)"
            • ///
            • @ref ShellDocumentDelete "collection.remove(document)"
            • -///
          +///
        /// ///
      1. @ref ShellDocumentDatabaseMethods -///
          +///
            ///
          • @ref ShellDocumentDbRead "db._document(document-handle)"
          • ///
          • @ref ShellDocumentDbUpdate "db._replace(document-handle, data)"
          • ///
          • @ref ShellDocumentDbDelete "db._remove(document-handle)"
          • -///
        +///
    ///
  • -/// +/// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// -/// @page ShellDocument ArangoDB Interface for Documents +/// @page ShellDocument Handling Documents /// /// This is an introduction to ArangoDB's interface for documents. /// -///
    -/// @copydoc ShellDocumentTOC -///
    +/// @EMBEDTOC{ShellDocumentTOC} /// /// @section ShellDocumentIntro Documents, Identifiers, Handles /////////////////////////////////////////////////////////////// @@ -123,30 +125,24 @@ /// /// @anchor ShellDocumentRead /// @copydetails JS_DocumentVocbaseCol -///
    /// /// @anchor ShellDocumentCreate /// @copydetails JS_SaveVocbaseCol -///
    /// /// @anchor ShellDocumentUpdate /// @copydetails JS_ReplaceVocbaseCol -///
    /// /// @anchor ShellDocumentDelete /// @copydetails JS_RemoveVocbaseCol -///
    /// /// @subsection ShellDocumentDatabaseMethods Database Methods ///////////////////////////////////////////////////////////// /// /// @anchor ShellDocumentDbRead /// @copydetails JS_DocumentVocbase -///
    /// /// @anchor ShellDocumentDbUpdate /// @copydetails JS_ReplaceVocbase -///
    /// /// @anchor ShellDocumentDbDelete /// @copydetails JS_RemoveVocbase diff --git a/RestServer/shell-edge.dox b/RestServer/shell-edge.dox index 7c13982edb..a8d1a1ead1 100644 --- a/RestServer/shell-edge.dox +++ b/RestServer/shell-edge.dox @@ -28,33 +28,35 @@ //////////////////////////////////////////////////////////////////////////////// /// @page ShellEdgeTOC /// -///
      -///
    1. @ref ShellEdgeIntro
    2. -///
    3. @ref ShellEdgeShell -/// @copydetails ShellEdgeCallsTOC +///
        +///
      • @ref ShellEdge +///
          +///
        • @ref ShellEdgeIntro
        • +///
        • @ref ShellEdgeShell +/// @copydetails ShellEdgeCallsTOC +///
        • +///
        ///
      • -///
    +/// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /// @page ShellEdgeCallsTOC /// -///
      +///
        ///
      • @ref ShellEdgeCreate "edge-collection.save(from, to, data)"
      • ///
      • @ref ShellEdgeEdges "edge-collection.edges(vertex)"
      • ///
      • @ref ShellEdgeInEdges "edge-collection.inEdges(vertex)"
      • ///
      • @ref ShellEdgeOutEdges "edge-collection.outEdges(vertex)"
      • -///
    +/// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// -/// @page ShellEdge ArangoDB Interface for Edges +/// @page ShellEdge Handling Edges /// /// This is an introduction to ArangoDB's interface for edges. /// -///
    -/// @copydoc ShellEdgeTOC -///
    +/// @EMBEDTOC{ShellEdgeTOC} /// /// @section ShellEdgeIntro Edges, Identifiers, Handles /////////////////////////////////////////////////////// @@ -68,20 +70,15 @@ /// /// @anchor ShellEdgeCreate /// @copydetails JS_SaveEdgesCol -///
    /// /// @anchor ShellEdgeEdges /// @copydetails JS_EdgesQuery -///
    /// /// @anchor ShellEdgeInEdges /// @copydetails JS_InEdgesQuery -///
    /// /// @anchor ShellEdgeOutEdges /// @copydetails JS_OutEdgesQuery -///
    -/// //////////////////////////////////////////////////////////////////////////////// // Local Variables: diff --git a/RestServer/simple-queries.dox b/RestServer/simple-queries.dox index fecfd66a83..b68cba7cfe 100644 --- a/RestServer/simple-queries.dox +++ b/RestServer/simple-queries.dox @@ -33,7 +33,6 @@ ///
      ///
    • @ref SimpleQueriesQueries ///
        -///
      • @ref SimpleQueryDocument "collection.document"
      • ///
      • @ref SimpleQueryAll "collection.all"
      • ///
      • @ref SimpleQueryByExample "collection.byExample"
      • ///
      • @ref SimpleQueryFirstExample "collection.firstExample"
      • @@ -48,13 +47,6 @@ ///
      • @ref SimpleQueryGeo "collection.geo"
      • ///
      ///
    • -///
    • @ref SimpleQueriesEdgesQueries -///
        -///
      • @ref SimpleQueryEdges "edges-collection.edges"
      • -///
      • @ref SimpleQueryInEdges "edges-collection.inEdges"
      • -///
      • @ref SimpleQueryOutEdges "edges-collection.outEdges"
      • -///
      -///
    • ///
    • @ref SimpleQueriesPagination ///
        ///
      • @ref SimpleQueryLimit "query.limit"
      • @@ -93,9 +85,6 @@ /// @section SimpleQueriesQueries Queries ///////////////////////////////////////// /// -/// @anchor SimpleQueryDocument -/// @copydetails JS_DocumentVocbaseCol -/// /// @anchor SimpleQueryAll /// @copydetails JSF_ArangoCollection_prototype_all /// @@ -139,18 +128,6 @@ /// @anchor SimpleQueryGeo /// @copydetails JSF_ArangoCollection_prototype_geo /// -/// @section SimpleQueriesEdgesQueries Edges Queries -//////////////////////////////////////////////////// -/// -/// @anchor SimpleQueryEdges -/// @copydetails JS_EdgesQuery -/// -/// @anchor SimpleQueryInEdges -/// @copydetails JS_InEdgesQuery -/// -/// @anchor SimpleQueryOutEdges -/// @copydetails JS_OutEdgesQuery -/// /// @section SimpleQueriesPagination Pagination /////////////////////////////////////////////// /// diff --git a/RestServer/user-manual.dox b/RestServer/user-manual.dox index 9d0ee53f6b..642e995a53 100644 --- a/RestServer/user-manual.dox +++ b/RestServer/user-manual.dox @@ -31,6 +31,8 @@ /// @if LATEX ///
          ///
        • @ref UserManualBasics
        • +///
        • @ref ShellDocument
        • +///
        • @ref ShellEdge
        • ///
        • @ref SimpleQueries
        • ///
        • @ref Aql
        • /// @@ -40,6 +42,8 @@ ///
        /// @else /// @copydetails UserManualBasicsTOC +/// @copydetails ShellDocumentTOC +/// @copydetails ShellEdgeTOC /// @copydetails SimpleQueriesTOC /// @copydetails AqlTOC /// @copydetails CommandLineTOC diff --git a/V8/v8-vocbase.cpp b/V8/v8-vocbase.cpp index 034de329c3..b7c701cdca 100644 --- a/V8/v8-vocbase.cpp +++ b/V8/v8-vocbase.cpp @@ -1853,11 +1853,11 @@ static v8::Handle JS_CountVocbaseCol (v8::Arguments const& argv) { /// /// Delete a document: /// -/// @verbinclude shell_remove-document +/// @TINYEXAMPLE{shell_remove-document,delete a document} /// /// Delete a document with a conflict: /// -/// @verbinclude shell_remove-document-conflict +/// @TINYEXAMPLE{shell_remove-document-conflict,delete a document} //////////////////////////////////////////////////////////////////////////////// static v8::Handle JS_RemoveVocbaseCol (v8::Arguments const& argv) { @@ -2769,11 +2769,11 @@ static v8::Handle JS_RenameVocbaseCol (v8::Arguments const& argv) { /// /// Create and update a document: /// -/// @verbinclude shell_update-document +/// @TINYEXAMPLE{shell_update-document,updating a document} /// /// Use a document handle: /// -/// @verbinclude shell_update-document-handle +/// @TINYEXAMPLE{shell_update-document-handle,updating a document} //////////////////////////////////////////////////////////////////////////////// static v8::Handle JS_ReplaceVocbaseCol (v8::Arguments const& argv) { @@ -2947,7 +2947,9 @@ static v8::Handle JS_UnloadVocbaseCol (v8::Arguments const& argv) { /// Saves a new edge and returns the document-handle. @FA{from} and @FA{to} /// must be documents or document references. /// -/// @verbinclude shell_create-edge +/// @EXAMPLES +/// +/// @TINYEXAMPLE{shell_create-edge,create an edge} //////////////////////////////////////////////////////////////////////////////// static v8::Handle JS_SaveEdgesCol (v8::Arguments const& argv) { @@ -3297,11 +3299,11 @@ static v8::Handle JS_CreateVocBase (v8::Arguments const& argv) { /// /// Delete a document: /// -/// @verbinclude shell_remove-document-db +/// @TINYEXAMPLE{shell_remove-document-db,delete a document} /// /// Delete a document with a conflict: /// -/// @verbinclude shell_remove-document-conflict-db +/// @TINYEXAMPLE{shell_remove-document-conflict-db,delete a document} //////////////////////////////////////////////////////////////////////////////// static v8::Handle JS_RemoveVocbase (v8::Arguments const& argv) { @@ -3381,7 +3383,7 @@ static v8::Handle JS_DocumentVocbase (v8::Arguments const& argv) { /// /// Create and update a document: /// -/// @verbinclude shell_update-document-db +/// @TINYEXAMPLE{shell_update-document-db,updating a document} //////////////////////////////////////////////////////////////////////////////// static v8::Handle JS_ReplaceVocbase (v8::Arguments const& argv) { From 27fe9ab240260a4534855efca2feff6d5ccfba1c Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Mon, 14 May 2012 22:56:37 +0200 Subject: [PATCH 27/29] added doc for collections --- Doxygen/arango-xml.doxy | 2 +- RestServer/shell-collection.dox | 92 ++++++++++++++++----------------- RestServer/shell-document.dox | 18 ++++--- RestServer/shell-edge.dox | 12 +++-- RestServer/user-manual.dox | 2 + V8/v8-vocbase.cpp | 6 --- 6 files changed, 64 insertions(+), 68 deletions(-) diff --git a/Doxygen/arango-xml.doxy b/Doxygen/arango-xml.doxy index b01ddd6073..56d7773531 100644 --- a/Doxygen/arango-xml.doxy +++ b/Doxygen/arango-xml.doxy @@ -211,7 +211,7 @@ ALIASES += REST{1}="\1" ALIASES += GE{1}="\1" ALIASES += EXAMPLES="Examples
        " ALIASES += EXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}@endlatexonly" -ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\set{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" +ALIASES += TINYEXAMPLE{2}="@latexonly\renewcommand{\examplecap}{\2}\setboolean{hascap}{true}\renewcommand{\examplesize}{\tiny}@endlatexonly@verbinclude \1@latexonly\setboolean{hascap}{false}\renewcommand{\examplesize}{\ttfamily}@endlatexonly" ALIASES += VERSION="0.5.0" ALIASES += EMBEDTOC{1}="@ifnot LATEX
        @copydoc \1
        @endif" ALIASES += RESTHEADER{2}="@if LATEX@latexonly \vskip 0.5em\colorbox{gray}{@endlatexonly\1 (\2)@latexonly}\vskip 1em@endlatexonly@else
        \1 (\2)

        @endif" diff --git a/RestServer/shell-collection.dox b/RestServer/shell-collection.dox index 80214668c4..a73ac4b3bd 100644 --- a/RestServer/shell-collection.dox +++ b/RestServer/shell-collection.dox @@ -28,51 +28,58 @@ //////////////////////////////////////////////////////////////////////////////// /// @page ShellCollectionTOC /// -///
          -///
        1. @ref ShellCollectionIntro
        2. -///
        3. @ref ShellCollectionResource
        4. -///
        5. @ref ShellCollectionShell -/// @copydetails ShellCollectionCallsTOC +///
            +///
          • @ref ShellCollection +///
              +///
            • @ref ShellCollectionIntro
            • +///
            • @ref ShellCollectionResource
            • +///
            • @ref ShellCollectionShell +/// @copydetails ShellCollectionCallsTOC +///
            • +///
            ///
          • -///
        +///
      //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /// @page ShellCollectionCallsTOC /// -///
        +///
          ///
        • @ref ShellCollectionCollectionMethods -///
            -///
          1. @ref ShellCollectionDrop "collection.drop()"
          2. -///
          3. @ref ShellCollectionTruncate "collection.truncate()"
          4. -///
          5. @ref ShellCollectionProperties "collection.properties()"
          6. -///
          7. @ref ShellCollectionFigures "collection.figures()"
          8. -///
          9. @ref ShellCollectionLoad "collection.load()"
          10. -///
          11. @ref ShellCollectionUnload "collection.unload()"
          12. -///
          13. @ref ShellCollectionUnload "collection.rename(new-name)"
          14. -///
          +///
            +///
          • @ref ShellCollectionDrop "collection.drop"
          • +///
          • @ref ShellCollectionTruncate "collection.truncate"
          • +///
          • @ref ShellCollectionProperties "collection.properties"
          • +///
          • @ref ShellCollectionFigures "collection.figures"
          • +///
          • @ref ShellCollectionLoad "collection.load"
          • +///
          • @ref ShellCollectionUnload "collection.unload"
          • +///
          • @ref ShellCollectionUnload "collection.rename"
          • +///
          ///
        • ///
        • @ref ShellCollectionDatabaseMethods -///
            -///
          1. @ref ShellCollectionRead "db._collection(collection-identifier)"
          2. -///
          3. @ref ShellCollectionCreate "db._create(collection-name, properties)"
          4. -///
          5. @ref ShellCollectionReadAll "db._collections()"
          6. +///
              +///
            • @ref ShellCollectionRead "db._collection"
            • +///
            • @ref ShellCollectionCreate "db._create"
            • +///
            • @ref ShellCollectionReadAll "db._collections"
            • ///
            • @ref ShellCollectionReadShortCut "db.collection-name"
            • -///
            • @ref ShellCollectionDropDb "db._drop(collection)"
            • -///
            • @ref ShellCollectionTruncateDb "db._truncate(collection)"
            • -///
          +///
        • @ref ShellCollectionDropDb "db._drop"
        • +///
        • @ref ShellCollectionTruncateDb "db._truncate"
        • +///
        /// -///
      +///
    //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// -/// @page ShellCollection ArangoDB Interface for Collections +/// @page ShellCollection Handling Collections /// -/// This is an introduction to ArangoDB's interface for collections. +/// This is an introduction to ArangoDB's interface for collections and how +/// handle collections from the JavaScript shell @LIT{arangosh}. For other +/// languages see the corresponding language API. /// -///
    -/// @copydoc ShellCollectionTOC -///
    +/// The most import call is the call to create a new collection, see +/// @ref ShellCollectionCreate "_create". +/// +/// @EMBEDTOC{ShellCollectionTOC} /// /// @section ShellCollectionIntro Collections ///////////////////////////////////////////// @@ -87,10 +94,9 @@ //////////////////////////////////////////////////////////// /// /// All collections in ArangoDB have an unique identifier. This collection -/// identifier identifies a collection and is managed by -/// ArangoDB. Each collection, in addition, has a unique name. This -/// name is managed by the user. The interface allows you to access -/// the collections as: +/// identifier identifies a collection and is managed by ArangoDB. Each +/// collection, in addition, has a unique name. This name is managed by the +/// user. The interface allows you to access the collections as: /// /// @LIT{db._collection(@FA{collection-identifier})} /// @@ -98,9 +104,11 @@ /// /// @LIT{db._collection(@FA{collection-name})} /// -/// For example: Assume that the collection identifier is -/// @LIT{7254820} and the name is @LIT{demo}, then the collection can -/// be accessed as: +/// A collection is created by a @FN{db._create} call, see @ref +/// ShellCollectionCreate "_create". +/// +/// For example: Assume that the collection identifier is @LIT{7254820} and the +/// name is @LIT{demo}, then the collection can be accessed as: /// /// @LIT{db._collection("demo")} /// @@ -127,54 +135,42 @@ /// /// @anchor ShellCollectionDrop /// @copydetails JS_DropVocbaseCol -///
    /// /// @anchor ShellCollectionTruncate /// @copydetails JSF_ArangoCollection_prototype_truncate -///
    /// /// @anchor ShellCollectionProperties /// @copydetails JS_PropertiesVocbaseCol -///
    /// /// @anchor ShellCollectionFigures /// @copydetails JS_FiguresVocbaseCol -///
    /// /// @anchor ShellCollectionLoad /// @copydetails JS_LoadVocbaseCol -///
    /// /// @anchor ShellCollectionUnload /// @copydetails JS_UnloadVocbaseCol -///
    /// /// @anchor ShellCollectionRename /// @copydetails JS_RenameVocbaseCol -///
    /// /// @subsection ShellCollectionDatabaseMethods Database Methods /////////////////////////////////////////////////////////////// /// /// @anchor ShellCollectionRead /// @copydetails JS_CollectionVocBase -///
    /// /// @anchor ShellCollectionCreate /// @copydetails JS_CreateVocBase -///
    /// /// @anchor ShellCollectionReadAll /// @copydetails JS_CollectionsVocBase -///
    /// /// @anchor ShellCollectionReadShortCut /// @copydetails MapGetVocBase -///
    /// /// @anchor ShellCollectionDropDb /// @copydetails JSF_ArangoDatabase_prototype__drop -///
    /// /// @anchor ShellCollectionTruncateDb /// @copydetails JSF_ArangoDatabase_prototype__truncate diff --git a/RestServer/shell-document.dox b/RestServer/shell-document.dox index 8e7f3fb3ee..be4ab3f5b0 100644 --- a/RestServer/shell-document.dox +++ b/RestServer/shell-document.dox @@ -47,17 +47,17 @@ ///
      ///
    • @ref ShellDocumentCollectionMethods ///
        -///
      • @ref ShellDocumentRead "collection.document(document-handle)"
      • -///
      • @ref ShellDocumentCreate "collection.save(data)"
      • -///
      • @ref ShellDocumentUpdate "collection.replace(document, data)"
      • -///
      • @ref ShellDocumentDelete "collection.remove(document)"
      • +///
      • @ref ShellDocumentRead "collection.document"
      • +///
      • @ref ShellDocumentCreate "collection.save"
      • +///
      • @ref ShellDocumentUpdate "collection.replace"
      • +///
      • @ref ShellDocumentDelete "collection.remove"
      • ///
      ///
    • ///
    • @ref ShellDocumentDatabaseMethods ///
        -///
      • @ref ShellDocumentDbRead "db._document(document-handle)"
      • -///
      • @ref ShellDocumentDbUpdate "db._replace(document-handle, data)"
      • -///
      • @ref ShellDocumentDbDelete "db._remove(document-handle)"
      • +///
      • @ref ShellDocumentDbRead "db._document"
      • +///
      • @ref ShellDocumentDbUpdate "db._replace"
      • +///
      • @ref ShellDocumentDbDelete "db._remove"
      • ///
      ///
    • ///
    @@ -66,7 +66,9 @@ //////////////////////////////////////////////////////////////////////////////// /// @page ShellDocument Handling Documents /// -/// This is an introduction to ArangoDB's interface for documents. +/// This is an introduction to ArangoDB's interface for documents and how handle +/// documents from the JavaScript shell @LIT{arangosh}. For other languages see +/// the corresponding language API. /// /// @EMBEDTOC{ShellDocumentTOC} /// diff --git a/RestServer/shell-edge.dox b/RestServer/shell-edge.dox index a8d1a1ead1..b1d7ebf9da 100644 --- a/RestServer/shell-edge.dox +++ b/RestServer/shell-edge.dox @@ -44,17 +44,19 @@ /// @page ShellEdgeCallsTOC /// ///
      -///
    • @ref ShellEdgeCreate "edge-collection.save(from, to, data)"
    • -///
    • @ref ShellEdgeEdges "edge-collection.edges(vertex)"
    • -///
    • @ref ShellEdgeInEdges "edge-collection.inEdges(vertex)"
    • -///
    • @ref ShellEdgeOutEdges "edge-collection.outEdges(vertex)"
    • +///
    • @ref ShellEdgeCreate "edge-collection.save"
    • +///
    • @ref ShellEdgeEdges "edge-collection.edges"
    • +///
    • @ref ShellEdgeInEdges "edge-collection.inEdges"
    • +///
    • @ref ShellEdgeOutEdges "edge-collection.outEdges"
    • ///
    //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /// @page ShellEdge Handling Edges /// -/// This is an introduction to ArangoDB's interface for edges. +/// This is an introduction to ArangoDB's interface for edges and how handle +/// edges from the JavaScript shell @LIT{arangosh}. For other languages see the +/// corresponding language API. /// /// @EMBEDTOC{ShellEdgeTOC} /// diff --git a/RestServer/user-manual.dox b/RestServer/user-manual.dox index 642e995a53..042f28ec44 100644 --- a/RestServer/user-manual.dox +++ b/RestServer/user-manual.dox @@ -31,6 +31,7 @@ /// @if LATEX ///
      ///
    • @ref UserManualBasics
    • +///
    • @ref ShellCollection
    • ///
    • @ref ShellDocument
    • ///
    • @ref ShellEdge
    • ///
    • @ref SimpleQueries
    • @@ -42,6 +43,7 @@ ///
    /// @else /// @copydetails UserManualBasicsTOC +/// @copydetails ShellCollectionTOC /// @copydetails ShellDocumentTOC /// @copydetails ShellEdgeTOC /// @copydetails SimpleQueriesTOC diff --git a/V8/v8-vocbase.cpp b/V8/v8-vocbase.cpp index b7c701cdca..a6525c6ac8 100644 --- a/V8/v8-vocbase.cpp +++ b/V8/v8-vocbase.cpp @@ -2425,20 +2425,14 @@ static v8::Handle JS_EnsureSkiplistVocbaseCol (v8::Arguments const& a /// Returns an object containing all collection figures. /// /// - @LIT{alive.count}: The number of living documents. -/// /// - @LIT{alive.size}: The total size in bytes used by all /// living documents. -/// /// - @LIT{dead.count}: The number of dead documents. -/// /// - @LIT{dead.size}: The total size in bytes used by all /// dead documents. -/// /// - @LIT{dead.deletion}: The total number of deletion markers. -/// /// - @LIT{datafiles.count}: The number of active datafiles. /// - /// @EXAMPLES /// /// @verbinclude shell_collection-figures From 75d0af322b5810bef92a2d3b3842bf00fda0a6e8 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Mon, 14 May 2012 23:04:50 +0200 Subject: [PATCH 28/29] fix doc --- RestServer/home.dox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RestServer/home.dox b/RestServer/home.dox index 48ef74fcbf..48ae10552f 100644 --- a/RestServer/home.dox +++ b/RestServer/home.dox @@ -49,7 +49,7 @@ /////////////////////////////////////////////////////////////////////////// /// ///
      -///
    • @ref UserManual (pdf)
    • +///
    • @ref UserManual (pdf)
    • ///
    • @ref Glossary
    • ///
    /// From 6a77569e2d6ab0ddbd1f8b691625601549003ac7 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Mon, 14 May 2012 23:08:17 +0200 Subject: [PATCH 29/29] fixed links --- RestServer/home.dox | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/RestServer/home.dox b/RestServer/home.dox index 48ae10552f..5f45cf99d7 100644 --- a/RestServer/home.dox +++ b/RestServer/home.dox @@ -37,7 +37,7 @@ /// The ArangoDB consists of a server, a separate shell, which allows you to /// administrate the server, and a set of client API for various languages. /// -/// @xmlonly The HTML version of the manual can be found here. @endxmlonly +/// @xmlonly The HTML and PDF versions of the manual can be found here. @endxmlonly /// /// @warning /// ArangoDB is currently pre-alpha. We want to have a version 1 ready by end @@ -49,7 +49,7 @@ /////////////////////////////////////////////////////////////////////////// /// ///
      -///
    • @ref UserManual (pdf)
    • +///
    • @ref UserManual @ifnot XML @SPC(pdf) @endif
    • ///
    • @ref Glossary
    • ///
    /// @@ -57,7 +57,7 @@ //////////////////////////////////////////////////////////////////////////////////// /// ///
      -///
    • @ref InstallManual (pdf)
    • +///
    • @ref InstallManual @ifnot XML @SPC(pdf) @endif
    • ///
    • @ref Glossary
    • ///
    /// @@ -65,7 +65,7 @@ ////////////////////////////////////////////////////////////////////////////// /// ///
      -///
    • @ref ImplementorManual (pdf)
    • +///
    • @ref ImplementorManual @ifnot XML @SPC(pdf) @endif
    • ///
    • @ref RefManual
    • ///
    • @ref Glossary
    • ///