Closed Bug 973385 Opened 7 years ago Closed 7 years ago

Instantbird doesn't build on Linux

Categories

(Instantbird :: Other, defect)

x86_64
Linux
defect
Not set
blocker

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: benediktp, Assigned: florian)

Details

Attachments

(1 file, 1 obsolete file)

Building on Linux currently fails with error:

"Makefile:239: *** target file `instantbird' has both : and :: entries.  Stop."

It's suspected that the problem is around here:
http://mxr.mozilla.org/comm-central/source/im/app/Makefile.in#231
Flo suggested that bug 668869 needed porting, but 
15:07:04 - flo-retina: […] it may actually be easier to compare the current mail/app/Makefile.in and mail/app/nsMailApp.cpp files with the equivalents in im/
15:07:09 - flo-retina: and just merge/sync them.
Attached patch WIP (obsolete) — Splinter Review
WIP mostly because this is tested only on Linux for now.
Assignee: nobody → florian
Attached patch Patch v2Splinter Review
Attachment #8377738 - Attachment is obsolete: true
Attachment #8377860 - Flags: review?(clokep)
Comment on attachment 8377860 [details] [diff] [review]
Patch v2

Review of attachment 8377860 [details] [diff] [review]:
-----------------------------------------------------------------

rs=me, I'd like to ensure this works on Windows before we commit it, but overall it looks OK.

Also, |diff -U 8 {mail,im}/app/Makefile.in|: http://pastebin.instantbird.com/598486
Attachment #8377860 - Flags: review?(clokep) → review+
https://hg.mozilla.org/comm-central/rev/a77b26fe09b5
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → 1.6
diff --git a/im/app/nsMain.cpp b/im/app/nsMain.cpp

>  #if defined(XP_WIN) && !MOZ_WINCONSOLE
> -  PRUnichar msg[2048];
> +  char16_t msg[2048];
>    _vsnwprintf(msg, sizeof(msg)/sizeof(msg[0]), NS_ConvertUTF8toUTF16(fmt).get(), ap);
>    MessageBoxW(NULL, msg, L"XULRunner", MB_OK | MB_ICONERROR);
>  #else
>    vfprintf(stderr, fmt, ap);

Bug 762310 - Clean up `Output()` function in nsBrowserApp.cpp on Windows
Bug 791238 - Clean up Output() function in nsSuiteApp.cpp

> +  // GetProcessIoCounters().ReadOperationCount seems to have little to
> +  // do with actual read operations. It reports 0 or 1 at this stage
> +  // in the program. Luckily 1 coincides with when prefetch is
> +  // enabled. If Windows prefetch didn't happen we can do our own
> +  // faster dll preloading.
> +  IO_COUNTERS ioCounters;
> +  gotCounters = GetProcessIoCounters(GetCurrentProcess(), &ioCounters);
> +  if (gotCounters && !ioCounters.ReadOperationCount)

Removed in Bug 770911 - Remove all prefetch clearing code.

Also see: Bug 932100 - Set up DLL blocklist before LoadAppInitDlls
Bug 932100 - Part 1: Remove load-time dependency on user32
https://hg.mozilla.org/mozilla-central/rev/49671f1df4da
Bug 932100 - Part 2: Move DLL blocklist code to mozglue
https://hg.mozilla.org/mozilla-central/rev/33c8facd0468
(In reply to Philip Chee from comment #6)
> diff --git a/im/app/nsMain.cpp b/im/app/nsMain.cpp

I updated this file by simply copying nsMailApp.cpp over our current file. I think in the future we would like to keep these files in sync (I even considered removing nsMain.cpp and building the file from ../../mail/app, but I don't want to impose on people hacking Thunderbird the burden of wondering if the changes they make there will work for Instantbird).

> >  #if defined(XP_WIN) && !MOZ_WINCONSOLE
> > -  PRUnichar msg[2048];
> > +  char16_t msg[2048];
> >    _vsnwprintf(msg, sizeof(msg)/sizeof(msg[0]), NS_ConvertUTF8toUTF16(fmt).get(), ap);
> >    MessageBoxW(NULL, msg, L"XULRunner", MB_OK | MB_ICONERROR);
> >  #else
> >    vfprintf(stderr, fmt, ap);
> 
> Bug 762310 - Clean up `Output()` function in nsBrowserApp.cpp on Windows
> Bug 791238 - Clean up Output() function in nsSuiteApp.cpp

The Thunderbird bug for this is bug 778683, and I just attached there a patch for both mail/ and im/.

> > +  // GetProcessIoCounters().ReadOperationCount seems to have little to
> > +  // do with actual read operations. It reports 0 or 1 at this stage
> > +  // in the program. Luckily 1 coincides with when prefetch is
> > +  // enabled. If Windows prefetch didn't happen we can do our own
> > +  // faster dll preloading.
> > +  IO_COUNTERS ioCounters;
> > +  gotCounters = GetProcessIoCounters(GetCurrentProcess(), &ioCounters);
> > +  if (gotCounters && !ioCounters.ReadOperationCount)
> 
> Removed in Bug 770911 - Remove all prefetch clearing code.
> 
> Also see: Bug 932100 - Set up DLL blocklist before LoadAppInitDlls
> Bug 932100 - Part 1: Remove load-time dependency on user32
> https://hg.mozilla.org/mozilla-central/rev/49671f1df4da
> Bug 932100 - Part 2: Move DLL blocklist code to mozglue
> https://hg.mozilla.org/mozilla-central/rev/33c8facd0468

DLL blocklist isn't currently enabled for Instantbird (but we should consider it; it seems easier now that the code is in c-c), so the impact of this last one is currently limited for us.

Good points anyway, I'll keep these in mind and look at them again once bug 778683 is resolved. Thanks for the heads up!
You need to log in before you can comment on or make changes to this bug.