Opened 13 years ago
Closed 13 years ago
#1457 closed defect (fixed)
Carga de paquetes con la versión de TOL
Reported by: | Pedro Gea | Owned by: | Pedro Gea |
---|---|---|---|
Priority: | highest | Milestone: | Mantainance |
Component: | Kernel | Version: | 3.1 |
Severity: | blocker | Keywords: | |
Cc: |
Description
El mecanismo de carga de paquetes no tiene en cuenta la versión de TOL. Por ejemplo si ejecuto:
#Require BysMcmc;
con la versión 2.0.1 de TOLBase, se carga el paquete BysMcmc.6.2
cuya _.autodoc.minTolVersion
es "v3.1 b025".
Change History (19)
comment:1 Changed 13 years ago by
comment:4 Changed 13 years ago by
He conseguido arreglar el problema en mi máquina, lo malo es que no hay una forma sencilla de compilar el código C++ y generar el instalador de esa versión porque pertenece a una rama obsoleta de TOL y resulta demasiado complicado restaurar todas las dependencias con las que construyó en su día.
Finalmente he visto que el principal cambio era el uso de la nueva función Compare.VersionString
la cual he podido reproducir en TOL, aunque sea de forma menos eficiente pero con idénticos resultados, así que la he incluido en la StdLib de la 2.0.1.
Quien quiera mantener la versión 2.0.1 puede parchearla manualmente descargándose el StdLib.zip y descomprimiéndolo en el directorio .../TolBase/bin
En todo caso quiero recordar que se trata de una versión obsolescente que hay que ir abandonando cuanto antes porque igual que este problema ha sido posible arreglarlo pueden surgir otros para los que no haya solución.
comment:5 Changed 13 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
La StdLib que se suministra está llena de trazas del tipo:
... TRACE a=BysMcmc.4.7 TRACE tok.a=[[ "BysMcmc", "4", "7", "0", "0"]] TRACE b=BysMcmc.4.2 TRACE tok.b=[[ "BysMcmc", "4", "2", "0", "0"]] TRACE a=BysMcmc.6.2 TRACE tok.a=[[ "BysMcmc", "6", "2", "0", "0"]] ...
No entiendo porqué no se puede crear una nueva versión de la 2.0.1 con ese parche en la stdlib, más allá del deseo de pasar a la versión oficial, ya que se trata de un bug que desarma la compatibilidad de los usuarios que mantengan el uso de la 2.0.1 en algún proyecto e instalen la 3.1 y descarguen los paquetes válidos sólo para la 3.1 y posteriores.
comment:6 Changed 13 years ago by
No se puede porque ya no tengo en mi disco los mecanismos de compilación de TOL, contribuciones externas y demás. Me puedo tirar dos días para reconstruir eso y me parece absurdo perder el tiempo de esa forma.
Quizás lo que se puede hacer es no tratar de reconstruir TOL sino tomar el resultado del instalador, modificarlo manualmente como fichero .zip que es inyectandole los ficheros que han cambiado y volver a subirlo con el mismo nombre, pues lo que no puedo es cambiar de núemro de versión ni esas cosas.
Voy a ver si eso es posible.
comment:7 Changed 13 years ago by
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
No encuentro ninguna forma de hacerlo. Si alguien sabe como modificar un NSIS comprimido ejecutable que me diga cómo porque con 7z, rar ni winzip de evaluación lo he podido conseguir.
TOLBase.2.0.1 lo generaba en una máquina vieja con VC8 que ya fenecido hace meses y en mi máquina no lo tengo así que jo tengo ninguna forma de reconstruir el setup.
comment:9 Changed 13 years ago by
Jorge ha conseguido revivir la máquina dónde él construía versiones binarias de TOL con VC8 y hemos podido subirla
comment:13 Changed 13 years ago by
Con la última versión subida (v2.0.1 b9.01) se corrige el problema y se da por resuleto este tique.
comment:14 Changed 13 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
No sé si tiene que ver con esto o no. Pero a veces ya me desespero un poco con los mecanismos de gestión de paquetes.
Con la versión última de TOLBase 2.0.1 v2.0.1 b.9.01 2012-03-06 18:40:23 i686-win
teniendo instalados dos versiones de un paquete con la misma versión mínima de TOL (_.autodoc.minTolVersion="v2.0.1 b.4"
) concretamente con MMS.0.6049
y MMS.0.6050
si hago #Require MMS;
se carga la 49 aunque puedo cargar la 50 si hago #Require MMS.0.6050
. ¿Qué está ocurriendo?
comment:15 Changed 13 years ago by
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Pues a mí me ha cargado perfectamente la MMS.0.6050 con tol 2.0.1
No sé si hay algún problema o no pero lo que resulta complicado es arreglar las cosas hacia atrás y sin haber medio de reproducir el supuesto problema.
Desde la 2.0.1 se ha arreglado y mejorado mucho del sistema de paquetes.
La 2.0.1 es una versión obsolescente y lo que hay que ir haciendo es abandonarla.
En el peor de los casos basta con hacer una lista de requires con las versiones exactas que se necesitan y cargarlas antes de hacer nada cuando se use la 2.0.1.
Se puede meter en un fichero y hacer un include condicional a la versión.
comment:16 Changed 13 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Una posibilidad es cambiar la versión de TolPackage a 2.1 y que así puedan convivir dos sistemas de paquetes en la misma máquina.
Voy a probarlo.
comment:16 Changed 13 years ago by
Owner: | changed from Víctor de Buen Remiro to Pedro Gea |
---|---|
Status: | reopened → accepted |
Me asigno el tique que ya sé por donde va el problema y la solución y no tiene mucho que ver con los últimos comentarios.
comment:19 Changed 13 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
El problema que se encontraba con la versión 2.0.1 es por un archivo VersSyncInfo.oza
corrupto y el funcionamiento del método TolPackage::Client::LocalLastCompatible
que se apoya en esta información:
- En versiones anteriores de 2.0.1 eso no ocurría porque en caso de no encontrarse correspondencia en el archivo el paquete era aceptado en la lista candidata.
- En la versión actual de 2.0.1 se cambió el criterio y si no se encuentra en la lista el paquete (aunque esté instalado) no se acepta.
- En la versión 3.1 el método
LocalLastCompatible
deja de apoyarse en el archivoVersSyncInfo.oza
Para solucionar la corrupción del archivo basta con hacer:
Real TolPackage::Client::RemoteUpdateVersSyncInfo(False);
Este error fue arreglado hace tiempo en versiones posteriores con la incorporación de nuevas capacidades de TOL que no existían entonces, pero voy a ver si es posible encontrar un parche.