Tecnología · GUÍA PRÁCTICA
¿make detecta clock skew? Demuestra la fecha futura antes de tocar el árbol
Conserva el target, los prerequisitos y el mtime en nanosegundos; luego identifica qué reloj de host, VM, contenedor o servidor de archivos lo escribió.

La advertencia clock skew de GNU make señala un problema de orden de dependencias. Si un target o prerequisito parece posterior al reloj de compilación, make puede omitir trabajo necesario o recompilar de más. Conserva primero la ruta y la marca temporal; corrige después el límite de tiempo.
Congela el aviso y la dependencia
Guarda el comando make completo, versión, directorio y todas las líneas que nombran archivos futuros. Registra ruta, mtime con nanosegundos, sistema de archivos, montaje, propietario, inode y enlace. Usa debug para saber si es target, prerequisito o Makefile generado. No uses touch ni clean todavía.
Encuentra tiempos posteriores al reloj de build
Captura UTC y estado de sincronización del host, y lista mtimes posteriores. Compara el target con cada prerequisito y conserva diferencias subsegundo; el mantenedor de GNU make confirma que una desviación pequeña entre servidor y build puede bastar.
Identifica el dominio de tiempo escritor
Para cada archivo futuro, identifica proceso y máquina que lo creó o restauró. Revisa host/guest, contenedor, CI, servidor de archivos, arranque dual o archivo restaurado. La zona horaria visible no cambia el mtime epoch: compara instantes UTC y evidencia de sincronización.
Repara el reloj antes que el archivo
Corrige el host, VM o servidor responsable con su servicio de tiempo y confirma sincronización. Detén durante la prueba al escritor que recrea tiempos futuros. Solo después elimina generados o cambia marcas cuya procedencia y hora correcta conoces; no toques todo el repositorio.
Reconstruye desde un límite conocido
Tras guardar evidencia, usa el clean documentado o un directorio nuevo, ejecuta el mismo objetivo sin ocultar avisos y valida el artefacto. Si solo un generado tiene hora errónea demostrada, elimínalo con precisión después de arreglar el reloj.
Demuestra de nuevo el build incremental
Después del build limpio, repite sin cambios: no debe hacer trabajo inesperado ni mostrar skew. Cambia un prerequisito controlado y confirma que solo se reconstruye la ruta esperada. Detente si vuelven archivos futuros, falta sincronización o se desconoce el escritor.
