Skip to content

percent encoding causes installs to fail #42

@andinus

Description

@andinus

Context: ugexe/zef#457 (comment), ugexe/zef#457

Summary: LibraryMake percent encoding causes installs to fail on systems that use llvm-lld.

I assume you are on an architecture where the linker is LLVM ld,
otherwise known as ld-lld in OpenBSD (some older architectures
still use ld-bfd).

In llvm/lib/Support/Path.cpp, there is code that acts just like you describe:

void createUniquePath(const Twine &Model, SmallVectorImpl<char> &ResultPath,
                      bool MakeAbsolute) {
...
  // Replace '%' with random chars.
  for (unsigned i = 0, e = ModelStorage.size(); i != e; ++i) {
    if (ModelStorage[i] == '%')
      ResultPath[i] = "0123456789abcdef"[sys::Process::GetRandomNumber() & 15];
  }


It apppears in the LLVM universe if you try to create a file with % in the
name, it has a different interpretation of what that % means, different than
what you want it to mean.

https://docs.hdoc.io/hdoc/llvm-project/f1FB0DB2307A8013C.html

Other than that, I can find no documentation.

When I try to install any module that uses LibraryMake (Digest::SHA1::Native) install fails because llvm-lld replaces the percent with a random character.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bughacktoberfes-acceptedPRs from these issues will be considered happily for hacktoberfesthelp-neededNeeds some help from SME

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions