[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Problem with guix copy
From: |
Emmanuel Medernach |
Subject: |
Re: Problem with guix copy |
Date: |
Tue, 19 Mar 2024 16:40:00 +0100 |
User-agent: |
Mozilla Thunderbird |
Le 19/03/2024 à 11:26, Simon Tournier a écrit :
Hi Emmanuel,
Machine_B # guix copy --from=Machine_A bazel --dry-run
The following derivation would be built:
/gnu/store/0lscmi07b2y0aw6hscbgm2h7nqwc6sb1-bazel-6.4.0.drv
Could you share this derivation file? And the one from Machine A?
To be precise, on Machine B, you should get:
$ guix time-machine -q -C channels.scm -- build --no-grafts bazel -d
/gnu/store/dnwdzl84cxgk232cwh8843f3dhqmyd69-bazel-6.4.0.drv
And on Machine A, you get another one, right?
Hi Simon,
Bazel is now compiled on both machines, but I have similar issue with
tensorflow
Both have the same derivation file:
Machine_A # guix time-machine -q -C ~/.config/guix/channels.scm -- build
--no-grafts tensorflow -d
/gnu/store/s6fm43503ra6yxclqvk80gfiw4zxbp91-tensorflow-2.13.1.drv
Machine_A # md5sum
/gnu/store/s6fm43503ra6yxclqvk80gfiw4zxbp91-tensorflow-2.13.1.drv
c7833f974f217ada62b3eb6cdccee11f
/gnu/store/s6fm43503ra6yxclqvk80gfiw4zxbp91-tensorflow-2.13.1.drv
Machine_B # guix time-machine -q -C ~/.config/guix/channels.scm -- build
--no-grafts tensorflow -d
/gnu/store/s6fm43503ra6yxclqvk80gfiw4zxbp91-tensorflow-2.13.1.drv
Machine_B # md5sum
/gnu/store/s6fm43503ra6yxclqvk80gfiw4zxbp91-tensorflow-2.13.1.drv
c7833f974f217ada62b3eb6cdccee11f
/gnu/store/s6fm43503ra6yxclqvk80gfiw4zxbp91-tensorflow-2.13.1.drv
The derivation file and channels are both the same on both machines.
But I cannot copy tensorflow from Machine_A to Machine_B:
Machine_A # guix package --list-installed | grep tensorflow
tensorflow 2.13.1 out
/gnu/store/jghvlb5dz4sy1p0cd1qx552r1ldj33wi-tensorflow-2.13.1
Machine_B # guix copy --from=<Machine_A> tensorflow --dry-run
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: updating substitutes from 'https://bordeaux.guix.gnu.org'...
100.0%
The following derivations would be built:
/gnu/store/4g2whbzgn5nqs55x9iqgg23jdapf1srk-tensorflow-2.13.1.drv
/gnu/store/g90vfnx128ifhgy0n1zmlscjrn57l8xm-tensorflow-2.13.1-bazel-deps.tar.xz.drv
/gnu/store/h3zcigb52z7m6yyjl785w3a5ls1cjjc7-python-jax-0.4.20.drv
/gnu/store/h9m0ix80glph19k4pfqh130nmkil8f39-python-jaxlib-0.4.20.drv
/gnu/store/m4icdavpvbryliz34ai8817bb1d3l3xr-python-jaxlib-0.4.20.drv
Without dry-run he would try to recompile tensorflow on Machine_B which
results in a memory crash.
Am I doing something wrong ?
Why 'guix copy' derivation is
/gnu/store/4g2whbzgn5nqs55x9iqgg23jdapf1srk-tensorflow-2.13.1.drv
instead of
/gnu/store/s6fm43503ra6yxclqvk80gfiw4zxbp91-tensorflow-2.13.1.drv ?
Cheers,
Emmanuel
For instance, run this command on both machines:
cp \
$(guix time-machine -q -C channels.scm -- build --no-grafts bazel -d) \
/tmp/machine-X.drv
where X is A or B, respectively.
These files track exactly how the item is built (derived). Therefore,
since the hash of the output differs, you should differ somewhere.
Previously, you checked about the inputs, now we need to compare the
complete derivation.
Cheers,
simon
PS: Please note that the content of two store items might be bit-to-bit
identical with different store item paths (hash).
Consider the example with the exact same source where the difference
is just one comment somewhere in the code. Then, their hashes are
different. However, once compiled the binaries are identical
(compiler usually removes comments).
Since the hash of one input (source) differs, then the store item
paths are different but the content of these both store items are
bit-to-bit identical.
The machinery to track down the origin of the difference is all
these derivation .drv files.
Re: Problem with guix copy, Simon Tournier, 2024/03/19
- Re: Problem with guix copy,
Emmanuel Medernach <=
Re: Problem with guix copy, Simon Tournier, 2024/03/27