From 110951af88c204bc4d5406fce8fcf249b45a054e Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Thu, 21 May 2026 03:42:32 -0400 Subject: [PATCH 1/3] crossdev: usrmerge for Linux GNU targets --- crossdev | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crossdev b/crossdev index 560ff46..6d17463 100755 --- a/crossdev +++ b/crossdev @@ -1713,9 +1713,12 @@ if [[ ${CTARGET} == *-gnu* ]] ; then # Identify if it is really Hurd or not case ${CTARGET} in *-linux*) - # Same as non-Hurd patch - xmkdir -p "${EPREFIX}"/usr/${CTARGET}/lib xmkdir -p "${EPREFIX}"/usr/${CTARGET}/usr/lib + xmkdir -p "${EPREFIX}"/usr/${CTARGET}/usr/bin + ln -s usr/lib "${EPREFIX}"/usr/${CTARGET}/lib + ln -s usr/bin "${EPREFIX}"/usr/${CTARGET}/bin + ln -s usr/bin "${EPREFIX}"/usr/${CTARGET}/sbin + ln -s bin "${EPREFIX}"/usr/${CTARGET}/usr/sbin ;; i[3-7]86*-gnu*) # Hurd is special as it defaults upstream to implicit inverse usr-merge From 446cf14aab90b5053f714db860499dab59b22ff6 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Thu, 21 May 2026 03:42:41 -0400 Subject: [PATCH 2/3] crossdev: usrmerge for non-GNU targets --- crossdev | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crossdev b/crossdev index 6d17463..2e2544e 100755 --- a/crossdev +++ b/crossdev @@ -1750,8 +1750,12 @@ if [[ ${CTARGET} == *-gnu* ]] ; then ;; esac else - xmkdir -p "${EPREFIX}"/usr/${CTARGET}/lib xmkdir -p "${EPREFIX}"/usr/${CTARGET}/usr/lib + xmkdir -p "${EPREFIX}"/usr/${CTARGET}/usr/bin + ln -s usr/lib "${EPREFIX}"/usr/${CTARGET}/lib + ln -s usr/bin "${EPREFIX}"/usr/${CTARGET}/bin + ln -s usr/bin "${EPREFIX}"/usr/${CTARGET}/sbin + ln -s bin "${EPREFIX}"/usr/${CTARGET}/usr/sbin fi ### From 9f46d9d1bb4ecb5f73add6e9c72556a60923eb50 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Thu, 21 May 2026 03:42:56 -0400 Subject: [PATCH 3/3] crossdev: usrmerge for riscv lib64/lib32 --- crossdev | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/crossdev b/crossdev index 2e2544e..1a7d7a3 100755 --- a/crossdev +++ b/crossdev @@ -1764,28 +1764,20 @@ fi ### step 2: set up the compat symlink of the default abi for non-multilib case ${CTARGET} in riscv*) - xmkdir -p "${EPREFIX}"/usr/${CTARGET}/lib64 - xmkdir -p "${EPREFIX}"/usr/${CTARGET}/lib64/lp64 - xmkdir -p "${EPREFIX}"/usr/${CTARGET}/lib64/lp64d xmkdir -p "${EPREFIX}"/usr/${CTARGET}/usr/lib64 xmkdir -p "${EPREFIX}"/usr/${CTARGET}/usr/lib64/lp64 xmkdir -p "${EPREFIX}"/usr/${CTARGET}/usr/lib64/lp64d - xmkdir -p "${EPREFIX}"/usr/${CTARGET}/lib32 - xmkdir -p "${EPREFIX}"/usr/${CTARGET}/lib32/ilp32 - xmkdir -p "${EPREFIX}"/usr/${CTARGET}/lib32/ilp32d xmkdir -p "${EPREFIX}"/usr/${CTARGET}/usr/lib32 xmkdir -p "${EPREFIX}"/usr/${CTARGET}/usr/lib32/ilp32 xmkdir -p "${EPREFIX}"/usr/${CTARGET}/usr/lib32/ilp32d + ln -s usr/lib64 "${EPREFIX}"/usr/${CTARGET}/lib64 + ln -s usr/lib32 "${EPREFIX}"/usr/${CTARGET}/lib32 ;;& riscv64*) - rmdir "${EPREFIX}"/usr/${CTARGET}/lib64/${DEFAULT_ABI} - ln -s . "${EPREFIX}"/usr/${CTARGET}/lib64/${DEFAULT_ABI} rmdir "${EPREFIX}"/usr/${CTARGET}/usr/lib64/${DEFAULT_ABI} ln -s . "${EPREFIX}"/usr/${CTARGET}/usr/lib64/${DEFAULT_ABI} ;; riscv32*) - rmdir "${EPREFIX}"/usr/${CTARGET}/lib32/${DEFAULT_ABI} - ln -s ../lib "${EPREFIX}"/usr/${CTARGET}/lib32/${DEFAULT_ABI} rmdir "${EPREFIX}"/usr/${CTARGET}/usr/lib32/${DEFAULT_ABI} ln -s ../lib "${EPREFIX}"/usr/${CTARGET}/usr/lib32/${DEFAULT_ABI} ;;