Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
midori:contribute [2013/06/26 18:22] – [Backwards compatibility] kalikiana | midori:contribute [2014/02/27 20:06] – [Contribute other than touching code] kalikiana | ||
---|---|---|---|
Line 22: | Line 22: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
+ | * Write [[http:// | ||
+ | |||
+ | ====== Documentation resources ====== | ||
+ | |||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
====== Build the code ====== | ====== Build the code ====== | ||
- | <code bash>./waf configure | + | <code bash>mkdir _build |
- | ./waf build | + | cd _build |
- | sudo ./waf install</ | + | cmake -DCMAKE_INSTALL_PREFIX=/usr .. |
+ | make | ||
+ | sudo make install</ | ||
+ | |||
+ | //Advanced Tip: Pass "-G Ninja" to cmake to use [[http:// | ||
+ | |||
+ | If using GTK+3 you'll want to add <code bash> | ||
Midori can be **run without being installed**. | Midori can be **run without being installed**. | ||
- | <code bash> | + | <code bash> |
You can use a **temporary folder for testing** without affecting normal settings | You can use a **temporary folder for testing** without affecting normal settings | ||
- | <code bash> | + | <code bash> |
You'll want to **unit test** the code if you're testing a new version or contributed your own changes: | You'll want to **unit test** the code if you're testing a new version or contributed your own changes: | ||
- | <code bash> | + | <code bash> |
Automated daily builds in Launchpad ([[https:// | Automated daily builds in Launchpad ([[https:// | ||
Line 45: | Line 60: | ||
Testing an installed release may reveal crashers or memory corruption which require investigating from a local build and obtaining a stacktrace (backtrace, crash log). | Testing an installed release may reveal crashers or memory corruption which require investigating from a local build and obtaining a stacktrace (backtrace, crash log). | ||
- | <code bash> | + | <code bash> |
If the problem is a warning, not a crash GLib has a handy feature | If the problem is a warning, not a crash GLib has a handy feature | ||
- | <code bash>env G_DEBUG=all _build/default/ | + | <code bash>env G_DEBUG=all _build/ |
For more specific debugging output, depending on the feature in question you may use | For more specific debugging output, depending on the feature in question you may use | ||
- | <code bash>env MIDORI_DEBUG=help _build/default/ | + | <code bash>env MIDORI_DEBUG=help _build/ |
+ | |||
+ | To verify a regression you might need to revert a particular change: | ||
+ | |||
+ | <code bash> | ||
+ | # Revert only r6304 | ||
+ | bzr merge . -r 6304..6303 | ||
+ | </ | ||
====== Coding style and quality ====== | ====== Coding style and quality ====== | ||
Line 168: | Line 190: | ||
====== Backwards compatibility ====== | ====== Backwards compatibility ====== | ||
- | As of Midori 0.5.4 the forumula will be: | + | As of Midori 0.5.4 the formula is: |
- | * Required dependencies need to be available on the previous stable [[https://admin.fedoraproject.org/ | + | * Required dependencies need to be available on the previous stable [[https://apps.fedoraproject.org/ |
* For reference [[http:// | * For reference [[http:// | ||
* Windows XP through 8 are to date ABI compatible, all dependencies are included | * Windows XP through 8 are to date ABI compatible, all dependencies are included | ||
^ package ^ F17 (2012-05-29) ^ U 12.10 (2012-10-18) ^ | ^ package ^ F17 (2012-05-29) ^ U 12.10 (2012-10-18) ^ | ||
- | | glib2 | 2.34.0 | 2.32.4 | | + | | glib2 | 2.32.4 | 2.34.0 | |
- | | vala | 0.16 | 0.16.1 | | + | | vala | 0.16.1 | 0.16 | |
- | | gtk3 | 3.6.0 | 3.4.4 | | + | | gtk3 | 3.4.4 | 3.6.0 | |
| gtk2 | 2.24.13 | 2.24.13 | | | gtk2 | 2.24.13 | 2.24.13 | | ||
- | | soup | 2.40 | 2.38.1 | | + | | soup | 2.38.1 | 2.40 | |
+ | | webkit | 1.8.3-1.fc17 | 1.10.0-0ubuntu1 | ||
====== Midori with(out) Granite ====== | ====== Midori with(out) Granite ====== | ||
- | When built with Granite (--enable-granite) there' | + | When built with Granite (-DUSE_GRANITE=1 or --enable-granite) there' |
* Preferences uses a [[http:// | * Preferences uses a [[http:// | ||
* URL completion styling is slightly different | * URL completion styling is slightly different | ||
* Clear Private Data uses **Granite.Widgets.LightWindow** | * Clear Private Data uses **Granite.Widgets.LightWindow** | ||
* Edit Bookmark and Security Details use [[http:// | * Edit Bookmark and Security Details use [[http:// | ||
- | * Browser uses **Granite.Widgets.DynamicNotebook** instead of Gtk.Notebook | ||
====== Midori for Windows ====== | ====== Midori for Windows ====== | ||
===== Dependencies ===== | ===== Dependencies ===== | ||
Line 197: | Line 218: | ||
For cross-compilation | For cross-compilation | ||
- | <code bash>yum install mingw{32, | + | <code bash>yum install mingw{32, |
Packages needed when assembling the archive | Packages needed when assembling the archive | ||
- | <code bash> yum install faenza-icon-theme p7zip mingw32-nsis</ | + | <code bash> yum install faenza-icon-theme p7zip mingw32-nsis |
Installing those should get you the packages needed to successfully build and develop Midori for Win32. | Installing those should get you the packages needed to successfully build and develop Midori for Win32. | ||
- | |||
===== Building ===== | ===== Building ===== | ||
For 32-bit builds: | For 32-bit builds: | ||
<code bash> | <code bash> | ||
- | mingw32-env | + | mkdir _mingw32 |
- | ./ | + | cd _mingw32 |
+ | mingw32-cmake .. -DUSE_ZEITGEIST=0 | ||
make | make | ||
sudo make install</ | sudo make install</ | ||
Line 214: | Line 235: | ||
For 64-bit builds: | For 64-bit builds: | ||
<code bash> | <code bash> | ||
- | mingw64-env | + | mkdir _mingw64 |
- | ./ | + | cd _mingw64 |
+ | mingw64-cmake .. -DUSE_ZEITGEIST=0 | ||
make | make | ||
sudo make install</ | sudo make install</ | ||
Line 224: | Line 246: | ||
64-bit build: | 64-bit build: | ||
<code bash>env MINGW_PREFIX="/ | <code bash>env MINGW_PREFIX="/ | ||
- | |||
===== Testing ===== | ===== Testing ===== | ||
For testing your changes unfortuantely a real system is needed because Midori and WebKitGTK+ don't work properly under Wine. Even if it works some problems are not visible when using Wine, but are present when running under a real Windows system and vice versa. | For testing your changes unfortuantely a real system is needed because Midori and WebKitGTK+ don't work properly under Wine. Even if it works some problems are not visible when using Wine, but are present when running under a real Windows system and vice versa. | ||
Line 231: | Line 252: | ||
====== Jargon ====== | ====== Jargon ====== | ||
- | * freeze: | + | * freeze: a period of bug fixes only eg. 4/2 cycle means 4 weeks of features and 2 weeks to focus on resolving existing problems |
* MR: merge request, a branch proposed for review | * MR: merge request, a branch proposed for review | ||
* ninja: an internal tab, usually empty label, used for taking screenshots | * ninja: an internal tab, usually empty label, used for taking screenshots | ||
* fortress: user of an ancient release like 0.4.3 as found on Raspberry Pie, Debian, Ubuntu | * fortress: user of an ancient release like 0.4.3 as found on Raspberry Pie, Debian, Ubuntu | ||
* katze, sokoke, tabby: API names and coincidentally cat breeds | * katze, sokoke, tabby: API names and coincidentally cat breeds |