Christian Egli | f70f4e0 | 2011-01-03 15:09:06 +0000 | [diff] [blame] | 1 | This HACKING file describes the development environment. -*- org -*- |
Christian Egli | 5510e4a | 2009-11-05 09:55:30 +0000 | [diff] [blame] | 2 | |
Christian Egli | 311d52b | 2013-01-11 16:19:23 +0000 | [diff] [blame] | 3 | Copyright (C) 2008, 2009, 2011 ViewPlus Technologies, Inc. and Abilitiessoft, Inc. |
Christian Egli | 818e58b | 2015-06-05 14:27:06 +0200 | [diff] [blame] | 4 | Copyright (C) 2012, 2013, 2014,2015 Swiss Library for the Blind, Visually Impaired and Print Disabled |
Christian Egli | 311d52b | 2013-01-11 16:19:23 +0000 | [diff] [blame] | 5 | |
Christian Egli | 5510e4a | 2009-11-05 09:55:30 +0000 | [diff] [blame] | 6 | Copying and distribution of this file, with or without modification, |
| 7 | are permitted in any medium without royalty provided the copyright |
Christian Egli | 741b007 | 2014-09-18 11:08:45 +0200 | [diff] [blame] | 8 | notice and this notice are preserved. This file is offered as-is, |
| 9 | without any warranty. |
Christian Egli | eddc466 | 2009-03-09 13:27:20 +0000 | [diff] [blame] | 10 | |
| 11 | This file attempts to describe the maintainer-specific notes to follow |
| 12 | when hacking liblouis. |
| 13 | |
Christian Egli | f949627 | 2017-04-18 17:00:39 +0200 | [diff] [blame^] | 14 | * Table of Contents :TOC: |
| 15 | - [[#developing][Developing]] |
| 16 | - [[#where-to-get-it][Where to get it]] |
| 17 | - [[#build-requirements][Build requirements]] |
| 18 | - [[#gnulib][Gnulib]] |
| 19 | - [[#how-to-build][How to build]] |
| 20 | - [[#install-with-homebrew][Install with Homebrew]] |
| 21 | - [[#docker][Docker]] |
| 22 | - [[#how-to-run-tests][How to run tests]] |
| 23 | - [[#how-to-debug][How to debug]] |
| 24 | - [[#how-to-find-memory-leaks][How to find memory leaks]] |
| 25 | - [[#how-to-analyze-performance][How to analyze performance]] |
| 26 | - [[#how-to-build-for-windows][How to build for Windows]] |
| 27 | - [[#release-procedure][Release Procedure]] |
| 28 | - [[#update-the-news-entry][Update the NEWS entry]] |
| 29 | - [[#set-the-version-number][Set the version number]] |
| 30 | - [[#commit-and-tag][Commit and tag]] |
| 31 | - [[#make-the-release][Make the release]] |
| 32 | - [[#upload][Upload]] |
| 33 | - [[#online-documentation][Online documentation]] |
| 34 | - [[#web-site-maintenance][Web site maintenance]] |
| 35 | - [[#announce][Announce]] |
| 36 | |
Christian Egli | 5510e4a | 2009-11-05 09:55:30 +0000 | [diff] [blame] | 37 | * Developing |
| 38 | ** Where to get it |
Christian Egli | 71647d6 | 2014-05-20 09:20:28 +0200 | [diff] [blame] | 39 | The development sources are available through git at github.com: |
Christian Egli | 5510e4a | 2009-11-05 09:55:30 +0000 | [diff] [blame] | 40 | |
Christian Egli | 71647d6 | 2014-05-20 09:20:28 +0200 | [diff] [blame] | 41 | https://github.com/liblouis/liblouis |
Christian Egli | 5510e4a | 2009-11-05 09:55:30 +0000 | [diff] [blame] | 42 | |
| 43 | ** Build requirements |
Christian Egli | 818e58b | 2015-06-05 14:27:06 +0200 | [diff] [blame] | 44 | To build Automake, Autoconf, and Libtool are used. If you are getting |
| 45 | the sources from git (or change configure.ac), you'll need to have |
| 46 | these tools installed to (re)build. Optionally (if you want to |
Christian Egli | 5510e4a | 2009-11-05 09:55:30 +0000 | [diff] [blame] | 47 | generate man pages) you'll also need help2man. All of these programs |
| 48 | are available from ftp://ftp.gnu.org/gnu. |
| 49 | |
Christian Egli | a02c136 | 2017-03-06 10:38:45 +0100 | [diff] [blame] | 50 | If you want to run the YAML based test suite you will have to install |
| 51 | ~libyaml~. |
| 52 | |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 53 | On Mac OS, the programs can be optained with Homebrew (http://brew.sh): |
Bert Frees | d41c9ac | 2015-03-25 14:42:43 +0100 | [diff] [blame] | 54 | |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 55 | brew install automake libtool pkg-config texinfo |
| 56 | |
| 57 | Note that if you are using Homebrew to install liblouis (see below), |
| 58 | the build dependencies are installed automatically. |
Bert Frees | d41c9ac | 2015-03-25 14:42:43 +0100 | [diff] [blame] | 59 | |
Christian Egli | 5510e4a | 2009-11-05 09:55:30 +0000 | [diff] [blame] | 60 | ** Gnulib |
Christian Egli | 818e58b | 2015-06-05 14:27:06 +0200 | [diff] [blame] | 61 | Gnulib (http://www.gnu.org/software/gnulib) is used to provide |
| 62 | portable basic functionality to programs and libraries. We use two |
| 63 | instances of gnulib, one to provide portable functions such as |
| 64 | ~malloc~, ~strndup~, etc to the library and another one to provide |
| 65 | portable functionality such as ~getopt~, ~progname~ or |
| 66 | ~version-etc~ to the tools. |
Christian Egli | 5510e4a | 2009-11-05 09:55:30 +0000 | [diff] [blame] | 67 | |
Christian Egli | 818e58b | 2015-06-05 14:27:06 +0200 | [diff] [blame] | 68 | The first time invocation to import gnulib for the library was |
| 69 | |
| 70 | gnulib-tool --add-import --lib=libgnu --source-base=gnulib \ |
| 71 | --m4-base=gnulib/m4 --aux-dir=build-aux --libtool \ |
| 72 | --macro-prefix=gl --no-vc-files \ |
| 73 | malloc-gnu realloc-gnu strndup |
| 74 | |
| 75 | and for the tools |
| 76 | |
| 77 | gnulib-tool --add-import --lib=libgnutools --source-base=tools/gnulib \ |
| 78 | --m4-base=tools/gnulib/m4 --aux-dir=build-aux --libtool \ |
| 79 | --macro-prefix=gl_tools --no-vc-files \ |
| 80 | getopt-gnu malloc-gnu progname version-etc |
| 81 | |
Christian Egli | 5510e4a | 2009-11-05 09:55:30 +0000 | [diff] [blame] | 82 | More modules might have been added since. The currently-used gnulib |
| 83 | modules and other gnulib information are recorded in |
Christian Egli | 818e58b | 2015-06-05 14:27:06 +0200 | [diff] [blame] | 84 | ~gnulib/m4/gnulib-cache.m4~ and ~tools/gnulib/m4/gnulib-cache.m4~. |
| 85 | |
| 86 | If you want to update from the current gnulib, install gnulib, and |
| 87 | then run the following commands in the top-level directory. |
| 88 | |
| 89 | gnulib-tool --add-import --lib=libgnu --source-base=gnulib \ |
| 90 | --m4-base=gnulib/m4 --aux-dir=build-aux --libtool \ |
| 91 | --macro-prefix=gl --no-vc-files |
| 92 | gnulib-tool --add-import --lib=libgnutools --source-base=tools/gnulib \ |
| 93 | --m4-base=tools/gnulib/m4 --aux-dir=build-aux --libtool \ |
| 94 | --macro-prefix=gl_tools --no-vc-files |
Christian Egli | 5510e4a | 2009-11-05 09:55:30 +0000 | [diff] [blame] | 95 | |
| 96 | ** How to build |
Christian Egli | 71647d6 | 2014-05-20 09:20:28 +0200 | [diff] [blame] | 97 | After getting the sources from git, with |
Christian Egli | 81b0481 | 2009-11-05 11:07:17 +0000 | [diff] [blame] | 98 | |
Christian Egli | 71647d6 | 2014-05-20 09:20:28 +0200 | [diff] [blame] | 99 | git clone https://github.com/liblouis/liblouis.git |
Christian Egli | 81b0481 | 2009-11-05 11:07:17 +0000 | [diff] [blame] | 100 | |
| 101 | and installing the tools above, change to the liblouis directory and |
| 102 | and bootstrap the project with the following command |
| 103 | |
| 104 | ./autogen.sh |
| 105 | |
| 106 | to do a fresh build. Then run configure as usual: |
| 107 | |
| 108 | ./configure |
| 109 | |
| 110 | You have the choice to compile liblouis for either 16- or 32-bit |
| 111 | Unicode. By default it is compiled for the former. To get 32-bit |
| 112 | Unicode run configure with --enable-ucs4 . |
| 113 | |
| 114 | After running configure run "make" and then "make install". You must |
| 115 | have root privileges for the installation step. |
Christian Egli | 5510e4a | 2009-11-05 09:55:30 +0000 | [diff] [blame] | 116 | |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 117 | ** Install with Homebrew |
| 118 | Homebrew (http://brew.sh) is a package manager for Mac OS X that |
| 119 | installs software from source. There is nothing special about the |
| 120 | installation process in the sense that under the hood it happens |
| 121 | exactly as described above, with the only difference that Homebrew |
| 122 | automates it completely. |
| 123 | |
| 124 | First, use the ~brew tap~ command to add the repository that includes |
| 125 | the liblouis formula: |
| 126 | |
| 127 | brew tap liblouis/liblouis |
| 128 | |
| 129 | Now you are ready to install liblouis: |
| 130 | |
| 131 | brew install liblouis |
| 132 | |
Bert Frees | d41c9ac | 2015-03-25 14:42:43 +0100 | [diff] [blame] | 133 | ** Docker |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 134 | Docker (https://www.docker.com) can be useful both for creating a |
| 135 | development environment for liblouis, and for shipping the |
| 136 | application. |
Bert Frees | d41c9ac | 2015-03-25 14:42:43 +0100 | [diff] [blame] | 137 | |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 138 | Setting up a developer environment can take long and can be |
| 139 | problematic especially for Windows. Thanks to Docker we can set up the |
| 140 | environment for you, we can easily distribute it as an image, which |
| 141 | can be run by anybody and will behave exactly the same for everybody. |
Bert Frees | d41c9ac | 2015-03-25 14:42:43 +0100 | [diff] [blame] | 142 | |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 143 | Docker images of liblouis are being built automatically each time |
| 144 | something changes in the code (see https://registry.hub.docker.com/repos/liblouis). |
| 145 | In order to use them, first get Docker at |
| 146 | http://docs.docker.com/introduction/get-docker. Download the latest |
| 147 | liblouis image with: |
Bert Frees | d41c9ac | 2015-03-25 14:42:43 +0100 | [diff] [blame] | 148 | |
Bert Frees | 16f2820 | 2015-09-11 15:54:03 +0200 | [diff] [blame] | 149 | docker pull liblouis/liblouis |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 150 | |
| 151 | Then, enter the development environment by running the image in a |
| 152 | Docker container: |
| 153 | |
Bert Frees | 16f2820 | 2015-09-11 15:54:03 +0200 | [diff] [blame] | 154 | docker run -it liblouis/liblouis bash |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 155 | |
| 156 | Local files and directories can be "mounted" inside the container, in |
| 157 | order to make it easier to edit files and to persist changes across |
| 158 | runs. For example, to use local table files: |
| 159 | |
| 160 | docker run -it -v $(pwd)/tables:/tmp/liblouis/tables liblouis/liblouis bash |
| 161 | |
| 162 | See the Docker documentation for more info. |
| 163 | |
| 164 | The same Docker image can be used as a development environment and as |
| 165 | the application itself. For example, to run the lou_translate tool |
| 166 | from inside a Docker container: |
| 167 | |
Bert Frees | 16f2820 | 2015-09-11 15:54:03 +0200 | [diff] [blame] | 168 | docker run -it liblouis/liblouis lou_translate en-us-g1.ctb |
Bert Frees | d41c9ac | 2015-03-25 14:42:43 +0100 | [diff] [blame] | 169 | |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 170 | To rebuild the image yourself, run the following command in the root |
| 171 | directory of the liblouis source: |
Bert Frees | d41c9ac | 2015-03-25 14:42:43 +0100 | [diff] [blame] | 172 | |
Bert Frees | 16f2820 | 2015-09-11 15:54:03 +0200 | [diff] [blame] | 173 | docker build -t liblouis/liblouis . |
Bert Frees | d41c9ac | 2015-03-25 14:42:43 +0100 | [diff] [blame] | 174 | |
Bert Frees | 12e9904 | 2015-11-15 12:23:40 +0100 | [diff] [blame] | 175 | A .dockerignore file is required if you want to compile the source both on te host and in the Docker |
| 176 | container. The .dockerignore file can be updated from .gitignore with: |
| 177 | |
| 178 | make .dockerignore |
| 179 | |
Bert Frees | d41c9ac | 2015-03-25 14:42:43 +0100 | [diff] [blame] | 180 | ** How to run tests |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 181 | Tests are run with |
Bert Frees | d41c9ac | 2015-03-25 14:42:43 +0100 | [diff] [blame] | 182 | |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 183 | make check |
| 184 | |
Christian Egli | f70f4e0 | 2011-01-03 15:09:06 +0000 | [diff] [blame] | 185 | ** How to debug |
Christian Egli | 45b3d32 | 2013-01-17 09:51:56 +0000 | [diff] [blame] | 186 | First you have to build liblouis with debugging info enabled. |
| 187 | |
| 188 | $ ./configure CFLAGS='-g -O0 -Wall -Wextra' |
| 189 | $ make |
| 190 | |
Christian Egli | f70f4e0 | 2011-01-03 15:09:06 +0000 | [diff] [blame] | 191 | Starting the programs under the tools directory within gdb is a little |
| 192 | tricky as they are linked with libtool. See the info page of libtool |
| 193 | for more information. To start lou_checktable for table wiskunde.ctb |
| 194 | for example you'd have to issue the following commands: |
| 195 | |
| 196 | $ libtool --mode=execute gdb ./tools/lou_checktable |
| 197 | (gdb) run tables/wiskunde.ctb |
| 198 | |
Christian Egli | c77a589 | 2012-05-11 12:11:26 +0000 | [diff] [blame] | 199 | ** How to find memory leaks |
| 200 | Valgrind is a tool that can be used to find memory errors. It is |
| 201 | recommended that you compile liblouis without any optimizations and |
| 202 | with all warnings enabled before running it through Valgrind: |
| 203 | |
| 204 | $ ./configure CFLAGS='-g -O0 -Wall' |
| 205 | $ make |
| 206 | |
| 207 | Then use Valgrind to analyze liblouis. For example you can run |
| 208 | lou_translate trough Valgrind: |
| 209 | |
| 210 | $ libtool --mode=execute valgrind -v --tool=memcheck \ |
| 211 | --leak-check=full --leak-resolution=high --log-file=valgrind.log \ |
| 212 | ./tools/lou_translate en-us-g2.ctb |
| 213 | |
| 214 | Type a few words at the prompt, check translation and terminate |
| 215 | lou_translate. Now open the file valgrind.log and see if there are any |
| 216 | memory leaks reported. |
| 217 | |
| 218 | You can also just run lou_checktable for example: |
| 219 | |
| 220 | $ libtool --mode=execute valgrind -v --tool=memcheck \ |
| 221 | --leak-check=full --leak-resolution=high --log-file=valgrind.log \ |
Davy Kager | b32f70a | 2016-07-04 12:16:33 +0200 | [diff] [blame] | 222 | ./tools/lou_checktable tables/nl-BE-g0.utb |
Christian Egli | c77a589 | 2012-05-11 12:11:26 +0000 | [diff] [blame] | 223 | |
| 224 | Again open valgrind.log to see if any memory leaks were reported. |
| 225 | |
Christian Egli | ae43532 | 2012-05-14 10:00:36 +0000 | [diff] [blame] | 226 | For the full experience run lou_allround under Valgrind: |
| 227 | |
| 228 | $ libtool --mode=execute valgrind -v --tool=memcheck \ |
| 229 | --leak-check=full --show-reachable=yes \ |
| 230 | --leak-resolution=high --track-origins=yes \ |
| 231 | --log-file=valgrind.log ./tools/lou_allround |
| 232 | |
Christian Egli | 6eb6334 | 2013-06-03 10:03:54 +0000 | [diff] [blame] | 233 | ** How to analyze performance |
| 234 | Gprof helps you analyze the performance of programs. You have to |
| 235 | compile liblouis as follows: |
| 236 | |
| 237 | $ ./configure --disable-shared |
| 238 | $ make clean all CFLAGS='-g -O0 -pg' LDFLAGS='-all-static' |
| 239 | |
| 240 | Then translate some stuff with a large table: |
| 241 | |
| 242 | $ ./tools/lou_translate tests/tables/large.ctb |
| 243 | |
| 244 | Finally look at the call profile: |
| 245 | |
| 246 | $ libtool --mode=execute gprof ./tools/lou_translate gmon.out |
| 247 | |
Bert Frees | d51268a | 2015-11-15 17:23:45 +0100 | [diff] [blame] | 248 | ** How to build for Windows |
Christian Egli | 311d52b | 2013-01-11 16:19:23 +0000 | [diff] [blame] | 249 | See the README.windows file and the windows subdirectory. |
Christian Egli | 75cd569 | 2012-05-16 08:00:37 +0000 | [diff] [blame] | 250 | |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 251 | *** How to cross-compile for Windows |
| 252 | To compile for win32, use the MinGW win32 cross-compiler as shown |
| 253 | below. Use the prefix option to install the binaries to a temporary |
Christian Egli | 854386d | 2016-06-01 16:47:42 +0200 | [diff] [blame] | 254 | place where you can create a zip file. The LDFLAGS='-all-static' |
| 255 | ensures that libgcc is linked in statically. Otherwise the users need |
| 256 | to have libgcc_s_sjlj-1.dll. |
Christian Egli | 75cd569 | 2012-05-16 08:00:37 +0000 | [diff] [blame] | 257 | |
Christian Egli | d5bea6c | 2016-06-03 08:38:52 +0200 | [diff] [blame] | 258 | Some users want the dlls unversioned. To achieve that add |
| 259 | '-avoid-version' to LDFLAGS. |
| 260 | |
Christian Egli | 854386d | 2016-06-01 16:47:42 +0200 | [diff] [blame] | 261 | ./configure --build=i686-pc-linux-gnu --host=i686-w64-mingw32 --prefix=/tmp/liblouis-mingw32 |
Christian Egli | d5bea6c | 2016-06-03 08:38:52 +0200 | [diff] [blame] | 262 | make LDFLAGS='-avoid-version -Xcompiler -static-libgcc' |
Christian Egli | daaf7e3 | 2013-06-21 14:27:14 +0000 | [diff] [blame] | 263 | make install |
Christian Egli | 854386d | 2016-06-01 16:47:42 +0200 | [diff] [blame] | 264 | zip -r liblouis-mingw32msvc.zip /tmp/liblouis-mingw32 |
Christian Egli | 75cd569 | 2012-05-16 08:00:37 +0000 | [diff] [blame] | 265 | |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 266 | To compile for win64, use the MinGW-w64 cross-compiler: |
| 267 | |
Christian Egli | 854386d | 2016-06-01 16:47:42 +0200 | [diff] [blame] | 268 | ./configure --build=i686-pc-linux-gnu --host=x86_64-w64-mingw32 --prefix=/tmp/liblouis-w64-mingw32 |
Christian Egli | d5bea6c | 2016-06-03 08:38:52 +0200 | [diff] [blame] | 269 | make LDFLAGS='-avoid-version -Xcompiler -static-libgcc' |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 270 | make install |
| 271 | zip -r liblouis-w64-mingw32.zip /tmp/liblouis-w64-mingw32 |
| 272 | |
Bert Frees | d51268a | 2015-11-15 17:23:45 +0100 | [diff] [blame] | 273 | Two makefile rules have been provided to do this automatically for you. Docker will be used if the |
| 274 | right cross-compiler is not installed. To compile for win32 using the MinGW cross-compiler, run make |
| 275 | distwin32. This will produce a ZIP file called liblouis-<version>-win32.zip. To compile for win64 |
| 276 | using the MinGW-w64 cross-compiler, run make distwin64. This will produce a ZIP file called |
| 277 | liblouis-<version>-win64.zip. |
| 278 | |
Bert Frees | 34df6a6 | 2015-04-10 16:10:21 +0200 | [diff] [blame] | 279 | *** TODO How to build for Windows using Cygwin |
| 280 | (possibly use a Vagrantfile as demonstration + explain that Cygwin |
| 281 | binaries can not be used outside the Cygwin environment) |
| 282 | |
| 283 | *** TODO How to build for Windows using MinGW |
| 284 | (possibly use a Vagrant file as demonstration) |
| 285 | |
Christian Egli | eddc466 | 2009-03-09 13:27:20 +0000 | [diff] [blame] | 286 | * Release Procedure |
| 287 | These steps describe what a maintainer does to make a release; they |
| 288 | are not needed for ordinary patch submission. |
| 289 | |
Christian Egli | 2d889a8 | 2015-12-07 08:56:55 +0100 | [diff] [blame] | 290 | ** Update the NEWS entry |
| 291 | If any new tables were added or renamed please note them with their |
| 292 | name in the NEWS entry. This is usefull for projects like NVDA. |
| 293 | |
Christian Egli | eddc466 | 2009-03-09 13:27:20 +0000 | [diff] [blame] | 294 | ** Set the version number |
| 295 | Update the version number in NEWS (with version, date, and release |
Christian Egli | 541e727 | 2017-03-06 14:34:31 +0100 | [diff] [blame] | 296 | type), ChangeLog, configure.ac and windows/include/config.h. |
Christian Egli | eddc466 | 2009-03-09 13:27:20 +0000 | [diff] [blame] | 297 | |
Christian Egli | d1f5718 | 2011-05-18 07:16:46 +0000 | [diff] [blame] | 298 | Don't forget to update the libtool versioning info in configure.ac, |
| 299 | i.e. LIBLOUIS_REVISION and possibly LIBLOUIS_CURRENT and LIBLOUIS_AGE. |
| 300 | |
Christian Egli | eddc466 | 2009-03-09 13:27:20 +0000 | [diff] [blame] | 301 | ** Commit and tag |
| 302 | Commit the changes and tag this version |
| 303 | |
Christian Egli | 5f9c03f | 2014-09-01 14:01:41 +0200 | [diff] [blame] | 304 | git tag -s v2.6.0 -m "Release 2.6.0" |
| 305 | git push origin v2.6.0 |
Christian Egli | eddc466 | 2009-03-09 13:27:20 +0000 | [diff] [blame] | 306 | |
| 307 | If you know the exact version number that needs to be tagged use |
| 308 | |
Christian Egli | 5f9c03f | 2014-09-01 14:01:41 +0200 | [diff] [blame] | 309 | git tag -s v2.6.0 -m "Release 2.6.0" <commit> |
| 310 | git push origin v2.6.0 |
Christian Egli | eddc466 | 2009-03-09 13:27:20 +0000 | [diff] [blame] | 311 | |
| 312 | ** Make the release |
| 313 | Check out a clean copy in a different directory, like /tmp. Run |
| 314 | autogen.sh and configure with no special prefixes. Run make distcheck. |
| 315 | This will make sure that all needed files are present, and do a |
| 316 | general sanity check. Run make dist. This will produce a tarball. |
| 317 | |
Christian Egli | 9a3b3ce | 2009-05-27 13:46:37 +0000 | [diff] [blame] | 318 | ./autogen.sh && ./configure && make && make distcheck && make dist |
Christian Egli | eddc466 | 2009-03-09 13:27:20 +0000 | [diff] [blame] | 319 | |
| 320 | ** Upload |
Christian Egli | 88bfad9 | 2015-06-01 11:16:46 +0200 | [diff] [blame] | 321 | Add the tarball to the github liblouis releases page, i.e. add it |
| 322 | under https://github.com/liblouis/liblouis/releases with the specific |
| 323 | release and add a link to it in $WEBSITE/downloads/index.md. See below |
| 324 | for instructions on how to update the web site. |
Christian Egli | eddc466 | 2009-03-09 13:27:20 +0000 | [diff] [blame] | 325 | |
Christian Egli | 2ed702e | 2009-03-12 13:06:39 +0000 | [diff] [blame] | 326 | ** Online documentation |
Christian Egli | 71647d6 | 2014-05-20 09:20:28 +0200 | [diff] [blame] | 327 | The online documentation is part of the liblouis web site. To add it to the |
| 328 | site simply copy doc/liblouis.html to $WEBSITE/documentation/liblouis.html. |
| 329 | Make sure you add the proper YAML front matter. Again see below for |
| 330 | instructions on how to update the web site. |
Christian Egli | 2ed702e | 2009-03-12 13:06:39 +0000 | [diff] [blame] | 331 | |
Christian Egli | 71647d6 | 2014-05-20 09:20:28 +0200 | [diff] [blame] | 332 | ** Web site maintenance |
| 333 | The liblouis web site at liblouis.org is maintained with the help of |
| 334 | github pages (https://pages.github.com/). To edit the site just check |
| 335 | out the repo at https://github.com/liblouis/liblouis.github.io. You'll |
| 336 | need to know a few things about Jekyll (http://jekyllrb.com/) and |
Christian Egli | 3725f22 | 2016-07-15 10:19:55 +0200 | [diff] [blame] | 337 | markdown, the markup that is used to edit the content. In order to |
| 338 | update the site simply edit, commit and push. |
Christian Egli | 2ed702e | 2009-03-12 13:06:39 +0000 | [diff] [blame] | 339 | |
Christian Egli | 0008734 | 2017-03-07 16:13:16 +0100 | [diff] [blame] | 340 | For the new release update the project web site. |
| 341 | |
| 342 | - Add a post containing the current NEWS to the _posts directory and |
| 343 | - add the download artifacts to the download page |
Christian Egli | 2ed702e | 2009-03-12 13:06:39 +0000 | [diff] [blame] | 344 | |
Christian Egli | 2541973 | 2011-05-09 07:38:14 +0000 | [diff] [blame] | 345 | ** Announce |
| 346 | Send an announcement to the liblouis list |
| 347 | liblouis-liblouisxml@freelists.org. See ANNOUNCEMENT for an example. |
| 348 | |