mirror of
https://github.com/rbenv/ruby-build.git
synced 2025-09-02 07:11:12 +02:00
99 lines
2.1 KiB
Bash
Executable file
99 lines
2.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
resolve_link() {
|
|
$(type -p greadlink readlink | head -1) $1
|
|
}
|
|
|
|
abs_dirname() {
|
|
local cwd="$(pwd)"
|
|
local path="$1"
|
|
|
|
while [ -n "$path" ]; do
|
|
cd "${path%/*}"
|
|
local name="${path##*/}"
|
|
path="$(resolve_link "$name" || true)"
|
|
done
|
|
|
|
pwd
|
|
cd "$cwd"
|
|
}
|
|
|
|
usage() {
|
|
echo "usage: ruby-package build [-v | --verbose] [--resume] DEFINITION"
|
|
exit 1
|
|
}
|
|
|
|
bin_root="$(abs_dirname "$0")"
|
|
|
|
verbose=""
|
|
resume=""
|
|
|
|
while :; do
|
|
case "$1" in
|
|
"-v" | "--verbose" )
|
|
verbose="-v"
|
|
shift
|
|
;;
|
|
"--resume" )
|
|
resume=1
|
|
shift
|
|
;;
|
|
"-"* )
|
|
usage
|
|
;;
|
|
* )
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
definition="$1"
|
|
if [ -z "$definition" ]; then
|
|
usage
|
|
fi
|
|
|
|
package="${definition##*/}"
|
|
prefix="/tmp/ruby-build/-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/$package"
|
|
|
|
package_dir="${package}.$(ruby-package platform)"
|
|
|
|
if [ -z "$resume" ]; then
|
|
ruby-build $verbose "$definition" "$prefix"
|
|
fi
|
|
|
|
cwd="$(pwd)"
|
|
cd "${prefix}/.."
|
|
|
|
mkdir -p "${package_dir}/bin"
|
|
cp "${bin_root}/../share/ruby-package/ruby-package-install" "${package_dir}/bin"
|
|
cp "${bin_root}/../share/ruby-package/ruby-package-rewrite-text" "${package_dir}/bin"
|
|
cc -Wall "${bin_root}/../share/ruby-package/ruby-package-rewrite-binary.c" -o "${package_dir}/bin/ruby-package-rewrite-binary"
|
|
|
|
mkdir -p "${package_dir}/metadata"
|
|
echo -n "$prefix" > "${package_dir}/metadata/prefix"
|
|
echo -n "$package" > "${package_dir}/metadata/package"
|
|
|
|
cd "$package"
|
|
|
|
while read line; do
|
|
binary="${line#Binary file }"
|
|
if [ "$line" = "$binary" ]; then
|
|
# plain text match
|
|
text="${line%%:*}"
|
|
echo "$text" >> "../${package_dir}/metadata/text-files"
|
|
else
|
|
# binary match
|
|
binary="${binary% matches}"
|
|
echo "$binary" >> "../${package_dir}/metadata/binary-files"
|
|
fi
|
|
done < <( grep -m 1 -R "$prefix" * )
|
|
|
|
tar cf "../${package_dir}/package.tar" *
|
|
|
|
cd ..
|
|
|
|
tar czf "${cwd}/${package_dir}.rubypackage" "$package_dir"
|
|
rm -fr "$package_dir"
|
|
|
|
echo "${package_dir}.rubypackage"
|