Files
chromebrew/packages/tinycore.rb
2024-06-08 06:48:50 -04:00

87 lines
3.5 KiB
Ruby

require 'package'
class Tinycore < Package
description 'TinyCore Linux is a distro based on loop-device mounted programs, like Snaps.
This is a wrapper script to be able to execute their .tcz files.'
homepage 'https://distro.ibiblio.org/tinycorelinux/'
version '15.x'
license 'GPL-2'
compatibility 'all'
source_url({
aarch64: "https://distro.ibiblio.org/tinycorelinux/#{version}/armhf/tcz/bash.tcz",
armv7l: "https://distro.ibiblio.org/tinycorelinux/#{version}/armhf/tcz/bash.tcz",
i686: "https://distro.ibiblio.org/tinycorelinux/#{version}/x86/tcz/bash.tcz",
x86_64: "https://distro.ibiblio.org/tinycorelinux/#{version}/x86_64//tcz/bash.tcz"
})
source_sha256({
aarch64: '5d85920a8176cad9ac9b44bae85084d8ca30239fe1c7df3188753b4f64412782',
armv7l: '5d85920a8176cad9ac9b44bae85084d8ca30239fe1c7df3188753b4f64412782',
i686: 'eabe7d8ac11d07b1084863b36f0612b10639a63ea52946768f42cfbedf249c2a',
x86_64: '898452acbf321a9a4e9f1386967123884ef8d97693262e2c2155454fcbddc160'
})
no_compile_needed
def self.build
case ARCH
when 'x86_64'
File.write 'tinycore', <<~EOF
#!/bin/bash
set -e
export PKG=`echo $\{1%%.*\}`
export BIN=`echo $1|sed \"s/^[^\.]*\.//\"`
export OPT=`shift; echo $@`
[ -d #{CREW_PREFIX}/share/tinycore/$PKG ] || { echo Package $PKG not found. && exit 1; }
[ -e #{CREW_PREFIX}/share/tinycore/$PKG/usr/local/bin/$BIN ] || { echo Program $BIN not found. && exit 1; }
if file #{CREW_PREFIX}/share/tinycore/$PKG/usr/local/bin/$BIN | grep \"text executable\" &>/dev/null; then
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:#{CREW_PREFIX}/share/tinycore/$PKG/usr/local/lib #{CREW_PREFIX}/share/tinycore/$PKG/usr/local/bin/$BIN $OPT
else
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:#{CREW_PREFIX}/share/tinycore/$PKG/usr/local/lib /#{ARCH_LIB}/ld-linux-x86-64.so.2 #{CREW_PREFIX}/share/tinycore/$PKG/usr/local/bin/$BIN $OPT
fi
EOF
else
File.write 'tinycore', <<~EOF
#!/bin/bash
set -e
export PKG=`echo $\{1%%.*\}`
export BIN=`echo $1|sed \"s/^[^\.]*\.//\"`
export OPT=`shift; echo $@`
[ -d #{CREW_PREFIX}/share/tinycore/$PKG ] || { echo Package $PKG not found. && exit 1; }
[ -e #{CREW_PREFIX}/share/tinycore/$PKG/usr/local/bin/$BIN ] || { echo Program $BIN not found. && exit 1; }
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:#{CREW_PREFIX}/share/tinycore/$PKG/usr/local/lib #{CREW_PREFIX}/share/tinycore/$PKG/usr/local/bin/$BIN $OPT
EOF
end
end
def self.install
FileUtils.install 'tinycore', "#{CREW_DEST_PREFIX}/bin/tinycore", mode: 0o755
FileUtils.install 'bash.tcz', "#{CREW_DEST_PREFIX}/share/tinycore/examples/bash.tcz", mode: 0o644
end
def self.postinstall
ExitMessage.add <<~EOM.lightblue
Examples are located at #{CREW_PREFIX}/share/tinycore/examples/.
To try TinyCore Bash, execute the following:
sudo mount -o loop #{CREW_PREFIX}/share/tinycore/examples/bash.tcz #{CREW_PREFIX}/share/tinycore/bash/
tinycore bash.bash
sudo umount #{CREW_PREFIX}/share/tinycore/bash/
The executable names are in the format of Snap executable names.
This is imperative to be able to run TinyCore programs.
For example, to run the 'bashbug' program in the TinyCore 'bash' package, execute the following:
tinycore bash.bashbug
To run a binary that has a dot in its name, such as 'ld.gold', use the full name:
tinycore binutils.ld.gold
EOM
end
end