User:Carloscardenas/GSOC2012/MacASCEND4GSoCInstalationES: Difference between revisions

From ASCEND
Jump to navigation Jump to search
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
Ascend4 es un proyecto interesante para simulación. Tiene un desarrollo que ha logrado armonizar varias plataformas de desarrollo como c, fortran, cpp, perl y python.
Ascend4 es un proyecto interesante para simulación. Tiene un desarrollo que ha logrado armonizar varias plataformas de desarrollo como c, fortran, cpp, perl y python.




Line 16: Line 13:
Darwin osxs-Mac-Pro.local 11.4.0 Darwin Kernel Version 11.4.0: Mon Apr  9 19:32:15 PDT 2012; root:xnu-1699.26.8~1/RELEASE_X86_64 x86_64
Darwin osxs-Mac-Pro.local 11.4.0 Darwin Kernel Version 11.4.0: Mon Apr  9 19:32:15 PDT 2012; root:xnu-1699.26.8~1/RELEASE_X86_64 x86_64
</source>
</source>
[[File:MACOSDEVELASCEND4.png|thumb|none|400px|Mac screenshot]]


Las variables de entorno iniciales son:
Las variables de entorno iniciales son:
Line 196: Line 195:
osxs-Mac-Pro:Ascend osx$ sudo ln -s /usr/local/bin/swig /bin/
osxs-Mac-Pro:Ascend osx$ sudo ln -s /usr/local/bin/swig /bin/
</source>
</source>


=== Instalación de Sundails ===
=== Instalación de Sundails ===


