View Single Post
Posts: 915 | Thanked: 3,209 times | Joined on Jan 2011 @ Germany
#3276
About two weeks ago I found out, that there is a new version 7 of the Midori webbrowser, which has even made it into Debian testing.
Since then I've been trying to backport it to Jessie for Easy Debian, and I finally made it, but it turned out to require quite some backporting. This means that it's not quite as straight-forward as just installing a .deb package and be done with it. So I recommend you to read this post carefully before installing Midori.

For those of you who still want to get started right way, here's an archive that includes the minimal set of packages required:

https://www12.zippyshare.com/v/1MX3Eec9/file.html
Code:
$ md5sum midori_install.tar
4c53872cbee58e573dfa268dc91a726c  midori_install.tar
It has the following content:
Code:
# find .
.
./install_midori.sh
./stretch
./stretch/wayland
./stretch/wayland/libwayland-cursor0_1.12.0-1+deb9u1_armhf.deb
./stretch/wayland/libwayland-client0_1.12.0-1+deb9u1_armhf.deb
./stretch/glib2.0
./stretch/glib2.0/libglib2.0-0_2.50.3-2_armhf.deb
./sulu
./sulu/pango1.0
./sulu/pango1.0/libpangoft2-1.0-0_1.40.5-1_armhf.deb
./sulu/pango1.0/libthai0_0.1.26-1_armhf.deb
./sulu/pango1.0/libpango-1.0-0_1.40.5-1_armhf.deb
./sulu/pango1.0/libpangocairo-1.0-0_1.40.5-1_armhf.deb
./sulu/midori
./sulu/midori/midori_7.0-2_armhf.deb
./sulu/gtk+3.0
./sulu/gtk+3.0/libgtk-3-common_3.22.11-1_all.deb
./sulu/gtk+3.0/libgtk-3-0_3.22.11-1_armhf.deb
./sulu/atk1.0
./sulu/atk1.0/libatk1.0-0_2.22.0-1_armhf.deb
./sulu/atk1.0/libatk1.0-data_2.22.0-1_all.deb
The stretch subdirectory contains dependencies of this Midori backport straight from Debian Stretch, which only have dependencies on packages in jessie or jessie-backports.
The sulu subdirectory contains packages that I backported from stretch and stretch-backports, which also only depend on packages in jessie or jessie-backports.
For clarity, the names of the subdirectories are the names of the respective debian source packages.
The install_midori.sh script installs the dependencies from jessie and jessie-backports and then installs the packages in this archive:
Code:
# cat install_midori.sh 
#!/bin/bash

