You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openoffice.apache.org by Patricia Shanahan <pa...@acm.org> on 2016/07/01 14:27:17 UTC

Re: Building on Windows

Could this patch also be modified to apply to 4.1.2? It may be the issue 
preventing me from doing Windows builds of that release.

On 2/10/2016 3:57 PM, Damjan Jovanovic wrote:
> icu supports building on Cygwin using Cygwin's make, but for some bizarre
> reason AOO builds it with MSVC's nmake using makefiles generated by a Perl
> script and even completely bypassing ./configure (makefile.mk has
> CONFIGURE_ACTION+= $(PERL) ..$/..$/..$/..$/..$/createmak.pl
> ..$/..$/..$/..$/..$/createmak.cfg .). It could not have been easy to set
> that up, nor does the nmake build parallelize at all, which is why icu
> wastes 5 minutes building while using only a single thread, so you have to
> wonder why it was done that way.
>
> Building with mingw or building on any other platform does use ./configure
> and GNU make instead, which explains why we only see this bug with MSVC.
>
> Anyway I think I've hacked icu into working. In allinone.sln I've made
> layoutex project depend on the i18n project containing icuin.lib, and the
> Perl script should convert that dependency into the makefiles it creates.
> So far icu has been rebuilt 10 times with this patch (attached), succeeding
> every time, so please test it and see if it works for you as well.
>
> Damjan
>
> On Tue, Feb 9, 2016 at 7:51 PM, Patricia Shanahan <pa...@acm.org> wrote:
>
>> I have already done some of this. The key difference between failing and
>> non-failing is whether layoutex is built early or later in the build. See
>> the attached files for sample build outputs.
>>
>> I believe layoutex has a dependency on icuin.lib that is not properly
>> declared in the makefile etc., allowing layoutex to be built too soon. If
>> so, the best fix would be to declare the dependency, but I don't know
>> enough about the dmake and configuration stuff to make that change without
>> some study first.
>>
>> Patricia
>>
>>
>> On 2/9/2016 9:40 AM, Damjan Jovanovic wrote:
>>
>>> The icu module has a complicated build with scripts generating
>>> makefiles...
>>>
>>> I am not sure what approach to even take debugging this, but some ideas
>>> might be:
>>> * make a copy of a main/icu[/wntmsci12.pro] directory that builds and a
>>> copy of one that doesn't, then diff the files to see what's different
>>> * compare build logs with it working and not working, to see what steps
>>> differ (eg. build order of some files might be different)
>>> * try and follow the makefile to understand the problem analytically; my
>>> first try didn't get me far
>>> * give up completely, and just hack it. Make a loop in build.pl that just
>>> keeps cleaning and rebuilding the module. If it builds 50% of the time,
>>> with 10 retries only 1 in 1024 builds will fail, with 20 retries only 1 in
>>> 2^20 will fail, etc. Something like this might already have been tried in
>>> the past, as build.pl contains the following code which is only run on
>>> Windows:
>>>
>>> sub give_second_chance {
>>>      my $pid = shift;
>>>      # A malicious hack for mysterious windows problems - try 2 times
>>>      # to run dmake in the same directory if errors occurs
>>>      my $child_nick = $processes_hash{$pid};
>>>      $running_children{$folders_hashes{$child_nick}}--;
>>>      delete $processes_hash{$pid};
>>>      start_child($child_nick, $folders_hashes{$child_nick});
>>> };
>>>
>>>
>>> On Sun, Feb 7, 2016 at 1:42 AM, Patricia Shanahan <pa...@acm.org> wrote:
>>>
>>> My next step is to try to get rid of the intermittent failure of the icu
>>>> build. It seems to be the one thing standing between me a repeatable
>>>> unattended build. If you know anything about its cause, please let me
>>>> know.
>>>>
>>>> Here is a typical failure output:
>>>>
>>>> Generating Code...
>>>>          link.exe @C:\cygwin32\tmp\nm2E74.tmp
>>>>     Creating library .\..\..\lib\icule.lib and object
>>>> .\..\..\lib\icule.exp
>>>>          if exist ..\..\bin\icule40.dll.manifest mt.exe -manifest
>>>> ..\..\bin\icule40.dll.manifest -outputresource:..\..\bin\icule40.dll;2
>>>>          copy ".\LEFontInstance.h" ..\..\include\layout
>>>>          1 file(s) copied.
>>>>          copy ".\LEGlyphFilter.h" ..\..\include\layout
>>>>          1 file(s) copied.
>>>>          copy ".\LEGlyphStorage.h" ..\..\include\layout
>>>>          1 file(s) copied.
>>>>          copy ".\LEInsertionList.h" ..\..\include\layout
>>>>          1 file(s) copied.
>>>>          copy ".\LELanguages.h" ..\..\include\layout
>>>>          1 file(s) copied.
>>>>          copy ".\LEScripts.h" ..\..\include\layout
>>>>          1 file(s) copied.
>>>>          copy ".\LESwaps.h" ..\..\include\layout
>>>>          1 file(s) copied.
>>>>          copy ".\LETypes.h" ..\..\include\layout
>>>>          1 file(s) copied.
>>>>          copy ".\LayoutEngine.h" ..\..\include\layout
>>>>          1 file(s) copied.
>>>>          copy ".\loengine.h" ..\..\include\layout
>>>>          1 file(s) copied.
>>>>          cd "..\allinone"
>>>>          cd "C:\OpenOfficeDev\Trunk\main\icu\wntmsci12.pro
>>>> \misc\build\icu\source\allinone\..\layoutex"
>>>>          C:\PROGRA~2\MICROS~1.0\VC\bin\nmake.exe /                   /F
>>>> layoutex.mak EXCEPTIONSWITCH="-EHa -Zc:wchar_t-"
>>>>
>>>> Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
>>>> Copyright (C) Microsoft Corporation.  All rights reserved.
>>>>
>>>>          if not exist ".\Release/" mkdir ".\Release"
>>>>          rc.exe /l 0x409 /fo".\Release\layoutex.res" /i "..\common" /d
>>>> "NDEBUG" .\layoutex.rc
>>>> Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
>>>> Copyright (C) Microsoft Corporation.  All rights reserved.
>>>>
>>>> NMAKE : fatal error U1073: don't know how to make
>>>> '".\..\..\lib\icuin.lib"'
>>>> Stop.
>>>> NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~1.0\VC\bin\nmake.exe' :
>>>> return code '0x2'
>>>> Stop.
>>>> dmake:  Error code 2, while making './
>>>> wntmsci12.pro/misc/build/so_built_so_icu'
>>>>
>>>> 1 module(s):
>>>>          icu
>>>> need(s) to be rebuilt
>>>>
>>>> Reason(s):
>>>>
>>>> ERROR: error 65280 occurred while making
>>>> /cygdrive/c/OpenOfficeDev/Trunk/main/icu
>>>>
>>>> When you have fixed the errors in that module you can resume the build by
>>>> running:
>>>>
>>>>          build --all:icu
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscribe@openoffice.apache.org
>>>> For additional commands, e-mail: dev-help@openoffice.apache.org
>>>>
>>>>
>>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@openoffice.apache.org
>> For additional commands, e-mail: dev-help@openoffice.apache.org
>>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@openoffice.apache.org
> For additional commands, e-mail: dev-help@openoffice.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@openoffice.apache.org
For additional commands, e-mail: dev-help@openoffice.apache.org