Merge branch 'PolynomialDivision-feature/add_workflow'
[olsrd.git] / make / hash_source.sh
1 #!/bin/sh
2
3 # The olsr.org Optimized Link-State Routing daemon (olsrd)
4 #
5 # (c) by the OLSR project
6 #
7 # See our Git repository to find out who worked on this file
8 # and thus is a copyright holder on it.
9 #
10 # All rights reserved.
11 #
12 # Redistribution and use in source and binary forms, with or without
13 # modification, are permitted provided that the following conditions
14 # are met:
15 #
16 # * Redistributions of source code must retain the above copyright
17 #   notice, this list of conditions and the following disclaimer.
18 # * Redistributions in binary form must reproduce the above copyright
19 #   notice, this list of conditions and the following disclaimer in
20 #   the documentation and/or other materials provided with the
21 #   distribution.
22 # * Neither the name of olsr.org, olsrd nor the names of its
23 #   contributors may be used to endorse or promote products derived
24 #   from this software without specific prior written permission.
25 #
26 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
29 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
30 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
32 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
36 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37 # POSSIBILITY OF SUCH DAMAGE.
38 #
39 # Visit http://www.olsr.org for more information.
40 #
41 # If you find this software useful feel free to make a donation
42 # to the project. For more information see the website or contact
43 # the copyright holders.
44 #
45
46 if [ $# -ne 3 ]; then
47         echo "ERROR: Supply filename, version and verbosity"
48         echo "       Example: $0 builddata.txt pre-0.6.7 1"
49         exit 1
50 fi
51
52 buildDataTxt="$1"
53 version="$2"
54 verbose="$3"
55
56 md5Command="md5sum"
57 osName="$(uname)"
58 if [ "x$osName" = "xDarwin" ] ; then
59   md5Command="md5"
60 elif [ "x$osName" = "xOpenBSD" ] ; then
61   md5Command="md5"
62 fi
63
64
65 gitSha="$(git log -1 --pretty=%h 2> /dev/null)"
66 if [ -z "$gitSha" ]; then
67   gitSha="0000000"
68 fi
69
70 gitShaFull="$(git rev-list -1 HEAD 2> /dev/null)"
71 if [ -z "$gitShaFull" ]; then
72   gitShaFull="0000000000000000000000000000000000000000"
73 fi
74
75 gitDescriptor="$(git describe --dirty --always 2> /dev/null)"
76
77 sourceHash="$(cat $(find . -name *.[ch] | grep -v -E '[/\\]?builddata.c$') | "$md5Command" | awk '{ print $1; }')"
78
79 tmpBuildDataTxt="$(mktemp -t olsrd.hash_source.XXXXXXXXXX)"
80 cat > "$tmpBuildDataTxt" << EOF
81 const char olsrd_version[]   = "olsr.org - $version-git_$gitSha-hash_$sourceHash";
82
83 const char git_descriptor[]  = "$gitDescriptor";
84 const char git_sha[]         = "$gitShaFull";
85 const char release_version[] = "$version";
86 const char source_hash[]     = "$sourceHash";
87 EOF
88
89
90 if [ ! -e "$buildDataTxt" ]; then
91   echo "[CREATE] $buildDataTxt"
92   if [ "$verbose" = "0" ]; then
93     cp -p "$tmpBuildDataTxt" "$buildDataTxt"
94   else
95     cp -p -v "$tmpBuildDataTxt" "$buildDataTxt"
96   fi
97 elif [ -n "$(diff "$tmpBuildDataTxt" "$buildDataTxt" | sed 's/"/\\"/g')" ]; then
98   echo "[UPDATE] $buildDataTxt"
99   if [ "$verbose" = "0" ]; then
100     cp -p "$tmpBuildDataTxt" "$buildDataTxt"
101   else
102     cp -p -v "$tmpBuildDataTxt" "$buildDataTxt"
103   fi
104 fi
105 rm -f "$tmpBuildDataTxt"
106