From ed158fd1e6e5f590dede83c243499ded904689d0 Mon Sep 17 00:00:00 2001 From: Jonathan Dieter Date: Apr 19 2012 10:59:03 +0000 Subject: Apply patch from Jan Synacek which allows us to build against guile-2.0.x Signed-off-by: Jonathan Dieter --- diff --git a/drgeo-1.1.0-guile-fixups.patch b/drgeo-1.1.0-guile-fixups.patch new file mode 100644 index 0000000..c2b9cbb --- /dev/null +++ b/drgeo-1.1.0-guile-fixups.patch @@ -0,0 +1,406 @@ +diff -Naur drgeo-1.1.0-dist/drgenius_config.cc drgeo-1.1.0/drgenius_config.cc +--- drgeo-1.1.0-dist/drgenius_config.cc 2003-11-24 22:24:11.000000000 +0100 ++++ drgeo-1.1.0/drgenius_config.cc 2012-04-19 11:12:30.738659533 +0200 +@@ -80,7 +80,11 @@ + ret = gh_eval_str (scm); + g_free (scm); + g_free(value); ++#if SCM_MAJOR_VERSION < 2 + value = gh_scm2newstr (ret, NULL); ++#else ++ value = (gchar *) gh_scm2newstr ((const char *) ret, NULL); ++#endif + return value; + } + +diff -Naur drgeo-1.1.0-dist/drgenius_config.h drgeo-1.1.0/drgenius_config.h +--- drgeo-1.1.0-dist/drgenius_config.h 2004-04-29 22:05:20.000000000 +0200 ++++ drgeo-1.1.0/drgenius_config.h 2012-04-19 11:10:34.877671093 +0200 +@@ -25,7 +25,7 @@ + #ifndef DRGENIUS_CONFIG_H + #define DRGENIUS_CONFIG_H + +-#include ++#include + #include + #include + #include +diff -Naur drgeo-1.1.0-dist/drgenius_main.cc drgeo-1.1.0/drgenius_main.cc +--- drgeo-1.1.0-dist/drgenius_main.cc 2004-04-09 22:00:04.000000000 +0200 ++++ drgeo-1.1.0/drgenius_main.cc 2012-04-19 11:10:34.879671093 +0200 +@@ -25,7 +25,6 @@ + #include + #include + #include +-#include + #include + #include + +@@ -36,6 +35,7 @@ + #include "drgeo_scm_interface.h" + #include "drgenius_help.h" + ++#include + + #define _(x) gettext (x) + #define N_(x) x +diff -Naur drgeo-1.1.0-dist/drgeo_init.cc drgeo-1.1.0/drgeo_init.cc +--- drgeo-1.1.0-dist/drgeo_init.cc 2004-01-20 23:14:46.000000000 +0100 ++++ drgeo-1.1.0/drgeo_init.cc 2012-04-19 11:10:34.880671092 +0200 +@@ -22,7 +22,7 @@ + * 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +-#include ++#include + #include + + void +diff -Naur drgeo-1.1.0-dist/geo/drgeo_scm_api.h drgeo-1.1.0/geo/drgeo_scm_api.h +--- drgeo-1.1.0-dist/geo/drgeo_scm_api.h 2003-09-23 22:21:47.000000000 +0200 ++++ drgeo-1.1.0/geo/drgeo_scm_api.h 2012-04-19 11:10:34.881671091 +0200 +@@ -24,7 +24,7 @@ + #ifndef DRGEO_SCM_API_H + #define DRGEO_SCM_API_H + +-#include ++#include + + + #ifdef __cplusplus +diff -Naur drgeo-1.1.0-dist/geo/drgeo_scm_helper.h drgeo-1.1.0/geo/drgeo_scm_helper.h +--- drgeo-1.1.0-dist/geo/drgeo_scm_helper.h 2003-08-16 21:11:55.000000000 +0200 ++++ drgeo-1.1.0/geo/drgeo_scm_helper.h 2012-04-19 11:10:34.882671091 +0200 +@@ -25,7 +25,7 @@ + #define DRGEO_SCM_HELPER_H + + #include +-#include ++#include + #include "drgeo_drgeoVector.h" + + drgeoPoint & scmCoord2drgeoPoint (SCM x, SCM y); +diff -Naur drgeo-1.1.0-dist/geo/drgeo_scm_interface.cc drgeo-1.1.0/geo/drgeo_scm_interface.cc +--- drgeo-1.1.0-dist/geo/drgeo_scm_interface.cc 2004-10-17 10:50:11.000000000 +0200 ++++ drgeo-1.1.0/geo/drgeo_scm_interface.cc 2012-04-19 11:13:45.705652054 +0200 +@@ -789,7 +789,11 @@ + { + gchar *str; + ++#if SCM_MAJOR_VERSION < 2 + str = gh_scm2newstr (name, NULL); ++#else ++ str = (gchar *) gh_scm2newstr ((const char *) name, NULL); ++#endif + item->setName (str); + g_free (str); + item->initName (); +@@ -807,7 +811,11 @@ + mdi->newGeometricDocument (NULL); + figure = ((geoView *) mdi->activeView ())->figure (); + ++#if SCM_MAJOR_VERSION < 2 + str = gh_scm2newstr (name, NULL); ++#else ++ str = (gchar *) gh_scm2newstr ((const char *) name, NULL); ++#endif + mdi->renameView (((drgeoGtkDrawable *) figure->getDrawable())->getGeoView (), str); + g_free (str); + +diff -Naur drgeo-1.1.0-dist/geo/drgeo_scm_interface.h drgeo-1.1.0/geo/drgeo_scm_interface.h +--- drgeo-1.1.0-dist/geo/drgeo_scm_interface.h 2003-10-06 13:42:00.000000000 +0200 ++++ drgeo-1.1.0/geo/drgeo_scm_interface.h 2012-04-19 11:10:34.885671091 +0200 +@@ -24,7 +24,7 @@ + #ifndef DRGEO_SCM_INTERFACE_H + #define DRGEO_SCM_INTERFACE_H + +-#include ++#include + #include "drgeo_figure.h" + + /* define scm_interface into a class */ +diff -Naur drgeo-1.1.0-dist/geo/drgeo_script.cc drgeo-1.1.0/geo/drgeo_script.cc +--- drgeo-1.1.0-dist/geo/drgeo_script.cc 2004-08-25 21:27:03.000000000 +0200 ++++ drgeo-1.1.0/geo/drgeo_script.cc 2012-04-19 11:14:44.169646221 +0200 +@@ -21,7 +21,7 @@ + * 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +-#include ++#include + #include "config.h" + #include "drgeo_script.h" + #include "drgeo_drawable.h" +@@ -153,7 +153,11 @@ + } + } + else if (gh_string_p (ret)) ++#if SCM_MAJOR_VERSION < 2 + setString (gh_scm2newstr (ret, NULL)); ++#else ++ setString ((char *) gh_scm2newstr ((const char *) ret, NULL)); ++#endif + else + setString (g_strdup (_("Unprintable result"))); + } +diff -Naur drgeo-1.1.0-dist/geo/drgeo_script.h drgeo-1.1.0/geo/drgeo_script.h +--- drgeo-1.1.0-dist/geo/drgeo_script.h 2003-09-22 18:38:19.000000000 +0200 ++++ drgeo-1.1.0/geo/drgeo_script.h 2012-04-19 11:10:34.887671091 +0200 +@@ -24,7 +24,7 @@ + #ifndef DRGEO_SCRIPT_H + #define DRGEO_SCRIPT_H + +-#include ++#include + #include "drgeo_value.h" + + class script:public value +diff -Naur drgeo-1.1.0-dist/geo/Makefile.in drgeo-1.1.0/geo/Makefile.in +--- drgeo-1.1.0-dist/geo/Makefile.in 2005-07-27 09:36:22.000000000 +0200 ++++ drgeo-1.1.0/geo/Makefile.in 2012-04-19 11:10:34.919671089 +0200 +@@ -192,7 +192,8 @@ + -DDRGEO_GLADEDIR=\""$(gladedir)"\" \ + -DDRGEO_ENCODEDIR=\""$(encodedir)"\" \ + -I$(includedir) \ +- $(DRGEO_CFLAGS) ++ $(DRGEO_CFLAGS) \ ++ $(GUILE_CFLAGS) + + + noinst_LIBRARIES = libgeo.a +@@ -247,7 +248,8 @@ + drgeo_scm_interface.h drgeo_scm_interface.cc \ + drgeo_scm_api.h drgeo_scm_api.cc \ + drgeo_scm_helper.h drgeo_scm_helper.cc \ +- drgeo_gtkhelpers.h drgeo_gtkhelpers.cc ++ drgeo_gtkhelpers.h drgeo_gtkhelpers.cc \ ++ ../guile-fixups.h ../guile-fixups.cc + + + CLEANFILES = $(BUILT_SOURCES) +diff -Naur drgeo-1.1.0-dist/guile_fixups.cc drgeo-1.1.0/guile_fixups.cc +--- drgeo-1.1.0-dist/guile_fixups.cc 1970-01-01 01:00:00.000000000 +0100 ++++ drgeo-1.1.0/guile_fixups.cc 2012-04-19 11:10:34.891671091 +0200 +@@ -0,0 +1,140 @@ ++#include ++#if SCM_MAJOR_VERSION >= 2 ++#include ++ ++static SCM ++eval_str_wrapper (void *data) ++{ ++ char *scheme_code = (char *) data; ++ return gh_eval_str (scheme_code); ++} ++ ++static SCM ++eval_file_wrapper (void *data) ++{ ++/* gh_eval_t real_eval_proc = (gh_eval_t) (* ((gh_eval_t *) data)); */ ++ ++ char *scheme_code = (char *) data; ++ return gh_eval_file (scheme_code); ++} ++ ++SCM ++gh_eval_str_with_catch (const char *scheme_code, scm_t_catch_handler handler) ++{ ++ /* FIXME: not there yet */ ++ return gh_catch (SCM_BOOL_T, (scm_t_catch_body) eval_str_wrapper, (void *) scheme_code, ++ (scm_t_catch_handler) handler, (void *) scheme_code); ++} ++ ++SCM ++gh_eval_file_with_catch (const char *scheme_code, scm_t_catch_handler handler) ++{ ++ /* FIXME: not there yet */ ++ return gh_catch (SCM_BOOL_T, (scm_t_catch_body) eval_file_wrapper, ++ (void *) scheme_code, (scm_t_catch_handler) handler, ++ (void *) scheme_code); ++} ++ ++/* This function takes care of all real GH initialization. Since it's ++ called by scm_boot_guile, it can safely work with heap objects, or ++ call functions that do so. */ ++static void ++gh_launch_pad (void *closure, int argc, char **argv) ++{ ++ main_prog_t c_main_prog = (main_prog_t) closure; ++ ++ c_main_prog (argc, argv); ++ exit (0); ++} ++ ++/* starts up the Scheme interpreter, and stays in it. c_main_prog() ++ is the address of the user's main program, since gh_enter() never ++ returns. */ ++void ++gh_enter (int argc, char *argv[], main_prog_t c_main_prog) ++{ ++ scm_boot_guile (argc, argv, gh_launch_pad, (void *) c_main_prog); ++ /* never returns */ ++} ++ ++static void * ++scm2whatever (SCM obj, void *m, size_t size) ++{ ++ scm_t_array_handle handle; ++ size_t len; ++ ssize_t inc; ++ const void *elts; ++ ++ elts = scm_uniform_vector_elements (obj, &handle, &len, &inc); ++ ++ if (inc != 1) ++ scm_misc_error (NULL, "only contiguous vectors can be converted: ~a", ++ scm_list_1 (obj)); ++ ++ if (m == 0) ++ m = malloc (len * sizeof (size)); ++ if (m != NULL) ++ memcpy (m, elts, len * size); ++ ++ scm_array_handle_release (&handle); ++ ++ return m; ++} ++ ++#define SCM2WHATEVER(obj,pred,utype,mtype) \ ++ if (scm_is_true (pred (obj))) \ ++ { \ ++ assert (sizeof (utype) == sizeof (mtype)); \ ++ return (mtype *)scm2whatever (obj, m, sizeof (utype)); \ ++ } ++ ++/* Convert a vector, weak vector or uniform vector into an array of ++ doubles. If result array in arg 2 is NULL, malloc a new one. If ++ out of memory, return NULL. */ ++double * ++gh_scm2doubles (SCM obj, double *m) ++{ ++ long i, n; ++ SCM val; ++ if (SCM_IMP (obj)) ++ scm_wrong_type_arg (0, 0, obj); ++ ++ /* XXX - f32vectors are rejected now. ++ */ ++ SCM2WHATEVER (obj, scm_f64vector_p, double, double) ++ ++ switch (SCM_TYP7 (obj)) ++ { ++ case scm_tc7_vector: ++ case scm_tc7_wvect: ++ n = SCM_SIMPLE_VECTOR_LENGTH (obj); ++ for (i = 0; i < n; ++i) ++ { ++ val = SCM_SIMPLE_VECTOR_REF (obj, i); ++ if (!SCM_I_INUMP (val) ++ && !(SCM_BIGP (val) || SCM_REALP (val))) ++ scm_wrong_type_arg (0, 0, val); ++ } ++ if (m == 0) ++ m = (double *) malloc (n * sizeof (double)); ++ if (m == NULL) ++ return NULL; ++ for (i = 0; i < n; ++i) ++ { ++ val = SCM_SIMPLE_VECTOR_REF (obj, i); ++ if (SCM_I_INUMP (val)) ++ m[i] = SCM_I_INUM (val); ++ else if (SCM_BIGP (val)) ++ m[i] = scm_to_long (val); ++ else ++ m[i] = SCM_REAL_VALUE (val); ++ } ++ break; ++ ++ default: ++ scm_wrong_type_arg (0, 0, obj); ++ } ++ return m; ++} ++ ++#endif /* SCM_MAJOR_VERSION */ +diff -Naur drgeo-1.1.0-dist/guile_fixups.h drgeo-1.1.0/guile_fixups.h +--- drgeo-1.1.0-dist/guile_fixups.h 1970-01-01 01:00:00.000000000 +0100 ++++ drgeo-1.1.0/guile_fixups.h 2012-04-19 11:10:34.890671091 +0200 +@@ -0,0 +1,42 @@ ++#ifndef _GUILE_FIXUPS_ ++#define _GUILE_FIXUPS_ ++ ++#include ++ ++#if SCM_MAJOR_VERSION < 2 ++#include ++ ++#elif SCM_MAJOR_VERSION == 2 ++#include ++ ++#define gh_scm2int scm_to_int ++#define gh_scm2double scm_to_double ++#define gh_string_p scm_is_string ++#define gh_scm2newstr(a, b) scm_str2string((a)) ++#define gh_scm2ulong scm_to_ulong ++#define gh_car scm_car ++#define gh_cdr scm_cdr ++#define gh_cadr scm_cadr ++#define gh_null_p(l) scm_is_true(scm_null_p((l))) ++#define gh_ulong2scm scm_from_ulong ++#define gh_double2scm scm_from_double ++#define gh_list scm_list_n ++#define gh_new_procedure(p, f, nr, no, v) scm_c_define_gsubr((p), (size_t)(f), (nr), (no), (v)) ++#define gh_load(fname) gh_eval_file(fname) ++#define gh_eval_str scm_c_eval_string ++#define gh_catch scm_internal_catch ++#define gh_str02scm scm_from_locale_string ++#define gh_eval_file(f) scm_primitive_load(gh_str02scm((f))); ++ ++double *gh_scm2doubles (SCM obj, double *m); ++ ++SCM gh_eval_file_with_catch (const char *scheme_code, scm_t_catch_handler handler); ++SCM gh_eval_str_with_catch (const char *scheme_code, scm_t_catch_handler handler); ++ ++typedef void (*main_prog_t) (int argc, char **argv); ++typedef void (*repl_prog_t) (int argc, char **argv); ++void gh_enter (int argc, char *argv[], main_prog_t c_main_prog); ++ ++#endif // SCM_MAJOR_VERSION ++ ++#endif // _GUILE_FIXUPS_ +diff -Naur drgeo-1.1.0-dist/Makefile.am drgeo-1.1.0/Makefile.am +--- drgeo-1.1.0-dist/Makefile.am 2005-07-11 22:26:46.000000000 +0200 ++++ drgeo-1.1.0/Makefile.am 2012-04-19 11:10:34.888671091 +0200 +@@ -36,7 +36,8 @@ + drgeo_init.h \ + drgeo_init.cc \ + drgeo_printer.h \ +- drgeo_printer.cc ++ drgeo_printer.cc \ ++ guile_fixups.cc + + drgeo_LDFLAGS = -export-dynamic + +diff -Naur drgeo-1.1.0-dist/Makefile.in drgeo-1.1.0/Makefile.in +--- drgeo-1.1.0-dist/Makefile.in 2005-07-27 09:36:20.000000000 +0200 ++++ drgeo-1.1.0/Makefile.in 2012-04-19 11:10:34.920671088 +0200 +@@ -217,7 +217,9 @@ + drgeo_init.h \ + drgeo_init.cc \ + drgeo_printer.h \ +- drgeo_printer.cc ++ drgeo_printer.cc \ ++ guile_fixups.cc \ ++ guile_fixups.h + + + drgeo_LDFLAGS = -export-dynamic +@@ -253,7 +255,7 @@ + drgenius_config.$(OBJEXT) drgeo_adaptDialog.$(OBJEXT) \ + drgenius_view.$(OBJEXT) geo_view.$(OBJEXT) \ + editor_view.$(OBJEXT) drgeo_init.$(OBJEXT) \ +- drgeo_printer.$(OBJEXT) ++ drgeo_printer.$(OBJEXT) guile_fixups.$(OBJEXT) + drgeo_OBJECTS = $(am_drgeo_OBJECTS) + drgeo_DEPENDENCIES = $(top_builddir)/geo/libgeo.a + diff --git a/drgeo.spec b/drgeo.spec index 7ba2148..b9b6557 100644 --- a/drgeo.spec +++ b/drgeo.spec @@ -1,7 +1,7 @@ Summary: Interactive educational geometry software Name: drgeo Version: 1.1.0 -Release: 20%{?dist} +Release: 21%{?dist} License: GPLv2+ Group: Applications/Engineering URL: http://www.ofset.org/drgeo @@ -10,6 +10,7 @@ Source: http://dl.sf.net/ofset/drgeo-%{version}.tar.gz Patch0: drgeo-1.1.0-htmlview.patch Patch1: drgeo.patch Patch2: drgeo-1.1.0-anonymous-type.patch +Patch3: drgeo-1.1.0-guile-fixups.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: flex, bison, gmp-devel >= 2.0.2, desktop-file-utils @@ -28,6 +29,7 @@ situation with students from primary or secondary level. %patch0 -p1 %patch1 -p1 %patch2 -p1 +%patch3 -p1 %build %configure @@ -65,6 +67,9 @@ rm -rf %{buildroot} %{_datadir}/applications/fedora-drgeo.desktop %changelog +* Thu Apr 19 2012 Jonathan Dieter - 1.1.0-21 +- Apply patch from Jan Synacek which allows us to build against guile-2.0.x + * Fri Jan 13 2012 Fedora Release Engineering - 1.1.0-20 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild