Re: [fossil-users] windows build assistance
On 9/22/2016 5:15 AM, Warren Young wrote: On Sep 21, 2016, at 2:06 PM, jungle Boogiewrote: I have installed mingw32-base and the installed version is 2013072200 and also mingw32-gcc-g++ with a version of 5.3.0-2 I don’t follow MinGW closely, but as I understand it, the mingw.org project is moribund. The 2013 release date suggests you’re using mingw.org, but the GCC 5.3.0 spec suggests MinGW-W64, a fork of MinGW that is actively maintained. The MinGW mailing list would disagree that it is dead, but it has been a long time since an update. Fortunately, fossil does not require bleeding edges of anything in either build tools or library support. If you do need a bleeding edge GCC on Windows, then the MinGW-W64 people can provide it. But be aware that there is a loud and large rift between the two projects, over a difference of interpretation of the license terms on MS API documentation. MinGW are very conservative, and refuse to include or support anything that can't be discovered from just the MSDN published reference manuals. The MinGW64 project is willing to consider the published Windows.h and related files to also be public API documentation despite the very threatening tone of the copyright notices in the files themselves. That difference leads to differing levels of support for new and interesting features of Windows. I installed MinGW and MSYS following the standard instructions a long time ago. I build (and test) fossil under MSYS's build of bash, and use it with no complaints on stock Windows ranging from XP to Win10 Pro across my organization's mixed bag of machines. Recently I started include OpenSSL support in my builds, and that came together with only a little hair-pulling and confusion. Building under MSYS bash allows ./configure to just work. I long ago copied mingw32-make.exe to make.exe on my path and all is just ducky. The test suites run just fine with a recent build of ActiveTcl also installed. I did have to use its package manager to add a JSON library (and I think one other, sha1 possibly?) to get all tests to run. I also occasionally have built from the Windows CMD prompt, using the command make -f win/Makefile.mingw which generally also works for me, except that the resulting fossil.exe does not include OpenSSL. I suspect it is possible to make it do so, but I have not worked out the right additional configuration to make it happen. The big advantage of a MingW32 build is that the result is a 32-bit binary that is linked against the same C runtime library DLL that ships natively in all versions of windows (at least since XP). Yes, that is officially not the recommended approach. But it is also the approach that until very recently MS themselves used for almost all bundled tools and utilities. While I run a 64-bit Windows on my desk, I have yet to be convinced that there is a need for fossil.exe to be a 64 bit build and have not even attempted to do that as an experiment. -- Ross Berteig r...@cheshireeng.com Cheshire Engineering Corp. http://www.CheshireEng.com/ +1 626 303 1602 ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] windows build assistance
On Sep 22, 2016, at 10:15 AM, jungle Boogiewrote: > > Do you have a few steps you can share on building fossil from source > on a Windows environment? When I use Fossil on Windows, it’s always under Cygwin. I don’t bother with native binaries on Windows. If you’re on Windows 10, the “Bash on Windows” environment would also make this easier, as you could just say “sudo apt-get install fossil”. WSL was still pretty shaky last time I tried it, a few months ago, but none of the problems I recall should affect Fossil. Either way, those binaries should give you a much higher chance of bootstrapping a source build, as they’ve got bigger support organizations. (Red Hat + the Cygwin user base on the one hand, Canonical + Microsoft + the Ubuntu user base on the other.) My Windows development VMs all run Fossil built from source under Cygwin. I’ve never had a problem building Fossil that way. If you absolutely cannot use Cygwin, you may be able to use the Visual Studio Community tools. Microsoft development tools aren’t perfect, but within their limitations, they’re uncommonly solid. The last Windows fossil.exe build command I saw drh post was a Microsoft nmake command. Compare MinGW, which tries to have all the bleeding-edge GCC features pioneered on *ix platforms, but, lacking the same support base of Linux and such, MinGW frequently has breakages. I don’t have to use MinGW that often, but it seems like half the time I do have to use it, *something* has broken since the last time, and I have to work around it. They do fix things, but I’ve never found GCC on MinGW to have the same quality as GCC on any other mainstream *ix platform, including Cygwin. > cannot find -lmingwex So find libmingwex? ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] windows build assistance
Hi Warren, On 22 September 2016 at 05:15, Warren Youngwrote: > On Sep 21, 2016, at 2:06 PM, jungle Boogie wrote: >> >> I have installed mingw32-base and the installed version is 2013072200 >> and also mingw32-gcc-g++ with a version of 5.3.0-2 > > I don’t follow MinGW closely, but as I understand it, the mingw.org project > is moribund. The 2013 release date suggests you’re using mingw.org, but the > GCC 5.3.0 spec suggests MinGW-W64, a fork of MinGW that is actively > maintained. Uninstalling both minGW packages and relying on cigwin/babun (http://babun.github.io/) results in this build failure: gcc -Wall -Os -Lsrc/../compat/zlib -Isrc/../compat/zlib -DBROKEN_MINGW_CMDLINE=1 -o fossil.exe wbld/add.o wbld/allrepo.o wbld/attach.o wbld/bag.o wbld/bisect.o wbld/blob.o wbld/branch.o wbld/browse.o wbld/builtin.o wbld/bundle.o wbld/cache.o wbld/captcha.o wbld/cgi.o wbld/checkin.o wbld/checkout.o wbld/clearsign.o wbld/clone.o wbld/comformat.o wbld/configure.o wbld/content.o wbld/db.o wbld/delta.o wbld/deltacmd.o wbld/descendants.o wbld/diff.o wbld/diffcmd.o wbld/doc.o wbld/encode.o wbld/event.o wbld/export.o wbld/file.o wbld/finfo.o wbld/foci.o wbld/fusefs.o wbld/glob.o wbld/graph.o wbld/gzip.o wbld/http.o wbld/http_socket.o wbld/http_ssl.o wbld/http_transport.o wbld/import.o wbld/info.o wbld/json.o wbld/json_artifact.o wbld/json_branch.o wbld/json_config.o wbld/json_diff.o wbld/json_dir.o wbld/json_finfo.o wbld/json_login.o wbld/json_query.o wbld/json_report.o wbld/json_status.o wbld/json_tag.o wbld/json_timeline.o wbld/json_user.o wbld/json_wiki.o wbld/leaf.o wbld/loadctrl.o wbld/login.o wbld/lookslike.o wbld/main.o wbld/manifest.o wbld/markdown.o wbld/markdown_html.o wbld/md5.o wbld/merge.o wbld/merge3.o wbld/moderate.o wbld/name.o wbld/path.o wbld/piechart.o wbld/pivot.o wbld/popen.o wbld/pqueue.o wbld/printf.o wbld/publish.o wbld/purge.o wbld/rebuild.o wbld/regexp.o wbld/report.o wbld/rss.o wbld/schema.o wbld/search.o wbld/setup.o wbld/sha1.o wbld/shun.o wbld/sitemap.o wbld/skins.o wbld/sqlcmd.o wbld/stash.o wbld/stat.o wbld/statrep.o wbld/style.o wbld/sync.o wbld/tag.o wbld/tar.o wbld/th_main.o wbld/timeline.o wbld/tkt.o wbld/tktsetup.o wbld/undo.o wbld/unicode.o wbld/update.o wbld/url.o wbld/user.o wbld/utf8.o wbld/util.o wbld/verify.o wbld/vfile.o wbld/wiki.o wbld/wikiformat.o wbld/winfile.o wbld/winhttp.o wbld/wysiwyg.o wbld/xfer.o wbld/xfersetup.o wbld/zip.o wbld/sqlite3.o wbld/shell.o wbld/th.o wbld/th_lang.o wbld/th_tcl.o wbld/cson_amalgamation.o wbld/fossil.o -lmingwex -lz -lkernel32 -lws2_32 /usr/lib/gcc/i686-pc-cygwin/4.9.2/../../../../i686-pc-cygwin/bin/ld: cannot find -lmingwex collect2: error: ld returned 1 exit status win/Makefile.mingw:1020: recipe for target 'fossil.exe' failed make: *** [fossil.exe] Error 1 Do you have a few steps you can share on building fossil from source on a Windows environment? Thanks! ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] windows build assistance
Hi, I just want to mention another MinGW/MSYS fork, MSYS2: https://msys2.github.io Its package manager "pacman" makes life with MS Windows a lot easier. Just my two cents. BR, Jihan El 22 sept. 2016 14:15, "Warren Young"escribió: > > On Sep 21, 2016, at 2:06 PM, jungle Boogie wrote: > > > > I have installed mingw32-base and the installed version is 2013072200 > > and also mingw32-gcc-g++ with a version of 5.3.0-2 > > I don’t follow MinGW closely, but as I understand it, the mingw.org project is moribund. The 2013 release date suggests you’re using mingw.org, but the GCC 5.3.0 spec suggests MinGW-W64, a fork of MinGW that is actively maintained. > > If you mix tool chains, you will of course have problems. > > If you have Cygwin installed on the development machine, you must also keep its build tools segregated from MinGW’s. I used this method, back when I still needed MinGW: > > https://www.cygwin.com/ml/cygwin/2008-05/msg00092.html > > > make -f win/Makefile.mingw > > That suggests Cygwin make, since MinGW called its make(1) tool mingw32-make, on purpose in order to avoid conflicts with Cygwin make, since the two implementations differ in many ways, the biggest of which is that Cygwin’s GNU make build uses $SHELL to interpret commands by default, while MinGW’s uses cmd.exe. > > > gcc -Wall -Os -Lsrc/../compat/zlib -Isrc/../compat/zlib > > -DBROKEN_MINGW_CMDLINE=1 -c -o src/../compat/zlib/match.o -DASMV > > src/../compat/zlib/contrib/asm686/match > > .S > > match.S: Assembler messages: > > match.S:94: Error: invalid instruction suffix for `push’ > > That’s characteristic of trying to mix 32-bit and 64-bit code. Given the path in the error message, I assume the source file is for IA-32, so if you’re using a 64-bit toolchain, there’s your problem. > ___ > fossil-users mailing list > fossil-users@lists.fossil-scm.org > http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] windows build assistance
On Sep 21, 2016, at 2:06 PM, jungle Boogiewrote: > > I have installed mingw32-base and the installed version is 2013072200 > and also mingw32-gcc-g++ with a version of 5.3.0-2 I don’t follow MinGW closely, but as I understand it, the mingw.org project is moribund. The 2013 release date suggests you’re using mingw.org, but the GCC 5.3.0 spec suggests MinGW-W64, a fork of MinGW that is actively maintained. If you mix tool chains, you will of course have problems. If you have Cygwin installed on the development machine, you must also keep its build tools segregated from MinGW’s. I used this method, back when I still needed MinGW: https://www.cygwin.com/ml/cygwin/2008-05/msg00092.html > make -f win/Makefile.mingw That suggests Cygwin make, since MinGW called its make(1) tool mingw32-make, on purpose in order to avoid conflicts with Cygwin make, since the two implementations differ in many ways, the biggest of which is that Cygwin’s GNU make build uses $SHELL to interpret commands by default, while MinGW’s uses cmd.exe. > gcc -Wall -Os -Lsrc/../compat/zlib -Isrc/../compat/zlib > -DBROKEN_MINGW_CMDLINE=1 -c -o src/../compat/zlib/match.o -DASMV > src/../compat/zlib/contrib/asm686/match > .S > match.S: Assembler messages: > match.S:94: Error: invalid instruction suffix for `push’ That’s characteristic of trying to mix 32-bit and 64-bit code. Given the path in the error message, I assume the source file is for IA-32, so if you’re using a 64-bit toolchain, there’s your problem. ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users