Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#9205 closed enhancement (fixed)

firefox-53.0.2

Reported by: bdubbs@… Owned by: blfs-book@…
Priority: normal Milestone: 8.1
Component: BOOK Version: SVN
Severity: normal Keywords:
Cc:

Description

New point version.

Change History (13)

comment:1 by ken@…, 7 years ago

From the release notes:

Fixed

Make form validation errors and date picker panel visible to the user (Bug 1341190)

Changed

The non-standard showDialog argument to window.find is now ignored (Bug 1348409)

The security fix is for CVE-2017-5031 in libGLES, which is only in use on Windows. Other operating systems are not affected.

comment:2 by bdubbs@…, 7 years ago

Ken, I'm building this now. The sed in the book for _EVENT_SIZEOF appears to be unneeded in this version.

Do you wnat me to update the book?

comment:3 by ken@…, 7 years ago

For updating the version, I don't mind - I have not taken this because I do not regard it as urgent.

But for the libevent sed, I am VERY surprised - I've just downloaded 53.0.2 and looked at ipc/chromium/src/base/message_pump_libevent.cc in that, current 53.0, and previous 52.0.2. AFAICS they are all the same, and I was under the impression we stil needed that sed in 52.0.

ken@plexi /tmp $ls -l firefox-5*/ipc/chromium/src/base/message_pump_libevent.cc
-rw-r--r-- 1 ken users 13161 Feb 27 16:10 firefox-52.0.2/ipc/chromium/src/base/message_pump_libevent.cc
-rw-r--r-- 1 ken users 13161 Feb 27 16:10 firefox-53.0.2/ipc/chromium/src/base/message_pump_libevent.cc
-rw-r--r-- 1 ken users 13161 Feb 27 16:10 firefox-53.0/ipc/chromium/src/base/message_pump_libevent.cc

So, I copied the unaltered file to .orig and ran the sed, then diffed it:

ken@plexi /tmp/firefox-53.0.2 $diff -u ipc/chromium/src/base/message_pump_libevent.cc{.orig,} 
--- ipc/chromium/src/base/message_pump_libevent.cc.orig	2017-05-10 00:41:10.249944759 +0100
+++ ipc/chromium/src/base/message_pump_libevent.cc	2017-05-10 00:41:37.678748931 +0100
@@ -20,26 +20,26 @@
 #include "event.h"
 #include "mozilla/UniquePtr.h"
 
-// This macro checks that the _EVENT_SIZEOF_* constants defined in
+// This macro checks that the EVENT__SIZEOF_* constants defined in
 // ipc/chromiume/src/third_party/<platform>/event2/event-config.h are correct.
