Skip to content

Conversation

@SuperMatt
Copy link

The existing fish script was not building correctly so it had never produced a fish binary based on the upstream. As fish provides pre-build binaries, it would be much better to just use those. I have switched from building from source to downloading, using a very similar method to starship (as I've just worked on a PR for that, see #228).

Here's a copy of the build output:

$ sbuild build ./static.official.source.yaml --keep --outdir ./SBUILD-TEST
sbuild v0.1.10
 INFO Building: ./static.official.source.yaml
Linting ./static.official.source.yaml (/home/matthew/gits/soarpkgs/binaries/fish/./static.official.source.yaml)

Performing shellcheck
[✔] Shellcheck passed
[✔] Fetched version (4.3.2) using x_exec.pkgver written to ./static.official.source.yaml.pkgver
SBUILD validation successful.
Validated YAML has been written to ./static.official.source.yaml.validated
_disabled: false

pkg: "fish"
pkg_id: "github.com.fish-shell.fish-shell"
pkg_type: "static"
category:
  - "ConsoleOnly"
  - "Utility"
description: "Smart and User-friendly Command Line Shell"
distro_pkg:
  alpine:
    - "fish"
  archlinux:
    aur:
      - "fish-git"
    extra:
      - "fish"
  debian:
    - "fish"
  gnuguix:
    - "fish"
  homebrew:
    - "fish"
  nixpkgs:
    - "fish"
    - "fishMinimal"
  stalix:
    - "bin/fish"
homepage:
  - "https://github.com/fish-shell/fish-shell"
maintainer:
  - "Azathothas (https://github.com/Azathothas)"
license:
  - id: "Custom"
    url: "https://github.com/fish-shell/fish-shell/raw/8617964d4dbf03d752fbf094600ef977a36a83ec/COPYING"
note:
  - "[DO NOT RUN] (Meant for pkgforge CI Only)"
  - "Built From Source (Latest Git HEAD). Check/Report @ https://github.com/fish-shell/fish-shell"
provides:
  - "fish"
repology:
  - "fish"
src_url:
  - "https://github.com/fish-shell/fish-shell"
tag:
  - "Utility"
x_exec:
  host:
    - "aarch64-linux"
    - "x86_64-linux"
  shell: "bash"
  pkgver: |
    curl -qfsSL "https://api.gh.pkgforge.dev/repos/fish-shell/fish-shell/releases?per_page=100" | jq -r '[.[] | select(.draft == false)] | .[0].tag_name | gsub("\\s+"; "")' | tr -d '"'\''[:space:]'
  run: |
    #Download
    case "$(uname -m)" in
      aarch64)
        soar dl "https://github.com/fish-shell/fish-shell@${PKGVER}" --match "linux,aarch64,musl,tar" --exclude "amd64,x86,x64,sha256,sha512,bsd,macos,windows" -o "${SBUILD_TMPDIR}/${PKG}.archive" --yes
        ;;
      x86_64)
        soar dl "https://github.com/fish-shell/fish-shell@${PKGVER}" --match "linux,x86_64,musl,tar" --exclude "aarch,arm,i386,i686,sha256,sha512,bsd,macos,windows" -o "${SBUILD_TMPDIR}/${PKG}.archive" --yes
        ;;
    esac
    #Extract
    while E_X=$(find "${SBUILD_TMPDIR}" -type f -exec file -i "{}" + |
     grep -Ei "archive|compressed|gzip|x-compress|x-tar" |
     grep -iv "application/.*executable" |
     cut -d: -f1 | head -n1); [ -n "${E_X}" ]
     do
       7z e "${E_X}" -o"${SBUILD_TMPDIR}/." -y && {
        file -i "${E_X}" | grep -q "application/.*executable" && break
        rm -f "${E_X}"
       } || break
     done
    #Copy
    find "${SBUILD_TMPDIR}" -maxdepth 1 -type f -exec file -i "{}" \; | grep -Ei "application/.*executable|inode/symlink|text/x-perl|text/.*script" | cut -d":" -f1 | xargs realpath --no-symlinks | xargs -I "{}" rsync -achvL "{}" "${SBUILD_OUTDIR}/${PKG}"

Downloading license from https://github.com/fish-shell/fish-shell/raw/8617964d4dbf03d752fbf094600ef977a36a83ec/COPYING to LICENSE
Detected GitHub URL, processing as GitHub release
Found release: 4.3.2
Downloading asset: fish-4.3.2-linux-aarch64.tar.xz

