1All you need to know when hacking (modifying) GNU gettext or when building 2it off the git repository. 3 4 5Requirements 6============ 7 8You will need reasonably recent versions of the build tools: 9 10 * A C compiler; on Cygwin or mingw also a C++ compiler. Such as GNU GCC. 11 + Homepage: 12 https://gcc.gnu.org/ 13 14 * GNU automake 1.13 or newer 15 + Homepage: 16 https://www.gnu.org/software/automake/ 17 18 * GNU autoconf 19 + Homepage: 20 https://www.gnu.org/software/autoconf/ 21 22 * GNU m4 23 + Homepage: 24 https://www.gnu.org/software/m4/ 25 26 * GNU bison 3.0 or newer 27 + Homepage: 28 https://www.gnu.org/software/bison/ 29 30 * GNU gperf 31 + Homepage: 32 https://www.gnu.org/software/gperf/ 33 34 * GNU groff 1.17 or newer 35 + Homepage: 36 https://www.gnu.org/software/groff/ 37 38 * GNU texinfo 39 + Homepage: 40 https://www.gnu.org/software/texinfo/ 41 42 * GNU emacs or XEmacs 43 + Homepage: 44 https://www.gnu.org/software/emacs/ 45 https://www.xemacs.org/ 46 47 * Perl 48 + Homepage: 49 https://www.perl.org/ 50 51 * TeX (for making the doc in .dvi, .ps or .pdf format) 52 + Homepage: 53 https://tug.org/teTeX/ 54 55 * Either an internet connection or a recent copy of GNU gnulib. 56 + Homepage: 57 https://www.gnu.org/software/gnulib/ 58 59 * GNU tar (for creating distributable tarballs) 60 + Homepage: 61 https://www.gnu.org/software/tar/ 62 63 * GNU Wget 64 + Homepage: 65 https://www.gnu.org/software/wget/ 66 67 * XZ Utils 68 + Homepage: 69 https://tukaani.org/xz/ 70 71 * Lzip 72 + Homepage: 73 https://www.nongnu.org/lzip/ 74 75And, of course, the packages listed in the DEPENDENCIES file. 76 77 78Additional requirements for maintainers 79--------------------------------------- 80 81If you are a maintainer, you will want to minimize the number of tests that 82are skipped. To this effect, you need to install also: 83 84 * A C++ compiler 85 + Homepage: https://gcc.gnu.org/ 86 + Ubuntu package: g++ 87 * An Objective C compiler 88 + Homepage: https://gcc.gnu.org/ 89 + Ubuntu package: gobjc 90 91 * Python 92 + Homepage: https://www.python.org/ 93 + Ubuntu package: python 94 95 * GNU clisp 96 + Homepage: http://clisp.org/ 97 + Ubuntu package: clisp 98 99 * librep 100 + Homepage: http://librep.sourceforge.net/ 101 + Ubuntu package: rep 102 103 * GNU guile 104 + Homepage: https://www.gnu.org/software/guile/ 105 + Ubuntu package: guile-2.0 106 107 * GNU smalltalk 108 + Homepage: http://smalltalk.gnu.org/ 109 + Ubuntu package: gnu-smalltalk 110 111 * A Java compiler 112 + Homepage: http://openjdk.java.net/ 113 + Ubuntu package: default-jdk 114 115 * A C# compiler 116 + Homepage: https://www.mono-project.com/ 117 + Ubuntu package: mono-mcs 118 119 * GNU awk 120 + Homepage: https://www.gnu.org/software/gawk/ 121 + Ubuntu package: gawk 122 123 * The Free Pascal compiler ppc386 or ppcx64 124 + Homepage: https://www.freepascal.org/ 125 + Ubuntu package: fp-compiler 126 * The Free Pascal Free Component Library 127 + Homepage: https://www.freepascal.org/fcl/fcl.var 128 + Ubuntu package: fp-units-fcl 129 130 * Tcl 131 + Homepage: https://www.tcl.tk/ 132 + Ubuntu package: tcl 133 134 * Perl 135 + Homepage: https://www.perl.org/ 136 + Ubuntu package: perl 137 * The Perl packages Locale::Messages and libintl-perl 138 + Homepage: http://search.cpan.org/~guido/libintl-perl/ 139 + Ubuntu package: libintl-perl 140 141 * php 142 + Homepage: http://www.php.net/ 143 + Ubuntu package: php 144 145 * Ruby 146 + Homepage: https://www.ruby-lang.org/en/ 147 + Ubuntu package: ruby 148 * The ruby-gettext package 149 + Homepage: https://ruby-gettext.github.io/ 150 + Ubuntu package: ruby-gettext 151 152 * lua 153 + Homepage: https://www.lua.org/ 154 + Ubuntu package: lua5.2 or lua5.1 155 * The lua-gettext package 156 + Homepage: https://gitlab.com/sukhichev/lua-gettext/blob/master/README.us.md 157 + Debian and Ubuntu packages: 158 Download, then install through 159 $ sudo dpkg -i lua-gettext_0.0_amd64.deb 160 161 * The GNOME/Mozilla JavaScript interpreter 162 + Homepage: https://wiki.gnome.org/Projects/Gjs 163 + Ubuntu packages: gjs gir1.2-gtk-3.0 164 165 * The GNOME Vala compiler 166 + Homepage: https://wiki.gnome.org/Projects/Vala 167 + Ubuntu package: valac 168 169If you want to exercise the sample programs in gettext-tools/examples/, you 170also need to install: 171 172 * The Qt GUI toolkit library 173 + Homepage: https://www.qt.io/ 174 + Ubuntu package: libqt4-dev 175 176 * The wxWidgets GUI toolkit library 177 + Homepage: https://www.wxwidgets.org/ 178 + Ubuntu package: libwxgtk3.0-dev 179 180 * The GNUstep toolkit and development environment 181 + Homepage: http://www.gnustep.org/ 182 * Ubuntu package: gnustep-devel 183 184 * The C# System.Windows.Forms implementation 185 + Homepage: https://www.mono-project.com/ 186 + Ubuntu package: libmono-system-windows-forms4.0-cil 187 188And you need to install a couple of locales, used by the tests. 189By default, only those enabled in /etc/locale.gen are preinstalled. 190 191$ sudo localedef -i de_DE -f ISO-8859-1 de_DE.ISO-8859-1 192$ sudo localedef -i de_DE -f UTF-8 de_DE.UTF-8 193$ sudo localedef -i fa_IR -f UTF-8 fa_IR 194$ sudo localedef -i fr_FR -f ISO-8859-1 fr_FR.ISO-8859-1 195$ sudo localedef -i fr_FR -f UTF-8 fr_FR.UTF-8 196$ sudo localedef -i ja_JP -f EUC-JP ja_JP.EUC-JP 197$ sudo localedef -i tr_TR -f UTF-8 tr_TR.UTF-8 198$ sudo localedef -i zh_CN -f GB18030 zh_CN.GB18030 199 200 201Building off the Git repository 202=============================== 203 204Access to the Git repository is described at 205https://savannah.gnu.org/git/?group=gettext . 206 207After fetching the sources from the Git repository, peek at the comments in 208autogen.sh, then run 209 ./gitsub.sh pull 210 ./autogen.sh 211Then you can proceed with "./configure" as usual. 212 213Each time you want to update the source, do not only "git pull". Instead do 214 git pull && ./gitsub.sh pull 215 ./autogen.sh 216 217 218Continuous integration 219====================== 220 221The package is built automatically, at regular intervals. You find the latest 222build results here: 223 https://gitlab.com/gnu-gettext/ci-distcheck/pipelines 224 https://gitlab.com/gnu-gettext/ci-distcheck/-/jobs?scope=finished 225 226 227Submitting patches 228================== 229 230Patches should be sent to bug-gettext@gnu.org, the bug/feature mailing 231list. You can subscribe to the mailing list, or see the list 232archives, by following links from 233https://savannah.gnu.org/mail/?group=gettext . 234 235To email a patch you can use a shell command like 'git format-patch 236-1' to create a file, and then attach the file to your email. 237 238GNU gettext development no longer stores descriptions of new changes 239in ChangeLog files. Instead, a single ChangeLog file is generated 240from the commit messages when a release is prepared. So changes you 241commit should not touch any of the ChangeLog files in the repository, 242but instead should contain the log entries in the commit message. 243 244For the style of a ChangeLog entry, see the "Change Logs" section of 245the GNU coding standards: 246 247 https://www.gnu.org/prep/standards/html_node/Change-Logs.html 248