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 19:27:32 +0100 Message-ID: <142408e2-3366-442b-b6c7-d95ef1a493da@ipfire.org> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0241092118293085222==" List-Id: --===============0241092118293085222== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi Michael & all, Success!! I figured out what needed to be changed. I read the rust doc page on features= and found that all features are disabled by default but that if you place th= e required features in the default feature entry it is then enabled. So in th= e tiny-keccak Cargo.toml file I changed, with a patch file, [features] cshake =3D [] default =3D [] ..... to [features] cshake =3D [] default =3D ["shake"] ..... and rust-tiny-keccak then built successfully and the next three rust crates. I am now working through the next issue with the fourth rust crate after tiny= -keccak. Regards, Adolf. On 05/02/2025 15:19, Adolf Belka wrote: > Hi Michael, > > On 05/02/2025 14:05, Michael Tremer wrote: >> Hello Adolf, >> >>> 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 = installed. So far I have had to install 21 new rust crates and update quite a= few others. >> >> 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= or it doesn't get updated. > >> >>> The updates have gone fine until I installed rust-const-random-macro whic= h then required rust-tiny-keccak which then required rust-crunchy. Then rust-= tiny-keccak failed to compile with the following log output. >>> >>> Feb=C2=A0 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 &&=C2=A0=C2=A0=C2=A0=C2=A0 mkdir -p /usr/sr= c/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/.= cargo RUSTC_BOOTSTRAP=3D1 cargo --offline build --release -Z avoid-dev-deps -= j16 >>> warning: `/usr/src/tiny-keccak-2.0.2/.cargo/config` is deprecated in favo= r of `config.toml` >>> note: if you need to support cargo 1.38 or earlier, you can symlink `conf= ig` to `config.toml` >>> =C2=A0=C2=A0=C2=A0 Compiling crunchy v0.2.3 >>> =C2=A0=C2=A0=C2=A0 Compiling tiny-keccak v2.0.2 (/usr/src/tiny-keccak-2.0= .2) >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Running `rustc --crate-name build_script_b= uild --edition=3D2021 /usr/share/cargo/registry/crunchy-0.2.3/build.rs --erro= r-format=3Djson --json=3Ddiagnostic-rendered-ansi,artifacts,future-incompat -= -crate-type bin --emit=3Ddep-info,link -C embed-bitcode=3Dno -C debug-asserti= ons=3Doff --cfg 'feature=3D"default"' --cfg 'feature=3D"limit_128"' --check-c= fg 'cfg(docsrs)' --check-cfg 'cfg(feature, values("default", "limit_1024", "l= imit_128", "limit_2048", "limit_256", "limit_512", "limit_64", "std"))' -C me= tadata=3Dac4fd721ed21a1bd -C extra-filename=3D-ac4fd721ed21a1bd --out-dir /us= r/src/tiny-keccak-2.0.2/target/release/build/crunchy-ac4fd721ed21a1bd -C stri= p=3Ddebuginfo -L dependency=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=3Dwarn` >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Running `rustc --crate-name build_script_b= uild --edition=3D2018 build.rs --error-format=3Djson --json=3Ddiagnostic-rend= ered-ansi,artifacts,future-incompat --crate-type bin --emit=3Ddep-info,link -= C embed-bitcode=3Dno -C debug-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 metadata=3D716aee7b2cfdb0c1 -C extra-filename=3D-716aee= 7b2cfdb0c1 --out-dir /usr/src/tiny-keccak-2.0.2/target/release/build/tiny-kec= cak-716aee7b2cfdb0c1 -C strip=3Ddebuginfo -L dependency=3D/usr/src/tiny-kecca= k-2.0.2/target/release/deps -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. = Available options: >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 keccak, shake, sha3, cshake, k= mac, tuple_hash, parallel_hash, k12, fips202, sp800 >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 e.g. >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 tiny-keccak =3D { version =3D = "2.0.0", features =3D ["sha3"] } >>> =C2=A0=C2=A0 --> build.rs:13:1 >>> =C2=A0=C2=A0=C2=A0 | >>> 13 | / compile_error!( >>> 14 | |=C2=A0=C2=A0=C2=A0=C2=A0 "You need to specify at least one hash fun= ction you intend to use. \ >>> 15 | |=C2=A0=C2=A0=C2=A0=C2=A0 Available options:\n\ >>> 16 | |=C2=A0=C2=A0=C2=A0=C2=A0 keccak, shake, sha3, cshake, kmac, tuple_h= ash, parallel_hash, k12, fips202, sp800\n\ >>> 17 | |=C2=A0=C2=A0=C2=A0=C2=A0 e.g.\n\ >>> 18 | |=C2=A0=C2=A0=C2=A0=C2=A0 tiny-keccak =3D { version =3D \"2.0.0\", f= eatures =3D [\"sha3\"] }" >>> 19 | | ); >>> =C2=A0=C2=A0=C2=A0 | |_^ >>> >>> error: could not compile `tiny-keccak` (build script) due to 1 previous e= rror >>> >>> Caused by: >>> =C2=A0=C2=A0 process didn't exit successfully: `rustc --crate-name build_= script_build --edition=3D2018 build.rs --error-format=3Djson --json=3Ddiagnos= tic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=3Ddep-inf= o,link -C embed-bitcode=3Dno -C debug-assertions=3Doff --cfg 'feature=3D"defa= ult"' --check-cfg 'cfg(docsrs)' --check-cfg 'cfg(feature, values("cshake", "d= efault", "fips202", "k12", "keccak", "kmac", "parallel_hash", "sha3", "shake"= , "sp800", "tuple_hash"))' -C metadata=3D716aee7b2cfdb0c1 -C extra-filename= =3D-716aee7b2cfdb0c1 --out-dir /usr/src/tiny-keccak-2.0.2/target/release/buil= d/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,rel= ro,-z,now -Ccodegen-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 >> >> As far as I understand the documentation this package implements a lot of = hashes, but none of them are enabled by default. They need to be enabled when= ever they are needed. > > I misinterpreted it then. I though they were all enabled. > >> >>> The rust-const-random-macro contains the following dependencies section w= ithin 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 = successfully. >> >> 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 abov= e, sha3 has been used. > > The problem is that dependencies section is in the rust-const-random-macro = crate which only gets used after rust-tiny-keccak has been built. > >> >>> I can't figure out how to tell the rust compilation of tiny-keccak to spe= cify the various hash functions and in terms of the const-random-macro crate = to specify the shake hash function. I would have expected that by default it = would specify all of the available hash functions. Also it seems to me that t= he compilation command includes a list of the hash functions >>> >>> --cfg 'feature=3D"default"' --check-cfg 'cfg(docsrs)' --check-cfg 'cfg(fe= ature, values("cshake", "default", "fips202", "k12", "keccak", "kmac", "paral= lel_hash", "sha3", "shake", "sp800", "tuple_hash"))' >>> >>> Any help or guidance on how I should deal with this issue would be very g= ladly accepted. >> >> 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 us= e and Cargo is supposed to take care of the rest. In Cargo.toml, there should= be something like this: >> >> =C2=A0=C2=A0 [dependencies] >> =C2=A0=C2=A0 tiny-keccak =3D { version =3D "2.0.0", features =3D ["sha3"] } >> >> 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 = then the compiling of tiny-keccak complained that it couldn't find the module= tiny-keccak that it was currently trying to build. Sounds a bit bootstrappy = again. > > Maybe the right thing is done if the files are updated on line. The message= keeps coming up that I might be suffering from any problem due to having the= offline status set. Maybe I should look and see if I can find what Arch Linu= x did with the python-cryptography update and thee ensuing rust crate require= ments. 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 = enable all the hashes or at least the shake one that is required by rust-cons= t-random-macro. > >> >>> I only have 16 python modules and around 7 applications that use python l= eft to build with python-3.13 . It feels so close to completing but with rust= -tiny-keccak it feels so far still. >> >> I hope I could help :) > > You have given me the knowledge that none of the hashes are selected, so I = just need to try and find out what to change to make at least the shake hash = get enabled. Maybe I need to try one of the bootstrap techniques I already tr= ied with the first python modules needing to be built. > > Thanks and regards, > Adolf. >> >> -Michael >> >>> >>> Regards, >>> Adolf. >>> >>> >>> Sent from my laptop >>> >> > --===============0241092118293085222==--