Add binaries/build-nano.sh

This commit is contained in:
2025-07-27 21:45:26 +00:00
parent f7949229d0
commit 64d3c021a6

103
binaries/build-nano.sh Normal file
View File

@@ -0,0 +1,103 @@
#!/bin/bash
# Build nano for MIPS little-endian architecture (Creality 3D printers)
# https://github.com/jackinthebox52/nano-mips
# Tested on Debian 12 (bookworm)
#Adapted to work with arm
set -e # Exit on any error
# Configuration
WORKSPACE="/home/radxa/development/tenda/nano_test"
SYSROOT="${WORKSPACE}/arm-sysroot"
NCURSES_VERSION="6.4"
NANO_VERSION="7.2"
echo "=== Building nano for MIPS little-endian architecture ==="
# Install required packages
echo "Installing build dependencies..."
sudo apt update
sudo apt install -y wget build-essential texinfo
# Create workspace
echo "Creating workspace at ${WORKSPACE}..."
mkdir -p "${WORKSPACE}"
cd "${WORKSPACE}"
# Build ncurses library
echo "Building ncurses ${NCURSES_VERSION} for MIPS little-endian..."
if [ ! -f "ncurses-${NCURSES_VERSION}.tar.gz" ]; then
wget "https://ftp.gnu.org/gnu/ncurses/ncurses-${NCURSES_VERSION}.tar.gz"
fi
tar -xzf "ncurses-${NCURSES_VERSION}.tar.gz"
cd "ncurses-${NCURSES_VERSION}"
./configure \
--host=arm-linux-gnueabi \
--prefix="${SYSROOT}" \
--enable-static \
--disable-shared \
--without-debug \
--without-tests \
--without-cxx-binding \
--with-normal \
--disable-widec \
--with-fallbacks=linux,screen,vt100,xterm \
CC=arm-linux-gnueabi-gcc
make -j$(nproc)
make install
# Make links to libtinfo
ln -s ${SYSROOT}/lib/libncurses.a ${SYSROOT}/lib/libtinfo.a
# Fix ncurses header structure
echo "Fixing ncurses header paths..."
cd "${SYSROOT}/include/ncurses"
mkdir -p ncurses
for f in *.h; do
ln -sf ../$f ncurses/$f
done
# Build nano
echo "Building nano ${NANO_VERSION}..."
cd "${WORKSPACE}"
if [ ! -f "nano-${NANO_VERSION}.tar.xz" ]; then
wget "https://www.nano-editor.org/dist/v7/nano-${NANO_VERSION}.tar.xz"
fi
tar -xf "nano-${NANO_VERSION}.tar.xz"
cd "nano-${NANO_VERSION}"
PKG_CONFIG_PATH="${SYSROOT}/lib/pkgconfig" \
./configure \
--host=arm-linux-gnueabi \
--prefix=/usr/local \
--disable-nls \
--disable-utf8 \
--enable-tiny \
CC=arm-linux-gnueabi-gcc \
CPPFLAGS="-I${SYSROOT}/include/ncurses" \
LDFLAGS="-L${SYSROOT}/lib -static -Wl,--as-needed"
make -j$(nproc)
# Copy final binary
echo "Copying final binary..."
cp src/nano "${WORKSPACE}/nano-arm"
echo "=== Build complete! ==="
echo "Binary location: ${WORKSPACE}/nano-arm"
echo ""
echo "To install on your MIPS device:"
echo "1. Copy nano-arm to your device"
echo "2. chmod +x nano-arm"
echo "3. mv nano-arm /usr/local/bin/nano-arm"
echo "4. Set TERM environment variable: export TERM=linux"
echo ""
echo "If you get 'Error opening terminal' when running nano:"
echo "Run: export TERM=linux"
echo "Or add to ~/.bashrc: echo 'export TERM=linux' >> ~/.bashrc"