7-Zip (z) 25.01 (arm64) : Copyright (c) 1999-2025 Igor Pavlov : 2025-08-03
 64-bit arm_v:8-A locale=C.UTF-8 Threads:4 OPEN_MAX:1024, ASM

Scanning the drive for archives:
1 file, 2824572 bytes (2759 KiB)

Extracting archive: /home/matthew/gits/soarpkgs/binaries/fish/./SBUILD-TEST/github.com.fish-shell.fish-shell/SBUILD_TEMP/fish.archive
--
Path = /home/matthew/gits/soarpkgs/binaries/fish/./SBUILD-TEST/github.com.fish-shell.fish-shell/SBUILD_TEMP/fish.archive
Type = xz
Physical Size = 2824572
Method = LZMA2:23 CRC64
Streams = 1
Blocks = 1

Everything is Ok

Size:       14213120
Compressed: 2824572

7-Zip (z) 25.01 (arm64) : Copyright (c) 1999-2025 Igor Pavlov : 2025-08-03
 64-bit arm_v:8-A locale=C.UTF-8 Threads:4 OPEN_MAX:1024, ASM

Scanning the drive for archives:
1 file, 14213120 bytes (14 MiB)

Extracting archive: /home/matthew/gits/soarpkgs/binaries/fish/./SBUILD-TEST/github.com.fish-shell.fish-shell/SBUILD_TEMP/fish
--
Path = /home/matthew/gits/soarpkgs/binaries/fish/./SBUILD-TEST/github.com.fish-shell.fish-shell/SBUILD_TEMP/fish
Type = tar
Physical Size = 14213120
Headers Size = 7680
Code Page = UTF-8
Characteristics = GNU ASCII

Everything is Ok

Size:       14205264
Compressed: 14213120
sending incremental file list
fish

sent 14.21M bytes  received 35 bytes  28.42M bytes/sec
total size is 14.21M  speedup is 1.00
[✔] Successfully built the package at /home/matthew/gits/soarpkgs/binaries/fish/./SBUILD-TEST/github.com.fish-shell.fish-shell
 INFO Generating checksums...
 INFO Checksums generated

[+] 1 of 1 packages built successfully
[⏱] Completed in 2.85s

