nnn

mirror of https://github.com/jarun/nnn
Log | Files | Refs | README | LICENSE

commit 6ff7ab0f398beb90d721dac7df715a203c44cd72
parent d87e90042d0529162727382a7713c2bd98be4626
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date:   Wed,  4 Feb 2026 09:28:56 +0530

Generate musl static binary with Emoji

Diffstat:
MMakefile | 62++++++++++++++++++++++++++++++++++++++++++--------------------
Mmisc/musl/musl-static-ubuntu.sh | 14+++++++++++---
2 files changed, 53 insertions(+), 23 deletions(-)

diff --git a/Makefile b/Makefile @@ -293,43 +293,65 @@ sign: upload-local: sign static musl $(eval ID=$(shell curl -s 'https://api.github.com/repos/jarun/nnn/releases/tags/v$(VERSION)' | jq .id)) + $(eval PKG_STATIC=$(BIN)-static) + $(eval PKG_ICONS=$(BIN)-icons-static) + $(eval PKG_NERD=$(BIN)-nerd-static) + $(eval PKG_EMOJI=$(BIN)-emoji-static) + $(eval PKG_MUSL=$(BIN)-musl-static) + $(eval PKG_MUSL_EMOJI=$(BIN)-musl-emoji-static) + $(eval ARCH=x86_64) + # upload sign file curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=nnn-$(VERSION).tar.gz.sig' \ -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/pgp-signature' \ --upload-file nnn-$(VERSION).tar.gz.sig + # upx compress all static binaries - upx -qqq $(BIN)-static - upx -qqq $(BIN)-icons-static - upx -qqq $(BIN)-nerd-static - upx -qqq $(BIN)-emoji-static + upx -qqq $(PKG_STATIC) + upx -qqq $(PKG_ICONS) + upx -qqq $(PKG_NERD) + upx -qqq $(PKG_EMOJI) + upx -qqq $(PKG_MUSL) + upx -qqq $(PKG_MUSL_EMOJI) + # upload static binary - tar -zcf $(BIN)-static-$(VERSION).x86_64.tar.gz $(BIN)-static - curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(BIN)-static-$(VERSION).x86_64.tar.gz' \ + tar -zcf $(PKG_STATIC)-$(VERSION).$(ARCH).tar.gz $(PKG_STATIC) + curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(PKG_STATIC)-$(VERSION).$(ARCH).tar.gz' \ -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/x-sharedlib' \ - --upload-file $(BIN)-static-$(VERSION).x86_64.tar.gz + --upload-file $(PKG_STATIC)-$(VERSION).$(ARCH).tar.gz + # upload icons-in-terminal compiled static binary - tar -zcf $(BIN)-icons-static-$(VERSION).x86_64.tar.gz $(BIN)-icons-static - curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(BIN)-icons-static-$(VERSION).x86_64.tar.gz' \ + tar -zcf $(PKG_ICONS)-$(VERSION).$(ARCH).tar.gz $(PKG_ICONS) + curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(PKG_ICONS)-$(VERSION).$(ARCH).tar.gz' \ -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/x-sharedlib' \ - --upload-file $(BIN)-icons-static-$(VERSION).x86_64.tar.gz + --upload-file $(PKG_ICONS)-$(VERSION).$(ARCH).tar.gz + # upload patched nerd font compiled static binary - tar -zcf $(BIN)-nerd-static-$(VERSION).x86_64.tar.gz $(BIN)-nerd-static - curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(BIN)-nerd-static-$(VERSION).x86_64.tar.gz' \ + tar -zcf $(PKG_NERD)-$(VERSION).$(ARCH).tar.gz $(PKG_NERD) + curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(PKG_NERD)-$(VERSION).$(ARCH).tar.gz' \ -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/x-sharedlib' \ - --upload-file $(BIN)-nerd-static-$(VERSION).x86_64.tar.gz + --upload-file $(PKG_NERD)-$(VERSION).$(ARCH).tar.gz + # upload emoji compiled static binary - tar -zcf $(BIN)-emoji-static-$(VERSION).x86_64.tar.gz $(BIN)-emoji-static - curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(BIN)-emoji-static-$(VERSION).x86_64.tar.gz' \ + tar -zcf $(PKG_EMOJI)-$(VERSION).$(ARCH).tar.gz $(PKG_EMOJI) + curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(PKG_EMOJI)-$(VERSION).$(ARCH).tar.gz' \ -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/x-sharedlib' \ - --upload-file $(BIN)-emoji-static-$(VERSION).x86_64.tar.gz + --upload-file $(PKG_EMOJI)-$(VERSION).$(ARCH).tar.gz + # upload musl static binary - tar -zcf $(BIN)-musl-static-$(VERSION).x86_64.tar.gz $(BIN)-musl-static - curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(BIN)-musl-static-$(VERSION).x86_64.tar.gz' \ + tar -zcf $(PKG_MUSL)-$(VERSION).$(ARCH).tar.gz $(PKG_MUSL) + curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(PKG_MUSL)-$(VERSION).$(ARCH).tar.gz' \ + -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/x-sharedlib' \ + --upload-file $(PKG_MUSL)-$(VERSION).$(ARCH).tar.gz + + # upload musl emoji static binary + tar -zcf $(PKG_MUSL_EMOJI)-$(VERSION).$(ARCH).tar.gz $(PKG_MUSL_EMOJI) + curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(PKG_MUSL_EMOJI)-$(VERSION).$(ARCH).tar.gz' \ -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/x-sharedlib' \ - --upload-file $(BIN)-musl-static-$(VERSION).x86_64.tar.gz + --upload-file $(PKG_MUSL_EMOJI)-$(VERSION).$(ARCH).tar.gz clean: - $(RM) -f $(BIN) nnn-$(VERSION).tar.gz *.sig $(BIN)-static $(BIN)-static-$(VERSION).x86_64.tar.gz $(BIN)-icons-static $(BIN)-icons-static-$(VERSION).x86_64.tar.gz $(BIN)-nerd-static $(BIN)-nerd-static-$(VERSION).x86_64.tar.gz $(BIN)-emoji-static $(BIN)-emoji-static-$(VERSION).x86_64.tar.gz $(BIN)-musl-static $(BIN)-musl-static-$(VERSION).x86_64.tar.gz src/icons-hash-gen src/icons-generated-*.h + $(RM) -f $(BIN) nnn-$(VERSION).tar.gz *.sig $(BIN)-static $(BIN)-static-$(VERSION).x86_64.tar.gz $(BIN)-icons-static $(BIN)-icons-static-$(VERSION).x86_64.tar.gz $(BIN)-nerd-static $(BIN)-nerd-static-$(VERSION).x86_64.tar.gz $(BIN)-emoji-static $(BIN)-emoji-static-$(VERSION).x86_64.tar.gz $(BIN)-musl-static $(BIN)-musl-static-$(VERSION).x86_64.tar.gz $(BIN)-musl-emoji-static $(BIN)-musl-emoji-static-$(VERSION).x86_64.tar.gz src/icons-hash-gen src/icons-generated-*.h checkpatches: ./patches/check-patches.sh diff --git a/misc/musl/musl-static-ubuntu.sh b/misc/musl/musl-static-ubuntu.sh @@ -21,8 +21,9 @@ # Exit on first failure set -e -# Output binary name +# Output binary names BIN=nnn-musl-static +EMOJIBIN=nnn-musl-emoji-static # Install musl sudo apt install -y --no-install-recommends musl musl-dev musl-tools @@ -55,9 +56,16 @@ cd musl-fts ./configure make CC=musl-gcc CFLAGS=-O3 LDFLAGS=-static -j$(($(nproc)+1)) -# Compile nnn cd .. -[ -e "./netbsd-curses" ] || rm -- "$BIN" + +# Compile nnn with Emoji +[ -d "./netbsd-curses" ] && [ -d ./musl-fts ] || rm -- "$EMOJIBIN" +musl-gcc -DEMOJI -std=c11 -Wall -Wextra -Wshadow -O3 -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DICONS_GENERATE -o src/icons-hash-gen src/icons-hash.c +./src/icons-hash-gen > src/icons-generated-emoji.h +musl-gcc -O3 -DNORL -DNOMOUSE -DEMOJI -DICONS_INCLUDE=\"icons-generated-emoji.h\" -std=c11 -Wall -Wextra -Wshadow -I./netbsd-curses/libcurses -I./musl-fts -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -o "$EMOJIBIN" src/nnn.c -Wl,-Bsymbolic-functions -lpthread -L./netbsd-curses/libs -lcurses -lterminfo -static -L./musl-fts/.libs -lfts + +# Compile nnn +[ -d "./netbsd-curses" ] && [ -d ./musl-fts ] || rm -- "$BIN" musl-gcc -O3 -DNORL -DNOMOUSE -std=c11 -Wall -Wextra -Wshadow -I./netbsd-curses/libcurses -I./musl-fts -o "$BIN" src/nnn.c -Wl,-Bsymbolic-functions -lpthread -L./netbsd-curses/libs -lcurses -lterminfo -static -L./musl-fts/.libs -lfts strip "$BIN"