close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 15 years ago

Closed 15 years ago

#894 closed defect (fixed)

Using Ois.UseModule with embeded files

Reported by: Pedro Gea Owned by: Víctor de Buen Remiro
Priority: normal Milestone: Mantainance
Component: OIS Version:
Severity: major Keywords: ois usemodule embed
Cc:

Description

Según parece el método Ois.UseModule no es consciente de los cambios en archivos embebidos dentro de otros con la directiva #Embed y por lo tanto no se reconstruye el módulo.

Change History (10)

comment:1 Changed 15 years ago by Víctor de Buen Remiro

Resolution: invalid
Status: newclosed

La cláusula #Embed es incompatible con Include y por lo tanto con Ois.UseModule porque en un caso el path se toma en tiempo de parseo y en el otro en tiempo de ejecución.

Casa cosa es para lo que es y no se pueden mezclar de cualquier forma. Puedes usar #Embed en cualquier parte, pero dentro de ese fichero embebido y sus posibles embebidos internos ya no puedes volver a usar Include

comment:2 Changed 15 years ago by Pedro Gea

Resolution: invalid
Status: closedreopened

Realmente el problema no surge al incluir dentro de embebidos, sino simplemente
al tener un archivo embebido y que luego su código cambie.

Por ejemplo, un módulo "Módulo" tiene 10 archivos "ArchivoXX.tol" y uno de ellos (pongamos "Archivo03.tol") tiene embebido un código escrito en "Archivo03_Part.tol".
Si éste último ("Archivo03_Part.tol") cambia, el Ois.UseModule no se da cuenta.

¿Está mal el uso de #Embed o es que si usamos los #Embed debemos olvidarnos de los Ois.UseModule?

comment:3 Changed 15 years ago by Víctor de Buen Remiro

Status: reopenedaccepted

Ah, no te había entendido la primera vez. Pues no me había percatado de eso. Es cierto que veía que el OZA de la StdLib me hacía cosas raras pero no lo relacioné con eso. Pensaba que era algo de la ZLibrary porque ya nos había dado síntomas similares al actualizarnos a la última versión.

Tiene sentido lo que dices ya que el OIS no tiene ninguna información de los ficheros embebidos pues a la salida del parser el resultado es idéntico a que si hubieras pegado el código del fichero en lugar de embeberlo.

Veré cómo se puede arreglar. A bote pronto se me ocurre almacenar una lista de ficheros embebidos desde cada fichero TOL de forma que OIS pueda añadirlos a los incluidos normalmente y ser consciente de los cambios que se operen en ellos. Los conjuntos creados con Include tienen un miembro especial de la clase BSourcePath el cual se podría encargar de almacenar esa lista. En cada momento esa clase sabe cuál es el fichero que está siendo incluido por lo que el parser podría comunicarselo cada vez que se encuentre un #Embed

comment:4 Changed 15 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: acceptedclosed

(In [2113]) Fixes #894

comment:5 Changed 15 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: closedreopened

Parece que efectivamente está ya arreglado el problema pero sale un extraño mensaje que aunque inocuo hay que ver porqué es y cómo quitarlo

Warning: [1] Cannot open file ._tol_source_\ for reading from current ZIP ...

comment:6 Changed 15 years ago by Víctor de Buen Remiro

Además parece que la creación del OIS se ha ralentizado considerablemente, casi seguro por el aumento de inserciones ordenadas en el array de paths BOisCreator::allSourcePath_.

comment:7 Changed 15 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: reopenedclosed

(In [2116]) Fixes #894

comment:8 Changed 15 years ago by Víctor de Buen Remiro

Milestone: Mantainance

comment:9 Changed 15 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: closedreopened

Tras los últimos cambios el #Embed da a veces error en LINUX pero no en WNDOWS

...
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/gibbs/_basicMaster.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/gibbs/_deltaTransfer.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/gibbs/_probitFilter.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/gibbs/_estim.tol
<E>
ERROR: [1] gibbs/_gibbs.tol:No such file or directory</E>
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/gibbs/gibbs
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/_import.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_db_api.config.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_db_api.tools.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_db_api.tools.modses.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_db_api.tools.modses.obs.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_db_api.tools.modses.lat.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_db_api.tools.modses.pri.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_db_api.tools.modses.mix.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_db_api.load.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_db_api.estim.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_db_api.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_build.node.obs.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_build.node.lat.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_build.node.pri.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_build.node.tol
<E>
ERROR: [2] dynhlm/_dynhlm.tol:No such file or directory</E>
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/dynhlm
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/_oneNode.tol
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/modularSchema/_monophasic.tol
<E>
ERROR: [3] modularSchema/_modularSchema.tol:No such file or directory</E>
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/modularSchema/modularSchema
<E>
ERROR: [4] bsr/_bsr.tol:No such file or directory</E>
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/bsr/bsr
Embedded file /usr/local/tol-gcc-release/lib/tol2.0.1/stdlib/math/stat/models/bayesian/bysMcmc/_inference_functions.tol
...

Parece ser que se pierde el directorio en curso por algún motivo relacionado con la llamada a GetStandardAbsolutePath

comment:10 Changed 15 years ago by Jorge

Resolution: fixed
Status: reopenedclosed

(In [2119]) fixes #894

Note: See TracTickets for help on using tickets.