Re: [fossil-users] windows build assistance

2016-09-22 Thread Ross Berteig

On 9/22/2016 5:15 AM, Warren Young wrote:

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.


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

2016-09-22 Thread Warren Young
On Sep 22, 2016, at 10:15 AM, jungle Boogie  wrote:
> 
> 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

2016-09-22 Thread jungle Boogie
Hi Warren,
On 22 September 2016 at 05:15, Warren Young  wrote:
> 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

2016-09-22 Thread Johan Kuuse
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

2016-09-22 Thread Warren Young
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