# # # delete "wiki/BuildingOnWindows/VC8.mdwn" # # rename "wiki/BuildingOnMac.mdwn" # to "wiki/Building/Mac.mdwn" # # rename "wiki/BuildingOnSolaris.mdwn" # to "wiki/Building/Solaris.mdwn" # # rename "wiki/BuildingOnWindows" # to "wiki/Building/Windows" # # rename "wiki/BuildingOnWindows.moin" # to "wiki/Building/Windows/MinGW.mdwn" # # rename "wiki/BuildingViaPkgsrc.mdwn" # to "wiki/Building/pkgsrc.mdwn" # # add_dir "wiki/Building" # # add_file "wiki/Building/Windows.mdwn" # content [f79c0c4403eb2fe93cbc214129d57c5c77311235] # # patch "wiki/Building/Mac.mdwn" # from [8a31e9115514dbbe8f824c04df3a57a5fc0de28b] # to [4a18f2264049fe05bb1e82c871b1ea4abd0f94fd] # # patch "wiki/Building/Solaris.mdwn" # from [beb3578d0ee23092bdb70a06049e834afcce19ad] # to [46809f91f6bf2d263aa60149703c0fc383b0a508] # # patch "wiki/Building/Windows/MinGW.mdwn" # from [de18fcf521f018f4d3cdd5242f3f9007e2ac0945] # to [47cda5a0371c3b41cc7e1806d5db2d7530c79886] # # patch "wiki/Building/pkgsrc.mdwn" # from [88942bfa371331eb53b779f151308037253e18dc] # to [699029b0829799b312bd18a15641ef38a16eb3fa] # # patch "wiki/EvaluationFeatures.mdwn" # from [3d5db95be4ae16fc520626d346dd61020e571445] # to [43f7ec7284ca1c94898acb3509caa3bde840d640] # ============================================================ --- wiki/Building/Windows.mdwn f79c0c4403eb2fe93cbc214129d57c5c77311235 +++ wiki/Building/Windows.mdwn f79c0c4403eb2fe93cbc214129d57c5c77311235 @@ -0,0 +1,7 @@ +The officially supported build environment for monotone on Windows is [MinGW](http://mingw.org/). The exact requirements are listed [[in_the_specific_page|MinGW]]. + +Building monotone under [Cygwin](http://cygwin.com/) is also known to work. monotone is also included as a package in all Cygwin mirrors and can be easily installed using [Cygwin's setup](http://cygwin.com/setup.exe). + +Building with Microsoft [Services For Unix](http://www.microsoft.com/windowsserversystem/sfu/default.mspx) is untested, but would probably work without too much difficulty. + +Support for [[building_using_Visual_Studio_8|VisualC8]] is available, but we don't have a VC8 buildbot so sometimes the build is broken. ============================================================ --- wiki/BuildingOnMac.mdwn 8a31e9115514dbbe8f824c04df3a57a5fc0de28b +++ wiki/Building/Mac.mdwn 4a18f2264049fe05bb1e82c871b1ea4abd0f94fd @@ -1,83 +1,72 @@ -[[!tag migration-auto]] +[[!tag migration-done]] -Building Monotone on Mac OS/X - # Installing the toolchain Monotone's makefile has to be generated using special GNU tools. Tiger (OS/X 10.4) does not have the required versions of these tools in the standard installation, though XCode 2.4.1 comes with an adequate version of the C++ compiler itself (older XCode versions have been known to be buggy). -One way to get and build the latest versions of GNU tools is to get them from the [MacPorts (previously known as Darwin Ports)](http://www.macports.org/) project. Install the porting application from http://svn.macports.org/repository/macports/downloads/ and it will put a program called "port" into your */opt/local/bin* directory. When you run this program as an administrator, it installs and builds the latest versions of GNU tools into that same directory. +One way to get and build the latest versions of GNU tools is to get them from the [MacPorts (previously known as Darwin Ports)](http://www.macports.org/) project. Install the porting application from and it will put a program called "port" into your `/opt/local/bin` directory. When you run this program as an administrator, it installs and builds the latest versions of GNU tools into that same directory. -(if */opt/local/bin* is not in your path, you can add it in a terminal shell by typing *PATH=/opt/local/bin:$PATH*) +(if `/opt/local/bin` is not in your path, you can add it in a terminal shell by typing `PATH=/opt/local/bin:$PATH`) Once you have installed the port tool, run the following commands (enter your password when prompted): + % sudo port install gettext - % sudo port install autoconf - % sudo port install automake # Getting the source -Sometimes there is no pre-built binary of monotone on http://venge.net/monotone/downloads/ that is compatible with the version the development server is running. This means that if you want to synchronize and participate with the latest sources you will have to first build your own executable from a snapshot (*.tar.gz* file). -It's not actually that hard, and the instructions in the *INSTALL* file which come in the archive will walk you through it. When you install boost it may not be put into your library path, but you can tell the configure script that generates the makefiles where it is: +Sometimes there is no pre-built binary of monotone on that is compatible with the version the development server is running. This means that if you want to synchronize and participate with the latest sources you will have to first build your own executable from a snapshot (`.tar.gz` file). + +It's not actually that hard, and the instructions in the `INSTALL` file which come in the archive will walk you through it. When you install boost it may not be put into your library path, but you can tell the configure script that generates the makefiles where it is: + % ./configure CPPFLAGS="-I(BOOSTPATH)/boost_1_32_0" LDFLAGS="-L(BOOSTPATH)/boost_1_32_0/libs" -If the executable you generate seems unreasonably large (over ~10 megabytes in size) then run *strip monotone* (or *strip -S* to keep basic symbols for debugging). +If the executable you generate seems unreasonably large (over ~10 megabytes in size) then run `strip monotone` (or `strip -S` to keep basic symbols for debugging). + Once you have a working monotone, then the following commands will let you grab the current development branch off the server: + % monotone --db=mt.db db init - - % monotone --db=mt.db read <" for the addresses. +It shouldn't say "" for the addresses. - # Things to look out for * As of 2006-01-22, boost from darwinports is not linked with the correct install_name [(darwinports bug 5533)](http://bugzilla.opendarwin.org/show_bug.cgi?id=5533). Linking statically should still work, or compile it yourself +* If you are linking to boost statically and `./configure` can't see the libs, try running `ranlib *.a` on the Boost library files to update the archive indexes. +* As of xcode 2.3 (gcc build 5341), `-ggdb` will generate dwarf debugging symbols. The size of a compile dir will be significantly (4x?) smaller with dwarf, so `-ggdb` is recommended. Note however that Shark doesn't seem to handle dwarf debugging symbols (as of 4.3.3) - you might want to explicitly give `-gstabs`. -* If you are linking to boost statically and ./configure can't see the libs, try running *ranlib *.a* on the Boost library files to update the archive indexes. - -* As of xcode 2.3 (gcc build 5341), -ggdb will generate dwarf debugging symbols. The size of a compile dir will be significantly (4x?) smaller with dwarf, so -ggdb is recommended. Note however that Shark doesn't seem to handle dwarf debugging symbols (as of 4.3.3) - you might want to explicitly give *-gstabs*. - # Building a universal binary . -To create a universal binary, first you'll need to create fat boost libraries. Build two separate sets of boost static libraries, one with *-arch ppc* and one with *-arch i386*. Then use *lipo -create* to produce a set of single .a files (use *file libboost_foo.a* to check that it worked). I then put header files in */usr/local/stow/boost-1.33.0-fat/include/boost* and the .a files in */usr/local/stow/boost-1.33.0-fat/lib*. +To create a universal binary, first you'll need to create fat boost libraries. Build two separate sets of boost static libraries, one with `-arch ppc` and one with `-arch i386`. Then use `lipo -create` to produce a set of single .a files (use `file libboost_foo.a` to check that it worked). I then put header files in `/usr/local/stow/boost-1.33.0-fat/include/boost` and the .a files in `/usr/local/stow/boost-1.33.0-fat/lib`. For configure, I've used: + ./configure CFLAGS="-O2 -mdynamic-no-pic -ggdb -gfull -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386" CXXFLAGS="-O2 -mdynamic-no-pic -fno-threadsafe-statics -ggdb -gfull -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386" --enable-static-boost=/usr/local/stow/boost-1.33.0-fat CPPFLAGS="-pipe -I/usr/local/stow/boost-1.33.0-fat/include" LDFLAGS="-L/usr/local/stow/boost-1.33.0-fat/lib -dead_strip" --disable-dependency-tracking -You should then be able to just *make*, though note that distcc doesn't seem to work with multiple *-arch* flags, since it uses the *-E* gcc option. The final output binary will be massive, so *strip -S* is recommended for distribution. An alternative approach to making a universal binary is to just build two separate monotone binaries, then *lipo -create* to stick them together. +You should then be able to just `make`, though note that distcc doesn't seem to work with multiple `-arch` flags, since it uses the `-E` gcc option. The final output binary will be massive, so `strip -S` is recommended for distribution. An alternative approach to making a universal binary is to just build two separate monotone binaries, then `lipo -create` to stick them together. +The `-fno-threadsafe-statics` works around a Apple gcc bug (4227885) that causes dramatic performance decreases accessing static variables. `-dead_strip` and `-gfull` are used to avoid linking in code that isn't used, reducing the binary size. -The *-fno-threadsafe-statics* works around a Apple gcc bug (4227885) that causes dramatic performance decreases accessing static variables. *-dead_strip* and *-gfull* are used to avoid linking in code that isn't used, reducing the binary size. ============================================================ --- wiki/BuildingOnSolaris.mdwn beb3578d0ee23092bdb70a06049e834afcce19ad +++ wiki/Building/Solaris.mdwn 46809f91f6bf2d263aa60149703c0fc383b0a508 @@ -1,7 +1,7 @@ -[[!tag migration-auto]] +[[!tag migration-done]] # GCC build -The last experiences I had with that are 0.20-era and thus outdated. gcc, as delivered by sun is also a rapidly moving target with all kinds of bugs esp. in its copy of system headers and c++ headers. +The last experiences I had with that are 0.20-era and thus outdated. gcc as delivered by sun is also a rapidly moving target with all kinds of bugs especially in its copy of system headers and c++ headers. If you have some guidelines for gcc, please post them here. Feedback welcome. Thanks! @@ -16,140 +16,139 @@ For older versions of Boost, you need [s For older versions of Boost, you need [some patches](http://blogs.sun.com/roller/page/sga) to the boost source itself, as its knowledge of sun studio's features is rather limited. You'll find the patches, as well as build instructions on the right pane on the site. [Base patch](http://blogs.sun.com/roller/resources/sga/boost_1_32_0.patch) [Additional patch to avoid segfaults in operations on large trees](http://blogs.sun.com/sga/resource/operations_posix_windows.cpp) ## Compiling -You'll need `CXXFLAGS=-library=stlport4 -features=tmplife -features=tmplrefstatic`. Adding `-Qoption ccfe -complextmplexp` might help in case of problems, but the documentation warns that it might produce wrong name mangling (I use it for the packages without any issues, though --[[PatrickGeorgi]]). +You'll need `CXXFLAGS=-library=stlport4 -features=tmplife -features=tmplrefstatic`. Adding `-Qoption ccfe -complextmplexp` might help in case of problems, but the documentation warns that it might produce wrong name mangling (I use it for the packages without any issues, though --[[People/PatrickGeorgi]]). ### Locales -You might run into issues with libiconv if there's more than just the SUN version installed in a way that the compiler will pick it up. Unfortunately, the gettext macros for autotools get a bit confused by such a scenario and might try to link against the SUN libraries but using the GNU headers on build time, which fails. +You might run into issues with libiconv if there's more than just the Sun version installed in a way that the compiler will pick it up. Unfortunately, the gettext macros for autotools get a bit confused by such a scenario and might try to link against the SUN libraries but using the GNU headers on build time, which fails. A solution is to configure with `--with-iconv-prefix=/usr --with-libintl-prefix=/usr` __and__ to remove the gnu iconv headers from any kind of compiler search path. If you don't have GNU iconv installed, you won't get locales support at all (but at least, it builds). The reason for that lies in the gettext macros that we inherited from gnu gettext, which only look for the GNU flavor (wasn't autoconf made for portability and finding out such differences?) -If you really want locales, and want to avoid the trouble with gnu iconv, fetch the net.venge.monotone.portable-gettext-support branch. It should be complete enough to give you locales, but it's missing developer tools support without which it can't be merged into mainline (and thus, release). +If you really want locales, and want to avoid the trouble with gnu iconv, fetch the `net.venge.monotone.portable-gettext-support` branch. It should be complete enough to give you locales, but it's missing developer tools support without which it can't be merged into mainline (and thus, release). ## Issues -I don't know what other issues there are. If any come up, please post them here. +I don't know what other issues there are. If any come up, please post them here. - # Running as Server ## Solaris Service Management Facility -(address@hidden, 2007-06-11) +(, 2007-06-11) Sun Solaris 10 introduced the "service management facility" (SMF) to replace the well-known, but arcane rc scripts. In addition to start, stop, and (optional) restart methods, it allows to define dependencies between services, sources of documentation and other meta information about the service. Each service is described in a single XML file that can be imported into the system's service repository. Here is the SMF XML file that I wrote for a monotone netsync service: -{{{ - + + - - + + - - + + - - - + + + - + + + + --> - - - + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - + + - - - + + + - + - - -}}} + + -Save this to a file, say mtn.xml, and import it (svccfg import mtn.xml). +Save this to a file, say `mtn.xml`, and import it (`svccfg import mtn.xml`). -The script assumes that mtn is installed in /usr/local/bin/, the user mtn and the group mtn exist (I like to give them uid 4691 and gid 4691, like the official IANA port of monotone), the directory ~mtn/.monotone/ contains the files monotonerc, read-permissions and write-permissions, and the repository is ~mtn/all.mtn (mtn -d all.mtn db init). Make sure these files are in place. +The script assumes that mtn is installed in `/usr/local/bin/`, the user mtn and the group mtn exist (I like to give them uid 4691 and gid 4691, like the official IANA port of monotone), the directory `~mtn/.monotone/` contains the files `monotonerc`, `read-permissions` and `write-permissions`, and the repository is `~mtn/all.mtn` (`mtn -d all.mtn db init`). Make sure these files are in place. -(Hmm.. Some of that could probably be done with svc properties, or not? I might try that. --[[PatrickGeorgi]]) +(Hmm.. Some of that could probably be done with svc properties, or not? I might try that. --[[People/PatrickGeorgi]]) -You also need to generate a keypair for the server (using mtn genkey), and the lua function get_passphrase(keypair_id) in monotonerc must return the passphrase so that mtn starts to serve without someone typing it in (see the mtn manual). +You also need to generate a keypair for the server (using `mtn genkey`), and the lua function `get_passphrase(keypair_id)` in monotonerc must return the passphrase so that mtn starts to serve without someone typing it in (see the mtn manual). -You also need to configure the read-permissions and write-permissions files to accept users (see the mtn manual), and import their public keys into the database (using mtn pubkey on the client to export, and mtn read on the server to import). +You also need to configure the `read-permissions` and `write-permissions` files to accept users (see the mtn manual), and import their public keys into the database (using `mtn pubkey` on the client to export, and `mtn read` on the server to import). +When all is done, enable and start the service (`svcadm enable mtn`) and start syncing! -When all is done, enable and start the service (svcadm enable mtn) and start syncing! ============================================================ --- wiki/BuildingOnWindows.moin de18fcf521f018f4d3cdd5242f3f9007e2ac0945 +++ wiki/Building/Windows/MinGW.mdwn 47cda5a0371c3b41cc7e1806d5db2d7530c79886 @@ -1,149 +1,136 @@ -The officially supported build environment for monotone on Windows is [http://mingw.org/ MinGW]. The exact requirements are listed below. +[[tag migration-done]] -Building monotone under [http://cygwin.com/ Cygwin] is also known to work. monotone is also included as a package in all Cygwin mirrors and can be easily installed using Cygwin's [http://cygwin.com/setup.exe installer]. +# Installing the toolchain -Building with Microsoft [http://www.microsoft.com/windowsserversystem/sfu/default.mspx Services For Unix] is untested, but would probably work without too much difficulty. - -Support for building using Visual Studio 8 is available, but we don't have a VC8 buildbot so sometimes the build is broken. See ["BuildingOnWindows/VisualC8"]. - -= Installing the toolchain = - This section is preliminary setup--once this has been completed once, you can rebuild monotone regularly using only the instructions in the next section. -||Package||Version||URL|| -||MingGW||5.1.3||http://prdownloads.sf.net/mingw/MinGW-5.1.3.exe?download|| -||MSYS||1.0.10||http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download|| -||msysDTK||1.0.1||http://prdownloads.sf.net/mingw/msysDTK-1.0.1.exe?download|| -||wget||1.9.1||http://prdownloads.sf.net/mingw/wget-1.9.1-mingwPORT.tar.bz2?download|| -||libiconv||1.11||http://prdownloads.sf.net/mingw/libiconv-1.11-mingwPORT-20070423-1.tar.bz2?download|| -||autoconf||2.59||http://prdownloads.sf.net/mingw/autoconf-2.59-mingwPORT.tar.bz2?download|| -||automake||1.9.5||http://prdownloads.sf.net/mingw/automake-1.9.5-mingwPORT.tar.bz2?download|| -||zlib||1.2.3||http://prdownloads.sf.net/mingw/zlib-1.2.3-mingwPORT.tar.bz2?download|| -||gettext||0.16.1||ftp://aeneas.mit.edu/pub/gnu/gettext/gettext-0.16.1.tar.gz|| -||boost||1.33.1||http://prdownloads.sf.net/boost/boost_1_34_1.tar.bz2?download|| +[[!table data=""" +Package|Version|URL +MingGW |5.1.3 | +MSYS |1.0.10| +msysDTK |1.0.1 | +wget |1.9.1 | +libiconv|1.11 | +autoconf|2.59 | +automake|1.9.5 | +zlib |1.2.3 | +gettext |0.16.1| +boost |1.33.1| +"""]] - * ''Newer versions of the tools listed above are likely to work without too much trouble.'' +*Newer versions of the tools listed above are likely to work without too much trouble.* -=== Installation instructions === +### Installation instructions -The installer defaults put MinGW in c:\MinGW and MSYS in c:\Msys. However, later steps sometimes -install new items in c:\MinGW\bin, and sometimes in c:\Msys\bin. So it is difficult to ensure that the -new items are always first in path. Installing MinGW and MSYS both to c:\MinGW avoids this issue. However, +The installer defaults put MinGW in `c:\MinGW` and MSYS in `c:\Msys`. However, later steps sometimes +install new items in `c:\MinGW\bin`, and sometimes in `c:\Msys\bin`. So it is difficult to ensure that the +new items are always first in path. Installing MinGW and MSYS both to `c:\MinGW` avoids this issue. However, in this case the MSYS installer mistakenly renames 'make' to 'mingw32-make', so we need to change it back. msysDTK installs Perl, CVS, crypt, and other tools needed by the autoconf tools. The installed autoconf scripts are a little broken, so we need to manually fix them. - 1. MinGW - install, accept defaults but add g++ on the package selection page +1. MinGW - install, accept defaults but add g++ on the package selection page +2. MSYS - install to same directory as MinGW (`c:\MinGW`), otherwise accept defaults +3. msysDTK - install into MinGW directory +4. Rename `make` - 1. MSYS - install to same directory as MinGW (c:\MinGW), otherwise accept defaults + $ mv /bin/mingw32-make.exe /bin/make.exe - 1. msysDTK - install into MinGW directory +5. wget - 1. Rename 'make' - 1. {{{ -$ mv /bin/mingw32-make.exe /bin/make.exe -}}} + $ mkdir -p /usr/src + $ cd /usr/src + $ tar jxf wget-1.9.1-mingwPORT.tar.bz2 + $ cd wget-1.9.1/mingwPORT + $ cp -a wget.exe /mingw/bin + $ ./mingwPORT.sh - 1. wget - 1. {{{ -$ mkdir -p /usr/src -$ cd /usr/src -$ tar jxf wget-1.9.1-mingwPORT.tar.bz2 -$ cd wget-1.9.1/mingwPORT -$ cp -a wget.exe /mingw/bin -$ ./mingwPORT.sh -}}} - 1. Accept all defaults by hitting the enter key. The following steps also always accept all defaults. +6. Accept all defaults by hitting the enter key. The following steps also always accept all defaults. +7. libiconv - 1. libiconv - 1. {{{ -$ cd /usr/src -$ export SRCROOT=/usr/src -$ tar jxf libiconv-1.11-mingwPORT.tar.bz2 -$ cd libiconv-1.11/mingwPORT -$ ./mingwPORT.sh -}}} + $ cd /usr/src + $ export SRCROOT=/usr/src + $ tar jxf libiconv-1.11-mingwPORT.tar.bz2 + $ cd libiconv-1.11/mingwPORT + $ ./mingwPORT.sh - 1. autoconf - 1. {{{ -$ cd /usr/src -$ tar jxf autoconf-2.59-mingwPORT.tar.bz2 -$ cd autoconf-2.59/mingwPORT -$ ./mingwPORT.sh -}}} - 1. Open ''/mingw/bin/autoconf'' in an editor and change the following line: - * from something like {{{ -: ${AUTOM4TE='c:/mingw/bin/autom4te'} -}}} - * to {{{ -: ${AUTOM4TE='/mingw/bin/autom4te'} -}}} +8. autoconf - 1. automake - 1. {{{ -$ cd /usr/src -$ tar jxf automake-1.9.5-mingwPORT.tar.bz2 -$ cd automake-1.9.5/mingwPORT -$ ./mingwPORT.sh -}}} - 1. Open the files ''/mingw/bin/aclocal'', ''/mingw/bin/aclocal-1.9'', and all files matching ''auto*'' in an editor and delete ''c:/'' from all paths, as was done above for ''autoconf''. + $ cd /usr/src + $ tar jxf autoconf-2.59-mingwPORT.tar.bz2 + $ cd autoconf-2.59/mingwPORT + $ ./mingwPORT.sh - 1. zlib - 1. {{{ -$ cd /usr/src -$ tar jxf zlib-1.2.3-mingwPORT.tar.bz2 -$ cd zlib-1.2.3/mingwPORT -$ ./mingwPORT.sh -}}} +9. Open `/mingw/bin/autoconf` in an editor and change the following line from something like - 1. gettext - 1. {{{ -$ cd /usr/src -$ tar zxf gettext-0.16.1.tar.gz -$ cd gettext-0.16.1 -$ wget 'http://cvs.savannah.gnu.org/viewvc/gettext/gettext/gettext-runtime/intl/\ -localename.c?r1=1.15&r2=1.16&view=patch' -O localename_1.15-1.16.patch -$ cd gettext-runtime/intl -$ patch -p0 < ../../localename_1.15-1.16.patch -$ cd ../.. -$ ./configure --prefix=/mingw -$ make install -}}} - 2. If the wget command here fails, get the patch manually: {{{ -http://cvs.savannah.gnu.org/viewvc/gettext/gettext/gettext-runtime/intl/\ -localename.c?view=log -on version 1.15, click "select for diffs" -on version 1.16, click "diff to previous 1.15" -near top of page, click on "patch" -save file as c:/Downloads/mingw/localename_1.15-1.16.patch -}}} + : ${AUTOM4TE='c:/mingw/bin/autom4te'} - 1. boost; only need headers - 1. {{{ -$ cd /usr/src -$ tar jxf boost_1_34_1.tar.bz2 -$ cd boost_1_34_1 -$ cp -a boost /mingw/include -}}} + to -= Building monotone = + : ${AUTOM4TE='/mingw/bin/autom4te'} - 1. Install a pre-built monotone binary from http://monotone.ca/downloads/ - 1. Follow the self-hosting instructions at SelfHostingInfo to get a copy of the monotone repository. - 1. {{{ -$ mtn -d /path/to/monotone.db -b net.venge.monotone co monotone -$ cd monotone -$ autoreconf -i -$ ./configure -$ make -}}} - 1. And to run the testsuite: {{{ -$ make check -}}} +10. automake -= Notes = + $ cd /usr/src + $ tar jxf automake-1.9.5-mingwPORT.tar.bz2 + $ cd automake-1.9.5/mingwPORT + $ ./mingwPORT.sh +11. Open the files `/mingw/bin/aclocal`, `/mingw/bin/aclocal-1.9`, and all files matching `auto*` in an editor and delete `c:/` from all paths, as was done above for `autoconf`. + +12. zlib + + $ cd /usr/src + $ tar jxf zlib-1.2.3-mingwPORT.tar.bz2 + $ cd zlib-1.2.3/mingwPORT + $ ./mingwPORT.sh + +13. gettext + + $ cd /usr/src + $ tar zxf gettext-0.16.1.tar.gz + $ cd gettext-0.16.1 + $ wget 'http://cvs.savannah.gnu.org/viewvc/gettext/gettext/gettext-runtime/intl/\ + localename.c?r1=1.15&r2=1.16&view=patch' -O localename_1.15-1.16.patch + $ cd gettext-runtime/intl + $ patch -p0 < ../../localename_1.15-1.16.patch + $ cd ../.. + $ ./configure --prefix=/mingw + $ make install + +14. If the wget command here fails, get the patch manually from ,
+ on *version 1.15*, click "select for diffs"
+ on *version 1.16*, click "diff to previous 1.15"
+ near top of page, click on "patch"
+ save file as `c:/Downloads/mingw/localename_1.15-1.16.patch` + +15. boost; only need headers + + $ cd /usr/src + $ tar jxf boost_1_34_1.tar.bz2 + $ cd boost_1_34_1 + $ cp -a boost /mingw/include + +# Building monotone + +1. Install a pre-built monotone binary from http://monotone.ca/downloads/ +2. Follow the self-hosting instructions at [[SelfHostingInfo]] to get a copy of the monotone repository. +3. Checkout and build monotone: + + $ mtn -d /path/to/monotone.db -b net.venge.monotone co monotone + $ cd monotone + $ autoreconf -i + $ ./configure + $ make + +4. And to run the testsuite: + + $ make check + +# Notes + +* If the `./configure` step of the monotone build fails claiming your system is unrecognized while checking the build system type, it may be caused by `uname -s` returning a string containing MSYS rather than MINGW. This indicates that your build environment is in a special mode for producing MSYS binaries, which is not what you want when building monotone. See [MsysBuildEnvironment](http://www.mingw.org/MinGWiki/index.php/MsysBuildEnvironment) for a detailed explanation. + +* If you get strange errors from perl when running `autoreconf -i`, check that you edited the paths correctly in `aclocal-*` and `auto*`. - * If the {{{./configure}}} step of the monotone build fails claiming your system is unrecognized while checking the build system type, it may be caused by {{{uname -s}}} returning a string containing MSYS rather than MINGW. This indicates that your build environment is in a special mode for producing MSYS binaries, which is not what you want when building monotone. See the following URL for a detailed explanation: http://www.mingw.org/MinGWiki/index.php/MsysBuildEnvironment - * If you get strange errors from perl when running {{{autoreconf -i}}}, check that you edited the paths correctly in aclocal-* and auto*. ============================================================ --- wiki/BuildingViaPkgsrc.mdwn 88942bfa371331eb53b779f151308037253e18dc +++ wiki/Building/pkgsrc.mdwn 699029b0829799b312bd18a15641ef38a16eb3fa @@ -1,6 +1,6 @@ -[[!tag migration-auto]] +[[!tag migration-done]] -You can build monotone from source yourself on a number of platforms, and several pages in the wiki describe the process in some detail for various platforms. Monotone itself is pretty easy to compile, most of the detail on these pages deals with getting the various dependencies (like boost) installed first. You might like to try using pkgsrc to take care of all of these steps for you. +You can build monotone from source yourself on a number of platforms, and several pages in the wiki describe the process in some detail for various platforms. Monotone itself is pretty easy to compile, most of the detail on these pages deals with getting the various dependencies (like boost) installed first. You might like to try using pkgsrc to take care of all of these steps for you. # About pkgsrc @@ -16,7 +16,7 @@ If you're running on [[NetBSD]] or [[Dra If you're running on [[NetBSD]] or [[DragonFlyBSD]], your system already comes with the base pkgsrc infrastructure (and you're probably already familiar with using it). -On other systems, pkgsrc needs to be bootstrapped. This process creates the tools used by the pkgsrc infrastructure to build and manage installed packages on your system. Unless you're already on a system very similar to [[NetBSD]], one of these tools is likely to be the [[NetBSD]] make, which will be installed as `bmake` to keep it distinct from whatever make variant your platform has by default. On most platforms, you need to use `bmake` when working with pkgsrc Makefiles and packages. +On other systems, pkgsrc needs to be bootstrapped. This process creates the tools used by the pkgsrc infrastructure to build and manage installed packages on your system. Unless you're already on a system very similar to [[NetBSD]], one of these tools is likely to be the [[NetBSD]] make, which will be installed as `bmake` to keep it distinct from whatever make variant your platform has by default. On most platforms, you need to use `bmake` when working with pkgsrc Makefiles and packages. Bootstrapping [pkgsrc on other platforms](http://www.netbsd.org/Documentation/pkgsrc/platforms.html) is described in detail in [the pkgsrc guide](http://www.netbsd.org/Documentation/pkgsrc/). Bootstrapping can be done from source from within a pkgsrc source tree, or using a prebuilt [binary kit](http://www.netbsd.org/Documentation/software/packages.html#binarydist). @@ -25,12 +25,13 @@ Once you have pkgsrc set up, installing # Building monotone Once you have pkgsrc set up, installing [the monotone pkg](http://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/devel/monotone/README.html) and its dependencies is easy: - # cd /usr/pkgsrc/devel/monotone - # bmake install + # cd /usr/pkgsrc/devel/monotone + # bmake install + There are also packages for many other [[InterfacesFrontendsAndTools]] that work with monotone. -NetBSD is known for its broad portability, and strives for the same principle in pkgsrc. However, not all packages build on all platforms (though a surprising and ever-increasing number do), almost always because of underlying portability problems in the third-party software packages and dependencies themselves. Regular *bulk builds* of all packages are done on a number of platforms to catch such problems, but you may be unlucky. If you find a platform where the monotone package doesn't build, please submit a [bug report](http://www.netbsd.org/Misc/send-pr.html#submitting) in the pkg category. +NetBSD is known for its broad portability, and strives for the same principle in pkgsrc. However, not all packages build on all platforms (though a surprising and ever-increasing number do), almost always because of underlying portability problems in the third-party software packages and dependencies themselves. Regular *bulk builds* of all packages are done on a number of platforms to catch such problems, but you may be unlucky. If you find a platform where the monotone package doesn't build, please submit a [bug report](http://www.netbsd.org/Misc/send-pr.html#submitting) in the pkg category. # using pkg_chk ============================================================ --- wiki/EvaluationFeatures.mdwn 3d5db95be4ae16fc520626d346dd61020e571445 +++ wiki/EvaluationFeatures.mdwn 43f7ec7284ca1c94898acb3509caa3bde840d640 @@ -10,6 +10,6 @@ While we happen to think monotone is alr *Note: this list is under active construction, there are several more pages yet to be written for this list. The first entries on this list are based heavily on the requirements and features from [FreeBSD's evaluation](http://wikitest.freebsd.org/VersionControl), and they're still underway though mostly done at this point. We will add references to other collections as time goes on.* -[[map pages="./Feature/* and !./Feature/Template"]] +[[!map pages="./Feature/* and !./Feature/Template"]] or add a new one based on the [[Feature/Template]]