<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://leste.maemo.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Norayr</id>
	<title>Maemo Leste Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://leste.maemo.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Norayr"/>
	<link rel="alternate" type="text/html" href="https://leste.maemo.org/Special:Contributions/Norayr"/>
	<updated>2026-05-17T22:58:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Lagrange&amp;diff=1805</id>
		<title>Extras/Lagrange</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Lagrange&amp;diff=1805"/>
		<updated>2026-05-01T12:40:21Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lagrange is a smolnet browser, it supports Gemini/Spartan/Nex/Titan/Gopher/ protocols.&lt;br /&gt;
&lt;br /&gt;
It is possible to use it as simple HTML browser as well, by connecting to one of HTTP to Gemini proxies, or selfhosting.&lt;br /&gt;
&lt;br /&gt;
Some HTTP to Gemini proxies:&lt;br /&gt;
&lt;br /&gt;
* Duckling proxy&lt;br /&gt;
* Stargate proxy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
[[File:3672ff95-8864-4adb-b828-d7ae1a47fbff.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
[[File:996dcd5a-49f1-41ee-9919-bb5a0a80f276.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
[[File:73c8de3b-3946-49ec-836d-f99402cca13e.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
Gopher:&lt;br /&gt;
&lt;br /&gt;
[[File:0309d876-a1fc-40d5-8b21-95bb27288719.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
Terminal emulation is supported:&lt;br /&gt;
&lt;br /&gt;
[[File:6b6fcb7d-3a91-47bf-a706-459b34d99fd6.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
[[File:48765438-446d-42a2-9d60-c1e72f313941.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
==Tweaks==&lt;br /&gt;
&lt;br /&gt;
===Increase cache size===&lt;br /&gt;
&lt;br /&gt;
This makes touch scrolling working better and cpu usage decreases a lot (on n900). increasing cachesize also makes radio streaming working fine when lagrange is in background.&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~/.config/lagrange/prefs.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change cachesize:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cachesize.set arg:100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===UI Scaling===&lt;br /&gt;
&lt;br /&gt;
Default UI Scaling is 1, setting it to 0.3 helps on n900.&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~/.config/lagrange/prefs.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uiscale arg:0.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:48765438-446d-42a2-9d60-c1e72f313941.png&amp;diff=1804</id>
		<title>File:48765438-446d-42a2-9d60-c1e72f313941.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:48765438-446d-42a2-9d60-c1e72f313941.png&amp;diff=1804"/>
		<updated>2026-05-01T12:40:06Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ansi&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:6b6fcb7d-3a91-47bf-a706-459b34d99fd6.png&amp;diff=1803</id>
		<title>File:6b6fcb7d-3a91-47bf-a706-459b34d99fd6.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:6b6fcb7d-3a91-47bf-a706-459b34d99fd6.png&amp;diff=1803"/>
		<updated>2026-05-01T12:39:27Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ansi&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:73c8de3b-3946-49ec-836d-f99402cca13e.png&amp;diff=1802</id>
		<title>File:73c8de3b-3946-49ec-836d-f99402cca13e.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:73c8de3b-3946-49ec-836d-f99402cca13e.png&amp;diff=1802"/>
		<updated>2026-05-01T12:30:22Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;solar power blog&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:0309d876-a1fc-40d5-8b21-95bb27288719.png&amp;diff=1801</id>
		<title>File:0309d876-a1fc-40d5-8b21-95bb27288719.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:0309d876-a1fc-40d5-8b21-95bb27288719.png&amp;diff=1801"/>
		<updated>2026-05-01T12:28:18Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gopher page screenshot in lagrange.&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:996dcd5a-49f1-41ee-9919-bb5a0a80f276.png&amp;diff=1800</id>
		<title>File:996dcd5a-49f1-41ee-9919-bb5a0a80f276.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:996dcd5a-49f1-41ee-9919-bb5a0a80f276.png&amp;diff=1800"/>
		<updated>2026-05-01T12:27:23Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;smolzine capsule.&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Lagrange&amp;diff=1799</id>
		<title>Extras/Lagrange</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Lagrange&amp;diff=1799"/>
		<updated>2026-05-01T12:18:42Z</updated>

		<summary type="html">&lt;p&gt;Norayr: Created page with &amp;quot;Lagrange is a smolnet browser, it supports Gemini/Spartan/Nex/Titan/Gopher/ protocols.  It is possible to use it as simple HTML browser as well, by connecting to one of HTTP to Gemini proxies, or selfhosting.  Some HTTP to Gemini proxies:  * Duckling proxy * Stargate proxy   ==Screenshots== thumb   ==Tweaks==  ===Increase cache size===  This makes touch scrolling working better and cpu usage decreases a lot (on n900). inc...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lagrange is a smolnet browser, it supports Gemini/Spartan/Nex/Titan/Gopher/ protocols.&lt;br /&gt;
&lt;br /&gt;
It is possible to use it as simple HTML browser as well, by connecting to one of HTTP to Gemini proxies, or selfhosting.&lt;br /&gt;
&lt;br /&gt;
Some HTTP to Gemini proxies:&lt;br /&gt;
&lt;br /&gt;
* Duckling proxy&lt;br /&gt;
* Stargate proxy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
[[File:3672ff95-8864-4adb-b828-d7ae1a47fbff.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tweaks==&lt;br /&gt;
&lt;br /&gt;
===Increase cache size===&lt;br /&gt;
&lt;br /&gt;
This makes touch scrolling working better and cpu usage decreases a lot (on n900). increasing cachesize also makes radio streaming working fine when lagrange is in background.&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~/.config/lagrange/prefs.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change cachesize:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cachesize.set arg:100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===UI Scaling===&lt;br /&gt;
&lt;br /&gt;
Default UI Scaling is 1, setting it to 0.3 helps on n900.&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~/.config/lagrange/prefs.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set &lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
uiscale arg:0.3&lt;br /&gt;
```&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:3672ff95-8864-4adb-b828-d7ae1a47fbff.png&amp;diff=1798</id>
		<title>File:3672ff95-8864-4adb-b828-d7ae1a47fbff.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:3672ff95-8864-4adb-b828-d7ae1a47fbff.png&amp;diff=1798"/>
		<updated>2026-05-01T12:17:55Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;lagrange browser screenshot in hildon desktop&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1785</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1785"/>
		<updated>2026-01-25T23:52:39Z</updated>

		<summary type="html">&lt;p&gt;Norayr: added links to maemo repository mirrors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it&#039;s likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.2/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.3/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.2/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-testing/pool/fremantle-1.3/free/source/&lt;br /&gt;
&lt;br /&gt;
If main links above dont work, you can use mirrors:&lt;br /&gt;
&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/pool/maemo5.0/free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/pool/maemo5.0/non-free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/extras/pool/fremantle/free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/extras/pool/fremantle/non-free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/extras/pool/fremantle-1.2/free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/extras/pool/fremantle-1.2/non-free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/extras/pool/fremantle-1.3/free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/extras/pool/fremantle-1.3/non-free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/extras-devel/pool/fremantle/free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/extras-devel/pool/fremantle/non-free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/extras-testing/pool/fremantle/free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/extras-testing/pool/fremantle/non-free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/community-testing/pool/fremantle/free/&lt;br /&gt;
* https://maemo.plan9.de/apt-mirror/mirror/repository.maemo.org/community-testing/pool/fremantle/non-free/&lt;br /&gt;
&lt;br /&gt;
Another mirror is:&lt;br /&gt;
&lt;br /&gt;
* https://maemo.viniciuspaes.com/extras/pool/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let&#039;s say we&#039;d like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it&#039;s here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let&#039;s say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `optipng` installed. (media-gfx/optipng in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* optimize it: &amp;lt;pre&amp;gt;optipng -strip all&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-cli_icon_appman_sample_v002.png]]&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-term_icon_v002_a001_48p.png]]&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [http://norayr.am/tips/port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64 here]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://git.maemo.org/leste-extras/ maemo-leste-extras] and [https://git.maemo.org/leste-extras/bugtracker/issues/ open an issue] in the [https://git.maemo.org/leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get an invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@git.maemo.org:leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@git.maemo.org:leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@git.maemo.org:leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To git.maemo.org:leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch &#039;maemo/beowulf&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for &#039;maemo/beowulf&#039; by visiting:&lt;br /&gt;
remote:      https://git.maemo.org/leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To git.maemo.org:leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== phoenix ==&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1688</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1688"/>
		<updated>2024-07-14T21:31:59Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it&#039;s likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.2/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.3/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.2/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-testing/pool/fremantle-1.3/free/source/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let&#039;s say we&#039;d like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it&#039;s here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let&#039;s say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `optipng` installed. (media-gfx/optipng in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* optimize it: &amp;lt;pre&amp;gt;optipng -strip all&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-cli_icon_appman_sample_v002.png]]&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-term_icon_v002_a001_48p.png]]&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [http://norayr.am/tips/port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64 here]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://github.com/maemo-leste-extras/ maemo-leste-extras] and [https://github.com/maemo-leste-extras/bugtracker/issues/new/choose open an issue] in the [https://github.com/maemo-leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get github invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@github.com:maemo-leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch &#039;maemo/beowulf&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for &#039;maemo/beowulf&#039; on GitHub by visiting:&lt;br /&gt;
remote:      https://github.com/maemo-leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
== phoenix ==&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1687</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1687"/>
		<updated>2024-07-14T21:31:21Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it&#039;s likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.2/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.3/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.2/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-testing/pool/fremantle-1.3/free/source/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let&#039;s say we&#039;d like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it&#039;s here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let&#039;s say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `sharutils` installed. (media-gfx/optipng in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* optimize it: &amp;lt;pre&amp;gt;optipng -strip all&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-cli_icon_appman_sample_v002.png]]&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-term_icon_v002_a001_48p.png]]&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [http://norayr.am/tips/port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64 here]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://github.com/maemo-leste-extras/ maemo-leste-extras] and [https://github.com/maemo-leste-extras/bugtracker/issues/new/choose open an issue] in the [https://github.com/maemo-leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get github invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@github.com:maemo-leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch &#039;maemo/beowulf&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for &#039;maemo/beowulf&#039; on GitHub by visiting:&lt;br /&gt;
remote:      https://github.com/maemo-leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
== phoenix ==&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1467</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1467"/>
		<updated>2023-01-16T21:44:49Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it&#039;s likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.2/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.3/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.2/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-testing/pool/fremantle-1.3/free/source/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let&#039;s say we&#039;d like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it&#039;s here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let&#039;s say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `sharutils` installed. (app-arch/sharutils in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* optimize it: &amp;lt;pre&amp;gt;optipng -strip all&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-cli_icon_appman_sample_v002.png]]&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-term_icon_v002_a001_48p.png]]&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [http://norayr.am/tips/port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64 here]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://github.com/maemo-leste-extras/ maemo-leste-extras] and [https://github.com/maemo-leste-extras/bugtracker/issues/new/choose open an issue] in the [https://github.com/maemo-leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get github invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@github.com:maemo-leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch &#039;maemo/beowulf&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for &#039;maemo/beowulf&#039; on GitHub by visiting:&lt;br /&gt;
remote:      https://github.com/maemo-leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
== phoenix ==&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1466</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1466"/>
		<updated>2023-01-16T21:43:22Z</updated>

		<summary type="html">&lt;p&gt;Norayr: /* Porting existing Maemo Fremantle packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it&#039;s likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.2/free/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.3/free/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.2/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-testing/pool/fremantle-1.3/free/source/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let&#039;s say we&#039;d like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it&#039;s here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let&#039;s say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `sharutils` installed. (app-arch/sharutils in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* optimize it: &amp;lt;pre&amp;gt;optipng -strip all&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-cli_icon_appman_sample_v002.png]]&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-term_icon_v002_a001_48p.png]]&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [http://norayr.am/tips/port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64 here]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://github.com/maemo-leste-extras/ maemo-leste-extras] and [https://github.com/maemo-leste-extras/bugtracker/issues/new/choose open an issue] in the [https://github.com/maemo-leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get github invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@github.com:maemo-leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch &#039;maemo/beowulf&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for &#039;maemo/beowulf&#039; on GitHub by visiting:&lt;br /&gt;
remote:      https://github.com/maemo-leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
== phoenix ==&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1465</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1465"/>
		<updated>2023-01-16T21:35:46Z</updated>

		<summary type="html">&lt;p&gt;Norayr: /* Porting existing Maemo Fremantle packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it&#039;s likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle/source/free/&lt;br /&gt;
* http://repository.maemo.org/extras-testing/pool/fremantle/source/free/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let&#039;s say we&#039;d like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it&#039;s here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let&#039;s say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `sharutils` installed. (app-arch/sharutils in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* optimize it: &amp;lt;pre&amp;gt;optipng -strip all&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-cli_icon_appman_sample_v002.png]]&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-term_icon_v002_a001_48p.png]]&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [http://norayr.am/tips/port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64 here]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://github.com/maemo-leste-extras/ maemo-leste-extras] and [https://github.com/maemo-leste-extras/bugtracker/issues/new/choose open an issue] in the [https://github.com/maemo-leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get github invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@github.com:maemo-leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch &#039;maemo/beowulf&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for &#039;maemo/beowulf&#039; on GitHub by visiting:&lt;br /&gt;
remote:      https://github.com/maemo-leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
== phoenix ==&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1464</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1464"/>
		<updated>2023-01-16T18:47:57Z</updated>

		<summary type="html">&lt;p&gt;Norayr: /* Porting existing Maemo Fremantle packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it&#039;s likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle/free/&lt;br /&gt;
* http://repository.maemo.org/extras-testing/pool/fremantle/free/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let&#039;s say we&#039;d like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it&#039;s here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let&#039;s say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `sharutils` installed. (app-arch/sharutils in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* optimize it: &amp;lt;pre&amp;gt;optipng -strip all&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-cli_icon_appman_sample_v002.png]]&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-term_icon_v002_a001_48p.png]]&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [http://norayr.am/tips/port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64 here]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://github.com/maemo-leste-extras/ maemo-leste-extras] and [https://github.com/maemo-leste-extras/bugtracker/issues/new/choose open an issue] in the [https://github.com/maemo-leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get github invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@github.com:maemo-leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch &#039;maemo/beowulf&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for &#039;maemo/beowulf&#039; on GitHub by visiting:&lt;br /&gt;
remote:      https://github.com/maemo-leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
== phoenix ==&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1463</id>
		<title>Extras/Amazfish</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1463"/>
		<updated>2023-01-16T17:50:37Z</updated>

		<summary type="html">&lt;p&gt;Norayr: /* Other links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Package&lt;br /&gt;
|image=[[Image:202301161852.png|250px]]&lt;br /&gt;
|status=Working&lt;br /&gt;
|date_in_repo=2022-09-16&lt;br /&gt;
|maemo_leste_repo=https://github.com/maemo-leste-extras/mstardict&lt;br /&gt;
|category=Utilities&lt;br /&gt;
|packager=[[User:Norayr]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this. ==&lt;br /&gt;
&lt;br /&gt;
Amazfish is an application and a daemon initially developed to connect a Sailfish OS to Amazfit Bip watches.&lt;br /&gt;
&lt;br /&gt;
Later support for more watches been added. Also the developer rewrote the interface, so that the application would work on non Sailfish Linux&lt;br /&gt;
&lt;br /&gt;
At the moment of writing this page, the [https://github.com/piggz/harbour-amazfish github page] lists these devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There are 3 tiers of supported devices:&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
These are devices I have, have tested and will try not to break any functioanlity for an include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit Bip&lt;br /&gt;
    Amazfit GTS&lt;br /&gt;
    Amazfit GTR2&lt;br /&gt;
    Pinetime Infinitme&lt;br /&gt;
    Bangle.js&lt;br /&gt;
&lt;br /&gt;
Silver&lt;br /&gt;
&lt;br /&gt;
These are devices which are properly implemented in the application, but I do not have and are tested by the commuity, and include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit BipS&lt;br /&gt;
    Amazfit Bip Lite&lt;br /&gt;
    Amazfit GTS2&lt;br /&gt;
&lt;br /&gt;
I do not promise not to break funcaionality in these, but will fix where I can&lt;br /&gt;
Bronze&lt;br /&gt;
&lt;br /&gt;
These are devices which use a protocol that is close to another suppored device, and so is treated like that device. Your mileage may vary with these devices.&lt;br /&gt;
&lt;br /&gt;
    MiBand 2/3/4&lt;br /&gt;
    Amazfit Cor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
find in Application manager&lt;br /&gt;
&lt;br /&gt;
[[Image:Amazfish in ham 202301141803.png|500px]]&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install harbour-amazfish&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and this is it:&lt;br /&gt;
&lt;br /&gt;
[[Image:Amazfish icon 202301141810.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== How to pair ==&lt;br /&gt;
&lt;br /&gt;
Run the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
run the app from the menu, or, it would be good to run it for the first time also in console to see the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-ui-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On droid4, the window doesn&#039;t fit on the screen, so it may make sense to run the program with ssh X forwarding.&lt;br /&gt;
&lt;br /&gt;
Though on droid4, the author of this article was not able to pair the Amazfish Bip watch: the watch connects and disconnects, shows a warning &#039;Disconnected&#039;, and this is visible in the output of terminal running amazfish daemon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Droid4 amazfish pairing failed 202301161800.png|500px]]&lt;br /&gt;
&lt;br /&gt;
and the amazfish app outpit is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
kf.bluezqt: PendingCall Error: &amp;quot;No discovery started&amp;quot;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the app started, and at first start will ask to write a name and configure your profile.&lt;br /&gt;
On Pinephone, at the time of writing this article, it was not possible to write in the name field without the hardware keyboard.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161835.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Then on the main application screen tap on &#039;Pair watch&#039;.&lt;br /&gt;
If it shows &#039;Unpair&#039;, tap on &#039;Accept&#039;, and then choose &#039;Pair watch&#039; again.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161836.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see list of watches. I chose Amazfit Bip.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161837.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Tap &#039;Scan devices&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161838.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Without this though we see the running circle, the watch won&#039;t be found.&lt;br /&gt;
When you see the watch, tap on it, or &#039;Stop scan&#039; and then choose the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161839.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You should get the pairing request on the watch. &lt;br /&gt;
&lt;br /&gt;
(btw, the hardware address of the watch is autogenerated upon every reset)&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161840.png|500px]]&lt;br /&gt;
&lt;br /&gt;
If you didn&#039;t, that&#039;s okay. The Amazfish shows the main screen again, and &#039;Disconnect from watch&#039; in the upper right corner.&lt;br /&gt;
That means it thinks everything is right and the watch is connected.&lt;br /&gt;
Tap on &#039;Disconnect the watch&#039;, and then to &#039;Connect&#039;, at that moment you may get a pairing request on the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
If not, repeat the whole sequence again: unpair, and try pairing again.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
When the watch paired and connected, try to go to settings, then debug, then tap on buttons that show test notifications.&lt;br /&gt;
&lt;br /&gt;
Notifications routed via libnotify should be shown from all applications.&lt;br /&gt;
&lt;br /&gt;
Tap on &#039;Data grahps&#039; and then &#039;Download data&#039; - that would connect and download the recent statistics from the watch.&lt;br /&gt;
Important: it may not show downloaded data! tap on arrow right, to see the next day, then arrow left to see the current day.&lt;br /&gt;
Now the data will be there!&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161852.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Other links ==&lt;br /&gt;
&lt;br /&gt;
* hhttps://github.com/piggz/harbour-amazfish&lt;br /&gt;
* https://openrepos.net/content/piggz/amazfish&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1462</id>
		<title>Extras/Amazfish</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1462"/>
		<updated>2023-01-16T17:49:42Z</updated>

		<summary type="html">&lt;p&gt;Norayr: /* Install */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Package&lt;br /&gt;
|image=[[Image:202301161852.png|250px]]&lt;br /&gt;
|status=Working&lt;br /&gt;
|date_in_repo=2022-09-16&lt;br /&gt;
|maemo_leste_repo=https://github.com/maemo-leste-extras/mstardict&lt;br /&gt;
|category=Utilities&lt;br /&gt;
|packager=[[User:Norayr]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this. ==&lt;br /&gt;
&lt;br /&gt;
Amazfish is an application and a daemon initially developed to connect a Sailfish OS to Amazfit Bip watches.&lt;br /&gt;
&lt;br /&gt;
Later support for more watches been added. Also the developer rewrote the interface, so that the application would work on non Sailfish Linux&lt;br /&gt;
&lt;br /&gt;
At the moment of writing this page, the [https://github.com/piggz/harbour-amazfish github page] lists these devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There are 3 tiers of supported devices:&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
These are devices I have, have tested and will try not to break any functioanlity for an include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit Bip&lt;br /&gt;
    Amazfit GTS&lt;br /&gt;
    Amazfit GTR2&lt;br /&gt;
    Pinetime Infinitme&lt;br /&gt;
    Bangle.js&lt;br /&gt;
&lt;br /&gt;
Silver&lt;br /&gt;
&lt;br /&gt;
These are devices which are properly implemented in the application, but I do not have and are tested by the commuity, and include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit BipS&lt;br /&gt;
    Amazfit Bip Lite&lt;br /&gt;
    Amazfit GTS2&lt;br /&gt;
&lt;br /&gt;
I do not promise not to break funcaionality in these, but will fix where I can&lt;br /&gt;
Bronze&lt;br /&gt;
&lt;br /&gt;
These are devices which use a protocol that is close to another suppored device, and so is treated like that device. Your mileage may vary with these devices.&lt;br /&gt;
&lt;br /&gt;
    MiBand 2/3/4&lt;br /&gt;
    Amazfit Cor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
find in Application manager&lt;br /&gt;
&lt;br /&gt;
[[Image:Amazfish in ham 202301141803.png|500px]]&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install harbour-amazfish&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and this is it:&lt;br /&gt;
&lt;br /&gt;
[[Image:Amazfish icon 202301141810.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== How to pair ==&lt;br /&gt;
&lt;br /&gt;
Run the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
run the app from the menu, or, it would be good to run it for the first time also in console to see the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-ui-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On droid4, the window doesn&#039;t fit on the screen, so it may make sense to run the program with ssh X forwarding.&lt;br /&gt;
&lt;br /&gt;
Though on droid4, the author of this article was not able to pair the Amazfish Bip watch: the watch connects and disconnects, shows a warning &#039;Disconnected&#039;, and this is visible in the output of terminal running amazfish daemon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Droid4 amazfish pairing failed 202301161800.png|500px]]&lt;br /&gt;
&lt;br /&gt;
and the amazfish app outpit is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
kf.bluezqt: PendingCall Error: &amp;quot;No discovery started&amp;quot;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the app started, and at first start will ask to write a name and configure your profile.&lt;br /&gt;
On Pinephone, at the time of writing this article, it was not possible to write in the name field without the hardware keyboard.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161835.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Then on the main application screen tap on &#039;Pair watch&#039;.&lt;br /&gt;
If it shows &#039;Unpair&#039;, tap on &#039;Accept&#039;, and then choose &#039;Pair watch&#039; again.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161836.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see list of watches. I chose Amazfit Bip.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161837.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Tap &#039;Scan devices&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161838.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Without this though we see the running circle, the watch won&#039;t be found.&lt;br /&gt;
When you see the watch, tap on it, or &#039;Stop scan&#039; and then choose the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161839.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You should get the pairing request on the watch. &lt;br /&gt;
&lt;br /&gt;
(btw, the hardware address of the watch is autogenerated upon every reset)&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161840.png|500px]]&lt;br /&gt;
&lt;br /&gt;
If you didn&#039;t, that&#039;s okay. The Amazfish shows the main screen again, and &#039;Disconnect from watch&#039; in the upper right corner.&lt;br /&gt;
That means it thinks everything is right and the watch is connected.&lt;br /&gt;
Tap on &#039;Disconnect the watch&#039;, and then to &#039;Connect&#039;, at that moment you may get a pairing request on the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
If not, repeat the whole sequence again: unpair, and try pairing again.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
When the watch paired and connected, try to go to settings, then debug, then tap on buttons that show test notifications.&lt;br /&gt;
&lt;br /&gt;
Notifications routed via libnotify should be shown from all applications.&lt;br /&gt;
&lt;br /&gt;
Tap on &#039;Data grahps&#039; and then &#039;Download data&#039; - that would connect and download the recent statistics from the watch.&lt;br /&gt;
Important: it may not show downloaded data! tap on arrow right, to see the next day, then arrow left to see the current day.&lt;br /&gt;
Now the data will be there!&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161852.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Other links ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/norayr/harbour-amazfish&lt;br /&gt;
* https://openrepos.net/content/piggz/amazfish&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1461</id>
		<title>Extras/Amazfish</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1461"/>
		<updated>2023-01-16T17:48:41Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Package&lt;br /&gt;
|image=[[Image:202301161852.png|250px]]&lt;br /&gt;
|status=Working&lt;br /&gt;
|date_in_repo=2022-09-16&lt;br /&gt;
|maemo_leste_repo=https://github.com/maemo-leste-extras/mstardict&lt;br /&gt;
|category=Utilities&lt;br /&gt;
|packager=[[User:Norayr]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this. ==&lt;br /&gt;
&lt;br /&gt;
Amazfish is an application and a daemon initially developed to connect a Sailfish OS to Amazfit Bip watches.&lt;br /&gt;
&lt;br /&gt;
Later support for more watches been added. Also the developer rewrote the interface, so that the application would work on non Sailfish Linux&lt;br /&gt;
&lt;br /&gt;
At the moment of writing this page, the [https://github.com/piggz/harbour-amazfish github page] lists these devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There are 3 tiers of supported devices:&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
These are devices I have, have tested and will try not to break any functioanlity for an include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit Bip&lt;br /&gt;
    Amazfit GTS&lt;br /&gt;
    Amazfit GTR2&lt;br /&gt;
    Pinetime Infinitme&lt;br /&gt;
    Bangle.js&lt;br /&gt;
&lt;br /&gt;
Silver&lt;br /&gt;
&lt;br /&gt;
These are devices which are properly implemented in the application, but I do not have and are tested by the commuity, and include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit BipS&lt;br /&gt;
    Amazfit Bip Lite&lt;br /&gt;
    Amazfit GTS2&lt;br /&gt;
&lt;br /&gt;
I do not promise not to break funcaionality in these, but will fix where I can&lt;br /&gt;
Bronze&lt;br /&gt;
&lt;br /&gt;
These are devices which use a protocol that is close to another suppored device, and so is treated like that device. Your mileage may vary with these devices.&lt;br /&gt;
&lt;br /&gt;
    MiBand 2/3/4&lt;br /&gt;
    Amazfit Cor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Amazfish in ham 202301141803.png|500px]]&lt;br /&gt;
[[Image:Amazfish icon 202301141810.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== How to pair ==&lt;br /&gt;
&lt;br /&gt;
Run the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
run the app from the menu, or, it would be good to run it for the first time also in console to see the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-ui-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On droid4, the window doesn&#039;t fit on the screen, so it may make sense to run the program with ssh X forwarding.&lt;br /&gt;
&lt;br /&gt;
Though on droid4, the author of this article was not able to pair the Amazfish Bip watch: the watch connects and disconnects, shows a warning &#039;Disconnected&#039;, and this is visible in the output of terminal running amazfish daemon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Droid4 amazfish pairing failed 202301161800.png|500px]]&lt;br /&gt;
&lt;br /&gt;
and the amazfish app outpit is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
kf.bluezqt: PendingCall Error: &amp;quot;No discovery started&amp;quot;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the app started, and at first start will ask to write a name and configure your profile.&lt;br /&gt;
On Pinephone, at the time of writing this article, it was not possible to write in the name field without the hardware keyboard.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161835.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Then on the main application screen tap on &#039;Pair watch&#039;.&lt;br /&gt;
If it shows &#039;Unpair&#039;, tap on &#039;Accept&#039;, and then choose &#039;Pair watch&#039; again.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161836.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see list of watches. I chose Amazfit Bip.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161837.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Tap &#039;Scan devices&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161838.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Without this though we see the running circle, the watch won&#039;t be found.&lt;br /&gt;
When you see the watch, tap on it, or &#039;Stop scan&#039; and then choose the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161839.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You should get the pairing request on the watch. &lt;br /&gt;
&lt;br /&gt;
(btw, the hardware address of the watch is autogenerated upon every reset)&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161840.png|500px]]&lt;br /&gt;
&lt;br /&gt;
If you didn&#039;t, that&#039;s okay. The Amazfish shows the main screen again, and &#039;Disconnect from watch&#039; in the upper right corner.&lt;br /&gt;
That means it thinks everything is right and the watch is connected.&lt;br /&gt;
Tap on &#039;Disconnect the watch&#039;, and then to &#039;Connect&#039;, at that moment you may get a pairing request on the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
If not, repeat the whole sequence again: unpair, and try pairing again.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
When the watch paired and connected, try to go to settings, then debug, then tap on buttons that show test notifications.&lt;br /&gt;
&lt;br /&gt;
Notifications routed via libnotify should be shown from all applications.&lt;br /&gt;
&lt;br /&gt;
Tap on &#039;Data grahps&#039; and then &#039;Download data&#039; - that would connect and download the recent statistics from the watch.&lt;br /&gt;
Important: it may not show downloaded data! tap on arrow right, to see the next day, then arrow left to see the current day.&lt;br /&gt;
Now the data will be there!&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161852.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Other links ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/norayr/harbour-amazfish&lt;br /&gt;
* https://openrepos.net/content/piggz/amazfish&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1460</id>
		<title>Extras/Amazfish</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1460"/>
		<updated>2023-01-16T17:47:14Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Package&lt;br /&gt;
|image=[[Image:202301161852.png|250px]]&lt;br /&gt;
|status=Working&lt;br /&gt;
|date_in_repo=2022-09-16&lt;br /&gt;
|maemo_leste_repo=https://github.com/maemo-leste-extras/mstardict&lt;br /&gt;
|category=Utilities&lt;br /&gt;
|packager=[[User:Norayr]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this. ==&lt;br /&gt;
&lt;br /&gt;
Amazfish is an application and a daemon initially developed to connect a Sailfish OS to Amazfit Bip watches.&lt;br /&gt;
&lt;br /&gt;
Later support for more watches been added. Also the developer rewrote the interface, so that the application would work on non Sailfish Linux&lt;br /&gt;
&lt;br /&gt;
At the moment of writing this page, the [https://github.com/piggz/harbour-amazfish github page] lists these devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There are 3 tiers of supported devices:&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
These are devices I have, have tested and will try not to break any functioanlity for an include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit Bip&lt;br /&gt;
    Amazfit GTS&lt;br /&gt;
    Amazfit GTR2&lt;br /&gt;
    Pinetime Infinitme&lt;br /&gt;
    Bangle.js&lt;br /&gt;
&lt;br /&gt;
Silver&lt;br /&gt;
&lt;br /&gt;
These are devices which are properly implemented in the application, but I do not have and are tested by the commuity, and include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit BipS&lt;br /&gt;
    Amazfit Bip Lite&lt;br /&gt;
    Amazfit GTS2&lt;br /&gt;
&lt;br /&gt;
I do not promise not to break funcaionality in these, but will fix where I can&lt;br /&gt;
Bronze&lt;br /&gt;
&lt;br /&gt;
These are devices which use a protocol that is close to another suppored device, and so is treated like that device. Your mileage may vary with these devices.&lt;br /&gt;
&lt;br /&gt;
    MiBand 2/3/4&lt;br /&gt;
    Amazfit Cor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to pair ==&lt;br /&gt;
&lt;br /&gt;
Run the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
run the app from the menu, or, it would be good to run it for the first time also in console to see the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-ui-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On droid4, the window doesn&#039;t fit on the screen, so it may make sense to run the program with ssh X forwarding.&lt;br /&gt;
&lt;br /&gt;
Though on droid4, the author of this article was not able to pair the Amazfish Bip watch: the watch connects and disconnects, shows a warning &#039;Disconnected&#039;, and this is visible in the output of terminal running amazfish daemon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Droid4 amazfish pairing failed 202301161800.png|500px]]&lt;br /&gt;
&lt;br /&gt;
and the amazfish app outpit is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
kf.bluezqt: PendingCall Error: &amp;quot;No discovery started&amp;quot;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the app started, and at first start will ask to write a name and configure your profile.&lt;br /&gt;
On Pinephone, at the time of writing this article, it was not possible to write in the name field without the hardware keyboard.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161835.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Then on the main application screen tap on &#039;Pair watch&#039;.&lt;br /&gt;
If it shows &#039;Unpair&#039;, tap on &#039;Accept&#039;, and then choose &#039;Pair watch&#039; again.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161836.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see list of watches. I chose Amazfit Bip.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161837.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Tap &#039;Scan devices&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161838.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Without this though we see the running circle, the watch won&#039;t be found.&lt;br /&gt;
When you see the watch, tap on it, or &#039;Stop scan&#039; and then choose the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161839.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You should get the pairing request on the watch. &lt;br /&gt;
&lt;br /&gt;
(btw, the hardware address of the watch is autogenerated upon every reset)&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161840.png|500px]]&lt;br /&gt;
&lt;br /&gt;
If you didn&#039;t, that&#039;s okay. The Amazfish shows the main screen again, and &#039;Disconnect from watch&#039; in the upper right corner.&lt;br /&gt;
That means it thinks everything is right and the watch is connected.&lt;br /&gt;
Tap on &#039;Disconnect the watch&#039;, and then to &#039;Connect&#039;, at that moment you may get a pairing request on the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
If not, repeat the whole sequence again: unpair, and try pairing again.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
When the watch paired and connected, try to go to settings, then debug, then tap on buttons that show test notifications.&lt;br /&gt;
&lt;br /&gt;
Notifications routed via libnotify should be shown from all applications.&lt;br /&gt;
&lt;br /&gt;
Tap on &#039;Data grahps&#039; and then &#039;Download data&#039; - that would connect and download the recent statistics from the watch.&lt;br /&gt;
Important: it may not show downloaded data! tap on arrow right, to see the next day, then arrow left to see the current day.&lt;br /&gt;
Now the data will be there!&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161852.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Some pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
[[Image:Amazfish in ham 202301141803.png]]&lt;br /&gt;
[[Image:Amazfish icon 202301141810.png]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other links ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/norayr/harbour-amazfish&lt;br /&gt;
* https://openrepos.net/content/piggz/amazfish&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1459</id>
		<title>Extras/Amazfish</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1459"/>
		<updated>2023-01-16T17:44:58Z</updated>

		<summary type="html">&lt;p&gt;Norayr: /* Some pictures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Package&lt;br /&gt;
|image=[[Image:202301161852.png|250px]]&lt;br /&gt;
|status=Working&lt;br /&gt;
|date_in_repo=2022-09-16&lt;br /&gt;
|maemo_leste_repo=https://github.com/maemo-leste-extras/mstardict&lt;br /&gt;
|category=Utilities&lt;br /&gt;
|packager=[[User:Norayr]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this. ==&lt;br /&gt;
&lt;br /&gt;
Amazfish is an application and a daemon initially developed to connect a Sailfish OS to Amazfit Bip watches.&lt;br /&gt;
&lt;br /&gt;
Later support for more watches been added. Also the developer rewrote the interface, so that the application would work on non Sailfish Linux&lt;br /&gt;
&lt;br /&gt;
At the moment of writing this page, the [https://github.com/piggz/harbour-amazfish github page] lists these devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There are 3 tiers of supported devices:&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
These are devices I have, have tested and will try not to break any functioanlity for an include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit Bip&lt;br /&gt;
    Amazfit GTS&lt;br /&gt;
    Amazfit GTR2&lt;br /&gt;
    Pinetime Infinitme&lt;br /&gt;
    Bangle.js&lt;br /&gt;
&lt;br /&gt;
Silver&lt;br /&gt;
&lt;br /&gt;
These are devices which are properly implemented in the application, but I do not have and are tested by the commuity, and include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit BipS&lt;br /&gt;
    Amazfit Bip Lite&lt;br /&gt;
    Amazfit GTS2&lt;br /&gt;
&lt;br /&gt;
I do not promise not to break funcaionality in these, but will fix where I can&lt;br /&gt;
Bronze&lt;br /&gt;
&lt;br /&gt;
These are devices which use a protocol that is close to another suppored device, and so is treated like that device. Your mileage may vary with these devices.&lt;br /&gt;
&lt;br /&gt;
    MiBand 2/3/4&lt;br /&gt;
    Amazfit Cor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to pair ==&lt;br /&gt;
&lt;br /&gt;
Run the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
run the app from the menu, or, it would be good to run it for the first time also in console to see the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-ui-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On droid4, the window doesn&#039;t fit on the screen, so it may make sense to run the program with ssh X forwarding.&lt;br /&gt;
&lt;br /&gt;
Though on droid4, the author of this article was not able to pair the Amazfish Bip watch: the watch connects and disconnects, shows a warning &#039;Disconnected&#039;, and this is visible in the output of terminal running amazfish daemon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Droid4 amazfish pairing failed 202301161800.png|500px]]&lt;br /&gt;
&lt;br /&gt;
and the amazfish app outpit is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
kf.bluezqt: PendingCall Error: &amp;quot;No discovery started&amp;quot;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the app started, and at first start will ask to write a name and configure your profile.&lt;br /&gt;
On Pinephone, at the time of writing this article, it was not possible to write in the name field without the hardware keyboard.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161835.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Then on the main application screen tap on &#039;Pair watch&#039;.&lt;br /&gt;
If it shows &#039;Unpair&#039;, tap on &#039;Accept&#039;, and then choose &#039;Pair watch&#039; again.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161836.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see list of watches. I chose Amazfit Bip.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161837.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Tap &#039;Scan devices&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161838.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Without this though we see the running circle, the watch won&#039;t be found.&lt;br /&gt;
When you see the watch, tap on it, or &#039;Stop scan&#039; and then choose the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161839.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You should get the pairing request on the watch. &lt;br /&gt;
&lt;br /&gt;
(btw, the hardware address of the watch is autogenerated upon every reset)&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161840.png|500px]]&lt;br /&gt;
&lt;br /&gt;
If you didn&#039;t, that&#039;s okay. The Amazfish shows the main screen again, and &#039;Disconnect from watch&#039; in the upper right corner.&lt;br /&gt;
That means it thinks everything is right and the watch is connected.&lt;br /&gt;
Tap on &#039;Disconnect the watch&#039;, and then to &#039;Connect&#039;, at that moment you may get a pairing request on the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
If not, repeat the whole sequence again: unpair, and try pairing again.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
When the watch paired and connected, try to go to settings, then debug, then tap on buttons that show test notifications.&lt;br /&gt;
&lt;br /&gt;
Notifications routed via libnotify should be shown from all applications.&lt;br /&gt;
&lt;br /&gt;
Tap on &#039;Data grahps&#039; and then &#039;Download data&#039; - that would connect and download the recent statistics from the watch.&lt;br /&gt;
Important: it may not show downloaded data! tap on arrow right, to see the next day, then arrow left to see the current day.&lt;br /&gt;
Now the data will be there!&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161852.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Some pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
[[Image:Amazfish_in_ham_202301141803.png]]&lt;br /&gt;
[[Image:Amazfish_icon_202301141810.png]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other links ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/norayr/harbour-amazfish&lt;br /&gt;
* https://openrepos.net/content/piggz/amazfish&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1458</id>
		<title>Extras/Amazfish</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1458"/>
		<updated>2023-01-16T17:44:11Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Package&lt;br /&gt;
|image=[[Image:202301161852.png|250px]]&lt;br /&gt;
|status=Working&lt;br /&gt;
|date_in_repo=2022-09-16&lt;br /&gt;
|maemo_leste_repo=https://github.com/maemo-leste-extras/mstardict&lt;br /&gt;
|category=Utilities&lt;br /&gt;
|packager=[[User:Norayr]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this. ==&lt;br /&gt;
&lt;br /&gt;
Amazfish is an application and a daemon initially developed to connect a Sailfish OS to Amazfit Bip watches.&lt;br /&gt;
&lt;br /&gt;
Later support for more watches been added. Also the developer rewrote the interface, so that the application would work on non Sailfish Linux&lt;br /&gt;
&lt;br /&gt;
At the moment of writing this page, the [https://github.com/piggz/harbour-amazfish github page] lists these devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There are 3 tiers of supported devices:&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
These are devices I have, have tested and will try not to break any functioanlity for an include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit Bip&lt;br /&gt;
    Amazfit GTS&lt;br /&gt;
    Amazfit GTR2&lt;br /&gt;
    Pinetime Infinitme&lt;br /&gt;
    Bangle.js&lt;br /&gt;
&lt;br /&gt;
Silver&lt;br /&gt;
&lt;br /&gt;
These are devices which are properly implemented in the application, but I do not have and are tested by the commuity, and include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit BipS&lt;br /&gt;
    Amazfit Bip Lite&lt;br /&gt;
    Amazfit GTS2&lt;br /&gt;
&lt;br /&gt;
I do not promise not to break funcaionality in these, but will fix where I can&lt;br /&gt;
Bronze&lt;br /&gt;
&lt;br /&gt;
These are devices which use a protocol that is close to another suppored device, and so is treated like that device. Your mileage may vary with these devices.&lt;br /&gt;
&lt;br /&gt;
    MiBand 2/3/4&lt;br /&gt;
    Amazfit Cor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to pair ==&lt;br /&gt;
&lt;br /&gt;
Run the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
run the app from the menu, or, it would be good to run it for the first time also in console to see the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-ui-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On droid4, the window doesn&#039;t fit on the screen, so it may make sense to run the program with ssh X forwarding.&lt;br /&gt;
&lt;br /&gt;
Though on droid4, the author of this article was not able to pair the Amazfish Bip watch: the watch connects and disconnects, shows a warning &#039;Disconnected&#039;, and this is visible in the output of terminal running amazfish daemon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Droid4 amazfish pairing failed 202301161800.png|500px]]&lt;br /&gt;
&lt;br /&gt;
and the amazfish app outpit is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
kf.bluezqt: PendingCall Error: &amp;quot;No discovery started&amp;quot;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the app started, and at first start will ask to write a name and configure your profile.&lt;br /&gt;
On Pinephone, at the time of writing this article, it was not possible to write in the name field without the hardware keyboard.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161835.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Then on the main application screen tap on &#039;Pair watch&#039;.&lt;br /&gt;
If it shows &#039;Unpair&#039;, tap on &#039;Accept&#039;, and then choose &#039;Pair watch&#039; again.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161836.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see list of watches. I chose Amazfit Bip.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161837.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Tap &#039;Scan devices&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161838.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Without this though we see the running circle, the watch won&#039;t be found.&lt;br /&gt;
When you see the watch, tap on it, or &#039;Stop scan&#039; and then choose the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161839.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You should get the pairing request on the watch. &lt;br /&gt;
&lt;br /&gt;
(btw, the hardware address of the watch is autogenerated upon every reset)&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161840.png|500px]]&lt;br /&gt;
&lt;br /&gt;
If you didn&#039;t, that&#039;s okay. The Amazfish shows the main screen again, and &#039;Disconnect from watch&#039; in the upper right corner.&lt;br /&gt;
That means it thinks everything is right and the watch is connected.&lt;br /&gt;
Tap on &#039;Disconnect the watch&#039;, and then to &#039;Connect&#039;, at that moment you may get a pairing request on the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
If not, repeat the whole sequence again: unpair, and try pairing again.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
When the watch paired and connected, try to go to settings, then debug, then tap on buttons that show test notifications.&lt;br /&gt;
&lt;br /&gt;
Notifications routed via libnotify should be shown from all applications.&lt;br /&gt;
&lt;br /&gt;
Tap on &#039;Data grahps&#039; and then &#039;Download data&#039; - that would connect and download the recent statistics from the watch.&lt;br /&gt;
Important: it may not show downloaded data! tap on arrow right, to see the next day, then arrow left to see the current day.&lt;br /&gt;
Now the data will be there!&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161852.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Some pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
[[Image:Amazfish in ham 202301141803.png]]&lt;br /&gt;
[[Image:Amazfish icon 202301141810.png]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other links ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/norayr/harbour-amazfish&lt;br /&gt;
* https://openrepos.net/content/piggz/amazfish&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1456</id>
		<title>Extras/Amazfish</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1456"/>
		<updated>2023-01-16T15:45:30Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Package&lt;br /&gt;
|image=[[Image:202301161852.png|250px]]&lt;br /&gt;
|status=Working&lt;br /&gt;
|date_in_repo=2022-09-16&lt;br /&gt;
|maemo_leste_repo=https://github.com/maemo-leste-extras/mstardict&lt;br /&gt;
|category=Utilities&lt;br /&gt;
|packager=[[User:Norayr]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this. ==&lt;br /&gt;
&lt;br /&gt;
Amazfish is an application and a daemon initially developed to connect a Sailfish OS to Amazfit Bip watches.&lt;br /&gt;
&lt;br /&gt;
Later support for more watches been added. Also the developer rewrote the interface, so that the application would work on non Sailfish Linux&lt;br /&gt;
&lt;br /&gt;
At the moment of writing this page, the [https://github.com/piggz/harbour-amazfish github page] lists these devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There are 3 tiers of supported devices:&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
These are devices I have, have tested and will try not to break any functioanlity for an include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit Bip&lt;br /&gt;
    Amazfit GTS&lt;br /&gt;
    Amazfit GTR2&lt;br /&gt;
    Pinetime Infinitme&lt;br /&gt;
    Bangle.js&lt;br /&gt;
&lt;br /&gt;
Silver&lt;br /&gt;
&lt;br /&gt;
These are devices which are properly implemented in the application, but I do not have and are tested by the commuity, and include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit BipS&lt;br /&gt;
    Amazfit Bip Lite&lt;br /&gt;
    Amazfit GTS2&lt;br /&gt;
&lt;br /&gt;
I do not promise not to break funcaionality in these, but will fix where I can&lt;br /&gt;
Bronze&lt;br /&gt;
&lt;br /&gt;
These are devices which use a protocol that is close to another suppored device, and so is treated like that device. Your mileage may vary with these devices.&lt;br /&gt;
&lt;br /&gt;
    MiBand 2/3/4&lt;br /&gt;
    Amazfit Cor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to pair ==&lt;br /&gt;
&lt;br /&gt;
Run the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
run the app from the menu, or, it would be good to run it for the first time also in console to see the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-ui-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On droid4, the window doesn&#039;t fit on the screen, so it may make sense to run the program with ssh X forwarding.&lt;br /&gt;
&lt;br /&gt;
Though on droid4, the author of this article was not able to pair the Amazfish Bip watch: the watch connects and disconnects, shows a warning &#039;Disconnected&#039;, and this is visible in the output of terminal running amazfish daemon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Droid4 amazfish pairing failed 202301161800.png|500px]]&lt;br /&gt;
&lt;br /&gt;
and the amazfish app outpit is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
kf.bluezqt: PendingCall Error: &amp;quot;No discovery started&amp;quot;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the app started, and at first start will ask to write a name and configure your profile.&lt;br /&gt;
On Pinephone, at the time of writing this article, it was not possible to write in the name field without the hardware keyboard.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161835.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Then on the main application screen tap on &#039;Pair watch&#039;.&lt;br /&gt;
If it shows &#039;Unpair&#039;, tap on &#039;Accept&#039;, and then choose &#039;Pair watch&#039; again.&lt;br /&gt;
&lt;br /&gt;
[[Image:File:202301161836.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see list of watches. I chose Amazfit Bip.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161837.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Tap &#039;Scan devices&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161838.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Without this though we see the running circle, the watch won&#039;t be found.&lt;br /&gt;
When you see the watch, tap on it, or &#039;Stop scan&#039; and then choose the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161839.png|500px]]&lt;br /&gt;
&lt;br /&gt;
You should get the pairing request on the watch. &lt;br /&gt;
&lt;br /&gt;
(btw, the hardware address of the watch is autogenerated upon every reset)&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161840.png|500px]]&lt;br /&gt;
&lt;br /&gt;
If you didn&#039;t, that&#039;s okay. The Amazfish shows the main screen again, and &#039;Disconnect from watch&#039; in the upper right corner.&lt;br /&gt;
That means it thinks everything is right and the watch is connected.&lt;br /&gt;
Tap on &#039;Disconnect the watch&#039;, and then to &#039;Connect&#039;, at that moment you may get a pairing request on the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
If not, repeat the whole sequence again: unpair, and try pairing again.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
When the watch paired and connected, try to go to settings, then debug, then tap on buttons that show test notifications.&lt;br /&gt;
&lt;br /&gt;
Notifications routed via libnotify should be shown from all applications.&lt;br /&gt;
&lt;br /&gt;
Tap on &#039;Data grahps&#039; and then &#039;Download data&#039; - that would connect and download the recent statistics from the watch.&lt;br /&gt;
Important: it may not show downloaded data! tap on arrow right, to see the next day, then arrow left to see the current day.&lt;br /&gt;
Now the data will be there!&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161852.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Some pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
[[Image:Amazfish in ham 202301141803.png]]&lt;br /&gt;
[[Image:Amazfish icon 202301141810.png]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other links ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/norayr/harbour-amazfish&lt;br /&gt;
* https://openrepos.net/content/piggz/amazfish&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1455</id>
		<title>Extras/Amazfish</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1455"/>
		<updated>2023-01-16T15:43:23Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Package&lt;br /&gt;
|image=[[Image:202301161852.png|250px]]&lt;br /&gt;
|status=Working&lt;br /&gt;
|date_in_repo=2022-09-16&lt;br /&gt;
|maemo_leste_repo=https://github.com/maemo-leste-extras/mstardict&lt;br /&gt;
|category=Utilities&lt;br /&gt;
|packager=[[User:Norayr]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this. ==&lt;br /&gt;
&lt;br /&gt;
Amazfish is an application and a daemon initially developed to connect a Sailfish OS to Amazfit Bip watches.&lt;br /&gt;
&lt;br /&gt;
Later support for more watches been added. Also the developer rewrote the interface, so that the application would work on non Sailfish Linux&lt;br /&gt;
&lt;br /&gt;
At the moment of writing this page, the [https://github.com/piggz/harbour-amazfish github page] lists these devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There are 3 tiers of supported devices:&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
These are devices I have, have tested and will try not to break any functioanlity for an include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit Bip&lt;br /&gt;
    Amazfit GTS&lt;br /&gt;
    Amazfit GTR2&lt;br /&gt;
    Pinetime Infinitme&lt;br /&gt;
    Bangle.js&lt;br /&gt;
&lt;br /&gt;
Silver&lt;br /&gt;
&lt;br /&gt;
These are devices which are properly implemented in the application, but I do not have and are tested by the commuity, and include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit BipS&lt;br /&gt;
    Amazfit Bip Lite&lt;br /&gt;
    Amazfit GTS2&lt;br /&gt;
&lt;br /&gt;
I do not promise not to break funcaionality in these, but will fix where I can&lt;br /&gt;
Bronze&lt;br /&gt;
&lt;br /&gt;
These are devices which use a protocol that is close to another suppored device, and so is treated like that device. Your mileage may vary with these devices.&lt;br /&gt;
&lt;br /&gt;
    MiBand 2/3/4&lt;br /&gt;
    Amazfit Cor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to pair ==&lt;br /&gt;
&lt;br /&gt;
Run the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
run the app from the menu, or, it would be good to run it for the first time also in console to see the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-ui-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On droid4, the window doesn&#039;t fit on the screen, so it may make sense to run the program with ssh X forwarding.&lt;br /&gt;
&lt;br /&gt;
Though on droid4, the author of this article was not able to pair the Amazfish Bip watch: the watch connects and disconnects, shows a warning &#039;Disconnected&#039;, and this is visible in the output of terminal running amazfish daemon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Droid4 amazfish pairing failed 202301161800.png|300px]]&lt;br /&gt;
&lt;br /&gt;
and the amazfish app outpit is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
kf.bluezqt: PendingCall Error: &amp;quot;No discovery started&amp;quot;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the app started, and at first start will ask to write a name and configure your profile.&lt;br /&gt;
On Pinephone, at the time of writing this article, it was not possible to write in the name field without the hardware keyboard.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161835.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Then on the main application screen tap on &#039;Pair watch&#039;.&lt;br /&gt;
If it shows &#039;Unpair&#039;, tap on &#039;Accept&#039;, and then choose &#039;Pair watch&#039; again.&lt;br /&gt;
&lt;br /&gt;
[[Image:File:202301161836.png|300px]]&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see list of watches. I chose Amazfit Bip.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161837.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Tap &#039;Scan devices&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161838.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Without this though we see the running circle, the watch won&#039;t be found.&lt;br /&gt;
When you see the watch, tap on it, or &#039;Stop scan&#039; and then choose the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161839.png|300px]]&lt;br /&gt;
&lt;br /&gt;
You should get the pairing request on the watch. &lt;br /&gt;
&lt;br /&gt;
(btw, the hardware address of the watch is autogenerated upon every reset)&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161840.png|300px]]&lt;br /&gt;
&lt;br /&gt;
If you didn&#039;t, that&#039;s okay. The Amazfish shows the main screen again, and &#039;Disconnect from watch&#039; in the upper right corner.&lt;br /&gt;
That means it thinks everything is right and the watch is connected.&lt;br /&gt;
Tap on &#039;Disconnect the watch&#039;, and then to &#039;Connect&#039;, at that moment you may get a pairing request on the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
If not, repeat the whole sequence again: unpair, and try pairing again.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
When the watch paired and connected, try to go to settings, then debug, then tap on buttons that show test notifications.&lt;br /&gt;
&lt;br /&gt;
Notifications routed via libnotify should be shown from all applications.&lt;br /&gt;
&lt;br /&gt;
Tap on &#039;Data grahps&#039; and then &#039;Download data&#039; - that would connect and download the recent statistics from the watch.&lt;br /&gt;
Important: it may not show downloaded data! tap on arrow right, to see the next day, then arrow left to see the current day.&lt;br /&gt;
Now the data will be there!&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161852.png|300px]]&lt;br /&gt;
&lt;br /&gt;
== Some pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
[[Image:Amazfish in ham 202301141803.png]]&lt;br /&gt;
[[Image:Amazfish icon 202301141810.png]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other links ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/norayr/harbour-amazfish&lt;br /&gt;
* https://openrepos.net/content/piggz/amazfish&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1454</id>
		<title>Extras/Amazfish</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1454"/>
		<updated>2023-01-16T15:42:53Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Package&lt;br /&gt;
|image=[[Image:202301161852.png|250px]]&lt;br /&gt;
|status=Working&lt;br /&gt;
|date_in_repo=2022-09-16&lt;br /&gt;
|maemo_leste_repo=https://github.com/maemo-leste-extras/mstardict&lt;br /&gt;
|category=Utilities&lt;br /&gt;
|packager=[[User:Norayr]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this. ==&lt;br /&gt;
&lt;br /&gt;
Amazfish is an application and a daemon initially developed to connect a Sailfish OS to Amazfit Bip watches.&lt;br /&gt;
&lt;br /&gt;
Later support for more watches been added. Also the developer rewrote the interface, so that the application would work on non Sailfish Linux&lt;br /&gt;
&lt;br /&gt;
At the moment of writing this page, the [https://github.com/piggz/harbour-amazfish github page] lists these devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There are 3 tiers of supported devices:&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
These are devices I have, have tested and will try not to break any functioanlity for an include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit Bip&lt;br /&gt;
    Amazfit GTS&lt;br /&gt;
    Amazfit GTR2&lt;br /&gt;
    Pinetime Infinitme&lt;br /&gt;
    Bangle.js&lt;br /&gt;
&lt;br /&gt;
Silver&lt;br /&gt;
&lt;br /&gt;
These are devices which are properly implemented in the application, but I do not have and are tested by the commuity, and include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit BipS&lt;br /&gt;
    Amazfit Bip Lite&lt;br /&gt;
    Amazfit GTS2&lt;br /&gt;
&lt;br /&gt;
I do not promise not to break funcaionality in these, but will fix where I can&lt;br /&gt;
Bronze&lt;br /&gt;
&lt;br /&gt;
These are devices which use a protocol that is close to another suppored device, and so is treated like that device. Your mileage may vary with these devices.&lt;br /&gt;
&lt;br /&gt;
    MiBand 2/3/4&lt;br /&gt;
    Amazfit Cor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to pair ==&lt;br /&gt;
&lt;br /&gt;
Run the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
run the app from the menu, or, it would be good to run it for the first time also in console to see the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-ui-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On droid4, the window doesn&#039;t fit on the screen, so it may make sense to run the program with ssh X forwarding.&lt;br /&gt;
&lt;br /&gt;
Though on droid4, the author of this article was not able to pair the Amazfish Bip watch: the watch connects and disconnects, shows a warning &#039;Disconnected&#039;, and this is visible in the output of terminal running amazfish daemon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Droid4 amazfish pairing failed 202301161800.png]]&lt;br /&gt;
&lt;br /&gt;
and the amazfish app outpit is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
kf.bluezqt: PendingCall Error: &amp;quot;No discovery started&amp;quot;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the app started, and at first start will ask to write a name and configure your profile.&lt;br /&gt;
On Pinephone, at the time of writing this article, it was not possible to write in the name field without the hardware keyboard.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161835.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Then on the main application screen tap on &#039;Pair watch&#039;.&lt;br /&gt;
If it shows &#039;Unpair&#039;, tap on &#039;Accept&#039;, and then choose &#039;Pair watch&#039; again.&lt;br /&gt;
&lt;br /&gt;
[[Image:File:202301161836.png|300px]]&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see list of watches. I chose Amazfit Bip.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161837.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Tap &#039;Scan devices&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161838.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Without this though we see the running circle, the watch won&#039;t be found.&lt;br /&gt;
When you see the watch, tap on it, or &#039;Stop scan&#039; and then choose the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161839.png|300px]]&lt;br /&gt;
&lt;br /&gt;
You should get the pairing request on the watch. &lt;br /&gt;
&lt;br /&gt;
(btw, the hardware address of the watch is autogenerated upon every reset)&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161840.png|300px]]&lt;br /&gt;
&lt;br /&gt;
If you didn&#039;t, that&#039;s okay. The Amazfish shows the main screen again, and &#039;Disconnect from watch&#039; in the upper right corner.&lt;br /&gt;
That means it thinks everything is right and the watch is connected.&lt;br /&gt;
Tap on &#039;Disconnect the watch&#039;, and then to &#039;Connect&#039;, at that moment you may get a pairing request on the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
If not, repeat the whole sequence again: unpair, and try pairing again.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
When the watch paired and connected, try to go to settings, then debug, then tap on buttons that show test notifications.&lt;br /&gt;
&lt;br /&gt;
Notifications routed via libnotify should be shown from all applications.&lt;br /&gt;
&lt;br /&gt;
Tap on &#039;Data grahps&#039; and then &#039;Download data&#039; - that would connect and download the recent statistics from the watch.&lt;br /&gt;
Important: it may not show downloaded data! tap on arrow right, to see the next day, then arrow left to see the current day.&lt;br /&gt;
Now the data will be there!&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161852.png|300px]]&lt;br /&gt;
&lt;br /&gt;
== Some pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
[[Image:Amazfish in ham 202301141803.png]]&lt;br /&gt;
[[Image:Amazfish icon 202301141810.png]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other links ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/norayr/harbour-amazfish&lt;br /&gt;
* https://openrepos.net/content/piggz/amazfish&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1453</id>
		<title>Extras/Amazfish</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1453"/>
		<updated>2023-01-16T15:12:00Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Package&lt;br /&gt;
|image=[[Image:202301161852.png|250px]]&lt;br /&gt;
|status=Working&lt;br /&gt;
|date_in_repo=2022-09-16&lt;br /&gt;
|maemo_leste_repo=https://github.com/maemo-leste-extras/mstardict&lt;br /&gt;
|category=Utilities&lt;br /&gt;
|packager=[[User:Norayr]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this. ==&lt;br /&gt;
&lt;br /&gt;
Amazfish is an application and a daemon initially developed to connect a Sailfish OS to Amazfit Bip watches.&lt;br /&gt;
&lt;br /&gt;
Later support for more watches been added. Also the developer rewrote the interface, so that the application would work on non Sailfish Linux&lt;br /&gt;
&lt;br /&gt;
At the moment of writing this page, the [https://github.com/piggz/harbour-amazfish github page] lists these devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There are 3 tiers of supported devices:&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
These are devices I have, have tested and will try not to break any functioanlity for an include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit Bip&lt;br /&gt;
    Amazfit GTS&lt;br /&gt;
    Amazfit GTR2&lt;br /&gt;
    Pinetime Infinitme&lt;br /&gt;
    Bangle.js&lt;br /&gt;
&lt;br /&gt;
Silver&lt;br /&gt;
&lt;br /&gt;
These are devices which are properly implemented in the application, but I do not have and are tested by the commuity, and include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit BipS&lt;br /&gt;
    Amazfit Bip Lite&lt;br /&gt;
    Amazfit GTS2&lt;br /&gt;
&lt;br /&gt;
I do not promise not to break funcaionality in these, but will fix where I can&lt;br /&gt;
Bronze&lt;br /&gt;
&lt;br /&gt;
These are devices which use a protocol that is close to another suppored device, and so is treated like that device. Your mileage may vary with these devices.&lt;br /&gt;
&lt;br /&gt;
    MiBand 2/3/4&lt;br /&gt;
    Amazfit Cor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to pair ==&lt;br /&gt;
&lt;br /&gt;
Run the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
run the app from the menu, or, it would be good to run it for the first time also in console to see the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-ui-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On droid4, the window doesn&#039;t fit on the screen, so it may make sense to run the program with ssh X forwarding. Though on droid4, the author of this article was not able to pair the Amazfish Bip watch: the watch connects and disconnects, shows a warning &#039;Disconnected&#039;, and this is visible in the output of terminal running amazfish daemon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Droid4 amazfish pairing failed 202301161800.png]]&lt;br /&gt;
&lt;br /&gt;
and the amazfish app outpit is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
kf.bluezqt: PendingCall Error: &amp;quot;No discovery started&amp;quot;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the app started, and at first start will ask to write a name and configure your profile.&lt;br /&gt;
On Pinephone, at the time of writing this article, it was not possible to write in the name field without the hardware keyboard.&lt;br /&gt;
&lt;br /&gt;
Then on the main application screen tap on &#039;Pair watch&#039;.&lt;br /&gt;
If it shows &#039;Unpair&#039;, tap on &#039;Accept&#039;, and then choose &#039;Pair watch&#039; again.&lt;br /&gt;
&lt;br /&gt;
Tap &#039;Scan devices&#039;. Without this though we see the running circle, the watch won&#039;t be found.&lt;br /&gt;
When you see the watch, tap on it, or &#039;Stop scan&#039; and then choose the watch.&lt;br /&gt;
You should get the pairing request on the watch. &lt;br /&gt;
&lt;br /&gt;
If you didn&#039;t, that&#039;s okay. The Amazfish shows the main screen again, and &#039;Disconnect from watch&#039; in the upper right corner.&lt;br /&gt;
That means it thinks everything is right and the watch is connected.&lt;br /&gt;
Tap on &#039;Disconnect the watch&#039;, and then to &#039;Connect&#039;, at that moment you may get a pairing request on the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
If not, repeat the whole sequence again: unpair, and try pairing again.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
When the watch paired and connected, try to go to settings, then debug, then tap on buttons that show test notifications.&lt;br /&gt;
&lt;br /&gt;
Notifications routed via libnotify should be shown from all applications.&lt;br /&gt;
&lt;br /&gt;
Tap on &#039;Data grahps&#039; and then &#039;Download data&#039; - that would connect and download the recent statistics from the watch.&lt;br /&gt;
Important: it may not show downloaded data! tap on arrow right, to see the next day, then arrow left to see the current day.&lt;br /&gt;
Now the data will be there!&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161852.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Some pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
[[Image:Amazfish in ham 202301141803.png]]&lt;br /&gt;
[[Image:Amazfish icon 202301141810.png]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other links ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/norayr/harbour-amazfish&lt;br /&gt;
* https://openrepos.net/content/piggz/amazfish&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1452</id>
		<title>Extras/Amazfish</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1452"/>
		<updated>2023-01-16T15:10:52Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Package&lt;br /&gt;
|image=[[Image:202301161852.png&lt;br /&gt;
|250px]]&lt;br /&gt;
|status=Working&lt;br /&gt;
|date_in_repo=2022-09-16&lt;br /&gt;
|maemo_leste_repo=https://github.com/maemo-leste-extras/mstardict&lt;br /&gt;
|category=Utilities&lt;br /&gt;
|packager=[[User:Norayr]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this. ==&lt;br /&gt;
&lt;br /&gt;
Amazfish is an application and a daemon initially developed to connect a Sailfish OS to Amazfit Bip watches.&lt;br /&gt;
&lt;br /&gt;
Later support for more watches been added. Also the developer rewrote the interface, so that the application would work on non Sailfish Linux&lt;br /&gt;
&lt;br /&gt;
At the moment of writing this page, the [https://github.com/piggz/harbour-amazfish github page] lists these devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There are 3 tiers of supported devices:&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
These are devices I have, have tested and will try not to break any functioanlity for an include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit Bip&lt;br /&gt;
    Amazfit GTS&lt;br /&gt;
    Amazfit GTR2&lt;br /&gt;
    Pinetime Infinitme&lt;br /&gt;
    Bangle.js&lt;br /&gt;
&lt;br /&gt;
Silver&lt;br /&gt;
&lt;br /&gt;
These are devices which are properly implemented in the application, but I do not have and are tested by the commuity, and include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit BipS&lt;br /&gt;
    Amazfit Bip Lite&lt;br /&gt;
    Amazfit GTS2&lt;br /&gt;
&lt;br /&gt;
I do not promise not to break funcaionality in these, but will fix where I can&lt;br /&gt;
Bronze&lt;br /&gt;
&lt;br /&gt;
These are devices which use a protocol that is close to another suppored device, and so is treated like that device. Your mileage may vary with these devices.&lt;br /&gt;
&lt;br /&gt;
    MiBand 2/3/4&lt;br /&gt;
    Amazfit Cor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to pair ==&lt;br /&gt;
&lt;br /&gt;
Run the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
run the app from the menu, or, it would be good to run it for the first time also in console to see the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-ui-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On droid4, the window doesn&#039;t fit on the screen, so it may make sense to run the program with ssh X forwarding. Though on droid4, the author of this article was not able to pair the Amazfish Bip watch: the watch connects and disconnects, shows a warning &#039;Disconnected&#039;, and this is visible in the output of terminal running amazfish daemon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Droid4 amazfish pairing failed 202301161800.png]]&lt;br /&gt;
&lt;br /&gt;
and the amazfish app outpit is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
kf.bluezqt: PendingCall Error: &amp;quot;No discovery started&amp;quot;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the app started, and at first start will ask to write a name and configure your profile.&lt;br /&gt;
On Pinephone, at the time of writing this article, it was not possible to write in the name field without the hardware keyboard.&lt;br /&gt;
&lt;br /&gt;
Then on the main application screen tap on &#039;Pair watch&#039;.&lt;br /&gt;
If it shows &#039;Unpair&#039;, tap on &#039;Accept&#039;, and then choose &#039;Pair watch&#039; again.&lt;br /&gt;
&lt;br /&gt;
Tap &#039;Scan devices&#039;. Without this though we see the running circle, the watch won&#039;t be found.&lt;br /&gt;
When you see the watch, tap on it, or &#039;Stop scan&#039; and then choose the watch.&lt;br /&gt;
You should get the pairing request on the watch. &lt;br /&gt;
&lt;br /&gt;
If you didn&#039;t, that&#039;s okay. The Amazfish shows the main screen again, and &#039;Disconnect from watch&#039; in the upper right corner.&lt;br /&gt;
That means it thinks everything is right and the watch is connected.&lt;br /&gt;
Tap on &#039;Disconnect the watch&#039;, and then to &#039;Connect&#039;, at that moment you may get a pairing request on the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg]]&lt;br /&gt;
&lt;br /&gt;
If not, repeat the whole sequence again: unpair, and try pairing again.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
When the watch paired and connected, try to go to settings, then debug, then tap on buttons that show test notifications.&lt;br /&gt;
&lt;br /&gt;
Notifications routed via libnotify should be shown from all applications.&lt;br /&gt;
&lt;br /&gt;
Tap on &#039;Data grahps&#039; and then &#039;Download data&#039; - that would connect and download the recent statistics from the watch.&lt;br /&gt;
Important: it may not show downloaded data! tap on arrow right, to see the next day, then arrow left to see the current day.&lt;br /&gt;
Now the data will be there!&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161852.png]]&lt;br /&gt;
&lt;br /&gt;
== Some pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
[[Image:Amazfish in ham 202301141803.png]]&lt;br /&gt;
[[Image:Amazfish icon 202301141810.png]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other links ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/norayr/harbour-amazfish&lt;br /&gt;
* https://openrepos.net/content/piggz/amazfish&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1451</id>
		<title>Extras/Amazfish</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Amazfish&amp;diff=1451"/>
		<updated>2023-01-16T15:10:16Z</updated>

		<summary type="html">&lt;p&gt;Norayr: Created page with &amp;quot;{{Infobox Package |image=250px |status=Working |date_in_repo=2022-09-16 |maemo_leste_repo=https://github.com/maemo-leste-extras/mstard...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Package&lt;br /&gt;
|image=[[Image:MStarDict_SelectDictionary.png|250px]]&lt;br /&gt;
|status=Working&lt;br /&gt;
|date_in_repo=2022-09-16&lt;br /&gt;
|maemo_leste_repo=https://github.com/maemo-leste-extras/mstardict&lt;br /&gt;
|category=Utilities&lt;br /&gt;
|packager=[[User:Norayr]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What is this. ==&lt;br /&gt;
&lt;br /&gt;
Amazfish is an application and a daemon initially developed to connect a Sailfish OS to Amazfit Bip watches.&lt;br /&gt;
&lt;br /&gt;
Later support for more watches been added. Also the developer rewrote the interface, so that the application would work on non Sailfish Linux&lt;br /&gt;
&lt;br /&gt;
At the moment of writing this page, the [https://github.com/piggz/harbour-amazfish github page] lists these devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There are 3 tiers of supported devices:&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
These are devices I have, have tested and will try not to break any functioanlity for an include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit Bip&lt;br /&gt;
    Amazfit GTS&lt;br /&gt;
    Amazfit GTR2&lt;br /&gt;
    Pinetime Infinitme&lt;br /&gt;
    Bangle.js&lt;br /&gt;
&lt;br /&gt;
Silver&lt;br /&gt;
&lt;br /&gt;
These are devices which are properly implemented in the application, but I do not have and are tested by the commuity, and include:&lt;br /&gt;
&lt;br /&gt;
    Amazfit BipS&lt;br /&gt;
    Amazfit Bip Lite&lt;br /&gt;
    Amazfit GTS2&lt;br /&gt;
&lt;br /&gt;
I do not promise not to break funcaionality in these, but will fix where I can&lt;br /&gt;
Bronze&lt;br /&gt;
&lt;br /&gt;
These are devices which use a protocol that is close to another suppored device, and so is treated like that device. Your mileage may vary with these devices.&lt;br /&gt;
&lt;br /&gt;
    MiBand 2/3/4&lt;br /&gt;
    Amazfit Cor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to pair ==&lt;br /&gt;
&lt;br /&gt;
Run the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
run the app from the menu, or, it would be good to run it for the first time also in console to see the output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/amazfish-ui-launcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On droid4, the window doesn&#039;t fit on the screen, so it may make sense to run the program with ssh X forwarding. Though on droid4, the author of this article was not able to pair the Amazfish Bip watch: the watch connects and disconnects, shows a warning &#039;Disconnected&#039;, and this is visible in the output of terminal running amazfish daemon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Droid4 amazfish pairing failed 202301161800.png]]&lt;br /&gt;
&lt;br /&gt;
and the amazfish app outpit is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
kf.bluezqt: PendingCall Error: &amp;quot;No discovery started&amp;quot;&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::pair(const QString&amp;amp;, QString)&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: pairing&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
void DaemonInterface::changeConnectionState()&lt;br /&gt;
qml: disconnected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the app started, and at first start will ask to write a name and configure your profile.&lt;br /&gt;
On Pinephone, at the time of writing this article, it was not possible to write in the name field without the hardware keyboard.&lt;br /&gt;
&lt;br /&gt;
Then on the main application screen tap on &#039;Pair watch&#039;.&lt;br /&gt;
If it shows &#039;Unpair&#039;, tap on &#039;Accept&#039;, and then choose &#039;Pair watch&#039; again.&lt;br /&gt;
&lt;br /&gt;
Tap &#039;Scan devices&#039;. Without this though we see the running circle, the watch won&#039;t be found.&lt;br /&gt;
When you see the watch, tap on it, or &#039;Stop scan&#039; and then choose the watch.&lt;br /&gt;
You should get the pairing request on the watch. &lt;br /&gt;
&lt;br /&gt;
If you didn&#039;t, that&#039;s okay. The Amazfish shows the main screen again, and &#039;Disconnect from watch&#039; in the upper right corner.&lt;br /&gt;
That means it thinks everything is right and the watch is connected.&lt;br /&gt;
Tap on &#039;Disconnect the watch&#039;, and then to &#039;Connect&#039;, at that moment you may get a pairing request on the watch.&lt;br /&gt;
&lt;br /&gt;
[[Image:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg]]&lt;br /&gt;
&lt;br /&gt;
If not, repeat the whole sequence again: unpair, and try pairing again.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
When the watch paired and connected, try to go to settings, then debug, then tap on buttons that show test notifications.&lt;br /&gt;
&lt;br /&gt;
Notifications routed via libnotify should be shown from all applications.&lt;br /&gt;
&lt;br /&gt;
Tap on &#039;Data grahps&#039; and then &#039;Download data&#039; - that would connect and download the recent statistics from the watch.&lt;br /&gt;
Important: it may not show downloaded data! tap on arrow right, to see the next day, then arrow left to see the current day.&lt;br /&gt;
Now the data will be there!&lt;br /&gt;
&lt;br /&gt;
[[Image:202301161852.png]]&lt;br /&gt;
&lt;br /&gt;
== Some pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
[[Image:Amazfish in ham 202301141803.png]]&lt;br /&gt;
[[Image:Amazfish icon 202301141810.png]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other links ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/norayr/harbour-amazfish&lt;br /&gt;
* https://openrepos.net/content/piggz/amazfish&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:20230116_184201_-fujichrome-sensia-400-exp-2011.jpg&amp;diff=1450</id>
		<title>File:20230116 184201 -fujichrome-sensia-400-exp-2011.jpg</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:20230116_184201_-fujichrome-sensia-400-exp-2011.jpg&amp;diff=1450"/>
		<updated>2023-01-16T15:09:11Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:202301161852.png&amp;diff=1449</id>
		<title>File:202301161852.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:202301161852.png&amp;diff=1449"/>
		<updated>2023-01-16T15:03:57Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:202301161846.png&amp;diff=1448</id>
		<title>File:202301161846.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:202301161846.png&amp;diff=1448"/>
		<updated>2023-01-16T15:03:43Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:202301161840.png&amp;diff=1447</id>
		<title>File:202301161840.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:202301161840.png&amp;diff=1447"/>
		<updated>2023-01-16T15:03:30Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:202301161839.png&amp;diff=1446</id>
		<title>File:202301161839.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:202301161839.png&amp;diff=1446"/>
		<updated>2023-01-16T15:03:21Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:202301161838.png&amp;diff=1445</id>
		<title>File:202301161838.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:202301161838.png&amp;diff=1445"/>
		<updated>2023-01-16T15:03:10Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:202301161837.png&amp;diff=1444</id>
		<title>File:202301161837.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:202301161837.png&amp;diff=1444"/>
		<updated>2023-01-16T14:59:31Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:202301161836.png&amp;diff=1443</id>
		<title>File:202301161836.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:202301161836.png&amp;diff=1443"/>
		<updated>2023-01-16T14:59:22Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:202301161835.png&amp;diff=1442</id>
		<title>File:202301161835.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:202301161835.png&amp;diff=1442"/>
		<updated>2023-01-16T14:58:45Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:Amazfish_icon_202301141810.png&amp;diff=1441</id>
		<title>File:Amazfish icon 202301141810.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Amazfish_icon_202301141810.png&amp;diff=1441"/>
		<updated>2023-01-16T14:22:03Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:Amazfish_in_ham_202301141803.png&amp;diff=1440</id>
		<title>File:Amazfish in ham 202301141803.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Amazfish_in_ham_202301141803.png&amp;diff=1440"/>
		<updated>2023-01-16T14:21:15Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:Droid4_amazfish_pairing_failed_202301161800.png&amp;diff=1439</id>
		<title>File:Droid4 amazfish pairing failed 202301161800.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Droid4_amazfish_pairing_failed_202301161800.png&amp;diff=1439"/>
		<updated>2023-01-16T14:19:12Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1425</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1425"/>
		<updated>2022-10-20T21:16:31Z</updated>

		<summary type="html">&lt;p&gt;Norayr: /* icon */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it&#039;s likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let&#039;s say we&#039;d like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it&#039;s here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let&#039;s say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `sharutils` installed. (app-arch/sharutils in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* optimize it: &amp;lt;pre&amp;gt;optipng -strip all&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-cli_icon_appman_sample_v002.png]]&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-term_icon_v002_a001_48p.png]]&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [http://norayr.am/tips/port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64 here]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://github.com/maemo-leste-extras/ maemo-leste-extras] and [https://github.com/maemo-leste-extras/bugtracker/issues/new/choose open an issue] in the [https://github.com/maemo-leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get github invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@github.com:maemo-leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch &#039;maemo/beowulf&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for &#039;maemo/beowulf&#039; on GitHub by visiting:&lt;br /&gt;
remote:      https://github.com/maemo-leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
== phoenix ==&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1424</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1424"/>
		<updated>2022-10-20T21:08:57Z</updated>

		<summary type="html">&lt;p&gt;Norayr: /* cli apps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it&#039;s likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let&#039;s say we&#039;d like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it&#039;s here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let&#039;s say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package|this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `sharutils` installed. (app-arch/sharutils in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-cli_icon_appman_sample_v002.png]]&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-term_icon_v002_a001_48p.png]]&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [http://norayr.am/tips/port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64 here]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://github.com/maemo-leste-extras/ maemo-leste-extras] and [https://github.com/maemo-leste-extras/bugtracker/issues/new/choose open an issue] in the [https://github.com/maemo-leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get github invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@github.com:maemo-leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch &#039;maemo/beowulf&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for &#039;maemo/beowulf&#039; on GitHub by visiting:&lt;br /&gt;
remote:      https://github.com/maemo-leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
== phoenix ==&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1423</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1423"/>
		<updated>2022-10-20T21:08:04Z</updated>

		<summary type="html">&lt;p&gt;Norayr: /* cli apps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it&#039;s likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let&#039;s say we&#039;d like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it&#039;s here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let&#039;s say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package|this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `sharutils` installed. (app-arch/sharutils in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-cli_icon_appman_sample_v002.png]]&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-term_icon_v002_a001_48p.png]]&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [[https://norayr.am/tips/port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64|here]]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://github.com/maemo-leste-extras/ maemo-leste-extras] and [https://github.com/maemo-leste-extras/bugtracker/issues/new/choose open an issue] in the [https://github.com/maemo-leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get github invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@github.com:maemo-leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch &#039;maemo/beowulf&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for &#039;maemo/beowulf&#039; on GitHub by visiting:&lt;br /&gt;
remote:      https://github.com/maemo-leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
== phoenix ==&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:Maemo-term_icon_v002_a001_48p.png&amp;diff=1422</id>
		<title>File:Maemo-term icon v002 a001 48p.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Maemo-term_icon_v002_a001_48p.png&amp;diff=1422"/>
		<updated>2022-10-20T21:06:15Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:Maemo-cli_icon_appman_sample_v002.png&amp;diff=1421</id>
		<title>File:Maemo-cli icon appman sample v002.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Maemo-cli_icon_appman_sample_v002.png&amp;diff=1421"/>
		<updated>2022-10-20T21:04:00Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1420</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1420"/>
		<updated>2022-10-20T20:57:09Z</updated>

		<summary type="html">&lt;p&gt;Norayr: /* phoenix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it&#039;s likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let&#039;s say we&#039;d like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it&#039;s here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let&#039;s say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package|this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `sharutils` installed. (app-arch/sharutils in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;image&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;image&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [[port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64|here]]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://github.com/maemo-leste-extras/ maemo-leste-extras] and [https://github.com/maemo-leste-extras/bugtracker/issues/new/choose open an issue] in the [https://github.com/maemo-leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get github invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@github.com:maemo-leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch &#039;maemo/beowulf&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for &#039;maemo/beowulf&#039; on GitHub by visiting:&lt;br /&gt;
remote:      https://github.com/maemo-leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
== phoenix ==&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1419</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1419"/>
		<updated>2022-10-20T20:56:28Z</updated>

		<summary type="html">&lt;p&gt;Norayr: /* Porting existing Maemo Fremantle packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it&#039;s likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let&#039;s say we&#039;d like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it&#039;s here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let&#039;s say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package|this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `sharutils` installed. (app-arch/sharutils in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;image&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;image&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [[port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64|here]]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://github.com/maemo-leste-extras/ maemo-leste-extras] and [https://github.com/maemo-leste-extras/bugtracker/issues/new/choose open an issue] in the [https://github.com/maemo-leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get github invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@github.com:maemo-leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@github.com:maemo-leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch &#039;maemo/beowulf&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for &#039;maemo/beowulf&#039; on GitHub by visiting:&lt;br /&gt;
remote:      https://github.com/maemo-leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To github.com:maemo-leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
= phoenix =&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
</feed>