Add binaries/build-nano.sh
This commit is contained in:
103
binaries/build-nano.sh
Normal file
103
binaries/build-nano.sh
Normal 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"
|
Reference in New Issue
Block a user