-#if defined(_EVENT_SIZEOF_SHORT)
-#define CHECK_EVENT_SIZEOF(TYPE, type) \
-    static_assert(_EVENT_SIZEOF_##TYPE == sizeof(type), \
-    "bad _EVENT_SIZEOF_"#TYPE);
+#if defined(EVENT__SIZEOF_SHORT)
+#define CHECKEVENT__SIZEOF(TYPE, type) \
+    static_assert(EVENT__SIZEOF_##TYPE == sizeof(type), \
+    "bad EVENT__SIZEOF_"#TYPE);
 #elif defined(EVENT__SIZEOF_SHORT)
-#define CHECK_EVENT_SIZEOF(TYPE, type) \
+#define CHECKEVENT__SIZEOF(TYPE, type) \
     static_assert(EVENT__SIZEOF_##TYPE == sizeof(type), \
     "bad EVENT__SIZEOF_"#TYPE);
 #else
 #error Cannot find libevent type sizes
 #endif
 
-CHECK_EVENT_SIZEOF(LONG,      long);
-CHECK_EVENT_SIZEOF(LONG_LONG, long long);
-CHECK_EVENT_SIZEOF(PTHREAD_T, pthread_t);
-CHECK_EVENT_SIZEOF(SHORT,     short);
-CHECK_EVENT_SIZEOF(SIZE_T,    size_t);
-CHECK_EVENT_SIZEOF(VOID_P,    void*);
+CHECKEVENT__SIZEOF(LONG,      long);
+CHECKEVENT__SIZEOF(LONG_LONG, long long);
+CHECKEVENT__SIZEOF(PTHREAD_T, pthread_t);
+CHECKEVENT__SIZEOF(SHORT,     short);
+CHECKEVENT__SIZEOF(SIZE_T,    size_t);
+CHECKEVENT__SIZEOF(VOID_P,    void*);
 
 // Lifecycle of struct event
 // Libevent uses two main data structures:
ken@plexi /tmp/firefox-53.0.2 $diff -u ipc/chromium/src/base/message_pump_libevent.cc{.orig,} >diff
ken@plexi /tmp/firefox-53.0.2 $view diff
ken@plexi /tmp/firefox-53.0.2 $diff -u ipc/chromium/src/base/message_pump_libevent.cc{.orig,} 
--- ipc/chromium/src/base/message_pump_libevent.cc.orig	2017-05-10 00:41:10.249944759 +0100
+++ ipc/chromium/src/base/message_pump_libevent.cc	2017-05-10 00:41:37.678748931 +0100
@@ -20,26 +20,26 @@
 #include "event.h"
 #include "mozilla/UniquePtr.h"
 
-// This macro checks that the _EVENT_SIZEOF_* constants defined in
+// This macro checks that the EVENT__SIZEOF_* constants defined in
 // ipc/chromiume/src/third_party/<platform>/event2/event-config.h are correct.
-#if defined(_EVENT_SIZEOF_SHORT)
-#define CHECK_EVENT_SIZEOF(TYPE, type) \
-    static_assert(_EVENT_SIZEOF_##TYPE == sizeof(type), \
-    "bad _EVENT_SIZEOF_"#TYPE);
+#if defined(EVENT__SIZEOF_SHORT)
+#define CHECKEVENT__SIZEOF(TYPE, type) \
+    static_assert(EVENT__SIZEOF_##TYPE == sizeof(type), \
+    "bad EVENT__SIZEOF_"#TYPE);
 #elif defined(EVENT__SIZEOF_SHORT)
-#define CHECK_EVENT_SIZEOF(TYPE, type) \
+#define CHECKEVENT__SIZEOF(TYPE, type) \
     static_assert(EVENT__SIZEOF_##TYPE == sizeof(type), \
     "bad EVENT__SIZEOF_"#TYPE);
 #else
 #error Cannot find libevent type sizes
 #endif
 
-CHECK_EVENT_SIZEOF(LONG,      long);
-CHECK_EVENT_SIZEOF(LONG_LONG, long long);
-CHECK_EVENT_SIZEOF(PTHREAD_T, pthread_t);
-CHECK_EVENT_SIZEOF(SHORT,     short);
-CHECK_EVENT_SIZEOF(SIZE_T,    size_t);
-CHECK_EVENT_SIZEOF(VOID_P,    void*);
+CHECKEVENT__SIZEOF(LONG,      long);
+CHECKEVENT__SIZEOF(LONG_LONG, long long);
+CHECKEVENT__SIZEOF(PTHREAD_T, pthread_t);
+CHECKEVENT__SIZEOF(SHORT,     short);
+CHECKEVENT__SIZEOF(SIZE_T,    size_t);
+CHECKEVENT__SIZEOF(VOID_P,    void*);
 
 // Lifecycle of struct event
 // Libevent uses two main data structures:

To me, that looks as if it is still relevant. And by default our mozconfig has

ac_add_options --with-system-libevent

unless the builder comments that out.

The definitio9ns are in /usr/include/event2/event-config.h and I *assume* that the CHECK part of the firefox file are an instruction to its configury to check for what follows. I'm running 53.0 at the moment, and libxul.so pulls in libevent (from 2.1.8) :

ken@plexi ~ $ldd /usr/lib/firefox-53.0/libxul.so | grep event
	libevent-2.1.so.6 => /usr/lib/libevent-2.1.so.6 (0x00007fcd73053000)

comment:4 by bdubbs@…, 7 years ago

I've run into several false starts, so one more won't hurt. (well maybe it will) I am using -with-system-libevent so it will fail again if the sed is still needed.

I'm doing this with gcc7.

I also ran into a problem with --enable-default-toolkit=cairo-gtk2 It does not seem to be supported any more and we will need to remove it from the page (and the reference in the dependencies section).

comment:5 by ken@…, 7 years ago

Yeah, it is now much harder to try to work out what changed in the options. It doesn't surprise me that gtk3 is now required, and after reinstating the "and gtk2" words because it was still needed in whatever we had in 8.0 (51, I think), it looks as if gtk+-2 has probably gone (not referenced in libmozgtk), so that too could be removed again.

BUT - the configure script DOES still check for MOZ_GTK2_CFLAGS and the associated libs, so perhaps it does still need it. Configury in Python, coupled with rust, is inscrutable.

comment:6 by bdubbs@…, 7 years ago

Well the build completed successfully without the sed, but the program is completely unsatisfactory.

  1. The url bar does not show up. I can't find the widget to type one in.

2, The forward/back buttons are invisible. I found them by guessing. This may be due to not having enough icons loaded.

  1. I can't get any reaction to the menu button. Local or via ssh.
  1. When I use a bookmark to go to any https address from a bookmark, the system says the site (e.g. mozilla.org) "Your connection is not secure" and refuses to load the page.
  1. The thumb for scrolling pages is invisible (probably a gtk3 format issue).
  1. GLib-GIO-Message: Using the 'memory' GSettings backend. Your settings will not be saved or shared with other applications. I'll note that I do not have dconf installed, but I do have gsettings-desktop-schemas and gconf. Nothing I've installed so far has mentioned dconf.

comment:7 by ken@…, 7 years ago

The awesome bar (for the URL input) should be between the back button (which you guessed the location of) and the search bar which is next to the star to bookmark this page. Possibly a gtk3 settings issue, as is the scrollbar - there is no thumb, but on a long page you will get a short bar in the slider.

There is no forward button until you have gone forward in a tab!

In my ~/.config/gtk-3.0/settings.ini I have the following (the font name was probably set when testing kde, I do NOT recommend changing that from whatever you have already used :

[Settings]
gtk-font-name=Noto Sans 10
gtk-theme-name=Adwaita
gtk-icon-theme-name=Adwaita
gtk-fallback-icon-theme=gnome
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-menu-images=1
gtk-button-images=1

For the menu button, no idea.

The https issue sounds like broken certificates, maybe strace would be useful.

The memory GSettings backend message appears in many gtk applications if they are run from a term, and is benign.

I took another look at fedora - they appear to have renamed patch(es), but their http://pkgs.fedoraproject.org/cgit/rpms/firefox.git/plain/firefox-build-prbool.patch might be related to the certs problem. Their specfile also plays with the FLAGS (they force -O2), see https://bugzilla.mozilla.org/show_bug.cgi?id=1342344

comment:8 by bdubbs@…, 7 years ago

This is mostly fixed at revision 18720.

A relatively major change is to remove the option to use gtk2 (although it is still linked in). I do not know if it will build if gtk2 is missing completely.

Also had to change to --enable-optimize="-O2". Using the default -O3 and gcc7 breaks FF fairly badly.

Leaving the ticket open so we add

ac_add_options --with-google-api-keyfile=${DIR}/google-api-key
ac_add_options --with-mozilla-api-keyfile=${DIR}/mozilla-api-key

in reply to:  8 comment:9 by ken@…, 7 years ago

Replying to bdubbs@…:

This is mostly fixed at revision 18720.

A relatively major change is to remove the option to use gtk2 (although it is still linked in). I do not know if it will build if gtk2 is missing completely.

Also had to change to --enable-optimize="-O2". Using the default -O3 and gcc7 breaks FF fairly badly.

I had thought the default was -Os, but I agree that your change to force -O2 does the job (tested on 53.0, I had the same lack of the awesome bar and ineffective menu, also scrolling on a local copy of the firefox page in the book was horribly broken - did not test https but it is working now).

Leaving the ticket open so we add

ac_add_options --with-google-api-keyfile=${DIR}/google-api-key
ac_add_options --with-mozilla-api-keyfile=${DIR}/mozilla-api-key

I don't understand that part. Why ? What does it fix ?

I see you didn't change the libnotify sed: at the moment I don't have the interest to search back to determine *why* that was added.

comment:10 by bdubbs@…, 7 years ago

Now I'm not sure the keyfiles are needed. I was just following the lead of Arch: https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/firefox

libnotify sed? Do you mean the message_pump_libevent.cc sed? I did remove that from my build script, but forgot to remove it from the book. I'll do that now.

comment:11 by Douglas R. Reno, 7 years ago

Resolution: fixed
Status: newclosed

I do not think that the keyfiles are needed... for now.

Closing per Bruce's request.

comment:12 by bdubbs@…, 7 years ago

Milestone: 8.1m8.1

Milestone renamed

comment:13 by bdubbs@…, 7 years ago

Milestone: m8.18.1

Milestone renamed

Note: See TracTickets for help on using tickets.