Subject: [PATCH] gnu: rust: Improve reproducibility and lower source sizes

From: Ivan Petkov <[email-masked]>
Date: Fri, 3 May 2019 00:05:00 -0700

Hi Guix!

I've prepared several patches to improve the rust builds. These changes will
require a full bootstrap, as well as rebuilding icecat, so it may be worthwhile
to merge this into staging first.

The changes include:
* Update the `generate-checksums` function in cargo-utils to not require a
directory parameter (sha256sum can't support directories. We were previously
passing in "/dev/null" as an argument, so now that's assumed internally)
* Delete the install logs and manifests generated as part of the build since
the ordering of their contents can be nondeterministic
* Updated all source definitions to delete extra files/tools that are already
present in guix (e.g. deleting any llvm/clang/jemalloc sources). See below
for a reduction in the source derivations
* Updated rust to 1.34.1

Previous source derivation sizes:
/gnu/store/qm2cbc1kxg3i8vibjb2rfxypbfnviqhh-rustc-1.20.0-src.tar.xz    17.9
/gnu/store/c714ii1ansv460anmb9xvicsmavqbkj9-rustc-1.21.0-src.tar.xz    19.4
/gnu/store/k6lc7d7gha3rimcqkiigyrkybqmpk98m-rustc-1.22.1-src.tar.xz    20.8
/gnu/store/zypwd03gw2hzb5z41ndv6fjv6dij7inq-rustc-1.23.0-src.tar.xz    23.5
/gnu/store/cj4yhkrxby93dx1fmiqidsb126pm6xq4-rustc-1.24.1-src.tar.xz    27.7
/gnu/store/fgmrf2k7lrv1y3s9xarv4x5axx0a435k-rustc-1.25.0-src.tar.xz    49.6
/gnu/store/yx98f8mr0wfp6i0la9i09d8n3wiwmg33-rustc-1.26.2-src.tar.xz    48.1
/gnu/store/mra5gy26shx2rgwcyj2cdm1iicss1q51-rustc-1.27.2-src.tar.xz    49.0
/gnu/store/mnznljlfz2py11mzk7l221zc06dsgzjf-rustc-1.28.0-src.tar.xz    49.6
/gnu/store/0r1lx29kf92xvw9f5f5ppsfg4nx9msq2-rustc-1.29.2-src.tar.xz    54.2
/gnu/store/d4g67ykzrp1jy95fgyakfqfrcxlci27j-rustc-1.30.1-src.tar.xz    84.4
/gnu/store/3pcmbdnhr0ifi9acr9zkhv6qakd7zanv-rustc-1.31.1-src.tar.xz    85.3
/gnu/store/6sx4y10n3sv1j0w2c7gjc7xrdp4znsa1-rustc-1.32.0-src.tar.xz    89.6
/gnu/store/ngs326mhbay1c3kgqkwd9ii9zmd36rhm-rustc-1.33.0-src.tar.xz    90.0
/gnu/store/42minb2xm8hhn1rrqkk52fyiids5r8nz-rustc-1.34.0-src.tar.xz    35.3

New source derivation sizes:
/gnu/store/czbyvvxwzzd5v5dqbl66p6p25abbjpjb-rustc-1.20.0-src.tar.xz    17.6
/gnu/store/kqrm7sp394x1jnwmv4nal72zz1k03c4d-rustc-1.21.0-src.tar.xz    19.1
/gnu/store/i8fmqj6vwp7bjq7ngmmrwpwc996cf2qn-rustc-1.22.1-src.tar.xz    20.5
/gnu/store/4d9pq03yndgcm86r0rg0cm10p1w041hq-rustc-1.23.0-src.tar.xz    23.2
/gnu/store/k4xdymq32j0gl3r891b1frri4kaqm5wk-rustc-1.24.1-src.tar.xz    27.3
/gnu/store/5s0fbcb5k1y5g945a0pmf59yrqcvw5zg-rustc-1.25.0-src.tar.xz    29.2
/gnu/store/ljcsx3h88xi9bflc9r8krxmqrsw0fn22-rustc-1.26.2-src.tar.xz    27.7
/gnu/store/p9r9qvzpvn977m5zlsbdpaa4kxh6jpih-rustc-1.27.2-src.tar.xz    28.7
/gnu/store/94j66fjaqxx2mj2gcrwx85a1pd7ysm0c-rustc-1.28.0-src.tar.xz    29.2
/gnu/store/nryvkxj9jzv2khiip3da178w5xyamavi-rustc-1.29.2-src.tar.xz    33.8
/gnu/store/6x0cf6m1bw0in8fn5c33n3pb3y7gyk0b-rustc-1.30.1-src.tar.xz    33.8
/gnu/store/k8i6bf0c5dzm34dnfx7qq7wq5hgccfnz-rustc-1.31.1-src.tar.xz    34.7
/gnu/store/0bqbl8jpirdi4g84hylcxj6i500mr93b-rustc-1.32.0-src.tar.xz    35.1
/gnu/store/3hfni09gy7d7n0gnc12s7zfa0lr7c0ff-rustc-1.33.0-src.tar.xz    35.5
/gnu/store/zamc7lhcsjn0hkfs93796xgpbmkccfam-rustc-1.34.1-src.tar.xz    35.3

Thanks,
—Ivan