The existing fish script was not building correctly so it had never produced a fish binary based on the upstream. As fish provides pre-build binaries, it would be much better to just use those. I have switched from building from source to downloading, using a very similar method to starship (as I've just worked on a PR for that, see pkgforge#228).

Here's a copy of the build output:

```
$ sbuild build ./static.official.source.yaml --keep --outdir ./SBUILD-TEST
sbuild v0.1.10
 INFO Building: ./static.official.source.yaml
Linting ./static.official.source.yaml (/home/matthew/gits/soarpkgs/binaries/fish/./static.official.source.yaml)

Performing shellcheck
[✔] Shellcheck passed
[✔] Fetched version (4.3.2) using x_exec.pkgver written to ./static.official.source.yaml.pkgver
SBUILD validation successful.
Validated YAML has been written to ./static.official.source.yaml.validated
_disabled: false

pkg: "fish"
pkg_id: "github.com.fish-shell.fish-shell"
pkg_type: "static"
category:
  - "ConsoleOnly"
  - "Utility"
description: "Smart and User-friendly Command Line Shell"
distro_pkg:
  alpine:
    - "fish"
  archlinux:
    aur:
      - "fish-git"
    extra:
      - "fish"
  debian:
    - "fish"
  gnuguix:
    - "fish"
  homebrew:
    - "fish"
  nixpkgs:
    - "fish"
    - "fishMinimal"
  stalix:
    - "bin/fish"
homepage:
  - "https://github.com/fish-shell/fish-shell"
maintainer:
  - "Azathothas (https://github.com/Azathothas)"
license:
  - id: "Custom"
    url: "https://github.com/fish-shell/fish-shell/raw/8617964d4dbf03d752fbf094600ef977a36a83ec/COPYING"
note:
  - "[DO NOT RUN] (Meant for pkgforge CI Only)"
  - "Built From Source (Latest Git HEAD). Check/Report @ https://github.com/fish-shell/fish-shell"
provides:
  - "fish"
repology:
  - "fish"
src_url:
  - "https://github.com/fish-shell/fish-shell"
tag:
  - "Utility"
x_exec:
  host:
    - "aarch64-linux"
    - "x86_64-linux"
  shell: "bash"
  pkgver: |
    curl -qfsSL "https://api.gh.pkgforge.dev/repos/fish-shell/fish-shell/releases?per_page=100" | jq -r '[.[] | select(.draft == false)] | .[0].tag_name | gsub("\\s+"; "")' | tr -d '"'\''[:space:]'
  run: |
    #Download
    case "$(uname -m)" in
      aarch64)
        soar dl "https://github.com/fish-shell/fish-shell@${PKGVER}" --match "linux,aarch64,musl,tar" --exclude "amd64,x86,x64,sha256,sha512,bsd,macos,windows" -o "${SBUILD_TMPDIR}/${PKG}.archive" --yes
        ;;
      x86_64)
        soar dl "https://github.com/fish-shell/fish-shell@${PKGVER}" --match "linux,x86_64,musl,tar" --exclude "aarch,arm,i386,i686,sha256,sha512,bsd,macos,windows" -o "${SBUILD_TMPDIR}/${PKG}.archive" --yes
        ;;
    esac
    #Extract
    while E_X=$(find "${SBUILD_TMPDIR}" -type f -exec file -i "{}" + |
     grep -Ei "archive|compressed|gzip|x-compress|x-tar" |
     grep -iv "application/.*executable" |
     cut -d: -f1 | head -n1); [ -n "${E_X}" ]
     do
       7z e "${E_X}" -o"${SBUILD_TMPDIR}/." -y && {
        file -i "${E_X}" | grep -q "application/.*executable" && break
        rm -f "${E_X}"
       } || break
     done
    #Copy
    find "${SBUILD_TMPDIR}" -maxdepth 1 -type f -exec file -i "{}" \; | grep -Ei "application/.*executable|inode/symlink|text/x-perl|text/.*script" | cut -d":" -f1 | xargs realpath --no-symlinks | xargs -I "{}" rsync -achvL "{}" "${SBUILD_OUTDIR}/${PKG}"

Downloading license from https://github.com/fish-shell/fish-shell/raw/8617964d4dbf03d752fbf094600ef977a36a83ec/COPYING to LICENSE
Detected GitHub URL, processing as GitHub release
Found release: 4.3.2
Downloading asset: fish-4.3.2-linux-aarch64.tar.xz

7-Zip (z) 25.01 (arm64) : Copyright (c) 1999-2025 Igor Pavlov : 2025-08-03
 64-bit arm_v:8-A locale=C.UTF-8 Threads:4 OPEN_MAX:1024, ASM

Scanning the drive for archives:
1 file, 2824572 bytes (2759 KiB)

Extracting archive: /home/matthew/gits/soarpkgs/binaries/fish/./SBUILD-TEST/github.com.fish-shell.fish-shell/SBUILD_TEMP/fish.archive
--
Path = /home/matthew/gits/soarpkgs/binaries/fish/./SBUILD-TEST/github.com.fish-shell.fish-shell/SBUILD_TEMP/fish.archive
Type = xz
Physical Size = 2824572
Method = LZMA2:23 CRC64
Streams = 1
Blocks = 1

Everything is Ok

Size:       14213120
Compressed: 2824572

7-Zip (z) 25.01 (arm64) : Copyright (c) 1999-2025 Igor Pavlov : 2025-08-03
 64-bit arm_v:8-A locale=C.UTF-8 Threads:4 OPEN_MAX:1024, ASM

Scanning the drive for archives:
1 file, 14213120 bytes (14 MiB)

Extracting archive: /home/matthew/gits/soarpkgs/binaries/fish/./SBUILD-TEST/github.com.fish-shell.fish-shell/SBUILD_TEMP/fish
--
Path = /home/matthew/gits/soarpkgs/binaries/fish/./SBUILD-TEST/github.com.fish-shell.fish-shell/SBUILD_TEMP/fish
Type = tar
Physical Size = 14213120
Headers Size = 7680
Code Page = UTF-8
Characteristics = GNU ASCII

Everything is Ok

Size:       14205264
Compressed: 14213120
sending incremental file list
fish

sent 14.21M bytes  received 35 bytes  28.42M bytes/sec
total size is 14.21M  speedup is 1.00
[✔] Successfully built the package at /home/matthew/gits/soarpkgs/binaries/fish/./SBUILD-TEST/github.com.fish-shell.fish-shell
 INFO Generating checksums...
 INFO Checksums generated

[+] 1 of 1 packages built successfully
[⏱] Completed in 2.85s
```
@SuperMatt SuperMatt mentioned this pull request Dec 31, 2025
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant