Skip to content

[Reproducible Builds] Fails due to file system time stamps are not identical

Below are the steps to see the non-reproducible build problem

$ git clone https://gitlab.com/cip-project/cip-core/isar-cip-core.git
$ cd isar-cip-core
$ ./kas-container build kas-cip.yml:kas/board/qemu-amd64.yml:kas/opt/targz-img.yml && mv build build1
$ ./kas-container build kas-cip.yml:kas/board/qemu-amd64.yml:kas/opt/targz-img.yml && mv build build2

$ diffoscope --html-dir build_differences_html_output \
    build1/tmp/deploy/images/qemu-amd64/cip-core-image-cip-core-buster-qemu-amd64.tar.gz \
    build2/tmp/deploy/images/qemu-amd64/cip-core-image-cip-core-buster-qemu-amd64.tar.gz

Found the file system time stamps are different

│ ├── file list
│ │ @@ -1,90 +1,90 @@
│ │ -drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 06:56:12.000000 ./
│ │ -lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 06:55:57.000000 ./initrd.img -> boot/initrd.img-4.19.235-cip70
│ │ -lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 06:55:57.000000 ./vmlinuz -> boot/vmlinuz-4.19.235-cip70
│ │ -lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 06:55:57.000000 ./initrd.img.old -> boot/initrd.img-4.19.235-cip70
│ │ -drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 06:41:05.000000 ./srv/
│ │ -drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 06:41:03.000000 ./dev/
│ │ -crw-rw-rw-   0 root         (0) root         (0)    1,  7 2022-04-19 06:41:02.000000 ./dev/full
│ │ -lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 06:41:03.000000 ./dev/stderr -> /proc/self/fd/2
│ │ -crw-rw-rw-   0 root         (0) root         (0)    5,  0 2022-04-19 06:41:03.000000 ./dev/tty
│ │ -lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 06:41:03.000000 ./dev/stdout -> /proc/self/fd/1
│ │ -lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 06:41:03.000000 ./dev/fd -> /proc/self/fd
│ │ -crw-rw-rw-   0 root         (0) root         (0)    1,  8 2022-04-19 06:41:02.000000 ./dev/random
│ │ -crw-rw-rw-   0 root         (0) root         (0)    1,  5 2022-04-19 06:41:02.000000 ./dev/zero
│ │ -crw-rw-rw-   0 root         (0) root         (0)    5,  2 2022-04-19 06:41:03.000000 ./dev/ptmx
│ │ -crw-rw-rw-   0 root         (0) root         (0)    1,  3 2022-04-19 06:41:02.000000 ./dev/null
│ │ -crw-rw-rw-   0 root         (0) root         (0)    1,  9 2022-04-19 06:41:03.000000 ./dev/urandom
│ │ -crw-rw-rw-   0 root         (0) root         (0)    5,  1 2022-04-19 06:41:03.000000 ./dev/console
│ │ -lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 06:41:03.000000 ./dev/stdin -> /proc/self/fd/0
│ │ -drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 06:41:03.000000 ./dev/pts/
│ │ -drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 06:41:03.000000 ./dev/shm/
│ │ -drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 06:41:05.000000 ./usr/
│ │ -drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 06:56:08.000000 ./usr/share/
│ │ -drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 06:55:28.000000 ./usr/share/sensible-utils/
│ │ -drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 06:55:28.000000 ./usr/share/sensible-utils/bin/
│ │ +drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 07:18:23.000000 ./
│ │ +lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 07:18:05.000000 ./initrd.img -> boot/initrd.img-4.19.235-cip70
│ │ +lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 07:18:05.000000 ./vmlinuz -> boot/vmlinuz-4.19.235-cip70
│ │ +lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 07:18:05.000000 ./initrd.img.old -> boot/initrd.img-4.19.235-cip70
│ │ +drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 07:03:32.000000 ./srv/
│ │ +drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 07:03:30.000000 ./dev/
│ │ +crw-rw-rw-   0 root         (0) root         (0)    1,  7 2022-04-19 07:03:30.000000 ./dev/full
│ │ +lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 07:03:30.000000 ./dev/stderr -> /proc/self/fd/2
│ │ +crw-rw-rw-   0 root         (0) root         (0)    5,  0 2022-04-19 07:03:30.000000 ./dev/tty
│ │ +lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 07:03:30.000000 ./dev/stdout -> /proc/self/fd/1
│ │ +lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 07:03:30.000000 ./dev/fd -> /proc/self/fd
│ │ +crw-rw-rw-   0 root         (0) root         (0)    1,  8 2022-04-19 07:03:30.000000 ./dev/random
│ │ +crw-rw-rw-   0 root         (0) root         (0)    1,  5 2022-04-19 07:03:30.000000 ./dev/zero
│ │ +crw-rw-rw-   0 root         (0) root         (0)    5,  2 2022-04-19 07:03:30.000000 ./dev/ptmx
│ │ +crw-rw-rw-   0 root         (0) root         (0)    1,  3 2022-04-19 07:03:30.000000 ./dev/null
│ │ +crw-rw-rw-   0 root         (0) root         (0)    1,  9 2022-04-19 07:03:30.000000 ./dev/urandom
│ │ +crw-rw-rw-   0 root         (0) root         (0)    5,  1 2022-04-19 07:03:30.000000 ./dev/console
│ │ +lrwxrwxrwx   0 root         (0) root         (0)        0 2022-04-19 07:03:30.000000 ./dev/stdin -> /proc/self/fd/0
│ │ +drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 07:03:30.000000 ./dev/pts/
│ │ +drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 07:03:30.000000 ./dev/shm/
│ │ +drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 07:03:32.000000 ./usr/
│ │ +drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 07:18:18.000000 ./usr/share/
│ │ +drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 07:17:39.000000 ./usr/share/sensible-utils/
│ │ +drwxr-xr-x   0 root         (0) root         (0)        0 2022-04-19 07:17:39.000000 ./usr/share/sensible-utils/bin/
... truncated, more output can be seen attached file `build_differences_diffoscope-output.txt`

build_differences_diffoscope-output.txt

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information