apt-get install libjavascriptcoregtk-4.0-18 libpeas-1.0-0 libepoxy0 libgcr-ui-3-1 adwaita-icon-theme
apt-get install -t jessie-backports libwebkit2gtk-4.0-37
dpkg -i */*/*.deb
So, provided you already have midori 5 installed from jessie, and have jessie-backports in your sources.list, in theory you could just unpack the archive, cd into the midori_install directory and run the script to install midori.

HOWEVER, you might already have other packages installed, that depend on packages which are also built from the same source packages I backported. This will create a conflict because my packages, originating from stretch and stretch-backports, have higher version numbers than the ones from jessie on your system. This situation might also occur later, if you install further packages from Debian, so after installing this midori backport you should be very attentive when installing ANY new packages, because you'll technically be running a release mix.
Therefore, rather than executing this script blindly, I recommend you to use it as an instruction manual, and are especially careful when running the last dpkg line.

For example, you might encounter the following situation, when trying to install nautilus:
Code:
# apt-get install -s nautilus
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 nautilus : Depends: libgail-3-0 (>= 3.0.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
This is, because libgail-3-0 is built from the gtk+3.0 source package and depends on libgtk-3-0, which needs to have exactly the same version. apt however tries to install libgail-3-0 (3.14.5-1+deb8u1) from jessie, but you have already installed libgtk-3-0 (3.22.11-1) from my backports. So you'd need libgail-3-0 (3.22.11-1), which is not available in jessie.

In case you need additional packages (and in case you want to build packages based on mine) you'll find ALL the packages I backported (and needed for my backports) in this archive:

https://www69.zippyshare.com/v/ZSC2PFBQ/file.html
Code:
$ md5sum midori_build.tar 
94d68aad9352eae06be8b47c57388061  midori_build.tar
Content:
Code:
# find .
.
./atk1.0
./atk1.0/libatk1.0-dev_2.22.0-1_armhf.deb
./atk1.0/libatk1.0-data_2.22.0-1_all.deb
./atk1.0/gir1.2-atk-1.0_2.22.0-1_armhf.deb
./atk1.0/libatk1.0-0_2.22.0-1_armhf.deb
./atk1.0/libatk1.0-doc_2.22.0-1_all.deb
./atk1.0/libatk1.0-udeb_2.22.0-1_armhf.udeb
./_wayland-protocols
./_wayland-protocols/wayland-protocols_1.7-1_all.deb
./pygobject
./pygobject/python-gi-cairo_3.22.0-2_armhf.deb
./pygobject/python3-gi-dbg_3.22.0-2_armhf.deb
./pygobject/python3-gi-cairo_3.22.0-2_armhf.deb
./pygobject/python-gobject-dbg_3.22.0-2_all.deb
./pygobject/python-gi_3.22.0-2_armhf.deb
./pygobject/python3-gi_3.22.0-2_armhf.deb
./pygobject/python-gobject-dev_3.22.0-2_all.deb
./pygobject/python-gi-dbg_3.22.0-2_armhf.deb
./pygobject/python-gi-dev_3.22.0-2_armhf.deb
./pygobject/python-gobject_3.22.0-2_all.deb
./_autoreconf
./_autoreconf/dh-autoreconf_17~bpo9+1_all.deb
./_wayland
./_wayland/libwayland-client0_1.12.0-1+deb9u1_armhf.deb
./_wayland/libwayland-bin_1.12.0-1+deb9u1_armhf.deb
./_wayland/libwayland-server0_1.12.0-1+deb9u1_armhf.deb
./_wayland/libwayland-dev_1.12.0-1+deb9u1_armhf.deb
./_wayland/libwayland-cursor0_1.12.0-1+deb9u1_armhf.deb
./gtk+3.0
./gtk+3.0/libgtk-3-dev_3.22.11-1_armhf.deb
./gtk+3.0/libgtk-3-0-udeb_3.22.11-1_armhf.udeb
./gtk+3.0/libgail-3-dev_3.22.11-1_armhf.deb
./gtk+3.0/gir1.2-gtk-3.0_3.22.11-1_armhf.deb
./gtk+3.0/libgtk-3-0_3.22.11-1_armhf.deb
./gtk+3.0/libgtk-3-common_3.22.11-1_all.deb
./gtk+3.0/libgail-3-doc_3.22.11-1_all.deb
./gtk+3.0/libgail-3-0_3.22.11-1_armhf.deb
./gtk+3.0/libgtk-3-bin_3.22.11-1_armhf.deb
./gtk+3.0/gtk-3-examples_3.22.11-1_armhf.deb
./gtk+3.0/gtk-update-icon-cache_3.22.11-1_armhf.deb
./gtk+3.0/libgtk-3-doc_3.22.11-1_all.deb
./libuv1
./libuv1/libuv1-dev_1.18.0-3~bpo9+1_armhf.deb
./libuv1/libuv1_1.18.0-3~bpo9+1_armhf.deb
./midori
./midori/midori-dbgsym_7.0-2_armhf.deb
./midori/midori_7.0-2_armhf.deb
./_glib2.0
./_glib2.0/libglib2.0-dev_2.50.3-2_armhf.deb
./_glib2.0/libglib2.0-0_2.50.3-2_armhf.deb
./_glib2.0/libglib2.0-bin_2.50.3-2_armhf.deb
./_glib2.0/libglib2.0-data_2.50.3-2_all.deb
./_libthai
./_libthai/libthai-data_0.1.26-1_all.deb
./_libthai/libthai0_0.1.26-1_armhf.deb
./debhelper
./debhelper/dh-systemd_12~bpo9+1_all.deb
./debhelper/debhelper_12~bpo9+1_all.deb
./gobject-introspection
./gobject-introspection/libgirepository1.0-doc_1.50.0-1_all.deb
./gobject-introspection/libgirepository-1.0-1_1.50.0-1_armhf.deb
./gobject-introspection/gir1.2-glib-2.0_1.50.0-1_armhf.deb
./gobject-introspection/gobject-introspection_1.50.0-1_armhf.deb
./gobject-introspection/libgirepository1.0-dev_1.50.0-1_armhf.deb
./gobject-introspection/gir1.2-freedesktop_1.50.0-1_armhf.deb
./cmake
./cmake/cmake-qt-gui_3.13.2-1~bpo9+1_armhf.deb
./cmake/cmake-curses-gui_3.13.2-1~bpo9+1_armhf.deb
./cmake/cmake-data_3.13.2-1~bpo9+1_all.deb
./cmake/cmake_3.13.2-1~bpo9+1_armhf.deb
./cmake/cmake-doc_3.13.2-1~bpo9+1_all.deb
./pango1.0
./pango1.0/libpangoxft-1.0-0_1.40.5-1_armhf.deb
./pango1.0/libpangocairo-1.0-0_1.40.5-1_armhf.deb
./pango1.0/libpango1.0-0_1.40.5-1_armhf.deb
./pango1.0/pango1.0-tests_1.40.5-1_armhf.deb
./pango1.0/libpango1.0-doc_1.40.5-1_all.deb
./pango1.0/libpango1.0-udeb_1.40.5-1_armhf.udeb
./pango1.0/libpango-1.0-0_1.40.5-1_armhf.deb
./pango1.0/libpangoft2-1.0-0_1.40.5-1_armhf.deb
./pango1.0/gir1.2-pango-1.0_1.40.5-1_armhf.deb
./pango1.0/libpango1.0-dev_1.40.5-1_armhf.deb
./vala
./vala/libvala-0.34-dev_0.34.7-1_armhf.deb
./vala/valac_0.34.7-1_armhf.deb
./vala/valac-0.34-vapi_0.34.7-1_all.deb
./vala/libvala-0.34-0_0.34.7-1_armhf.deb
./vala/vala-0.34-doc_0.34.7-1_all.deb
Again, the subdirectories are the names of the respective source packages. Subdirectories starting with an underscore come directly from stretch or stretch-backports. Subdirectories without an underscore were backported by me.
As you can see, in in the gtk+3.0 subdirectory there is libgail-3-0_3.22.11-1_armhf.deb, which you would need in the afore-mentioned nautilus example.

In case you want to reproduce my backport, here are some hints:

dependency tree:
Code:
+midori 7 (sid)
\*cmake 3.13 (stretch-backports)
 \+libuv1 1.18 (stretch-backports)
\*debhelper 12 (stretch-backports)
 \_autoreconf 17 (stretch-backports)
\+libgtk-3-0 3.22 (stretch)
 \+atk1.0 2.22 (stretch)
 \_glib2.0 2.50 (stretch)
 \+pango1.0 1.40 (stretch)
 \*pygobject 3.22 (stretch)
  \+gobject-introspection 1.50 (stretch)
 \_wayland 1.12 (stretch)
 \_wayland-protocols 1.7 (stretch)
\+vala 0.34 (stretch)
legend:
+ "clean" backport
* "dirty" backport (see remarks)
_ not backported, just installed from Debian


remarks:

cmake:
testsuite disabled
Code:
diff debian/rules.orig debian/rules 
55c55
< 	dh_auto_test --buildsystem=cmake -- -j1 ARGS="-E CTestTestUpload --timeout 5000"
---
> 	dh_auto_test --buildsystem=cmake -- -j1 ARGS="-N -E CTestTestUpload --timeout 5000"
debhelper:
disable compression because it is not defined in dh10 (jessie-backports)
disable version check and hard-code version because for some reason $version is empty under dh10
(chicken-and-egg problem, rebuilding dh12 with dh12 works without hacks)
Code:
diff /lib/Debian/Debhelper/Dh_Lib.pm.built_with_dh9 /lib/Debian/Debhelper/Dh_Lib.pm
1037c1037
< 			#compression => 0,
---
> 			compression => 0,
1044,1046c1044,1046
< 		#if (not defined($version) or not $version->is_valid) {
< 		#	error("changelog parse failure; invalid or missing version");
< 		#}
---
> 		if (not defined($version) or not $version->is_valid) {
> 			error("changelog parse failure; invalid or missing version");
> 		}
1048c1048
< 		$dh{VERSION} = "12~bpo9+1";
---
> 		$dh{VERSION} = $pkg_version{$cache_key} = $version->as_string;
glib2.0:
taken straight from stretch because backport to jessie as root fails due to #770193 [1] and backporting as regular user fails due to some other error I don't remember
fortunately dependencioes check out

pygobject:
ignore testsuite
Code:
diff debian/rules.orig debian/rules
10c10
< TESTSUITE_FAIL_CMD=exit 1
---
> TESTSUITE_FAIL_CMD=exit 0
webkit2gtk:
backport of newer versions fails due to newer gcc required, which I haven't been able to backport
in other words:
The webkit version this midori build is based on is outdated. DON'T USE THIS BROWSER FOR SECURITY-CRITICAL TASKS! [2]


known problems:
1. Midori only starts within Easy Debian's LXDE desktop, but not directly in Maemo via debbie. This is the gdb output, I don't know what to make of it:
Code:
gdb) run
Starting program: /usr/bin/midori 
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[New Thread 0x45e06260 (LWP 12138)]

(midori:12135): Gtk-WARNING **: Locale not supported by C library.
	Using the fallback 'C' locale.
Gtk-Message: Failed to load module "libgtkstylus.so"
[New Thread 0x469ff260 (LWP 12140)]
[New Thread 0x471ff260 (LWP 12141)]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]

Program received signal SIGSEGV, Segmentation fault.
0x439f1f78 in XIFreeDeviceInfo () from /usr/lib/arm-linux-gnueabihf/libXi.so.6
2. The scroll bars don't render properly. They still seem to work fine though.

3. Because Midori is now based on Gtk+3, Easy Debian's default right-click method of "tap&hold" doesn't work here. You'll have to resort to something like the modifier solution I posted earlier. [3]


btw:
Since it was clear pretty soon, that this backport wouldn't be a piece of cake, I also tried to backport Midori 6 instead of Midori 7. Version 6 however, wasn't any easier to backport, so I returned to version 7.

Because Midori is also available as a snap package, I also tried to backport the snapd package from Debian stretch, to enable Easy Debian to handle hopefully arbitrary snap packages. I succeeded in doing so, and first tests of it under a jessie chroot on my Cubieboard 2 running stretch looked promising, but it didn't actually work on the N900. I'm not sure, but I believe this is due to Maemo's kernel being too old for apparmor, which is required by snap.


And as always:
Please mirror these archives!


[1] https://bugs.debian.org/cgi-bin/bugr...cgi?bug=770193
[2] https://blogs.gnome.org/mcatanzaro/2...urity-updates/
[3] http://talk.maemo.org/showthread.php...&page=328#3273
 

The Following 9 Users Say Thank You to sulu For This Useful Post: