Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Mars Attacks en 13 de Noviembre de 2007, 02:43:35 PM

Título: Mismo source, distinto binario
Publicado por: Mars Attacks en 13 de Noviembre de 2007, 02:43:35 PM
Estoy utilizando el Visual Studio 2005. Al compilar los mismos fuentes en momentos distintos, los binarios resultantes difieren en su checksum. Buscando por los internetes parece que el problema es que se le añade el timestamp al release.

¿Alguien sabe cómo puedo deshabilitar esto (o si es por otra causa, lo que sea)? Me gustaría obtener un resultado determinista de mis compilaciones y tal ^_^

Muchas gracias, zagales.
Título: Re: Mismo source, distinto binario
Publicado por: ethernet en 13 de Noviembre de 2007, 03:02:00 PM
Cita de: "Mars Attacks"Estoy utilizando el Visual Studio 2005. Al compilar los mismos fuentes en momentos distintos, los binarios resultantes difieren en su checksum. Buscando por los internetes parece que el problema es que se le añade el timestamp al release.

¿Alguien sabe cómo puedo deshabilitar esto (o si es por otra causa, lo que sea)? Me gustaría obtener un resultado determinista de mis compilaciones y tal ^_^


No subas tus binarios a subversion! ;P. Yo te aconsejo que los resultados de tus compilaciones no sean deterministas por el checksum del exe. Lo habitual es tener un exe por cada checkin en el respositorio (no has visto los build number de muchas aplicaciones?) y lógicamente tener ese proceso automatizado con un servidor de integración. Trac tiene uno llamado bitten, muy chulo :)
Título: Mismo source, distinto binario
Publicado por: Mars Attacks en 14 de Noviembre de 2007, 09:13:06 AM
Directo a donde duele, sí señor :D

Gracias. Aunque sólo por curiosidad, me encantaría saber por qué no se puede deshabilitar el tema (si es que no se puede).
Título: Mismo source, distinto binario
Publicado por: Mars Attacks en 15 de Noviembre de 2007, 03:59:46 PM
No quiero resultar pesado, pero ¿nadie sabe si se puede conseguir deshabilitar loquequieraqueseaquehacequelosbinariosesandistintosaunquecompilesdelamismafuente?
Título: Mismo source, distinto binario
Publicado por: Mars Attacks en 21 de Noviembre de 2007, 04:05:50 PM
XD Me he autoencontrado buscando en google por el problema.

Estoy viendo que tocará comparar archivos a pelo ignorando los bytes de checksum y time stamp.

¿De verdad de verdad es imposible crear dos binarios idénticos a partir de los mismos fuentes con el Visual Studio?
Título: Mismo source, distinto binario
Publicado por: Tei en 21 de Noviembre de 2007, 04:34:30 PM
Cita de: "Mars Attacks"XD Me he autoencontrado buscando en google por el problema.

Estoy viendo que tocará comparar archivos a pelo ignorando los bytes de checksum y time stamp.

¿De verdad de verdad es imposible crear dos binarios idénticos a partir de los mismos fuentes con el Visual Studio?

Se me ocurre que compiles dos veces el mismo exe. Y hagas un patch binario con la diferencia.
Entonces en tu proceso de make, haces que aplique ese patch al final de cada build

Si no funciona, no funciona, pero si funciona, me debes una birra.
Y si deja de funcionar un dia, pues te debo yo dos birras.

He tenido que contestar porque me da mucha rabia que alguien diga que algo en informática es imposible.
Título: Mismo source, distinto binario
Publicado por: Mars Attacks en 21 de Noviembre de 2007, 04:41:19 PM
Hombre, es una solución, pero para soluciones "guarras", la de comparar todo menos esos bytes es menos intrusiva. Necesitaré hacer la operación con varios binarios, y no me sale a cuenta hacer dos compilaciones por cada uno y hacerles un patch (aparte de que puede que el archivo sí hubiera cambiado, y le jodiera el checksum o algo).

A mí lo que me da rabia es que si no es posible hacerlo directamente por el programa, la única razón es porque no han dejado la posibilidad de deshabilitar el time stamp.

De todas formas, la birra te la pago igual ;)
Título: Mismo source, distinto binario
Publicado por: Tei en 21 de Noviembre de 2007, 05:12:03 PM
Cita de: "Mars Attacks"Necesitaré hacer la operación con varios binarios, y no me sale a cuenta hacer dos compilaciones por cada uno y hacerles un patch (aparte de que puede que el archivo sí hubiera cambiado, y le jodiera el checksum o algo).

No digo dos compilaciones cada vez. Una vez creado el parche binario, tratar de utilizarlo con cualquier cosa que compiles. Y no se si funcionaria. Puede funcionar. Evidentemente es un hack que podria dejar de funcionar en cualquier momento, y ni siquiera estarias seguro de como lo esta haciendo.
Pero en el caso de que dejara de funcionar despues de un tiempo usandolo, habrias ganado dos birras. Parece una situación win-win de esas.
Pero entiendo que no te convenza :D
Título: Mismo source, distinto binario
Publicado por: davidgf en 21 de Noviembre de 2007, 05:48:29 PM
No se si lo has leido:

http://support.microsoft.com/default.aspx?scid=kb;en-us;164151

Si MS tiene una herramienta que vuelca la parte invariable de las releases tu puedes hacer lo mismo. I calculas el checksum a partir del convenido "invariable" del exe.

Saludos!
Título: Mismo source, distinto binario
Publicado por: Mars Attacks en 21 de Noviembre de 2007, 06:18:10 PM
Gracias, Davidgf, fue de lo primero que encontré sobre el tema. Me quedé buscando de dónde sacar el dumpbin y ahí lo dejé, buscando la forma "limpia" (decirle a Visual Studio que NO me añada al ejecutable información variante).

De todas formas, es un estupendo plan B, si esta vez encuentro el dumpbin. Muchas gracias :D Otra birra para ti.

Al final habrá que instaurar las birras como moneda de intercambio de stratos...