Merge pull request #90 from fosslinux/get_file
Add multiple tarball support, named args in rootfs.sh
This commit is contained in:
commit
37d720135c
107
rootfs.sh
107
rootfs.sh
|
@ -111,50 +111,101 @@ if [ ! -f "$(basename $url)" ]; then
|
||||||
fi
|
fi
|
||||||
popd
|
popd
|
||||||
tar -C tmp/after/tar-1.12/src -xf "tmp/after/tar-1.12/src/$(basename $url)" --strip-components=1
|
tar -C tmp/after/tar-1.12/src -xf "tmp/after/tar-1.12/src/$(basename $url)" --strip-components=1
|
||||||
|
unset url
|
||||||
|
|
||||||
get_file() {
|
_get_file() {
|
||||||
url=$1
|
local url="$1"
|
||||||
make_build=${2:-0}
|
local output="$2"
|
||||||
output_filename=$3
|
local target="$3"
|
||||||
ext="${url##*.}"
|
# Get the actual file
|
||||||
if [ "$ext" = "tar" ]; then
|
pushd "${target}/src"
|
||||||
bname=$(basename "${output_filename:-${url}}" ".tar")
|
if [ ! -f "$(basename "$url")" ]; then
|
||||||
else
|
_wget "$url" "${output:-${url##*/}}"
|
||||||
bname=$(basename "${output_filename:-${url}}" ".tar.${ext}")
|
fi
|
||||||
fi
|
|
||||||
cp -r "${bname}" tmp/after/
|
|
||||||
target="tmp/after/${bname}"
|
|
||||||
mkdir -p "${target}/src"
|
|
||||||
if [ "${make_build}" -ne 0 ]; then
|
|
||||||
mkdir "${target}/build"
|
|
||||||
fi
|
|
||||||
pushd "tmp/after/${bname}/src"
|
|
||||||
if [ ! -f "$(basename "$url")" ]; then
|
|
||||||
_wget "$url" "${output_filename:-${url##*/}}"
|
|
||||||
fi
|
|
||||||
popd
|
popd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_get_target() {
|
||||||
|
local url="$1"
|
||||||
|
local output="$2"
|
||||||
|
local ext="${url##*.}"
|
||||||
|
if [ "$ext" = "tar" ]; then
|
||||||
|
bname=$(basename "${output:-${url}}" ".tar")
|
||||||
|
else
|
||||||
|
bname=$(basename "${output:-${url}}" ".tar.${ext}")
|
||||||
|
fi
|
||||||
|
# this is the target
|
||||||
|
echo "tmp/after/${bname}"
|
||||||
|
}
|
||||||
|
|
||||||
|
_get_main() {
|
||||||
|
local url="$1"
|
||||||
|
local output="$2"
|
||||||
|
local make_build="$3"
|
||||||
|
local target="$4"
|
||||||
|
# Copy main files
|
||||||
|
cp -r "$(basename "${target}")" tmp/after/
|
||||||
|
# Make directories
|
||||||
|
mkdir -p "${target}/src"
|
||||||
|
if [ "${make_build}" -eq 1 ]; then
|
||||||
|
mkdir -p "${target}/build"
|
||||||
|
fi
|
||||||
|
# Also get this file
|
||||||
|
_get_file "${url}" "${output}" "${target}"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_file() {
|
||||||
|
# A mapping of URL to output filenames based on index (position-dependent)
|
||||||
|
local outputs=()
|
||||||
|
local urls=()
|
||||||
|
# Argument parsing
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
case "$1" in
|
||||||
|
--mkbuild=*) local make_build="${1#*=}" ;;
|
||||||
|
--output=*) outputs+=("${1#*=}") ;;
|
||||||
|
# It's just another URL to download
|
||||||
|
*) urls+=("$1") ;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
if [ -z "${make_build}" ]; then
|
||||||
|
make_build=0
|
||||||
|
fi
|
||||||
|
# Actual work
|
||||||
|
# Loop over urls
|
||||||
|
local url_length="${#urls[@]}"
|
||||||
|
local target
|
||||||
|
target="$(_get_target "${urls[0]}" "${outputs[0]}")"
|
||||||
|
_get_main "${urls[0]}" "${outputs[0]}" "${make_build}" "${target}"
|
||||||
|
if [ "${url_length}" -gt 1 ]; then
|
||||||
|
url_length="$((url_length-1))"
|
||||||
|
echo "${url_length}"
|
||||||
|
for i in $(seq 1 "${url_length}"); do
|
||||||
|
_get_file "${urls[${i}]}" "${outputs[${i}]}" "${target}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# gzip 1.2.4
|
# gzip 1.2.4
|
||||||
get_file https://ftp.gnu.org/gnu/gzip/gzip-1.2.4.tar 1
|
get_file https://ftp.gnu.org/gnu/gzip/gzip-1.2.4.tar --mkbuild=1
|
||||||
|
|
||||||
# sed 4.0.9
|
# sed 4.0.9
|
||||||
get_file https://ftp.gnu.org/gnu/sed/sed-4.0.9.tar.gz 1
|
get_file https://ftp.gnu.org/gnu/sed/sed-4.0.9.tar.gz --mkbuild=1
|
||||||
|
|
||||||
# patch 2.5.9
|
# patch 2.5.9
|
||||||
get_file https://ftp.gnu.org/pub/gnu/patch/patch-2.5.9.tar.gz 1
|
get_file https://ftp.gnu.org/pub/gnu/patch/patch-2.5.9.tar.gz --mkbuild=1
|
||||||
|
|
||||||
# sha-2 61555d
|
# sha-2 61555d
|
||||||
get_file https://github.com/amosnier/sha-2/archive/61555d.tar.gz 1 sha-2-61555d.tar.gz
|
get_file https://github.com/amosnier/sha-2/archive/61555d.tar.gz --mkbuild=1 --output=sha-2-61555d.tar.gz
|
||||||
|
|
||||||
# make 3.80
|
# make 3.80
|
||||||
get_file https://ftp.gnu.org/gnu/make/make-3.80.tar.gz 1
|
get_file https://ftp.gnu.org/gnu/make/make-3.80.tar.gz --mkbuild=1
|
||||||
|
|
||||||
# bzip2 1.0.8
|
# bzip2 1.0.8
|
||||||
get_file ftp://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz 1
|
get_file ftp://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz --mkbuild=1
|
||||||
|
|
||||||
# coreutils 5.0
|
# coreutils 5.0
|
||||||
get_file https://ftp.gnu.org/gnu/coreutils/coreutils-5.0.tar.bz2 1
|
get_file https://ftp.gnu.org/gnu/coreutils/coreutils-5.0.tar.bz2 --mkbuild=1
|
||||||
|
|
||||||
# heirloom-devtools
|
# heirloom-devtools
|
||||||
get_file http://downloads.sourceforge.net/project/heirloom/heirloom-devtools/070527/heirloom-devtools-070527.tar.bz2
|
get_file http://downloads.sourceforge.net/project/heirloom/heirloom-devtools/070527/heirloom-devtools-070527.tar.bz2
|
||||||
|
@ -271,7 +322,7 @@ get_file https://ftp.gnu.org/gnu/automake/automake-1.10.3.tar.bz2
|
||||||
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.65.tar.bz2
|
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.65.tar.bz2
|
||||||
|
|
||||||
# gcc 4.0.4
|
# gcc 4.0.4
|
||||||
get_file https://ftp.gnu.org/gnu/gcc/gcc-4.0.4/gcc-core-4.0.4.tar.bz2 0 gcc-4.0.4.tar.bz2
|
get_file https://ftp.gnu.org/gnu/gcc/gcc-4.0.4/gcc-core-4.0.4.tar.bz2 --output=gcc-4.0.4.tar.bz2
|
||||||
|
|
||||||
# musl 1.2.2
|
# musl 1.2.2
|
||||||
get_file https://musl.libc.org/releases/musl-1.2.2.tar.gz
|
get_file https://musl.libc.org/releases/musl-1.2.2.tar.gz
|
||||||
|
|
|
@ -15,6 +15,7 @@ export PATH=/after/bin
|
||||||
# 1) name-version of the package
|
# 1) name-version of the package
|
||||||
# 2) optionally specify build script. Default is name-version.sh
|
# 2) optionally specify build script. Default is name-version.sh
|
||||||
# 3) optionally specify name of checksum file. Default is checksums
|
# 3) optionally specify name of checksum file. Default is checksums
|
||||||
|
# 4) directory of patches. Default is patches
|
||||||
build () {
|
build () {
|
||||||
pkg=$1
|
pkg=$1
|
||||||
script_name=${2:-${pkg}.sh}
|
script_name=${2:-${pkg}.sh}
|
||||||
|
@ -66,20 +67,25 @@ build () {
|
||||||
unset -f src_unpack src_prepare src_configure src_compile src_install
|
unset -f src_unpack src_prepare src_configure src_compile src_install
|
||||||
}
|
}
|
||||||
|
|
||||||
# Default unpacking function that unpacks a single source tarball.
|
# Default unpacking function that unpacks all source tarballs.
|
||||||
default_src_unpack() {
|
default_src_unpack() {
|
||||||
src_dir="${base_dir}/src"
|
src_dir="${base_dir}/src"
|
||||||
|
|
||||||
for suf in .gz .bz2 .xz ""; do
|
for i in "${src_dir}"/*.tar.gz; do
|
||||||
source="${src_dir}/${pkg}.tar${suf}"
|
[ -e "${i}" ] || continue
|
||||||
if test -e "${source}"; then
|
tar -xzf "${i}"
|
||||||
case "${suf}" in
|
done
|
||||||
.gz) tar -xzf "${source}" ;;
|
for i in "${src_dir}"/*.tar.bz2; do
|
||||||
.bz2) tar -xf "${source}" --use-compress-program=bzip2 ;;
|
[ -e "${i}" ] || continue
|
||||||
.xz) tar -xf "${source}" --use-compress-program=xz ;;
|
tar -xf "${i}" --use-compress-program=bzip2
|
||||||
"") tar -xf "${source}" ;;
|
done
|
||||||
esac
|
for i in "${src_dir}"/*.tar.xz; do
|
||||||
fi
|
[ -e "${i}" ] || continue
|
||||||
|
tar -xf "${i}" --use-compress-program=xz
|
||||||
|
done
|
||||||
|
for i in "${src_dir}"/*.tar; do
|
||||||
|
[ -e "${i}" ] || continue
|
||||||
|
tar -xf "${i}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue