1 | #!/usr/bin/env bash
|
2 | #
|
3 | # Make a tarball containing native (C++) code.
|
4 | #
|
5 | # Usage:
|
6 | # devtools/release-native.sh <function name>
|
7 |
|
8 | set -o nounset
|
9 | set -o pipefail
|
10 | set -o errexit
|
11 | shopt -s strict:all 2>/dev/null || true # dogfood for OSH
|
12 |
|
13 | # adapted from build/ovm-compile.sh
|
14 | # and devtools/release.sh
|
15 |
|
16 | OILS_VERSION=$(head -n 1 oil-version.txt)
|
17 | readonly OILS_VERSION
|
18 |
|
19 | gen-oils-sh() {
|
20 | PYTHONPATH=. build/ninja_main.py shell
|
21 | chmod +x _build/oils.sh
|
22 | }
|
23 |
|
24 | tarball-manifest() {
|
25 | # 100 files
|
26 | PYTHONPATH=. build/ninja_main.py tarball-manifest
|
27 | }
|
28 |
|
29 | make-tar() {
|
30 | local app_name='oils-for-unix'
|
31 |
|
32 | local tar=_release/${app_name}.tar
|
33 |
|
34 | # NOTE: Could move this to the Makefile, which will make it
|
35 | mkdir -p _release
|
36 |
|
37 | gen-oils-sh
|
38 | # Build default target to generate code
|
39 | ninja
|
40 |
|
41 | local sed_expr="s,^,${app_name}-${OILS_VERSION}/,"
|
42 | tarball-manifest | xargs -- tar --create --transform "$sed_expr" --file $tar
|
43 |
|
44 | local tar_gz=_release/${app_name}-${OILS_VERSION}.tar.gz
|
45 | gzip -c $tar > $tar_gz
|
46 |
|
47 | ls -l _release
|
48 | }
|
49 |
|
50 | test-tar() {
|
51 | local install=${1:-}
|
52 |
|
53 | local tmp=_tmp/native-tar-test # like oil-tar-test
|
54 | rm -r -f $tmp
|
55 | mkdir -p $tmp
|
56 | cd $tmp
|
57 | tar -x < ../../_release/oils-for-unix.tar
|
58 |
|
59 | pushd oils-for-unix-$OILS_VERSION
|
60 | build/native.sh tarball-demo
|
61 |
|
62 | if test -n "$install"; then
|
63 | sudo ./install
|
64 | fi
|
65 |
|
66 | popd
|
67 | }
|
68 |
|
69 | test-install-tar() {
|
70 | ### test that sudo ./install works
|
71 |
|
72 | # This is run in the raw-vm soil task
|
73 |
|
74 | test-tar T
|
75 | }
|
76 |
|
77 | extract-for-benchmarks() {
|
78 | local install=${1:-}
|
79 |
|
80 | local tar=$PWD/_release/oils-for-unix.tar
|
81 | local dest='../benchmark-data/src'
|
82 | mkdir -p $dest
|
83 |
|
84 | pushd $dest
|
85 | git pull
|
86 | tar -x < $tar
|
87 |
|
88 | # For benchmarks
|
89 | pushd oils-for-unix-$OILS_VERSION
|
90 |
|
91 | # Remove binaries left over from old attempts
|
92 | rm -v _bin/cxx-{dbg,opt}-sh/* || true
|
93 |
|
94 | ./configure
|
95 | _build/oils.sh '' dbg
|
96 | _build/oils.sh '' opt
|
97 |
|
98 | build/native.sh tarball-demo
|
99 |
|
100 | if test -n "$install"; then
|
101 | sudo ./install
|
102 | fi
|
103 | popd
|
104 |
|
105 | git add oils-for-unix-$OILS_VERSION
|
106 |
|
107 | git status
|
108 | echo "Now run git commit"
|
109 |
|
110 | popd
|
111 | }
|
112 |
|
113 | #
|
114 | # Repro bug #1731 -- passing duplicate files to tar results in weird hard
|
115 | # links!
|
116 | #
|
117 |
|
118 | install-bsdtar() {
|
119 | sudo apt-get install libarchive-tools
|
120 | }
|
121 |
|
122 | test-with-bsdtar() {
|
123 | pushd _release
|
124 | bsdtar -x < oils-for-unix.tar
|
125 | popd
|
126 | }
|
127 |
|
128 | "$@"
|