Descargar e instalar [[https://computation.llnl.gov/casc/sundials/main.html sundails]] para las soluciones de Solvers.
Descargar e instalar [[https://computation.llnl.gov/casc/sundials/main.html sundails]] para las soluciones de Solvers.
== Compilación del ASCEND4==
Descargar el ascend4 de:
<source lang=a4c>
osxs-Mac-<Pro:Ascend osx$svn co svn://ascend4.org/code/branches/carlos ascend
</source >
Se usa el siguiente comando:
<source lang=a4c>
osxs-Mac-Pro:Ascend osx$scons --config=force
</source >
Alternativamente con la configuración de los archivos de IPOPT y CONOPT
<source lang=a4c>
scons --config=force INSTALL_PREFIX=/usr/local/ IPOPT_PREFIX=../lib IPOPT_LIBPATH=../lib IPOPT_CPPPATH=../lib CONOPT_PREFIX=../lib CONOPT_CPPPATH=../Library  CONOPT_LIBPATH=../lib CONOPT_PATH=../lib GRAPHVIZ_CPPPATH=../lib GRAPHVIZ_LIBPATH=../lib GRAPHVIZ_LIBS=../lib
</source>
Se tiene algunas salidas debido al posix de MAC
<source lang=a4c>
osxs-Mac-Pro:Ascend osx$ ./pygtk/ascdev models/johnpye/
CREATED ASCENDLIBRARY=/opt/ascend/models
CREATED ASCENDSOLVERS=/opt/ascend/solvers/cmslv:/opt/ascend/solvers/conopt:/opt/ascend/solvers/dopri5:/opt/ascend/solvers/ida:/opt/ascend/solvers/ipopt:/opt/ascend/solvers/lrslv:/opt/ascend/solvers/lsode:/opt/ascend/solvers/qrslv
CREATED DYLD_LIBRARY_PATH=/opt/ascend:/opt/ascend/pygtk
CREATED PYTHONPATH=/opt/ascend/ascxx
Restarting with...
  export ASCENDLIBRARY=/opt/ascend/models
  export ASCENDSOLVERS=/opt/ascend/solvers/cmslv:/opt/ascend/solvers/conopt:/opt/ascend/solvers/dopri5:/opt/ascend/solvers/ida:/opt/ascend/solvers/ipopt:/opt/ascend/solvers/lrslv:/opt/ascend/solvers/lsode:/opt/ascend/solvers/qrslv
  export DYLD_LIBRARY_PATH=/opt/ascend:/opt/ascend/pygtk
  export PYTHONPATH=/opt/ascend/ascxx
PYTHON...  ./pygtk/ascdev
ascdev: posix_spawn: /opt/ascend/pygtk/ascdev2.7: No such file or directory
</source>
La solución es crear una copia de ascdev a ascdev en la carpeta pygtk
<source lang=a4c>
osxs-Mac-Pro:Ascend osx$ cp -r pygtk/ascdev pygtk/ascdev2.7
osxs-Mac-Pro:Ascend osx$ ./pygtk/ascdev models/johnpye/
</source>
[[Image:MacAscend-Installer-02.png|thumb|none|400px|Mac screenshot Model lokta]]
Algunos screenshot más [[http://ascend4.org/User:Carloscardenas/GSOC2012/MacASCEND4ScreenShot aqui]]
== Creación del Instalador ASCEND4.app ==
=== Creación de los ASCEND4.app ===
Para la creación de ASCEND4 se copio los archivos compilados en ascend de la siguiente forma:
<source lang=a4c>
osxs-Mac-Pro:Ascend osx$ mkdir  -r ASCEND4.app/Contents/Resources
osxs-Mac-Pro:Ascend osx$ cp -r ascend ASCEND4.app/Contents/Resources
osxs-Mac-Pro:Ascend osx$ cp -r ascend/mac/Info.plist ASCEND4.app/Contents/
osxs-Mac-Pro:Ascend osx$ cp -r ascend/mac/ascend.icns ASCEND4.app/Contents/Resources
osxs-Mac-Pro:Ascend osx$ cd  ASCEND4.app/Contents
osxs-Mac-Pro:Ascend osx$ ln -s  Resources/ascend/ascdev ascend
osxs-Mac-Pro:Ascend osx$ ln -s  Resources/ascend/ascdev2.7 ascend2.7
</source>
== Creación del PKG y DMG ==
Para la Creación del instalador se utilizó PackageMaker y DistUtilities ambas herramientas del entorno de MAC.
=== Creación del DISCO DMG ===
Primero se Crea un disco se coloca el nombre de ASCEND con un espacio de 500 MB cerrando cuando se tiene dentro la carpeta Resource y ASCEND4.app
=== Creación del PKG ===
Se utiliza el ASCEND.app para colocarlos dentro del PKG. Los archivos dentro del ASCEND.app se pueden ver [[http://ascend4.org/User:Carloscardenas/GSOC2012/ListadoArchivosASCENDapp aqui]]
=== Listado de Archivos de dependencias ===
Este [[http://ascend4.org/User:Carloscardenas/GSOC2012/ListadoArchivosResources listado]] de dependencias forma parte de Resources que ira dentro del archivo ASCEND.dmg.




Line 250: Line 332:
7.- El uso de librerias ajenas a MAC OSX a incluir dentro de Ascend4.
7.- El uso de librerias ajenas a MAC OSX a incluir dentro de Ascend4.


8.- El tiempo para compilar todo lo necesario para hacer un instalador desde un sistema MACOS Limpio es de 16 horas con una conexión de 200kb.
8.- El tiempo para compilar todo lo necesario para hacer un instalador desde un sistema MACOS Limpio es de 26 horas con una conexión de 200kb.
 
=== Problemas Por Resolver ===
 
* Integración de la instalación y empaquetamiento de ASCEND4 para MACOSX en Scons.
 
* Agregar Eventos de MacOSX a ASCEND4
 
* Integrar los paquetes de IPOPT, GRAPHVIZ.
 
* Corregir os Bug de GRAPHVIZ tiene un problema en la conversión de entera cadena.
 
* Corregir la consola de ASCEND Ipython.
 
* No depender de PackageMaker y DiskUtilities

Latest revision as of 11:26, 23 August 2012

Ascend4 es un proyecto interesante para simulación. Tiene un desarrollo que ha logrado armonizar varias plataformas de desarrollo como c, fortran, cpp, perl y python.


Proceso de instalación

Sistema Base

Se uso un Sistema MAC OS 10.7, las características del núcleo son:

osxs-Mac-Pro:gtk osx$ uname -a

Darwin osxs-Mac-Pro.local 11.4.0 Darwin Kernel Version 11.4.0: Mon Apr  9 19:32:15 PDT 2012; root:xnu-1699.26.8~1/RELEASE_X86_64 x86_64
Error creating thumbnail: File missing
Mac screenshot

Las variables de entorno iniciales son:

osxs-Mac-Pro:gtk osx$ env
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/f_/zzt1_n9j0mz00f0sph2p30q80000gn/T/
Apple_PubSub_Socket_Render=/tmp/launch-7TM5Bm/Render
TERM_PROGRAM_VERSION=303.2
TERM_SESSION_ID=08A79D6D-DE69-4DD9-B68D-E5F11669CBB1
USER=osx
COMMAND_MODE=unix2003
SSH_AUTH_SOCK=/tmp/launch-dbdtQy/Listeners
Apple_Ubiquity_Message=/tmp/launch-IrfyTY/Apple_Ubiquity_Message
__CF_USER_TEXT_ENCODING=0x1F5:0:0
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
PWD=/opt/gtk
LANG=en_NZ.UTF-8
HOME=/Users/osx
SHLVL=1
LOGNAME=osx
DISPLAY=/tmp/launch-LIa43C/org.x:0
SECURITYSESSIONID=186a4
_=/usr/bin/env

Proceso de Configuración de Instalación

Aquí se explica como algunos pasos adicionales a la explicación propuesta en Porting to Mac.

Actualización del Mac Osx 10.7.x

La versión por defecto comprada en la MACBOOK AIR en diciembre del 2011 contiene una versión de sistema operativo en el cual no se puede instalar la versión de XCODE que se usa para el presente desarrollo. Es necesario hacer una actualización del sistema. Los componentes a descargar son cerca de 1,5 Gb.

No se ha hecho pruebas de desarrollo con la versión de MAC OSX 10.8 Mountain Lion.

Instalación de Xcode

Luego de la actualización del Mac OSX 10.7.3, es necesario instalar el Xcode que complementará el sistemas MAC OSX con paquetes como el GIT y GCC llV entre otros, no es recomendable hacer una copia binaria de un sistema al otro porque corrompe los archivos de desarrollo.

La versión de XCODE usado para el desarrollo es:

Instalación de GTK y PyGTK

Este proceso de instalación es similar a GTK de Porting to Mac, la diferencia crucial para mejorar el empaquetamiento directo de Ascden4 es que si se sigue el mismo proceso los archivos fuentes de instalación del GTK y PYTGTK estarán en /Users/YOURUSER/gtk/inst y las librerias en /Users/YOURUSER/gtk/inst/lib y cuando se generen los paquetes del instalador se necesitaria ubicar los archivos en esas carpetas la opción de ige-mac-bundler no es la mejor porque las dependencias tienen muchas ramificaciones y estan determinadas por los archivos binarios y eso implicaria modificarlos arruinándose.

Por eso se modifico el instalador de jhbuild en sus variables 'HOME' para colocar PWD y la instalación de los binarios y librerias se realizó en /opt/gtk, directorio similar a la instalación de PyGTK.

Se tiene problemas para la libreria pycairo para la instalación de MAC OSX 10.7 al parecer ya el problema es reportado Y NO HAY SOLUCION FORMAL pero es un problema de la arquitectura y tiene que solucionarse a mano. Este es el [bug].

Estando en jhbuild se debe de compilar a mano por terminar de la siguiente manera:

$sudo ./waf configure --prefix=/opt/gtk --libdir=/opt/gtk/lib

Se debe intentar modificar el archivo _cache.py eliminando la arquitectura se coloca en la carpeta mac de ascend el archivo.

$sudo ./waf build
$sudo ./waf install

Si no se logra corregir el problema se tendria que copiar el archivo _cairo.so de PyGTK mac port como último recurso

Instalación de Numpy, scipy, matplopt y ipython

Dentro de la carpeta /opt/gtk

sudo easy_install pip
sudo pip install virtualenv
sudo pip install virtualenvwrapper
sudo pip install numpy
sudo pip install -e git+https://github.com/scipy/scipy#egg=scipy-dev
sudo pip install -e git+https://github.com/matplotlib/matplotlib#egg=matplotlib-dev
sudo pip install ipython
sudo sh
python setup.py install
import matplotlib

Es seguro que con esta instalación matploptlib no se compilara correctamente lo mejor es ingresar a la carpeta y compilarlo de esta forma. Previamente se debe configurar el archivo make.osx con la versión del sistema y la versión de python

$cd /opt/gtk/src/matplopt 
$sudo make -f make.osx PREFIX=/opt/lib PYVERSION=2.7 fetch deps mpl_install_std

Para mayor seguridad hacer la prueba con un código de ejemplo.

Error creating thumbnail: File missing
Matploptlib test

Instalación de Scons

Se instalo una versión de Scons 2.20 se puede descargar de [aquí ].

Un problema que se nota es que los instaladores de varias dependencias tienen binarios que se almacenan en /usr/local/bin

Pero no se pueden usar directamente como: $scons. Es necesario hacer lo siguiente:


ln -s /usr/local/bin/scons /bin/

Instalación de PCRE

SWIG tiene una dependencia llamada PCRE o PCRE - Perl Compatible Regular Expressions, se puede descargar de [aquí ] y tambien en /opt/gtk

El resultado de la compilación debe ser parecido a esto:

./configure
make
sudo make install
...
pcre-8.31 configuration summary:

    Install prefix .................. : /usr/local
    C preprocessor .................. : gcc -E
    C compiler ...................... : gcc
    C++ preprocessor ................ : g++ -E
    C++ compiler .................... : g++
    Linker .......................... : /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
    C preprocessor flags ............ : 
    C compiler flags ................ : -O2
    C++ compiler flags .............. : -O2
    Linker flags .................... : 
    Extra libraries ................. : 

    Build 8 bit pcre library ........ : yes
    Build 16 bit pcre library ....... : no
    Build C++ library ............... : yes
    Enable JIT compiling support .... : no
    Enable UTF-8/16 support ......... : no
    Unicode properties .............. : no
    Newline char/sequence ........... : lf
    \R matches only ANYCRLF ......... : no
    EBCDIC coding ................... : no
    Rebuild char tables ............. : no
    Use stack recursion ............. : yes
    POSIX mem threshold ............. : 10
    Internal link size .............. : 2
    Match limit ..................... : 10000000
    Match limit recursion ........... : MATCH_LIMIT
    Build shared libs ............... : yes
    Build static libs ............... : yes
    Use JIT in pcregrep ............. : no
    Buffer size for pcregrep ........ : 20480
    Link pcregrep with libz ......... : no
    Link pcregrep with libbz2 ....... : no
    Link pcretest with libedit ...... : no
    Link pcretest with libreadline .. : no

También hacer enlace simbolico a bin:


osxs-Mac-Pro:swig-2.0.8 osx$ sudo ln -s /usr/local/bin/pcre-config /bin/


Instalación de SWIG

SWIG se usa en Ascend con gtk y python. Se debe descargar [aquí], si no se compila SWIG no se genera el entorno gráfico de ascend4.

./configure
make
sudo make install
osxs-Mac-Pro:Ascend osx$ sudo ln -s /usr/local/bin/swig /bin/


Instalación de Sundails

Descargar e instalar [sundails] para las soluciones de Solvers.

Compilación del ASCEND4

Descargar el ascend4 de:

osxs-Mac-<Pro:Ascend osx$svn co svn://ascend4.org/code/branches/carlos ascend

Se usa el siguiente comando:

osxs-Mac-Pro:Ascend osx$scons --config=force

Alternativamente con la configuración de los archivos de IPOPT y CONOPT


scons --config=force INSTALL_PREFIX=/usr/local/ IPOPT_PREFIX=../lib IPOPT_LIBPATH=../lib IPOPT_CPPPATH=../lib CONOPT_PREFIX=../lib CONOPT_CPPPATH=../Library  CONOPT_LIBPATH=../lib CONOPT_PATH=../lib GRAPHVIZ_CPPPATH=../lib GRAPHVIZ_LIBPATH=../lib GRAPHVIZ_LIBS=../lib

Se tiene algunas salidas debido al posix de MAC

osxs-Mac-Pro:Ascend osx$ ./pygtk/ascdev models/johnpye/
CREATED ASCENDLIBRARY=/opt/ascend/models
CREATED ASCENDSOLVERS=/opt/ascend/solvers/cmslv:/opt/ascend/solvers/conopt:/opt/ascend/solvers/dopri5:/opt/ascend/solvers/ida:/opt/ascend/solvers/ipopt:/opt/ascend/solvers/lrslv:/opt/ascend/solvers/lsode:/opt/ascend/solvers/qrslv
CREATED DYLD_LIBRARY_PATH=/opt/ascend:/opt/ascend/pygtk
CREATED PYTHONPATH=/opt/ascend/ascxx

Restarting with...
   export ASCENDLIBRARY=/opt/ascend/models
   export ASCENDSOLVERS=/opt/ascend/solvers/cmslv:/opt/ascend/solvers/conopt:/opt/ascend/solvers/dopri5:/opt/ascend/solvers/ida:/opt/ascend/solvers/ipopt:/opt/ascend/solvers/lrslv:/opt/ascend/solvers/lsode:/opt/ascend/solvers/qrslv
   export DYLD_LIBRARY_PATH=/opt/ascend:/opt/ascend/pygtk
   export PYTHONPATH=/opt/ascend/ascxx
PYTHON...  ./pygtk/ascdev
ascdev: posix_spawn: /opt/ascend/pygtk/ascdev2.7: No such file or directory

La solución es crear una copia de ascdev a ascdev en la carpeta pygtk

osxs-Mac-Pro:Ascend osx$ cp -r pygtk/ascdev pygtk/ascdev2.7
osxs-Mac-Pro:Ascend osx$ ./pygtk/ascdev models/johnpye/
Error creating thumbnail: File missing
Mac screenshot Model lokta

Algunos screenshot más [aqui]

Creación del Instalador ASCEND4.app

Creación de los ASCEND4.app

Para la creación de ASCEND4 se copio los archivos compilados en ascend de la siguiente forma:

osxs-Mac-Pro:Ascend osx$ mkdir  -r ASCEND4.app/Contents/Resources
osxs-Mac-Pro:Ascend osx$ cp -r ascend ASCEND4.app/Contents/Resources
osxs-Mac-Pro:Ascend osx$ cp -r ascend/mac/Info.plist ASCEND4.app/Contents/
osxs-Mac-Pro:Ascend osx$ cp -r ascend/mac/ascend.icns ASCEND4.app/Contents/Resources
osxs-Mac-Pro:Ascend osx$ cd   ASCEND4.app/Contents
osxs-Mac-Pro:Ascend osx$ ln -s  Resources/ascend/ascdev ascend 
osxs-Mac-Pro:Ascend osx$ ln -s  Resources/ascend/ascdev2.7 ascend2.7 

Creación del PKG y DMG

Para la Creación del instalador se utilizó PackageMaker y DistUtilities ambas herramientas del entorno de MAC.


Creación del DISCO DMG

Primero se Crea un disco se coloca el nombre de ASCEND con un espacio de 500 MB cerrando cuando se tiene dentro la carpeta Resource y ASCEND4.app


Creación del PKG

Se utiliza el ASCEND.app para colocarlos dentro del PKG. Los archivos dentro del ASCEND.app se pueden ver [aqui]


Listado de Archivos de dependencias

Este [listado] de dependencias forma parte de Resources que ira dentro del archivo ASCEND.dmg.


Instaladores Compilados y probados no para el el instalador Oficial

Estos paquetes fueron instalados directamente en la carpeta Downloads, lo cual no es correcto, lo mejor es instalarlos también en /opt/gtk dado que los archivos luego son linkeados por el scons y pueden sufrir ruptura al pasar al instalador, no se incluyen en el instalador final pero si en sl [ASCEND-t.dmg].

Instalación de Ipopt

Para la instalación del Ipopt se tomo como referencia el instalador de ASCEND en [Gentoo].

Instalación de GRAPHVIZ

Para los diagramas de árboles se instaló el GRAPHVIZ, también hacerlo en /opt/gtk. Utilizar las fuentes de [aquí].

Lo necesario para la compilación de scons son estos archivos:

-rwxr-xr-x  1 lucialoyola  staff   31304 Aug 18 15:18 libcdt.5.dylib
-rwxr-xr-x  1 lucialoyola  staff   86216 Aug 18 15:16 libcgraph.6.dylib
-rwxr-xr-x  1 lucialoyola  staff   56100 Aug 18 15:15 libgraph.5.dylib
-rwxr-xr-x  1 lucialoyola  staff  485020 Aug 18 15:15 libgvc.6.dylib

Instalación de c-unit

Se Instaló el paquete c-unit.

Instalación de lyx

No se llego a probar

      • NOTA: Se espera hacer un nuevo instalador con estos paquetes.


Problemas Encontrados

Entre los principales problemas de migrarlos o hacer un instalador para MAC OSX están:

1.- MAC no cuenta con GTK. Es necesario usar el jhbuild.

2.- Problemas con la configuración de PyGTK instalada por jhbuild por defecto.

3.- Dependencias entre Sundails, pcre, etc.

4.- Dependencias de IPOPT, GRAPHVIZ al momento de compilación.

5.- Uso de Entornos Virtuales para hacer las Pruebas de los Instaladores.

6.- Diferencias entre el uso correcto de la sintaxis de python.

7.- El uso de librerias ajenas a MAC OSX a incluir dentro de Ascend4.

8.- El tiempo para compilar todo lo necesario para hacer un instalador desde un sistema MACOS Limpio es de 26 horas con una conexión de 200kb.

Problemas Por Resolver

  • Integración de la instalación y empaquetamiento de ASCEND4 para MACOSX en Scons.
  • Agregar Eventos de MacOSX a ASCEND4
  • Integrar los paquetes de IPOPT, GRAPHVIZ.
  • Corregir os Bug de GRAPHVIZ tiene un problema en la conversión de entera cadena.
  • Corregir la consola de ASCEND Ipython.
  • No depender de PackageMaker y DiskUtilities