He estado peleándome con las fuentes de Google Gears y por fín he conseguido generar una versión de Gears para Linux 64 bits :) . Mal comienzo… “Muchos” (desde luego no más de los que estáis leyendo esto) estaréis pensando… ¿Qué es Gears?

Gears es una extensión creada por google para varios navegadores que permite trabajar con aplicaciones web en modo offline (o acelerar la carga de ciertas partes de la página para mejorar la  experiencia del usuario… que marketinera me ha salido esta última frase… :p) (para Firefox está en forma de extensión/complemento, para otros navegadores.. no sé exactamente que “forma” toma).

Información sobre esta extensión hay a montones por internet, al final del artículo os dejo referencias, así que no me entretendré en explicar lo que otros ya han escrito.. (y mucho mejor de lo que llegaría a hacerlo yo). Entonces.. ¿Por qué escribo esto? Pues bien, resulta que Gears no está disponible oficialmente para las versiones de 64 bits de Linux, sólo hay algunas versiones no oficiales… bastante desactualizadas (en estos momentos tienen hasta la 4.9 y la última versión lanzada por google es la 5.4.2) .

Pero… yo he parcheado un poco el código fuente disponible en los repositorios svn, he compilado y finalmente he conseguido una versión funcional para mi navegador de 64 bits. El problema… la versión que he compilado es la 5.6.0, una versión que no ha sido lanzada todavía, así que es posible que tenga algun bug que otro.

Podeis bajarlo de aquí: Google Gears para Linux 64 bits

En breve modifico este artículo y cuelgo el proceso que he seguido (He hecho unas cuantas trampas… :p) (Me he dejado las notas y hasta que no las recupere no podré describirlo suficientemente bién, aunque había algun que otro post en foros de internet, estos se referían a versiones “antiguas” y tampoco dan explicaciones completas)

Proceso:

Antes que nada me he pasado por los foros de Google y visité una discusión que trataba el tema, en ella se mostraban diferentes (en realidad sólo 2), el parche que apliqué yo está basado en el primero de los que se exponen (modificado, pues el parche se hizo para una versión bastante antigua).

Pues bién, el primer paso consiste en descargar el código del svn con el siguiente comando (yo trabajé con la revisión 3093):
svn checkout http://gears.googlecode.com/svn/trunk/ gears-read-only

Una vez hecho esto modificaremos el fichero gears/tools/config.mk cambiando la línea
ARCH = i386 por
ARCH = x86_64
,

la línea
MODE = dbg por
MODE = opt ,
y la línea
COMPILE_FLAGS = -c -o $@ -fPIC -fmessage-length=0 -Wall -Werror $(COMPILE_FLAGS_$(MODE)) por
COMPILE_FLAGS = -c -o $@ -fPIC -fmessage-length=0 -Wall $(COMPILE_FLAGS_$(MODE))
éste último cambio lo hacemos por que si no los warnings no nos dejarán compilar (ya advertí que seguramente tiene algun que otro error escondido la versión que compilé).

Pasemos al siguiente fichero, el cambio se hace por que los punteros en sistemas de 64 bits son más grandes. Abrimos el fichero gears/localserver/firefox/async_task_ff.cc y cambiamos la siguiente línea:
OnListenerEvent(msg_code, reinterpret_cast<int>(msg_param)); por ésta otra:
OnListenerEvent(msg_code, reinterpret_cast<long>(msg_param));

Aquí es donde yo empecé a aplicar mis propios cambios (que son una tontería, pero permitieron que consiguiera compilar).

En los siguientes ficheros:

  • third_party/googleurl/src/url_parser.cc
  • gears/base/common/http_utils.cc
  • gears/geolocation/backoff_manager.cc

añadiremos la línea (al principio de todo):
#include <stdlib.h>

En los siguientes:

  • third_party/jsoncpp/json_reader.cc
  • third_party/jsoncpp/json_value.cc
  • gears/base/common/string16.h
  • gears/base/common/http_utils.cc

