On Mon, Feb 26, 2024 at 04:25:02PM -0500, Steve Grubb wrote:
Hello,
I've run across a strange problem building a package that has some rust files
in it. The build goes fine until the end when it starts to check for shebangs.
It ends like this:
/usr/src/debug/suricata-7.0.3-1.fc41.x86_64/rust/vendor/alloc-no-stdlib/src/
lib.rs has shebang which doesn't start with '/' ([no_std])
When I check the file, I find this:
#![no_std]
#[macro_use]
mod allocated_memory;
mod stack_allocator;
mod allocated_stack_memory;
Not being a rust programmer, I have no good idea what the code is doing. I
can't patch this code to move it off the first line because it's vendored
code.
The code is correct (for Rust) as it indicates that the standard
library shouldn't be used:
https://docs.rust-embedded.org/book/intro/no-std.html
It's a bit unfortunate that Rust used the shebang syntax here,
although in practice they couldn't be confused as these files
shouldn't ever be executable.
It's also correct that RPM worries about this file since it is
installed (in debuginfo) and appears to contain a shebang.
Is there a way to tell rpmbuild not to worry about this?
rust.spec has this in %prep, and /usr/lib/rpm/redhat/brp-mangle-shebangs
only seems to care about executable files, so this should help:
# Sometimes Rust sources start with #![...] attributes, and "smart" editors
think
# it's a shebang and make them executable. Then brp-mangle-shebangs gets upset...
find -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+'
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW