+libxcrypt (#785)

Requires -L because the standard library path has precedence on Linux and usually linux has its own lib crypt.

I experimented with trying to use the enable-compat-symlinks (that make xcrypt symlinks) but this option only works if you enable “obsolete modes” which leads to believe it is not wise to do it manually either as other build tools will likely make assumptions based on the filenames.

---------

Co-authored-by: Max Howell <mxcl@me.com>
This commit is contained in:
Marc Seitz 2023-03-21 20:44:35 +01:00 committed by GitHub
parent be2d60bfa0
commit ed8b734fd8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 0 deletions

View file

@ -0,0 +1,20 @@
#include <crypt.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
int main() {
char *hash = crypt("abc", "$2b$05$abcdefghijklmnopqrstuu");
if (errno) {
fprintf(stderr, "Received error: %s", strerror(errno));
return errno;
}
if (hash == NULL) {
fprintf(stderr, "Hash is NULL");
return -1;
}
if (strcmp(hash, "$2b$05$abcdefghijklmnopqrstuuRWUgMyyCUnsDr8evYotXg5ZXVF/HhzS")) {
fprintf(stderr, "Unexpected hash output");
return -1;
}
return 0;
}

View file

@ -0,0 +1,30 @@
distributable:
url: https://github.com/besser82/libxcrypt/releases/download/v{{version}}/libxcrypt-{{version}}.tar.xz
strip-components: 1
versions:
github: besser82/libxcrypt/releases/tags
build:
dependencies:
tea.xyz/gx/cc: c99
tea.xyz/gx/make: '*'
freedesktop.org/pkg-config: ~0.29
perl.org: '*'
script: |
./configure $ARGS
make --jobs {{ hw.concurrency }} install
env:
ARGS:
- --prefix="{{prefix}}"
- --disable-valgrind
- --disable-failure-tokens
test:
dependencies:
tea.xyz/gx/cc: c99
script: |
cc fixture.c -lcrypt -L{{prefix}}/lib
./a.out
# ^^ we nee to add the -L because system lib paths come first on Linux
# and most linuxes have a (arcaic) libcrypt.so in /lib