Evince reuires a patch because of a change in api in poppler. Do you not
have a patch for evince to build against poppler? It should be up on the
denemo.org server if not.

Jeremiah
On Feb 18, 2013 8:24 AM, "Richard Shann" <richard.sh...@virgin.net> wrote:

> I have made progress hacking evince to not build the evince executable
> (just hacking the Makefile.in files directly).
> Now Denemo is linking to evince statically (with libpdfdocument
> resolving the register_evince_backend()) but there seems to be no
> poppler library to link to. What does poppler.mk build?
> As it is Denemo fails to link now because
>
> /home/rshann/mxe/usr/i686-pc-mingw32/lib/evince/3/backends/libpdfdocument.a(ev-poppler.o):
> In function
> `Z29pdf_document_images_get_imageP17_EvDocumentImagesP8_EvImage':
> /home/rshann/mxe/tmp-evince/evince-2.32.0/backend/pdf/ev-poppler.cc:1368:
> undefined reference to `poppler_document_get_page'
>
> Do you know what needs to be done with poppler to get this resolved?
>
> Richard
>
>
>
> On Mon, 2013-02-18 at 10:42 +0000, Richard Shann wrote:
> > On Sun, 2013-02-17 at 13:51 -0600, Jeremiah Benham wrote:
> > > For me it was in the usr/i686*/bin dir. I made a symbolic link into
> > > usr/bin. This allowed me to proceed.
> >
> > Well, I haven't got that working, but I think I have discovered that the
> > code modifications needed to link in the pdf backend statically are
> > actually very small. Below is the entire ev-module.c file, in which
> > there are just two small changes indicated by #if 0 #else #endif
> > What these do is to skip the loading of the dll and instead expect the
> > function register_evince_backend() to be statically linked (it is
> > defined in backend/pdf/ev-poppler.cc).
> >
> > If I try to make evince with this version of ev-module.c it fails
> > because it tries to build the executable evince (which we don't need).
> > This is expected, since it will not have libpdfdocument.a on its link
> > line.
> >
> > I tried to make it not build the executable, but I can't find the right
> > way to adjust the Makefile stuff.
> >
> > I wonder if you could take this version of ev-module.c and substitute it
> > in the libdocument directory and then adjust the make system so that it
> > will build evince? (Either disabling the build of the executable, or
> > adding backend/pdf/xxxx.o to the object files included in libevince.
> > I am not really expecting that this will then be the job done - I
> > imagine there may be a few wrinkles, but with a make system doing the
> > right thing I am fairly confident we can build a static evince.
> >
> > Richard
> > Below is ev-module.c cut and pasted, but I attach it as well as that is
> > better for file transmission.
> >
> > /*
> >  * ev-module.c
> >  * This file is part of Evince
> >  *
> >  * Copyright (C) 2005 - Paolo Maggi
> >  *
> >  * 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
> >  * the Free Software Foundation; either version 2 of the License, or
> >  * (at your option) any later version.
> >  *
> >  * This program is distributed in the hope that it will be useful,
> >  * but WITHOUT ANY WARRANTY; without even the implied warranty of
> >  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >  * 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, write to the Free Software
> >  * Foundation, Inc., 51 Franklin Street, Fifth Floor,
> >  * Boston, MA 02110-1301, USA.
> >  */
> >
> > /* This is a modified version of ephy-module.c from Epiphany source
> > code.
> >  * Here the original copyright assignment:
> >  *
> >  *  Copyright (C) 2003 Marco Pesenti Gritti
> >  *  Copyright (C) 2003, 2004 Christian Persch
> >  *
> >  */
> >
> > /*
> >  * Modified by the gedit Team, 2005. See the AUTHORS file for a
> >  * list of people on the gedit Team.
> >  * See the ChangeLog files for a list of changes.
> >  *
> >  * $Id: gedit-module.c 5367 2006-12-17 14:29:49Z pborelli $
> >  */
> >
> > /* Modified by evince team */
> >
> > #include "config.h"
> >
> > #include "ev-module.h"
> >
> > #include <gmodule.h>
> >
> > typedef struct _EvModuleClass EvModuleClass;
> >
> > struct _EvModuleClass {
> >         GTypeModuleClass parent_class;
> > };
> >
> > struct _EvModule {
> >         GTypeModule parent_instance;
> >
> >         GModule *library;
> >       gboolean resident;
> >
> >         gchar *path;
> >         GType type;
> > };
> >
> > typedef GType (*EvModuleRegisterFunc) (GTypeModule *);
> >
> > static void ev_module_init       (EvModule *action);
> > static void ev_module_class_init (EvModuleClass *class);
> >
> > G_DEFINE_TYPE (EvModule, ev_module, G_TYPE_TYPE_MODULE)
> >
> > static gboolean
> > ev_module_load (GTypeModule *gmodule)
> > {
> >         EvModule *module = EV_MODULE (gmodule);
> >         EvModuleRegisterFunc register_func;
> > #if 0
> >         module->library = g_module_open (module->path, 0);
> >
> >         if (!module->library) {
> >                 g_warning ("%s", g_module_error ());
> >
> >                 return FALSE;
> >         }
> >
> >         /* extract symbols from the lib */
> >         if (!g_module_symbol (module->library,
> > "register_evince_backend",
> >                               (void *) &register_func)) {
> >                 g_warning ("%s", g_module_error ());
> >                 g_module_close (module->library);
> >
> >                 return FALSE;
> >         }
> >
> >         /* symbol can still be NULL even though g_module_symbol
> >          * returned TRUE */
> >         if (!register_func) {
> >                 g_warning ("Symbol 'register_evince_backend' should not
> > be NULL");
> >                 g_module_close (module->library);
> >
> >                 return FALSE;
> >         }
> > #else
> > extern GType register_evince_backend (GTypeModule *module);
> >       register_func = register_evince_backend;
> > #endif
> >         module->type = register_func (gmodule);
> >
> >         if (module->type == 0) {
> >                 g_warning ("Invalid evince backend contained by module %
> > s", module->path);
> >
> >                 return FALSE;
> >         }
> > #if 0
> >       if (module->resident)
> >               g_module_make_resident (module->library);
> > #endif
> >         return TRUE;
> > }
> >
> > static void
> > ev_module_unload (GTypeModule *gmodule)
> > {
> > #if 0
> >         EvModule *module = EV_MODULE (gmodule);
> >
> >         g_module_close (module->library);
> >
> >         module->library = NULL;
> >         module->type = 0;
> > #else
> >       g_warning("Nothing done for ev_module_unload");
> > #endif
> > }
> >
> > const gchar *
> > ev_module_get_path (EvModule *module)
> > {
> >         g_return_val_if_fail (EV_IS_MODULE (module), NULL);
> >
> >         return module->path;
> > }
> >
> > GObject *
> > ev_module_new_object (EvModule *module)
> > {
> >       g_return_val_if_fail (EV_IS_MODULE (module), NULL);
> >
> >         if (module->type == 0)
> >                 return NULL;
> >
> >         return g_object_new (module->type, NULL);
> > }
> >
> > GType
> > ev_module_get_object_type (EvModule *module)
> > {
> >       g_return_val_if_fail (EV_IS_MODULE (module), 0);
> >
> >       return module->type;
> > }
> >
> > static void
> > ev_module_init (EvModule *module)
> > {
> > }
> >
> > static void
> > ev_module_finalize (GObject *object)
> > {
> >         EvModule *module = EV_MODULE (object);
> >
> >         g_free (module->path);
> >
> >         G_OBJECT_CLASS (ev_module_parent_class)->finalize (object);
> > }
> >
> > static void
> > ev_module_class_init (EvModuleClass *class)
> > {
> >         GObjectClass *object_class = G_OBJECT_CLASS (class);
> >         GTypeModuleClass *module_class = G_TYPE_MODULE_CLASS (class);
> >
> >         object_class->finalize = ev_module_finalize;
> >
> >         module_class->load = ev_module_load;
> >         module_class->unload = ev_module_unload;
> > }
> >
> > EvModule *
> > ev_module_new (const gchar *path,
> >              gboolean     resident)
> > {
> >         EvModule *result;
> >
> >       g_return_val_if_fail (path != NULL && path[0] != '\0', NULL);
> >
> >         result = g_object_new (EV_TYPE_MODULE, NULL);
> >
> >         g_type_module_set_name (G_TYPE_MODULE (result), path);
> >         result->path = g_strdup (path);
> >       result->resident = resident;
> >
> >         return result;
> > }
> >
> > >
> > > Jeremiah
> > >
> > > On Feb 17, 2013 1:10 PM, "Richard Shann" <richard.sh...@virgin.net>
> > > wrote:
> > >         On Sun, 2013-02-17 at 17:09 +0000, Richard Shann wrote:
> > >         > On Sun, 2013-02-17 at 08:03 -0600, Jeremiah Benham wrote:
> > >         > > I am sure we will encounter an issue or two. Theoretically
> > >         though, we
> > >         > > should only have to create such a system like this once.
> > >         Then we will
> > >         > > only have to occasionally add update the dependencies now
> > >         and then. I
> > >         > > think if we are going to do dynamic, we should fork our
> > >         own mxe on
> > >         > > github. We can create a sed script to replace
> > >         --disable-shared
> > >         > > --enable-shared and --enable-static to --disable-static on
> > >         all the
> > >         > > src/*.mk.
> > >         > Well, of the two routes (hacking evince or converting mxe to
> > >         build dlls)
> > >         > I feel more confident about the first and I suspect you
> > >         would be better
> > >         > at the second. The advantage of the first is that we would
> > >         get mxe
> > >         > support as the libraries change over time, the disadvantage
> > >         would be we
> > >         > would be on our own with any changes we might want to follow
> > >         in evince.
> > >         >  I guess we should push ahead with seeing which is feasible.
> > >         I'll look
> > >         > some more at evince - in principle I just need to replace
> > >         the g*module*
> > >         > stuff with stuff to point directly at the ev-poppler.cc
> > >         code, bringing
> > >         > that in to directly linked sources.
> > >
> > >         Well, I fell at the first hurdle. I wanted to build evince on
> > >         Debian
> > >         first to trace what it did, and it would not configure for
> > >         lack of
> > >         glib-compile-schemas. So I built glib and that generated
> > >         glib-compile-schemas (it isn't present on my Debian box) and I
> > >         put it in
> > >         the path, but it still says it can't find it... sigh!
> > >
> > >         Richard
> > >
> > >
> >
>
>
>
_______________________________________________
Denemo-devel mailing list
Denemo-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/denemo-devel

Reply via email to