kernelci / kernelci/tuxmake

Builds not reproducible with custom kernel config

Open
#219 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

gitlab issue
Dominant language
Python
Stars
6
Forks
6
Avg merge
6h 1m
Merged PRs (30d)
3

Description

In GitLab by @xendarboh on Aug 9, 2024, 23:54 GMT+1:

I have not found a way to create reproducible builds using a custom kernel config, with or without docker runtime.

My builds are not reproducible with these options:

  • --kconfig ../config
  • --kconfig defconfig --kconfig-add ../config

I can create reproducible builds with these options, but it's not using my custom config:

  • --kconfig tinyconfig
  • --kconfig defconfig

I've tried several variations; different kernels, different toolchains, using the resulting config from the output-dir, etc -- without success.

Example:

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.10.3.tar.xz 
tar xf linux-*.tar.xz
cd linux-*

tuxmake \
  --target-arch=x86_64 \
  --toolchain=gcc \
  --runtime=docker \
  --kconfig ../config \
  --wrapper=none \
  --environment=KBUILD_BUILD_TIMESTAMP=@1723000000 \
  --environment=KBUILD_BUILD_USER=tuxmake \
  --environment=KBUILD_BUILD_HOST=tuxmake \
  --build-dir ../build-dir.1 \
  --output-dir ../output-dir.1 \
  config \
  default \
  kernel

tuxmake \
  --target-arch=x86_64 \
  --toolchain=gcc \
  --runtime=docker \
  --kconfig ../config \
  --wrapper=none \
  --environment=KBUILD_BUILD_TIMESTAMP=@1723000000 \
  --environment=KBUILD_BUILD_USER=tuxmake \
  --environment=KBUILD_BUILD_HOST=tuxmake \
  --build-dir ../build-dir.2 \
  --output-dir ../output-dir.2 \
  config \
  default \
  kernel
$ tuxmake --version
tuxmake 1.26.1

$ diff output-dir.1/bzImage output-dir.2/bzImage 
Binary files output-dir.1/bzImage and output-dir.2/bzImage differ

Assignees: alok.ranjan1

Migrated from GitLab: https://gitlab.com/Linaro/tuxmake/-/issues/219

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the exact tuxmake commands with the custom --kconfig options and compare the generated configurations and bzImage files. Trace tuxmake's handling of custom kernel configs and the Docker runtime; done means repeated builds with the same custom config produce identical outputs.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, linux, python
Domain
build-system, cli, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.