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
Resolution: | → invalid |
---|---|
Status: | new → closed |
comment:2 Changed 15 years ago by
Resolution: | invalid |
---|---|
Status: | closed → reopened |
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
Status: | reopened → accepted |
---|
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
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
comment:5 Changed 15 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
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
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
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
comment:8 Changed 15 years ago by
Milestone: | → Mantainance |
---|
comment:9 Changed 15 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
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
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
La cláusula
#Embed
es incompatible conInclude
y por lo tanto conOis.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 usarInclude