añadiremos la línea (al principio de todo):
#include <string.h>

Y por último, en el fichero gears/base/common/str_utils.cc añadiremos la línea:
#include <limits.h>

Para continuar tendremos que instalar los paquetes de desarrollo de Firefox 3 y del Xulrunner 1.9, yo desde mi Ubuntu 8.10 lo hice así:
aptitude install xulrunner-dev firefox-dev

Ésto lo hacemos para tener las librerías de 64 bits que utilizaremos para reemplazar las de 32 bits que hay en el código que nos hemos bajado y así poder enlazar correctamente los binarios que deseamos obtener. Estos ficheros los sustituiremos por la versión instalada en nuestro sistema:

  • third_party/gecko_1.9/linux/gecko_sdk/lib/libxpcom.so
  • third_party/gecko_1.9/linux/gecko_sdk/lib/libxpcomglue.a
  • third_party/gecko_1.9/linux/gecko_sdk/lib/libxpcomglue_s.a
  • third_party/gecko_1.9/linux/gecko_sdk/lib/libnspr4.so
  • third_party/gecko_1.9/linux/gecko_sdk/bin/xpidl
  • third_party/gecko_1.9/linux/gecko_sdk/bin/xpt_link

Pero el trabajo no se acaba aquí, continuemos. Nos movemos al siguiente directorio:
third_party/gecko_1.9/linux/gecko_sdk/bin
y ejecutamos los siguientes comandos:
chmod +x xpidl
chmod +x xpt_link

El siguiente paso es el más lento de todos (y el más sencillo), tecleamos en la línea de comandos dentro del directorio gears :
make BROWSER=FF3

Una vez hecho esto ya casi estaremos. Creamos un directorio fuera del que creó svn al descargar las fuentes, le llamaremos XPI . Entramos en él y ejecutamos el siguiente comando para descargar el paquete actual de Gears (para 32 bits):
wget http://dl.google.com/gears/current/gears-linux-opt.xpi

Lo descomprimimos (en realidad es un zip normal y corriente):
unzip gears-linux-opt.xpi

Ahora tendremos que modificar algunos ficheros, sustituir otros, comprimir… y ya estaremos! Abrimos el fichero install.rdf y modificamos las siguientes líneas:
<!– Prevent this XPI from being installed on the wrong platform. –>
<em:targetPlatform>Linux_x86-gcc3</em:targetPlatform>
<!– Ubuntu Edgy Eft requires “linux-gnu” for the OS_TARGET prefix. –>
<em:targetPlatform>linux-gnu_x86-gcc3</em:targetPlatform>

por éstas otras:
<!– Prevent this XPI from being installed on the wrong platform. –>
<em:targetPlatform>Linux_x86_64-gcc3</em:targetPlatform>
<!– Ubuntu Edgy Eft requires “linux-gnu” for the OS_TARGET prefix. –>
<em:targetPlatform>linux-gnu_x86_64-gcc3</em:targetPlatform>

Entramos en el subdirectorio components . Allí sustituiremos los ficheros gears.xpt y libgears.so (el fichero libgears_ff2.so no lo tocaremos por que no hemos compilado nada para Firefox 2, aun así, si queréis tenerlo, simplemente tenéis que cambiar FF3 por FF2 en el make anterior) por las nuevas versiones que habremos generado, que se encontrarán en el directorio
gears/bin-opt/linux-x86_64/ff3/

Una vez hecho esto comprimimos otra vez el directorio (si os ha quedado el .xpi de google anterior dentro, quitadlo de allí) . Notad que tenéis que comprimirlo con el formato zip (ninguno otro servirá). Al fichero resultante le ponéis la extensión xpi y por fin podréis instalarla y provarla!! ;)

Referencias:

Comparte y disfruta:
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Bitacoras.com
  • Identi.ca
  • Meneame
  • StumbleUpon
  • Technorati
  • Twitter
votar

« »