1tlsdate should build and work on the following Operating Systems:
2
3  Debian GNU/Linux squeeze, wheezy, jessie, sid
4  Ubuntu lucid, natty, oneiric, precise, quantal
5  CentOS 6.2, 6.3, 6.4
6  Fedora 17, 18
7  RedHat Enterprise Server 6.4
8  OpenSUSE 11.2, 12.3
9  FreeBSD 9.2, 10, 11
10  Mac OS X 10.8.2, 10.8.3
11  ChromeOS Release 25, 26, 27 and above
12  Android with the Android NDK (use Makefile.android)
13  Arch Linux (Don't forget to symlink to /dev/rtc to /dev/rtc0)
14  NetBSD 6.0.1
15  OpenBSD 5.2
16  Gentoo 20130413
17  DragonFly BSD 3.3-DEVELOPMENT
18  Debian GNU/kFreeBSD 7.0 (8.2-1-amd64)
19  Debian GNU/Hurd
20
21tlsdate should build and might even work on the following Operating Systems:
22
23  Win32 with Cygwin CYGWIN_NT-6.1 1.7.18(0.263/5/3
24  Win32 with MinGW
25  Haiku r1alpha4
26
27Please file a bug or email the tlsdate team if you have successfully built or
28use tlsdate on a platform that is not listed. We are specifically looking for
29ports of tlsdate or for tlsdate integration on the following Operating Systems:
30
31  Windows native
32  OpenWRT
33  pfsense
34  OpenVMS
35  Irix
36  Minix
37  Any of the other classic unix systems
38
39Currently porting is in progress or partially documented for:
40
41  Plan9 (with APE)
42  Debian GNU/Hurd 7.0 (GNU-Mach 1.3.99-486-dbg/Hurd-0.3)
43    Currently we report "server time 0 (difference is about 1367009757 s)"
44Building and install of tlsdate on GNU/Linux and FreeBSD:
45
46  ./autogen.sh
47  ./configure
48  make
49  make install
50
51Cleaning is the usual:
52
53  make clean
54
55On Debian Gnu/Linux sid/unstable:
56
57  apt-get install tlsdate
58
59On other versions of Debian GNU/Linux and with Debian backports, tlsdate may be
60available:
61
62  apt-get install tlsdate
63
64On recent Debian GNU/Linux and related systems, we provide a systemd service.
65It will notice network changes and regularly invoke tlsdate to keep the clock
66in sync. Start it like so:
67
68  service tlsdated start
69
70On older Debian GNU/Linux and related systems, we provide an init.d script that
71controls the tlsdated daemon. It will notice network changes and regularly
72invoke tlsdate to keep the clock in sync. Start it like so:
73
74  /etc/init.d/tlsdated start
75
76Debian GNU/Hurd does not yet support autotools bootstrapping and users must
77bootstrap with `make dist` on another platform from the tlsdate git
78repository. With such a release tar.gz it is the expected process:
79
80  ./configure
81  make
82  make install
83
84Please note that setting time on GNU/Hurd has not yet been tested.
85
86On ChromeOS:
87
88 tlsdated and tlsdate are included in the ChromeOS TCB; no install needed. They
89 run automatically and are the core ntp service for ChromeOS.
90
91On Gentoo:
92
93  emerge net-misc/tlsdate
94
95On FreeBSD one may also use the ports system:
96
97  cd /usr/ports/sysutils/tlsdate
98  make
99  make install
100
101On Mac OS X, we require that you have XCode installed. You may also need brew
102for autoconf and automake packages:
103
104  brew install autoconf automake libtool pkg-config
105
106It should also be possible to install tlsdate on OS X 10.8.x with brew directly:
107
108  brew install tlsdate
109
110On Fedora:
111
112  yum install tlsdate
113
114To run tlsdated as a service on Fedora:
115
116  systemctl enable tlsdate.service
117  systemctl start tlsdate.service
118
119On Arch Linux there is a PKGBUILD in the Arch User Repository:
120
121  https://aur.archlinux.org/packages/tlsdate
122  https://aur.archlinux.org/packages/tl/tlsdate/PKGBUILD
123
124Cygwin requires that the user installs openssl-dev, gcc, pkg-config, libtool, automake, autoconf:
125
126  ./configure
127  make
128
129On Plan9 the start of building might look something like this:
130
131  ip/ipconfig
132  ndb/dns -r
133  9fs sources
134  /n/sources/contrib/fgb/root/rc/bin/contrib/install fgb/openssl
135  mk install
136
137On Haiku we must use gcc4:
138
139  export CC=/boot/develop/abi/x86/gcc4/tools/gcc4.6.3-haiku-121101/bin/gcc
140  export LDFLAGS="$LDFLAGS -lbsd"
141  ./configure # This includes the above exports currently
142  make
143
144OpenBSD builds from source and is not yet in the port system:
145
146  export AUTOCONF_VERSION=<your installed version>
147  export AUTOMAKE_VERSION=<your installed version>
148  ./autogen.sh
149  ./configure
150  make
151  make install
152
153If you wish to make a Debian package there are several other options. It is
154expected that you are building for Sid and that you are familiar with how to
155build Debian packages that are for upload into Debian directly. It is expected
156that you should build in a chroot if you wish to have reliable and or
157reproducible builds.
158
159  # Prep your schroot
160  mysid=sid$RANDOM;
161  schroot -b -c sid -n $mysid;
162  dd-schroot-cmd -c $mysid apt-get update;
163  dd-schroot-cmd -c $mysid apt-get build-dep tlsdate;
164  # If build-dep is building an older tlsdate, you may need these tools too:
165  dd-schroot-cmd -c $mysid apt-get install git ca-certificates \
166     lintian libevent-dev libseccomp-dev;
167  echo "Your chroot is called: $mysid";
168  schroot -r -c $mysid
169  # Build tlsdate
170  git clone https://www.github.com/ioerror/tlsdate/
171  cd tlsdate/
172  git checkout debian-master
173  dpkg-buildpackage -B "-mMyName <MyEmail>" -uc
174
175Building without schroot should work with dpkg-buildpackage but the build
176environment will have to be manually configured.
177
178To make a Debian package with git-buildpackage is the expected build process:
179
180  # install dependencies
181  apt-get install git ca-certificates \
182     lintian libevent-dev libseccomp-dev build-essential \
183     autoconf dh-autoreconf dh-systemd automake autotools-dev \
184     dh-apparmor libssl-dev libevent-dev libtool pkg-config \
185     debhelper fakeroot hardening-wrapper git-buildpackage;
186  git clone https://www.github.com/ioerror/tlsdate/
187  cd tlsdate/
188  git checkout debian-master
189  git-buildpackage --git-upstream-branch=master \
190    --git-debian-branch=debian-master \
191    --git-upstream-tree=master \
192    --git-ignore-new
193
194For Android:
195
196To cross compile tlsdate for Android (tested on Linux) you must have the
197Android NDK (>=r8) installed somewhere on your system, and define the
198environment variable NDK_BASE to be the path to the NDK's root dir.
199
200    export NDK_BASE=/home/user/src/android-ndk-r8d
201
202The Android build also requires a cross-compiled OpenSSL. The Android Makefile
203will attempt to build openssl, if you provide the path via the OPENSSL_ANDROID
204env var.
205
206    git clone https://github.com/guardianproject/openssl-android.git /path/to/android-openssl
207    export OPENSSL_ANDROID=/path/to/android-openssl
208
209Once NDK_BASE and OPENSSL_ANDROID are set properly, you can cross compile tlsdate with:
210
211    make distclean # clean any previous builds
212    rm configure   # distclean doesn't remove this file
213    make -f Makefile.android
214
215Android NDK: https://developer.android.com/tools/sdk/ndk/index.html
216OpenSSL for Android: https://github.com/guardianproject/openssl-android
217
218