Skip to content

Commit

Permalink
www/netsurf: Fix preferences dialog bug and fix build warnings
Browse files Browse the repository at this point in the history
PR:		254702
Submitted by:	waitman AT waitman DOT net
  • Loading branch information
neelchauhan committed Apr 6, 2021
1 parent 0bea3f1 commit c7d7125
Show file tree
Hide file tree
Showing 8 changed files with 218 additions and 23 deletions.
39 changes: 19 additions & 20 deletions www/netsurf/Makefile
Expand Up @@ -29,14 +29,15 @@ LIB_DEPENDS= libcurl.so:ftp/curl \
libwapcaplet.so:textproc/libwapcaplet \
libhubbub.so:www/libhubbub \
libexpat.so:textproc/expat2 \
libnspsl.so:dns/libnspsl
libnspsl.so:dns/libnspsl \
libwebp.so:graphics/webp
RUN_DEPENDS= duk:lang/duktape \
${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss

USES= bison desktop-file-utils gettext-runtime gmake gnome iconv jpeg \
localbase pkgconfig shebangfix ssl
USES= bison desktop-file-utils gmake gnome jpeg \
localbase pkgconfig shebangfix ssl iconv:translit
ALL_TARGET= #empty
LDFLAGS+= -L${OPENSSLLIB} -lssl -lcrypto ${ICONV_LIB}
LDFLAGS+= -L${OPENSSLLIB} -lssl -lcrypto
CFLAGS+= -I${OPENSSLINC}
MAKE_ARGS= HOST_CC="${CC}" CC="${CC}" CCOPT="" HOST="${OPSYS}" \
TARGET="gtk3" \
Expand All @@ -47,37 +48,35 @@ USE_GNOME= glib20 gtk30 cairo librsvg2
WRKSRC= ${WRKDIR}/${DISTNAME:S/-src//}

SHEBANG_FILES= utils/split-messages.pl
perl_CMD= ${SETENV} perl
perl_CMD= ${PERL}

OPTIONS_DEFINE= GSTREAMER
OPTIONS_EXCLUDE= GSTREAMER
GSTREAMER_USE= GSTREAMER=yes, good
NLS_USES= gettext
NLS_CONFIGURE_ENABLE= nls

post-patch:
@${REINPLACE_CMD} '/CFLAGS/d' \
${WRKSRC}//Makefile.defaults
@${REINPLACE_CMD} 's| -O2||' \
${WRKSRC}/frontends/gtk/Makefile.defaults
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|' \
${WRKSRC}/frontends/gtk/gui.c
@${CP} ${FILESDIR}/buildui.pl ${WRKSRC}/utils/

do-configure:
@${CP} ${FILESDIR}/Makefile.config ${WRKSRC}
.if empty(ICONV_LIB)
@${REINPLACE_CMD} '/NETSURF_USE_LIBICONV_PLUG/ s|NO|YES|' \
${WRKSRC}/Makefile.config
.endif

do-configure-GSTREAMER-on:
@${REINPLACE_CMD} '/NETSURF_USE_VIDEO/ s|NO|YES|' \
${WRKSRC}/Makefile.config

post-install:
cd ${STAGEDIR}${PREFIX}/bin && ${LN} -sf netsurf-gtk3 \
netsurf-gtk
.for d in applications pixmaps
${MKDIR} ${STAGEDIR}${PREFIX}/share/${d}
.endfor
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/deoptions.gtk3.ui \
${STAGEDIR}${PREFIX}/share/netsurf
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/enoptions.gtk3.ui \
${STAGEDIR}${PREFIX}/share/netsurf
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/froptions.gtk3.ui \
${STAGEDIR}${PREFIX}/share/netsurf
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/itoptions.gtk3.ui \
${STAGEDIR}${PREFIX}/share/netsurf
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/nloptions.gtk3.ui \
${STAGEDIR}${PREFIX}/share/netsurf
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/netsurf-gtk.desktop \
${STAGEDIR}${PREFIX}/share/applications
${INSTALL_DATA} ${WRKSRC}/frontends/gtk/res/netsurf.xpm \
Expand Down
2 changes: 1 addition & 1 deletion www/netsurf/files/Makefile.config
@@ -1,4 +1,4 @@
NETSURF_USE_LIBICONV_PLUG=NO
NETSURF_USE_LIBICONV_PLUG=YES
NETSURF_USE_NSSVG=NO
NETSURF_USE_RSVG=YES
NETSURF_USE_VIDEO=NO
Expand Down
82 changes: 82 additions & 0 deletions www/netsurf/files/buildui.pl
@@ -0,0 +1,82 @@
#!
#
# Create ui files for each language listed in FatMessages

my $inputfn = $ARGV[0]; # path to FatMessages
my $templatefn = $ARGV[1]; # path to UI Template
my $output = $ARGV[2]; # output path
my $stub = $ARGV[3]; # filename stub. like options.gtk3.ui will become enoptions.gtk3.ui

if (length($stub)<3) {
print "invalid stub.\n";
exit;
}

my $template;
my %langs = {'en'=>1};
my %trans;
$trans{'en'}{'foo'}='bar';

open(my $fh, '<', $templatefn) or die "cannot open template file $templatefn";
{
local $/;
$template = <$fh>;
}
close($fh);

$template =~ s/translatable="yes"/translatable="no"/g;

open(my $input, '<', $inputfn) or die "cannot open FatMessages file $inputfn";

while (<$input>)
{
# skip comment and empty lines
/^#/ && next;
/^\s*$/ && next;

# only parsing things that look like message lines:
if( /^([a-z]{2}).([^.]+).([^:]+):(.*)/ )
{
my( $lang, $plat, $key, $val ) = ( $1, $2, $3, $4 );
if ($plat == 'gtk')
{
$val =~ s|<.+?>||g; #remove HTML
$langs{$lang}=1;
$trans{$lang}{$key}=$val;
}
}

}

# load up langs hash with copy of the template for each lang

foreach $key (keys %langs)
{
if (length($key)==2)
{
$langs{$key} = $template
}
}

# iterate through each and key replace with translated text

foreach my $tran (keys %trans)
{
foreach my $key (keys %{$trans{$tran}})
{
$langs{$tran} =~ s/\>$key\</\>$trans{$tran}{$key}\</g;
}
}

# save the ui file for each language

foreach $key (keys %langs)
{
if (length($key)==2)
{
open (OFN, '>', $output.'/'.$key.$stub) or die "cannot open output file ".$output.'/'.$key.$stub;
print OFN $langs{$key};
close (OFN);
}
}

50 changes: 49 additions & 1 deletion www/netsurf/files/patch-Makefile
@@ -1,10 +1,58 @@
--- Makefile.orig 2020-05-24 20:55:29 UTC
+++ Makefile
@@ -547,7 +547,6 @@ ifeq ($(HOST),mint)
@@ -484,16 +484,6 @@ ifneq ($(CC_MAJOR),2)
COMMON_WARNFLAGS += -Wno-unused-parameter
endif

-# deal with lots of unwanted warnings from javascript
-ifeq ($(call cc_ver_ge,4,6),1)
- COMMON_WARNFLAGS += -Wno-unused-but-set-variable
-endif
-
-# Implicit fallthrough warnings suppressed by comment
-ifeq ($(call cc_ver_ge,7,1),1)
- COMMON_WARNFLAGS += -Wimplicit-fallthrough=3
-endif
-
# deal with chaging warning flags for different platforms
ifeq ($(HOST),OpenBSD)
# OpenBSD headers are not compatible with redundant declaration warning
@@ -547,7 +537,6 @@ ifeq ($(HOST),mint)
else
$(eval $(call pkg_config_find_and_add_enabled,CURL,libcurl,Curl))
endif
-$(eval $(call pkg_config_find_and_add_enabled,OPENSSL,openssl,OpenSSL))

$(eval $(call pkg_config_find_and_add_enabled,UTF8PROC,libutf8proc,utf8))
$(eval $(call pkg_config_find_and_add_enabled,WEBP,libwebp,WEBP))
@@ -680,14 +669,21 @@ $$(MESSAGES_TARGET)/$(1)/Messages: resources/FatMessag
$$(Q)$$(SPLIT_MESSAGES) -l $(1) -p $$(MESSAGES_FILTER) -f messages -o $$@ -z $$<

CLEAN_MESSAGES += $$(MESSAGES_TARGET)/$(1)/Messages
+CLEAN_MESSAGES += $$(MESSAGES_TARGET)/$(1)options.gtk3.ui
MESSAGES += $$(MESSAGES_TARGET)/$(1)/Messages

endef

+buildui:
+ @echo "BUILDUI: options ui for each language in resources/FatMessages"
+ @$(PERL) utils/buildui.pl resources/FatMessages frontends/gtk/res/options.gtk3.ui $(MESSAGES_TARGET) options.gtk3.ui
+
# generate the message file rules
$(eval $(foreach LANG,$(MESSAGES_LANGUAGES), \
$(call split_messages,$(LANG))))

+MESSAGES += buildui
+
clean-messages:
$(VQ)echo " CLEAN: $(CLEAN_MESSAGES)"
$(Q)$(RM) $(CLEAN_MESSAGES)
@@ -710,7 +706,7 @@ OBJECTS := $(sort $(addprefix $(OBJROOT)/,$(subst /,_,
# Include directory flags
IFLAGS = $(addprefix -I,$(INCLUDE_DIRS))

-$(EXETARGET): $(OBJECTS) $(RESOURCES) $(MESSAGES)
+$(EXETARGET): $(OBJECTS) $(RESOURCES) $(MESSAGES)
$(VQ)echo " LINK: $(EXETARGET)"
ifneq ($(TARGET)$(SUBTARGET),riscos-elf)
$(Q)$(CC) -o $(EXETARGET) $(OBJECTS) $(LDFLAGS)
8 changes: 7 additions & 1 deletion www/netsurf/files/patch-frontends_gtk_Makefile.defaults
@@ -1,4 +1,4 @@
--- frontends/gtk/Makefile.defaults.orig 2016-11-19 13:37:41 UTC
--- frontends/gtk/Makefile.defaults.orig 2020-05-24 20:55:29 UTC
+++ frontends/gtk/Makefile.defaults
@@ -4,7 +4,7 @@

Expand All @@ -9,3 +9,9 @@

# Where to install the netsurf binary
NETSURF_GTK_BIN := $(PREFIX)/bin/
@@ -39,4 +39,4 @@ NETSURF_FS_BACKING_STORE := YES
NETSURF_GTK_MAJOR ?= 2

# Optimisation levels
-CFLAGS += -O2
+CFLAGS +=
33 changes: 33 additions & 0 deletions www/netsurf/files/patch-frontends_gtk_preferences.c
@@ -0,0 +1,33 @@
--- frontends/gtk/preferences.c.orig 2021-04-01 17:51:28 UTC
+++ frontends/gtk/preferences.c
@@ -962,11 +962,26 @@ GtkWidget* nsgtk_preferences(struct browser_window *bw
return GTK_WIDGET(priv->dialog);
}

- res = nsgtk_builder_new_from_resname("options", &preferences_builder);
- if (res != NSERROR_OK) {
- NSLOG(netsurf, INFO, "Preferences UI builder init failed");
- return NULL;
+ const char *client_lang;
+ char ui_lang[10] = "en";
+ client_lang = getenv("LANG");
+
+ if (strlen(client_lang)>1)
+ {
+ strncpy(ui_lang,client_lang,2);
}
+
+ strcat(ui_lang,"options");
+
+ res = nsgtk_builder_new_from_resname(ui_lang, &preferences_builder);
+ if (res != NSERROR_OK) {
+ //LANG not found, so fall back to english i guess
+ res = nsgtk_builder_new_from_resname("enoption", &preferences_builder);
+ }
+ if (res != NSERROR_OK) {
+ NSLOG(netsurf, INFO, "Preferences UI builder init failed");
+ return NULL;
+ }

priv->dialog = gtk_builder_get_object(preferences_builder,
"dialogPreferences");
22 changes: 22 additions & 0 deletions www/netsurf/files/patch-frontends_gtk_resources.c
@@ -0,0 +1,22 @@
--- frontends/gtk/resources.c.orig 2021-04-01 19:00:43 UTC
+++ frontends/gtk/resources.c
@@ -82,6 +82,11 @@ static struct nsgtk_resource_s ui_resource[] = {
RES_ENTRY("globalhistory"),
RES_ENTRY("localhistory"),
RES_ENTRY("options"),
+ RES_ENTRY("deoptions"),
+ RES_ENTRY("enoptions"),
+ RES_ENTRY("froptions"),
+ RES_ENTRY("itoptions"),
+ RES_ENTRY("nloptions"),
RES_ENTRY("hotlist"),
RES_ENTRY("cookies"),
RES_ENTRY("viewdata"),
@@ -552,6 +557,7 @@ nsgtk_builder_new_from_resname(const char *resname, Gt
error->message);
g_error_free(error);
g_object_unref(G_OBJECT(new_builder));
+
return NSERROR_INIT_FAILED;
}
} else {
5 changes: 5 additions & 0 deletions www/netsurf/pkg-plist
Expand Up @@ -47,6 +47,11 @@ share/applications/netsurf-gtk.desktop
%%DATADIR%%/nl/licence.html
%%DATADIR%%/nl/welcome.html
%%DATADIR%%/options.gtk3.ui
%%DATADIR%%/deoptions.gtk3.ui
%%DATADIR%%/enoptions.gtk3.ui
%%DATADIR%%/froptions.gtk3.ui
%%DATADIR%%/itoptions.gtk3.ui
%%DATADIR%%/nloptions.gtk3.ui
%%DATADIR%%/pageinfo.gtk3.ui
%%DATADIR%%/password.gtk3.ui
%%DATADIR%%/quirks.css
Expand Down

0 comments on commit c7d7125

Please sign in to comment.