Unverified Commit 686c736c authored by Aleksana's avatar Aleksana Committed by GitHub
Browse files

amber-lang: 0.4.0-alpha -> 0.5.1-alpha (#476414)

parents 1c3fed45 c78b82c8
Loading
Loading
Loading
Loading
+0 −29
Original line number Diff line number Diff line
From cae2ad70d6202bc97623be8c7c123ee2736a4644 Mon Sep 17 00:00:00 2001
From: aleksana <me@aleksana.moe>
Date: Sun, 9 Mar 2025 21:19:27 +0800
Subject: [PATCH] replace_regex: remove bash word boundary when detecting
 gnused

Bash linked against C libraries other than GLibc may not support GNU
extensions of POSIX Extended Regular Regex. For example,

> re='\bx'; [[ 'x' =~ $re ]] && echo "1"

does not output the same result on Linux/GLibc and macOS.
---
 src/std/text.ab | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/std/text.ab b/src/std/text.ab
index fe071e33..82449a02 100644
--- a/src/std/text.ab
+++ b/src/std/text.ab
@@ -19,7 +19,7 @@ pub fun replace_regex(source: Text, search: Text, replace: Text, extended: Bool
             // GNU sed versions 4.0 through 4.2 support extended regex syntax,
             // but only via the "-r" option; use that if the version information
             // contains "GNU sed".
-            $ re='\bCopyright\b.+\bFree Software Foundation\b'; [[ \$(sed --version 2>/dev/null) =~ \$re ]] $
+            $ re='Copyright.+Free Software Foundation'; [[ \$(sed --version 2>/dev/null) =~ \$re ]] $
             let flag = status == 0 then "-r" else "-E"
             return $ echo "{source}" | sed "{flag}" -e "s/{search}/{replace}/g" $
         } else {
+38 −0
Original line number Diff line number Diff line
From efdbecaf721ccb217ece34a5105eaac68e27aa51 Mon Sep 17 00:00:00 2001
From: Max Karou <maxkarou@protonmail.com>
Date: Sun, 4 Jan 2026 01:47:51 +0100
Subject: [PATCH] sed_version: remove word boundary assertions

Word boundary assertions (\b) are GNU regex extensions that may fail
on systems using non-glibc C libraries (e.g., musl, macOS).

This was previously fixed in replace_regex() via NixOS/nixpkgs#388412,
which was subsequently upstreamed in amber-lang/amber#686.

Changes in amber-lang/amber#717 reintroduced the same portability issue.
---
 src/std/text.ab | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/std/text.ab b/src/std/text.ab
index 5f2d935..a5dac3f 100644
--- a/src/std/text.ab
+++ b/src/std/text.ab
@@ -51,12 +51,12 @@ const SED_VERSION_BUSYBOX = 2
 fun sed_version(): Int {
     // We can't match against a word "GNU" because
     // alpine's busybox sed returns "This is not GNU sed version"
-    trust $ re='\bCopyright\b.+\bFree Software Foundation\b'; [[ \$(sed --version 2>/dev/null) =~ \$re ]] $
+    trust $ re='Copyright.+Free Software Foundation'; [[ \$(sed --version 2>/dev/null) =~ \$re ]] $
     if status == 0 {
         return SED_VERSION_GNU
     }
     // On BSD single `sed` waits for stdin. We must use `sed --help` to avoid this.
-    trust $ re='\bBusyBox\b'; [[ \$(sed --help 2>&1) =~ \$re ]] $
+    trust $ re='BusyBox'; [[ \$(sed --help 2>&1) =~ \$re ]] $
     if status == 0 {
         return SED_VERSION_BUSYBOX
     }
-- 
2.51.2
+6 −5
Original line number Diff line number Diff line
@@ -15,21 +15,22 @@

rustPlatform.buildRustPackage rec {
  pname = "amber-lang";
  version = "0.4.0-alpha";
  version = "0.5.1-alpha";

  src = fetchFromGitHub {
    owner = "amber-lang";
    repo = "amber";
    tag = version;
    hash = "sha256-N9G/2G8+vrpr1/K7XLwgW+X2oAyAaz4qvN+EbLOCU1Q=";
    hash = "sha256-v1uJe3vVGKXaZcQzdoYzu/bJKMQnS4IYET4QLPW+J8Y=";
  };

  patches = [
    # https://github.com/amber-lang/amber/pull/686
    ./fix_gnused_detection.patch
    # Upstreamed in #995, can be removed in >= 0.5.2
    # github.com/amber-lang/amber/pull/995
    ./fix_word_boundaries.patch
  ];

  cargoHash = "sha256-e5+L7Qgd6hyqT1Pb9X7bVtRr+xm428Z5J4hhsYNnGtU=";
  cargoHash = "sha256-aXcxlmmDYLFbyRJYyGE1gbQMbdysHx4iWXsrUj10Eco=";

  preConfigure = ''
    substituteInPlace src/compiler.rs \