Blob Blame History Raw
# rust_arches: list of architectures where building Rust is supported
#
# Since RPM itself now depends on Rust code (via its GPG backend, rpm-sequoia),
# this list will probably always be a superset of all architectures that are
# supported by Fedora, which is why it is no longer required to set
# "ExclusiveArch: rust_arches" for Rust packages in Fedora.
%rust_arches x86_64 %{ix86} armv7hl aarch64 ppc64 ppc64le riscv64 s390x

# version_no_tilde: lua macro for reconstructing the original crate version
#       from the RPM version (i.e. replace any "~" characters with "-")
%version_no_tilde() %{lua:
    local sep = rpm.expand('%1')
    local ver = rpm.expand('%2')
\
    if sep == '%1' then
        sep = '-'
    end
\
    if ver == '%2' then
        ver = rpm.expand('%version')
    end
    ver = ver:gsub('~', sep)
\
    print(ver)
}

# __crates_url: default API endpoint for downloading .crate files from crates.io
%__crates_url https://crates.io/api/v1/crates/

# crates_source: lua macro for constructing the Source URL for a crate
%crates_source() %{lua:
    local crate = rpm.expand('%1')
    local version = rpm.expand('%2')
    local url = rpm.expand('%__crates_url')
\
    -- first argument missing: fall back to %crate
    if crate == '%1' then
        crate = rpm.expand('%crate')
    end
    -- %crate macro not defined: fall back to %name
    if crate == '%crate' then
        crate = rpm.expand('%name')
    end
\
    -- second argument missing: fall back to %crate_version
    if version == '%2' then
        version = rpm.expand('%crate_version')
    end
    -- %crate_version macro not defined: fall back to %version
    if version == '%crate_version' then
        version = rpm.expand('%version')
    end
    -- replace '~' with '-' for backwards compatibility
    -- can be removed in the future
    version = version:gsub('~', '-')
\
    print(url .. crate .. '/' .. version .. '/download#/' .. crate .. '-' .. version .. '.crate')
}

# __cargo_skip_build: unused macro, set to 0 for backwards compatibility
%__cargo_skip_build 0