742f2bf8d7ade8d8ca168eaa3865c07ba139c90d
[pspp] / make-bin-dist.as
1 # -* autoconf -*-
2
3 BP_INIT([make-binary.log])
4
5 usage=["\
6 Usage: $0 [OPTION]... PSPP_DIST.TAR.GZ
7 where PSPP_DIST.TAR.GZ is a PSPP tarball prepared by \"make dist\".
8
9 Options:
10   -b, --binid=BINID         Use BINID to identify binary.
11   -h, --help                Print this usage message and exit
12   -f, --force               Delete existing directory instead of aborting
13
14 Report bugs to <bug-gnu-pspp@gnu.org>.
15 GNU PSPP: <http://www.gnu.org/software/pspp/>.
16 General help using GNU software: <http://www.gnu.org/gethelp/>."]
17
18 version=["\
19 make-binary (@PACKAGE_NAME@) @VERSION@
20 Copyright (C) 2010 Free Software Foundation, Inc.
21 License GPLv3+/Autoconf: GNU GPL version 3 or later
22 <http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
23 This is free software: you are free to change and redistribute it.
24 There is NO WARRANTY, to the extent permitted by law.
25
26 Written by Ben Pfaff."]
27
28 help="\
29 Try \`$as_me --help' for more information."
30
31 exit_missing_arg='
32   m4_bpatsubst([AS_ERROR([option `$[1]' requires an argument$as_nl$help])],
33     ['], ['\\''])'
34 # restore font-lock: '
35
36 # Variables.
37 overwrite=false
38 BINID=
39
40 # Parse command line.
41 while test $# -gt 0 ; do
42   option=[`expr "x$1" : 'x\(--[^=]*\)' \| \
43                "x$1" : 'x\(-.\)'`]
44   optarg=[`expr "x$1" : 'x--[^=]*=\(.*\)' \| \
45                "x$1" : 'x-.\(.*\)'`]
46   case $1 in
47     --version | -V )
48        echo "$version" ; exit ;;
49     --help | -h )
50        AS_ECHO(["$usage"]); exit ;;
51
52     --force | -f )
53        overwrite=true ;;
54
55     --binid=* | -b?* )
56        BINID=$optarg
57        shift ;;
58     --binid | -b )
59        test $# = 1 && eval "$exit_missing_arg"
60        BINID=$2
61        shift; shift ;;
62
63     -- )     # Stop option processing
64        shift; break ;;
65     - ) # Use stdin as input.
66        break ;;
67     -* )
68        exec >&2
69        AS_ERROR([invalid option `$[1]'$as_nl$help]) ;; #`
70     * )
71        break ;;
72   esac
73 done
74
75 # Find the input file.
76 case $# in
77   1)
78     tarball=$1
79     ;;
80   *) exec >&2
81      AS_ERROR([invalid number of arguments$as_nl$help]) ;;
82 esac
83
84 if test ! -e "$tarball"; then
85    exec >&2
86    AS_ERROR([$tarball does not exist])
87 fi
88
89 BP_START_STEP([Determining $tarball target directory])
90 DIST_DIR=`zcat $tarball | tar tf - 2>/dev/null | sed 1q | sed s,/.*,,`
91 BP_SET_VAR([DIST_DIR])
92 if test X$DIST_DIR = X; then
93   BP_ERROR([failed to determine $tarball target directory])
94 elif test -e "$DIST_DIR"; then
95   if test $overwrite = true; then
96     chmod -R u+w "$DIST_DIR"
97     rm -rf "$DIST_DIR"
98   else
99     BP_ERROR([$DIST_DIR exists and --force not specified])
100   fi
101 fi
102
103 BP_START_STEP([Extracting source tarball])
104 BP_RUN([zcat $tarball | tar xf - >&AS_MESSAGE_LOG_FD 2>&1])
105
106 BP_START_STEP([Extracting tar version])
107 DIST_VERSION=`$DIST_DIR/configure --version 2>/dev/null | sed 1q | sed 's/.* //'`
108 BP_SET_VAR([DIST_VERSION])
109
110 BP_START_STEP([Configuring])
111 BP_RUN([mkdir $DIST_DIR/_build >&AS_MESSAGE_LOG_FD 2>&1])
112 BP_RUN([chmod -R a-w $DIST_DIR >&AS_MESSAGE_LOG_FD 2>&1])
113 BP_RUN([chmod u+w $DIST_DIR/_build >&AS_MESSAGE_LOG_FD 2>&1])
114 BP_TRY_RUN([(cd $DIST_DIR/_build && ../configure --enable-relocatable --prefix='') >&AS_MESSAGE_LOG_FD 2>&1])
115 _bp_status=$?
116 for base in config.h config.log; do
117   fn=$DIST_DIR/_build/$base
118   if test -e "$fn"; then
119     BP_COPY_OUTPUT([build configuration], [$fn])
120   fi
121 done
122 if test $_bp_status != 0; then
123   AS_ECHO(["$as_me:$LINENO: command exited with status $_bp_status"]) >&AS_MESSAGE_LOG_FD
124 fi
125
126 BP_START_STEP([Determine target name])
127 if test "X$BINID" = X; then
128   BINID=`sed -n 's/^Target: \(.*\)$/\1/p' < $DIST_DIR/_build/config.log 2>/dev/null | sed 1q`
129   if test "X$BINID" = X; then
130     BINID=`./config.guess`
131   fi
132 fi  
133 BP_SET_VAR([BINID])
134
135 BP_START_STEP([Build])
136 BP_RUN([(cd $DIST_DIR/_build && make) >&AS_MESSAGE_LOG_FD 2>&1])
137
138 BP_START_STEP([Install])
139 BP_RUN([(cd $DIST_DIR/_build && make install DESTDIR=$PWD/pspp-$DIST_VERSION-$BINID) >&AS_MESSAGE_LOG_FD 2>&1])
140
141 BP_START_STEP([Make binary distribution])
142 BP_RUN([(cd $DIST_DIR/_build && tar cfz pspp-$DIST_VERSION-$BINID.tar.gz pspp-$DIST_VERSION-$BINID) >&AS_MESSAGE_LOG_FD 2>&1])
143 BP_MOVE_OUTPUT([binary distribution], [$DIST_DIR/_build/pspp-$DIST_VERSION-$BINID.tar.gz])
144
145 BP_START_STEP([Check])
146 BP_TRY_RUN([(cd $DIST_DIR/_build && make check) >&AS_MESSAGE_LOG_FD 2>&1])
147 _bp_status=$?
148 for base in tests/testsuite.log tests/testsuite.dir; do
149   fn=$DIST_DIR/_build/$base
150   if test -e "$fn"; then
151     BP_MOVE_OUTPUT([test logs], [$fn])
152   fi
153 done
154 if test $_bp_status != 0; then
155   AS_ECHO(["$as_me:$LINENO: command exited with status $_bp_status"]) >&AS_MESSAGE_LOG_FD
156 fi
157
158 BP_START_STEP([Uninstall])
159 BP_RUN([(cd $DIST_DIR/_build && make uninstall DESTDIR=$PWD/pspp-$DIST_VERSION-$BINID) >&AS_MESSAGE_LOG_FD 2>&1])
160
161 BP_START_STEP([Check uninstall])
162 BP_RUN([(cd $DIST_DIR/_build && make distuninstallcheck distuninstallcheck_dir=$PWD/pspp-$DIST_VERSION-$BINID) >&AS_MESSAGE_LOG_FD 2>&1])
163
164 # distcleancheck
165
166 BP_FINISH