File tree Expand file tree Collapse file tree 4 files changed +146
-0
lines changed
Expand file tree Collapse file tree 4 files changed +146
-0
lines changed Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bash
2+ set -e
3+
4+ definition=" $1 "
5+ if [ -z " $definition " ]; then
6+ echo " usage: ruby-package DEFINITION"
7+ fi
8+
9+ package=" ${definition##*/ } "
10+ prefix=" /tmp/ruby-build/-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/$package "
11+
12+
13+ # ruby-build "$definition" "$prefix"
14+ cwd=" $( pwd) "
15+ cd " ${prefix} /.."
16+
17+ # FIXME don't assume share is in cwd
18+ mkdir -p " ${package} .rubypackage/bin"
19+ cp " ${cwd} /share/ruby-package/" * " ${package} .rubypackage/bin"
20+
21+ mkdir -p " ${package} .rubypackage/metadata"
22+ echo -n " $prefix " > " ${package} .rubypackage/metadata/prefix"
23+ echo -n " $package " > " ${package} .rubypackage/metadata/package"
24+
25+ cd " $package "
26+
27+ while read line; do
28+ binary=" ${line# Binary file } "
29+ if [ " $line " = " $binary " ]; then
30+ # plain text match
31+ text=" ${line%%:* } "
32+ echo " $text " >> " ../${package} .rubypackage/metadata/text-files"
33+ else
34+ # binary match
35+ binary=" ${binary% matches} "
36+ echo " $binary " >> " ../${package} .rubypackage/metadata/binary-files"
37+ fi
38+ done < <( grep -m 1 -R " $prefix " * )
39+
40+ tar cf " ../${package} .rubypackage/package.tar" *
41+
42+ cd ..
43+
44+ tar czf " ${cwd} /${package} .rubypackage.tar.gz" " ${package} .rubypackage"
45+ rm -fr " ${package} .rubypackage"
Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bash
2+ set -e
3+
4+ prefix=" $1 "
5+ if [ -z " $prefix " ]; then
6+ echo " usage: ruby-package-install PREFIX" >&2
7+ exit 1
8+ fi
9+
10+ resolve_link () {
11+ $( type -p greadlink readlink | head -1) $1
12+ }
13+
14+ abs_dirname () {
15+ local cwd=" $( pwd) "
16+ local path=" $1 "
17+
18+ while [ -n " $path " ]; do
19+ cd " ${path%/* } "
20+ local name=" ${path##*/ } "
21+ path=" $( resolve_link " $name " || true) "
22+ done
23+
24+ pwd
25+ cd " $cwd "
26+ }
27+
28+ bin_root=" $( abs_dirname " $0 " ) "
29+ package_root=" ${bin_root} /.."
30+ package_prefix=" $( cat " ${package_root} /metadata/prefix" ) "
31+ package=" $( cat " ${package_root} /metadata/package" ) "
32+
33+ mkdir -p " $prefix "
34+ cd " $prefix "
35+ prefix=" $( pwd) "
36+
37+ rewrite () {
38+ kind=" $1 "
39+ while read file; do
40+ path=" ${prefix} /$file "
41+ cp " $path " " ${path} .orig"
42+ " ${bin_root} /ruby-package-rewrite-$kind " " $package_prefix " " $prefix " < " ${path} .orig" > " $path "
43+ rm " ${path} .orig"
44+ done < " ${package_root} /metadata/${kind} -files"
45+ }
46+
47+ tar xzf " ${package_root} /package.tar"
48+ rewrite binary
49+ rewrite text
Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bash
2+ set -e
3+
4+ src_prefix=" $1 "
5+ dst_prefix=" $2 "
6+
7+ if [ -z " $src_prefix " ] || [ -z " $dst_prefix " ]; then
8+ echo " usage: ruby-package-install-binary SRC_PREFIX DST_PREFIX" >&2
9+ exit 1
10+ fi
11+
12+ hexify () {
13+ xxd -c 1 -p | sed ' s/^00$/,/' | tr ' ,\n' ' \n '
14+ }
15+
16+ search_hex=" $( echo -n " $src_prefix " | hexify) "
17+ replace_hex=" $( echo -n " $dst_prefix " | hexify) "
18+
19+ hexify |
20+ awk '
21+ BEGIN {
22+ search_hex=" ' " $search_hex " ' ";
23+ replace_hex=" ' " $replace_hex " ' ";
24+ split(search_hex, search);
25+ split(replace_hex, replace);
26+ search_len=length(search);
27+ replace_len=length(replace);
28+ }
29+ { matched=0 }
30+ / ' " $search_hex " ' / {
31+ result=replace_hex substr($0, length(search_hex) + 1);
32+ for (i=length(replace)+1; i<=length(search); i++)
33+ result=result "00 ";
34+ print result;
35+ matched=1
36+ }
37+ { if (matched == 0) print $0 }
38+ ' |
39+ sed ' s/$/00/' |
40+ xxd -p -r
Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bash
2+ set -e
3+
4+ src_prefix=" $1 "
5+ dst_prefix=" $2 "
6+
7+ if [ -z " $src_prefix " ] || [ -z " $dst_prefix " ]; then
8+ echo " usage: ruby-package-install-text SRC_PREFIX DST_PREFIX" >&2
9+ exit 1
10+ fi
11+
12+ sed " s:${src_prefix} :${dst_prefix} :g"
You can’t perform that action at this time.
0 commit comments