From mboxrd@z Thu Jan 1 00:00:00 1970 From: Adolf Belka To: development@lists.ipfire.org Subject: Re: Struggling with a problem with the python 3.13 update Date: Wed, 05 Feb 2025 15:19:55 +0100 Message-ID: In-Reply-To: <0F499873-E98F-4720-B886-9FD9FF0272CB@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6080991041791548457==" List-Id: --===============6080991041791548457== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi Michael, On 05/02/2025 14:05, Michael Tremer wrote: > Hello Adolf, >=20 >> On 4 Feb 2025, at 17:22, Adolf Belka wrote: >> >> Hi All, >> >> I have hit a problem with my python-3.13 update that I have not been able = to figure a way out from. >> >> I had got to the updating of python3-cryptography. The newer version used = in combination with python 3.13 is now requiring a lot of rust crates to be i= nstalled. So far I have had to install 21 new rust crates and update quite a = few others. >=20 > I am not going to comment on how bad this all is, because you all know=E2= =80=A6 Let=E2=80=99s just insert some eye rolling here... I had a similar feeling when it all started but I just have to work with it o= r it doesn't get updated. >=20 >> The updates have gone fine until I installed rust-const-random-macro which= then required rust-tiny-keccak which then required rust-crunchy. Then rust-t= iny-keccak failed to compile with the following log output. >> >> Feb 4 15:52:36: Building rust-tiny-keccak make: Entering directory '/home= /user/sandbox/ipfire-2.x/lfs' >> make: Nothing to be done for 'download'. >> make: Leaving directory '/home/user/sandbox/ipfire-2.x/lfs' >> make: Entering directory '/usr/src/lfs' >> tiny-keccak-2.0.2.tar.gz checksum OK >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Installing tiny-keccak-2.0.2 ... >> Install started; saving file list to /usr/src/lsalr ... >> cd /usr/src/tiny-keccak-2.0.2 && rm Cargo.toml.orig >> cd /usr/src/tiny-keccak-2.0.2 && mkdir -p /usr/src/tiny-keccak-2.0.2/.= cargo && echo "${CARGO_CONFIG}" > /usr/src/tiny-keccak-2.0.2/.cargo/config &&= rm -f Cargo.lock >> cd /usr/src/tiny-keccak-2.0.2 && CARGOPATH=3D/usr/src/tiny-keccak-2.0.2/.c= argo RUSTC_BOOTSTRAP=3D1 cargo --offline build --release -Z avoid-dev-deps -j= 16 >> warning: `/usr/src/tiny-keccak-2.0.2/.cargo/config` is deprecated in favor= of `config.toml` >> note: if you need to support cargo 1.38 or earlier, you can symlink `confi= g` to `config.toml` >> Compiling crunchy v0.2.3 >> Compiling tiny-keccak v2.0.2 (/usr/src/tiny-keccak-2.0.2) >> Running `rustc --crate-name build_script_build --edition=3D2021 /usr= /share/cargo/registry/crunchy-0.2.3/build.rs --error-format=3Djson --json=3Dd= iagnostic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=3Dd= ep-info,link -C embed-bitcode=3Dno -C debug-assertions=3Doff --cfg 'feature= =3D"default"' --cfg 'feature=3D"limit_128"' --check-cfg 'cfg(docsrs)' --check= -cfg 'cfg(feature, values("default", "limit_1024", "limit_128", "limit_2048",= "limit_256", "limit_512", "limit_64", "std"))' -C metadata=3Dac4fd721ed21a1b= d -C extra-filename=3D-ac4fd721ed21a1bd --out-dir /usr/src/tiny-keccak-2.0.2/= target/release/build/crunchy-ac4fd721ed21a1bd -C strip=3Ddebuginfo -L depende= ncy=3D/usr/src/tiny-keccak-2.0.2/target/release/deps --cap-lints allow -Copt-= level=3D3 -Clink-arg=3D-Wl,-z,relro,-z,now -Ccodegen-units=3D1 --cap-lints=3D= warn` >> Running `rustc --crate-name build_script_build --edition=3D2018 buil= d.rs --error-format=3Djson --json=3Ddiagnostic-rendered-ansi,artifacts,future= -incompat --crate-type bin --emit=3Ddep-info,link -C embed-bitcode=3Dno -C de= bug-assertions=3Doff --cfg 'feature=3D"default"' --check-cfg 'cfg(docsrs)' --= check-cfg 'cfg(feature, values("cshake", "default", "fips202", "k12", "keccak= ", "kmac", "parallel_hash", "sha3", "shake", "sp800", "tuple_hash"))' -C meta= data=3D716aee7b2cfdb0c1 -C extra-filename=3D-716aee7b2cfdb0c1 --out-dir /usr/= src/tiny-keccak-2.0.2/target/release/build/tiny-keccak-716aee7b2cfdb0c1 -C st= rip=3Ddebuginfo -L dependency=3D/usr/src/tiny-keccak-2.0.2/target/release/dep= s -Copt-level=3D3 -Clink-arg=3D-Wl,-z,relro,-z,now -Ccodegen-units=3D1 --cap-= lints=3Dwarn` >> error: You need to specify at least one hash function you intend to use. A= vailable options: >> keccak, shake, sha3, cshake, kmac, tuple_hash, parallel_hash, k12,= fips202, sp800 >> e.g. >> tiny-keccak =3D { version =3D "2.0.0", features =3D ["sha3"] } >> --> build.rs:13:1 >> | >> 13 | / compile_error!( >> 14 | | "You need to specify at least one hash function you intend to u= se. \ >> 15 | | Available options:\n\ >> 16 | | keccak, shake, sha3, cshake, kmac, tuple_hash, parallel_hash, k= 12, fips202, sp800\n\ >> 17 | | e.g.\n\ >> 18 | | tiny-keccak =3D { version =3D \"2.0.0\", features =3D [\"sha3\"= ] }" >> 19 | | ); >> | |_^ >> >> error: could not compile `tiny-keccak` (build script) due to 1 previous er= ror >> >> Caused by: >> process didn't exit successfully: `rustc --crate-name build_script_buil= d --edition=3D2018 build.rs --error-format=3Djson --json=3Ddiagnostic-rendere= d-ansi,artifacts,future-incompat --crate-type bin --emit=3Ddep-info,link -C e= mbed-bitcode=3Dno -C debug-assertions=3Doff --cfg 'feature=3D"default"' --che= ck-cfg 'cfg(docsrs)' --check-cfg 'cfg(feature, values("cshake", "default", "f= ips202", "k12", "keccak", "kmac", "parallel_hash", "sha3", "shake", "sp800", = "tuple_hash"))' -C metadata=3D716aee7b2cfdb0c1 -C extra-filename=3D-716aee7b2= cfdb0c1 --out-dir /usr/src/tiny-keccak-2.0.2/target/release/build/tiny-keccak= -716aee7b2cfdb0c1 -C strip=3Ddebuginfo -L dependency=3D/usr/src/tiny-keccak-2= .0.2/target/release/deps -Copt-level=3D3 -Clink-arg=3D-Wl,-z,relro,-z,now -Cc= odegen-units=3D1 --cap-lints=3Dwarn` (exit status: 1) >> warning: build failed, waiting for other jobs to finish... >> make: *** [rust-tiny-keccak:78: /usr/src/log/tiny-keccak-2.0.2] Error 101 >=20 > As far as I understand the documentation this package implements a lot of h= ashes, but none of them are enabled by default. They need to be enabled whene= ver they are needed. I misinterpreted it then. I though they were all enabled. >=20 >> The rust-const-random-macro contains the following dependencies section wi= thin its cargo.toml file:- >> >> [dependencies.tiny-keccak] >> version =3D "2.0.2" >> features =3D ["shake"] >> >> but that is in the rust crate that comes after tiny-keccak gets compiled s= uccessfully. >=20 > The =E2=80=9Cfeatures=E2=80=9D option enabled =E2=80=9Cshake=E2=80=9D here.= This is basically how to enable the hash that you need. In the example above= , sha3 has been used. The problem is that dependencies section is in the rust-const-random-macro cr= ate which only gets used after rust-tiny-keccak has been built. >=20 >> I can't figure out how to tell the rust compilation of tiny-keccak to spec= ify the various hash functions and in terms of the const-random-macro crate t= o specify the shake hash function. I would have expected that by default it w= ould specify all of the available hash functions. Also it seems to me that th= e compilation command includes a list of the hash functions >> >> --cfg 'feature=3D"default"' --check-cfg 'cfg(docsrs)' --check-cfg 'cfg(fea= ture, values("cshake", "default", "fips202", "k12", "keccak", "kmac", "parall= el_hash", "sha3", "shake", "sp800", "tuple_hash"))' >> >> Any help or guidance on how I should deal with this issue would be very gl= adly accepted. >=20 > I would assume that there is nothing that you should do manually here. The = people who depend on this package need to tell it which hash they want to use= and Cargo is supposed to take care of the rest. In Cargo.toml, there should = be something like this: >=20 > [dependencies] > tiny-keccak =3D { version =3D "2.0.0", features =3D ["sha3"] } >=20 > Maybe the syntax has changed? Because the snippet that you posted seems to = carry the same information, just in a different format. I tried putting that wording into the rust-tiny-keccak cargo.toml file but th= en the compiling of tiny-keccak complained that it couldn't find the module t= iny-keccak that it was currently trying to build. Sounds a bit bootstrappy ag= ain. Maybe the right thing is done if the files are updated on line. The message k= eeps coming up that I might be suffering from any problem due to having the o= ffline status set. Maybe I should look and see if I can find what Arch Linux = did with the python-cryptography update and thee ensuing rust crate requireme= nts. There might be something somewhere showing what I need to change. Maybe I need to modify the build.rs file in the tiny-keccak source file to en= able all the hashes or at least the shake one that is required by rust-const-= random-macro. >=20 >> I only have 16 python modules and around 7 applications that use python le= ft to build with python-3.13 . It feels so close to completing but with rust-= tiny-keccak it feels so far still. >=20 > I hope I could help :) You have given me the knowledge that none of the hashes are selected, so I ju= st need to try and find out what to change to make at least the shake hash ge= t enabled. Maybe I need to try one of the bootstrap techniques I already trie= d with the first python modules needing to be built. Thanks and regards, Adolf. >=20 > -Michael >=20 >> >> Regards, >> Adolf. >> >> >> Sent from my laptop >> >=20 --===============6080991041791548457==--