From now on cargo will not download anything from the internet during
builds. This step had been moved for docker image builds (via cargo
vendor).
And now cargo inside docker.io/clickhouse/binary-builder will not use
any crates from the internet, so we don't need to add --offline for
cargo commands in cmake (corrosion_import_crate()).
Also the docker build command had been adjusted to allow following
symlinks inside build context, by using tar, this is required for Rust
packages.
Note, that to make proper Cargo.lock that could be vendored I did the
following:
- per-project locks had been removed (since there is no automatic way to
sync the workspace Cargo.lock with per-project Cargo.lock, since cargo
update/generate-lockfile will use only per-project Cargo.toml files
apparently, -Z minimal-versions does not helps either)
- and to generate Cargo.lock with less changes I've pinned version in
the Cargo.toml strictly, i.e. not 'foo = "0.1"' but 'foo = "=0.1"'
then the Cargo.lock for workspace had been generated and afterwards
I've reverted this part.
Plus I have to update the dependencies afterwards, since otherwise there
are conflicts with dependencies for std library. Non trivial.
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
Because of using Rust nightly, and without #49601 the Rust toolchain is
very unstable, and can be frequently failed.
So let's ping particular version.
Also I've looked and it seems that Rust archives stores this archive
without any TTL, since there is even a version for 2015 year.
Follow-up for: #50541
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
Previously you have to unpoison memory from the Rust, however Rust does
supports MSan, so let's simply use it.
But for this we need nightly Rust and recompile standard library.
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
Right now it works for host platforms because of gcc package, that
includes gcc-cross sysroot.
Use bundled sysroot from contrib instead.
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
Right now it works for host platforms because of gcc package, that
includes gcc-cross sysroot.
Use bundled sysroot from contrib instead.
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
Since nfpm v2.20.0 it can build packages for archlinux [1].
[1]: https://github.com/goreleaser/nfpm/pull/543
Something like this:
$ mkdir -p /src/packages/root
$ cmake -DCMAKE_INSTALL_PREFIX=/usr /src
$ DESTDIR=/src/packages/root ninja install
$ cd /src/packages
$ ./build --archlinux
$ root@s3:/src/packages# ./build --archlinux
Current version is 22.10.1.1
Building archlinux package for clickhouse-client.yaml
using archlinux packager...
created package: /src/clickhouse-client-22.10.1.1-1-x86_64.pkg.tar.zst
...
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>