* don't try to use guile if it's pre-2.x; but add some beginning compat

functions for 1.8 and friends
This commit is contained in:
Dirk-Jan C. Binnema
2011-07-17 22:28:17 +03:00
parent 8b824da539
commit 815d5ad862
7 changed files with 74 additions and 22 deletions

View File

@ -209,12 +209,10 @@ AM_CONDITIONAL(HAVE_GIO, [test "x$have_gio" = "xyes"])
AM_CONDITIONAL(BUILD_WIDGETS, [test "x$have_webkit" = "xyes" -a "x$have_gio" = "xyes"]) AM_CONDITIONAL(BUILD_WIDGETS, [test "x$have_webkit" = "xyes" -a "x$have_gio" = "xyes"])
# check for guile & guile-snarf # check for guile & guile-snarf
AC_PATH_PROG(GUILE, [guile-config], [], [$PATH]) AC_PATH_PROG(GUILE_CONFIG, [guile-config], [], [/usr/bin])
AS_IF([test "x$GUILE" != "x"], AS_IF([test "x$GUILE_CONFIG" != "x"],
[GUILE_CFLAGS=`$GUILE compile`; GUILE_LIBS=`$GUILE link`]) [GUILE_CFLAGS=`$GUILE_CONFIG compile`; GUILE_LIBS=`$GUILE_CONFIG link`])
AC_SUBST(GUILE_LIBS) AC_SUBST(GUILE_LIBS)
AC_SUBST(GUILE_CFLAGS) AC_SUBST(GUILE_CFLAGS)
@ -223,12 +221,21 @@ AS_IF([test "x$GUILE_SNARF" != "x"],[
AC_DEFINE_UNQUOTED([GUILE_SNARF], ["$GUILE_SNARF"],[Path to guile-snarf])],[ AC_DEFINE_UNQUOTED([GUILE_SNARF], ["$GUILE_SNARF"],[Path to guile-snarf])],[
AC_MSG_WARN([cannot find guile-snarf])]) AC_MSG_WARN([cannot find guile-snarf])])
AM_CONDITIONAL(HAVE_GUILE,[test "$xGUILE" != "x" -a "x$GUILE_SNARF != "x]) AS_IF([test "x$GUILE_CONFIG" != "x"],
[GUILE_VERSION="`$GUILE_CONFIG --version 2>&1 | sed 's/.*version //'`";
GUILE_MAJOR_VERSION="`echo "$GUILE_VERSION" | sed 's/\..*//'`"])
AS_IF([test "x$GUILE_MAJOR_VERSION" = "x0" -o "x$GUILE_MAJOR_VERSION" = "x1"],
[AC_DEFINE_UNQUOTED([HAVE_PRE2_GUILE],[1],[have pre-2.x guile])])
# for now, we require guile 2.x
AM_CONDITIONAL(HAVE_GUILE,[test "$xGUILE_CONFIG" != "x" -a "x$GUILE_SNARF" != "x" \
-a "x$GUILE_MAJOR_VERSION" != "0" \
-a "x$GUILE_MAJOR_VERSION" != "1"])
AS_IF([test "x$GUILE_MAJOR_VERSION" = "x0" -o "x$GUILE_MAJOR_VERSION" = "x1"],
[AC_MSG_WARN([Only guile >= 2.x is supported])])
# check for xdg-open # check for xdg-open
AS_IF([test "x$buildgui"="xyes"],[ AS_IF([test "x$buildgui"="xyes"],[
AC_PATH_PROG(XDGOPEN, [xdg-open], [], [$PATH]) AC_PATH_PROG(XDGOPEN, [xdg-open], [], [$PATH])
@ -242,11 +249,9 @@ AC_PATH_PROG([PMCCABE],[pmccabe],[pmccabe],[no])
AS_IF([test "x$PMCCABE" = "xno"],[ AS_IF([test "x$PMCCABE" = "xno"],[
have_pmccabe="no" have_pmccabe="no"
AC_MSG_WARN([ AC_MSG_WARN([
*** Developers: you don't seem to have the 'pmccabe' tool installed. *** Developers: you do not seem to have the pmccabe tool installed.
*** Please install it if you want to run the automated code checks]) *** Please install it if you want to run the automated code checks])
],[ ],[have_pmccabe="yes"])
have_pmccabe="yes"
])
AC_CONFIG_FILES([ AC_CONFIG_FILES([
Makefile Makefile
@ -291,8 +296,8 @@ if test "x$have_webkit" = "xyes"; then
echo "Webkit version : $webkit_version" echo "Webkit version : $webkit_version"
fi fi
if test "x$GUILE" != "x"; then if test "x$HAVE_GUILE" != "x"; then
echo "Guile version : `$GUILE --version 2>&1`" echo "Guile version : $GUILE_VERSION"
fi fi
echo echo

View File

@ -18,7 +18,7 @@ include $(top_srcdir)/gtest.mk
# enforce compiling this dir first before decending into tests/ # enforce compiling this dir first before decending into tests/
SUBDIRS= . SUBDIRS= .
INCLUDES=-I${top_srcdir}/src ${GUILE_CFLAGS} ${GLIB_CFLAGS} INCLUDES=-I${top_srcdir} -I${top_srcdir}/src ${GUILE_CFLAGS} ${GLIB_CFLAGS}
# don't use -Werror, as it might break on other compilers # don't use -Werror, as it might break on other compilers
# use -Wno-unused-parameters, because some callbacks may not # use -Wno-unused-parameters, because some callbacks may not

View File

@ -16,6 +16,9 @@
** Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ** Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
** **
*/ */
#if HAVE_CONFIG_H
#include <config.h>
#endif /*HAVE_CONFIG_H*/
#include "mu-guile-common.h" #include "mu-guile-common.h"
@ -39,3 +42,25 @@ mu_guile_g_error (const char *func_name, GError *err)
scm_from_utf8_string (err->message), scm_from_utf8_string (err->message),
SCM_UNDEFINED, SCM_UNDEFINED); SCM_UNDEFINED, SCM_UNDEFINED);
} }
/*
* backward compat for pre-2.x guile - note, this will fail miserably
* if you don't use a UTF8 locale
*/
#if HAVE_PRE2_GUILE
SCM
scm_from_utf8_string (const char* str)
{
return scm_from_locale_string (str);
}
char*
scm_to_utf8_string (SCM scm)
{
return scm_to_locale_string (scm);
}
#endif /*HAVE_PRE2_GUILE*/

View File

@ -21,6 +21,11 @@
#define __MU_GUILE_UTILS_H__ #define __MU_GUILE_UTILS_H__
#include <libguile.h> #include <libguile.h>
#if HAVE_CONFIG_H
#include <config.h>
#endif /*HAVE_CONFIG_H*/
#include <glib.h> #include <glib.h>
G_BEGIN_DECLS G_BEGIN_DECLS
@ -44,7 +49,13 @@ void mu_guile_error (const char *func_name, int status,
* @param err Gerror * @param err Gerror
*/ */
void mu_guile_g_error (const char *func_name, GError *err); void mu_guile_g_error (const char *func_name, GError *err);
/* compatibility functions for old guile */
#if HAVE_PRE2_GUILE
SCM scm_from_utf8_string (const char* str);
char* scm_to_utf8_string (SCM scm);
#endif /*HAVE_PRE2_GUILE*/
G_END_DECLS G_END_DECLS
#endif /*__MU_GUILE_UTILS_H__*/ #endif /*__MU_GUILE_UTILS_H__*/

View File

@ -146,9 +146,9 @@ SCM_DEFINE (msg_prio, "mu:msg:priority", 1, 0, 0,
prio = mu_msg_get_prio (msgwrap->_msg); prio = mu_msg_get_prio (msgwrap->_msg);
switch (prio) { switch (prio) {
case MU_MSG_PRIO_LOW: return scm_from_utf8_symbol("low"); case MU_MSG_PRIO_LOW: return scm_from_locale_symbol("low");
case MU_MSG_PRIO_NORMAL: return scm_from_utf8_symbol("normal"); case MU_MSG_PRIO_NORMAL: return scm_from_locale_symbol("normal");
case MU_MSG_PRIO_HIGH: return scm_from_utf8_symbol("high"); case MU_MSG_PRIO_HIGH: return scm_from_locale_symbol("high");
default: default:
g_return_val_if_reached (SCM_UNDEFINED); g_return_val_if_reached (SCM_UNDEFINED);
} }
@ -167,7 +167,7 @@ check_flag (MuMsgFlags flag, FlagData *fdata)
{ {
if (fdata->flags & flag) { if (fdata->flags & flag) {
SCM item; SCM item;
item = scm_list_1 (scm_from_utf8_symbol(mu_msg_flag_name(flag))); item = scm_list_1 (scm_from_locale_symbol(mu_msg_flag_name(flag)));
fdata->lst = scm_append_x (scm_list_2(fdata->lst, item)); fdata->lst = scm_append_x (scm_list_2(fdata->lst, item));
} }
} }

View File

@ -7,7 +7,9 @@
`guile'[1] is an interpreter/library for the Scheme programming language[2], `guile'[1] is an interpreter/library for the Scheme programming language[2],
specifically meant for extending other programs. It is, in fact, the specifically meant for extending other programs. It is, in fact, the
official GNU language for doing so. official GNU language for doing so. 'muile' requires guile 2.x to get the full
support; older versions will not support e.g. the 'mu-stats.scm' things
discussed below.
The combination of mu + guile is called `muile', and allows you to write The combination of mu + guile is called `muile', and allows you to write
little Scheme-programs to query the mu-database, or inspect individual little Scheme-programs to query the mu-database, or inspect individual

View File

@ -16,6 +16,9 @@
** Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ** Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
** **
*/ */
#if HAVE_CONFIG_H
#include <config.h>
#endif /*HAVE_CONFIG_H*/
#include <mu-runtime.h> #include <mu-runtime.h>
@ -27,7 +30,13 @@
int int
main (int argc, char *argv[]) main (int argc, char *argv[])
{ {
mu_runtime_init ("/home/djcb/.mu");
#ifdef HAVE_PRE2_GUILE
g_warning ("Note: muile will not function correctly unless you have a "
"UTF-8 locale.");
#endif /* HAVE_PRE2_GUILE */
mu_runtime_init (mu_util_guess_mu_homedir());
scm_with_guile (&mu_guile_msg_init, NULL); scm_with_guile (&mu_guile_msg_init, NULL);
scm_with_guile (&mu_guile_store_init, NULL); scm_with_guile (&mu_guile_store_init, NULL);