1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
#!/bin/bash
set -o verbose
set -o errexit
# This script downloads and imports timelib
# timelib does not use any autotools/cmake/config system to it is a simple import.
# This script is designed to run on Linux or Mac OS X
# Parsers make use of re2c, which needs to be installed and be version 0.15.3
# *only*. re2c 0.16 introduces an issues with clang which causes any date
# parser to hang.
#
IS_WSL=$(grep -q Microsoft /proc/version)
VERSION=2018.01
NAME=timelib
TARBALL=$VERSION.tar.gz
TARBALL_DIR=$NAME-$VERSION
if $IS_WSL; then
TEMP_DIR=$(wslpath -u $(powershell.exe -Command "Get-ChildItem Env:TEMP | Get-Content | Write-Host"))
else
TEMP_DIR="/tmp"
fi
TEMP_DIR=$(mktemp -d $TEMP_DIR/$NAME.XXXXXX)
DEST_DIR=`git rev-parse --show-toplevel`/src/third_party/$NAME-$VERSION
# Check prerequisites: re2c, wget
if ! [ -x "$(command -v re2c)" ]; then
echo 'Error: re2c is not installed.' >&2
exit 1
fi
RE2C_VERSION=`re2c --version`
if ! [ "re2c 0.15.3" == "$RE2C_VERSION" ]; then
echo 'Error: re2c MUST be version 0.15.3.' >&2
exit 1
fi
if ! [ -x "$(command -v wget)" ]; then
echo 'Error: wget is not installed.' >&2
exit 1
fi
if [ ! -f $TARBALL ]; then
echo "Get tarball"
wget https://github.com/derickr/timelib/archive/$TARBALL
fi
echo $TARBALL
tar -zxvf $TARBALL
rm -rf $TEMP_DIR
mv $TARBALL_DIR $TEMP_DIR
mkdir $DEST_DIR || true
cp -r $TEMP_DIR/* $DEST_DIR
cd $DEST_DIR
# Prune files
rm -rf $DEST_DIR/tests
rm $DEST_DIT/zones/old-tzcode-32-bit-output.tar.gz || true
# Create parsers
echo "Creating parsers"
make parse_date.c parse_iso_intervals.c
# Create SConscript file
cat << EOF > SConscript
# This is a generated file, please do not modify. It is generated by
# timelib_get_sources.sh
Import('env')
env = env.Clone()
try:
env.AppendUnique(CCFLAGS=[
'-DHAVE_GETTIMEOFDAY',
'-DHAVE_STRING_H',
])
if env.TargetOSIs('windows'):
env.AppendUnique(CCFLAGS=[
'-DHAVE_IO_H',
'-DHAVE_WINSOCK2_H',
])
# C4996: '...': was declared deprecated
env.Append(CCFLAGS=['/wd4996'])
elif env.TargetOSIs('solaris'):
env.AppendUnique(CCFLAGS=[
'-DHAVE_DIRENT_H',
'-DHAVE_STRINGS_H',
'-DHAVE_UNISTD_H',
'-D_POSIX_C_SOURCE=200112L',
])
elif env.TargetOSIs('darwin'):
env.AppendUnique(CCFLAGS=[
'-DHAVE_DIRENT_H',
'-DHAVE_SYS_TIME_H',
'-DHAVE_UNISTD_H',
])
else:
env.AppendUnique(CCFLAGS=[
'-DHAVE_DIRENT_H',
'-DHAVE_SYS_TIME_H',
'-DHAVE_UNISTD_H',
'-D_GNU_SOURCE',
])
except ValueError:
pass
env.Library(
target='timelib',
source=[
'astro.c',
'dow.c',
'interval.c',
'parse_date.c',
'parse_iso_intervals.c',
'parse_tz.c',
'parse_zoneinfo.c',
'timelib.c',
'tm2unixtime.c',
'unixtime2tm.c',
],
LIBDEPS_TAGS=[
'init-no-global-side-effects',
],
)
EOF
echo "Done"
|