<?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-09-05T06:39:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Barev&amp;diff=2016</id>
		<title>Extras/Barev</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Barev&amp;diff=2016"/>
		<updated>2026-07-09T13:04:36Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Barev P2P communication protocol==&lt;br /&gt;
&lt;br /&gt;
The protocol was created out of attempts to make serverless communication. The authors were experimenting on how to use standardized serverless protocol: Bonjour(XEP-0174), over the Yggdrasil network.&lt;br /&gt;
&lt;br /&gt;
It turned out we can&#039;t implement all Bonjour features without MDNS, so we had to fork the Pidgin Bonjour plugin, and created a Barev plugin, where MDNS dependent Bonjour features were replaced by xmpp stanzas from XEP-0004, XEP-0071, XEP-0085, XEP-0095, XEP-0096, XEP-0153, XEP-0199.&lt;br /&gt;
&lt;br /&gt;
Usually Barev chat is used in Pidgin, as a [https://codeberg.org/norayr/barev-purple purple plugin]. &lt;br /&gt;
You can chat with people who have Barev messenger - be it in Pidgin, or in Maemo. There are WIP Android/ios clients too. &lt;br /&gt;
&lt;br /&gt;
== What is supported==&lt;br /&gt;
&lt;br /&gt;
On Pidgin, statuses:(Online, Away, Do not disturb), status line, avatars, typing notifications, file transfers, and of course chats are supported. &lt;br /&gt;
In maemo/conversations, all the features are supported, except Maemo has no &amp;quot;Away&amp;quot; status, and it has no file transfers.&lt;br /&gt;
&lt;br /&gt;
If the other party is offline, the message will be queued and delivered once the contact becomes available. The messages are queued in memory currently, after the device restart (or pidgin restart) they will be lost.&lt;br /&gt;
&lt;br /&gt;
Each Barev client is one account. So if you have one Barev in Pidgin on your desktop, and one in Maemo, those are different accounts. Your contacts need to choose where to write.&lt;br /&gt;
&lt;br /&gt;
==How to install==&lt;br /&gt;
&lt;br /&gt;
Get &amp;lt;pre&amp;gt;rtcom-accounts-plugin-barev&amp;lt;/pre&amp;gt; in Hildon Application Manager.&lt;br /&gt;
&lt;br /&gt;
It will pull as a dependency &amp;lt;pre&amp;gt;Yggdrasil&amp;lt;/pre&amp;gt; and &amp;lt;pre&amp;gt;barev-purple&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Add an account ==&lt;br /&gt;
&lt;br /&gt;
Go to Settings, &amp;lt;pre&amp;gt;VoIP and IM accounts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Voip and im accounts.png]]&lt;br /&gt;
&lt;br /&gt;
It&#039;ll show a list of already added accounts.&lt;br /&gt;
&lt;br /&gt;
[[File:Accounts.png]]&lt;br /&gt;
&lt;br /&gt;
Press New to add an account.&lt;br /&gt;
&lt;br /&gt;
[[File:Choose barev.png]]&lt;br /&gt;
&lt;br /&gt;
Choose a nick, type it in:&lt;br /&gt;
&lt;br /&gt;
[[File:Choose nick.png]]&lt;br /&gt;
&lt;br /&gt;
And here&#039;s a list of your accounts.&lt;br /&gt;
&lt;br /&gt;
[[File:List of accounts.png]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s basically it. &lt;br /&gt;
&lt;br /&gt;
==Add contacts==&lt;br /&gt;
&lt;br /&gt;
Before adding an account, I would recommend to restart the device. Telepathy-haze doesn&#039;t always register the account without restart (at least you can find the telepathy daemon and restart?). And that leads to the contact that you&#039;ll add in the next step to loose its haze record/misbehave. Better restart now and proceed.&lt;br /&gt;
&lt;br /&gt;
Your Barev address is your nick@your_yggdrasil_ipv6 address. The nick you already chose.&lt;br /&gt;
&lt;br /&gt;
To tell others how to add you, you need to know your Yggdrasil address.&lt;br /&gt;
&lt;br /&gt;
There are several ways to know your Yggdrasil address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yggdrasilctl getself&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There&#039;s a field: &amp;lt;pre&amp;gt;IPv6 address&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can take it from there.&lt;br /&gt;
&lt;br /&gt;
Other way is to run &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have not configured Yggdrasil yourself, before installing Barev, then Barev have configured you a &amp;lt;pre&amp;gt;barev0&amp;lt;/pre&amp;gt; network interface. You can find your Yggdrasil IPv6 address under it.&lt;br /&gt;
&lt;br /&gt;
Now go to the addressbook and let&#039;s add a Barev contact.&lt;br /&gt;
&lt;br /&gt;
[[File:Abook.png]]&lt;br /&gt;
&lt;br /&gt;
Tap on &amp;quot;New contact&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:New contact.png]]&lt;br /&gt;
&lt;br /&gt;
Fill the fields, add name, surname, and paste your friend&#039;s nick@ipv6 in Barev field.&lt;br /&gt;
&lt;br /&gt;
[[File:Adding barev contact.png]]&lt;br /&gt;
&lt;br /&gt;
Then your addressbook will list your contact, and if the contact also added you back, you&#039;ll see them online.&lt;br /&gt;
&lt;br /&gt;
[[File:Abook with barev contact.png]]&lt;br /&gt;
&lt;br /&gt;
==How to add you==&lt;br /&gt;
&lt;br /&gt;
Your contact can add you in Pidgin or other Maemo device.&lt;br /&gt;
&lt;br /&gt;
In pidgin, they must use Buddies -&amp;gt; Add buddy.&lt;br /&gt;
&lt;br /&gt;
Then paste your Yggdrasil address in Buddy&#039;s username field, choose a group to which to add you, and that&#039;s it.&lt;br /&gt;
&lt;br /&gt;
[[File:Pidgin add barev contact.png]]&lt;br /&gt;
&lt;br /&gt;
And here your maemo account is becoming online.&lt;br /&gt;
&lt;br /&gt;
[[File:Pidgin contact list.png]]&lt;br /&gt;
&lt;br /&gt;
==Start chatting==&lt;br /&gt;
&lt;br /&gt;
You can start chatting with your contact by tapping on Barev field in the contact&#039;s page:&lt;br /&gt;
&lt;br /&gt;
[[File:Barev contact page.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Barev chat window.png]]&lt;br /&gt;
&lt;br /&gt;
==Set status==&lt;br /&gt;
&lt;br /&gt;
You can set Online, Busy, and Offline, and also choose a status line.&lt;br /&gt;
&lt;br /&gt;
[[File:Barev status.png]]&lt;br /&gt;
&lt;br /&gt;
Have fun!!&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:Barev_chat_window.png&amp;diff=2015</id>
		<title>File:Barev chat window.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Barev_chat_window.png&amp;diff=2015"/>
		<updated>2026-07-08T15:11:49Z</updated>

		<summary type="html">&lt;p&gt;Norayr: Norayr uploaded a new version of File:Barev chat window.png&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=Extras/Barev&amp;diff=2014</id>
		<title>Extras/Barev</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Barev&amp;diff=2014"/>
		<updated>2026-07-08T15:06:40Z</updated>

		<summary type="html">&lt;p&gt;Norayr: /* What is supported */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Barev P2P communication protocol==&lt;br /&gt;
&lt;br /&gt;
The protocol was created out of attempts to make serverless communication. The authors were experimenting on how to use standardized serverless protocol: Bonjour(XEP-0174), over the Yggdrasil network.&lt;br /&gt;
&lt;br /&gt;
It turned out we can&#039;t implement all Bonjour features without MDNS, so we had to fork the Pidgin Bonjour plugin, and created a Barev plugin, where MDNS dependent Bonjour features were replaced by xmpp stanzas from XEP-0004, XEP-0071, XEP-0085, XEP-0095, XEP-0096, XEP-0153, XEP-0199.&lt;br /&gt;
&lt;br /&gt;
Usually Barev chat is used in Pidgin, as a [https://codeberg.org/norayr/barev-purple purple plugin]. &lt;br /&gt;
You can chat with people who have Barev messenger - be it in Pidgin, or in Maemo. There are WIP Android/ios clients too. &lt;br /&gt;
&lt;br /&gt;
== What is supported==&lt;br /&gt;
&lt;br /&gt;
On Pidgin, statuses:(Online, Away, Do not disturb), status line, avatars, typing notifications, file transfers, and of course chats are supported. &lt;br /&gt;
In maemo/conversations, all the features are supported, except Maemo has no &amp;quot;Away&amp;quot; status, and it has no file transfers.&lt;br /&gt;
&lt;br /&gt;
If the other party is offline, the message will be queued and delivered once the contact becomes available. The messages are queued in memory currently, after the device restart (or pidgin restart) they will be lost.&lt;br /&gt;
&lt;br /&gt;
Each Barev client is one account. So if you have one Barev in Pidgin on your desktop, and one in Maemo, those are different accounts. Your contacts need to choose where to write.&lt;br /&gt;
&lt;br /&gt;
==How to install==&lt;br /&gt;
&lt;br /&gt;
Get &amp;lt;pre&amp;gt;rtcom-accounts-plugin-barev&amp;lt;/pre&amp;gt; in Hildon Application Manager.&lt;br /&gt;
&lt;br /&gt;
It will pull as a dependency &amp;lt;pre&amp;gt;Yggdrasil&amp;lt;/pre&amp;gt; and &amp;lt;pre&amp;gt;barev-purple&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Add an account ==&lt;br /&gt;
&lt;br /&gt;
Go to Settings, &amp;lt;pre&amp;gt;VoIP and IM accounts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Voip and im accounts.png]]&lt;br /&gt;
&lt;br /&gt;
It&#039;ll show a list of already added accounts.&lt;br /&gt;
&lt;br /&gt;
[[File:Accounts.png]]&lt;br /&gt;
&lt;br /&gt;
Press New to add an account.&lt;br /&gt;
&lt;br /&gt;
[[File:Choose barev.png]]&lt;br /&gt;
&lt;br /&gt;
Choose a nick, type it in:&lt;br /&gt;
&lt;br /&gt;
[[File:Choose nick.png]]&lt;br /&gt;
&lt;br /&gt;
And here&#039;s a list of your accounts.&lt;br /&gt;
&lt;br /&gt;
[[File:List of accounts.png]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s basically it. &lt;br /&gt;
&lt;br /&gt;
==Add contacts==&lt;br /&gt;
&lt;br /&gt;
Your Barev address is your nick@your_yggdrasil_ipv6 address. The nick you already chose.&lt;br /&gt;
&lt;br /&gt;
To tell others how to add you, you need to know your Yggdrasil address.&lt;br /&gt;
&lt;br /&gt;
There are several ways to know your Yggdrasil address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yggdrasilctl getself&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There&#039;s a field: &amp;lt;pre&amp;gt;IPv6 address&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can take it from there.&lt;br /&gt;
&lt;br /&gt;
Other way is to run &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have not configured Yggdrasil yourself, before installing Barev, then Barev have configured you a &amp;lt;pre&amp;gt;barev0&amp;lt;/pre&amp;gt; network interface. You can find your Yggdrasil IPv6 address under it.&lt;br /&gt;
&lt;br /&gt;
Now go to the addressbook and let&#039;s add a Barev contact.&lt;br /&gt;
&lt;br /&gt;
[[File:Abook.png]]&lt;br /&gt;
&lt;br /&gt;
Tap on &amp;quot;New contact&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:New contact.png]]&lt;br /&gt;
&lt;br /&gt;
Fill the fields, add name, surname, and paste your friend&#039;s nick@ipv6 in Barev field.&lt;br /&gt;
&lt;br /&gt;
[[File:Adding barev contact.png]]&lt;br /&gt;
&lt;br /&gt;
Then your addressbook will list your contact, and if the contact also added you back, you&#039;ll see them online.&lt;br /&gt;
&lt;br /&gt;
[[File:Abook with barev contact.png]]&lt;br /&gt;
&lt;br /&gt;
==How to add you==&lt;br /&gt;
&lt;br /&gt;
Your contact can add you in Pidgin or other Maemo device.&lt;br /&gt;
&lt;br /&gt;
In pidgin, they must use Buddies -&amp;gt; Add buddy.&lt;br /&gt;
&lt;br /&gt;
Then paste your Yggdrasil address in Buddy&#039;s username field, choose a group to which to add you, and that&#039;s it.&lt;br /&gt;
&lt;br /&gt;
[[File:Pidgin add barev contact.png]]&lt;br /&gt;
&lt;br /&gt;
And here your maemo account is becoming online.&lt;br /&gt;
&lt;br /&gt;
[[File:Pidgin contact list.png]]&lt;br /&gt;
&lt;br /&gt;
==Start chatting==&lt;br /&gt;
&lt;br /&gt;
You can start chatting with your contact by tapping on Barev field in the contact&#039;s page:&lt;br /&gt;
&lt;br /&gt;
[[File:Barev contact page.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Barev chat window.png]]&lt;br /&gt;
&lt;br /&gt;
==Set status==&lt;br /&gt;
&lt;br /&gt;
You can set Online, Busy, and Offline, and also choose a status line.&lt;br /&gt;
&lt;br /&gt;
[[File:Barev status.png]]&lt;br /&gt;
&lt;br /&gt;
Have fun!!&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Extras/Barev&amp;diff=2013</id>
		<title>Extras/Barev</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Barev&amp;diff=2013"/>
		<updated>2026-07-08T14:58:06Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Barev P2P communication protocol==&lt;br /&gt;
&lt;br /&gt;
The protocol was created out of attempts to make serverless communication. The authors were experimenting on how to use standardized serverless protocol: Bonjour(XEP-0174), over the Yggdrasil network.&lt;br /&gt;
&lt;br /&gt;
It turned out we can&#039;t implement all Bonjour features without MDNS, so we had to fork the Pidgin Bonjour plugin, and created a Barev plugin, where MDNS dependent Bonjour features were replaced by xmpp stanzas from XEP-0004, XEP-0071, XEP-0085, XEP-0095, XEP-0096, XEP-0153, XEP-0199.&lt;br /&gt;
&lt;br /&gt;
Usually Barev chat is used in Pidgin, as a [https://codeberg.org/norayr/barev-purple purple plugin]. &lt;br /&gt;
You can chat with people who have Barev messenger - be it in Pidgin, or in Maemo. There are WIP Android/ios clients too. &lt;br /&gt;
&lt;br /&gt;
== What is supported==&lt;br /&gt;
&lt;br /&gt;
On Pidgin, statuses:(Online, Away, Do not disturb), status line, typing notifications, file transfers, and of course chats are supported. &lt;br /&gt;
In maemo/conversations, all the features are supported, except Maemo has no &amp;quot;Away&amp;quot; status, and it has no file transfers.&lt;br /&gt;
&lt;br /&gt;
If the other party is offline, the message will be queued and delivered once the contact becomes available. The messages are queued in memory currently, after the device restart (or pidgin restart) they will be lost.&lt;br /&gt;
&lt;br /&gt;
Each Barev client is one account. So if you have one Barev in Pidgin on your desktop, and one in Maemo, those are different accounts. Your contacts need to choose where to write.&lt;br /&gt;
&lt;br /&gt;
==How to install==&lt;br /&gt;
&lt;br /&gt;
Get &amp;lt;pre&amp;gt;rtcom-accounts-plugin-barev&amp;lt;/pre&amp;gt; in Hildon Application Manager.&lt;br /&gt;
&lt;br /&gt;
It will pull as a dependency &amp;lt;pre&amp;gt;Yggdrasil&amp;lt;/pre&amp;gt; and &amp;lt;pre&amp;gt;barev-purple&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Add an account ==&lt;br /&gt;
&lt;br /&gt;
Go to Settings, &amp;lt;pre&amp;gt;VoIP and IM accounts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Voip and im accounts.png]]&lt;br /&gt;
&lt;br /&gt;
It&#039;ll show a list of already added accounts.&lt;br /&gt;
&lt;br /&gt;
[[File:Accounts.png]]&lt;br /&gt;
&lt;br /&gt;
Press New to add an account.&lt;br /&gt;
&lt;br /&gt;
[[File:Choose barev.png]]&lt;br /&gt;
&lt;br /&gt;
Choose a nick, type it in:&lt;br /&gt;
&lt;br /&gt;
[[File:Choose nick.png]]&lt;br /&gt;
&lt;br /&gt;
And here&#039;s a list of your accounts.&lt;br /&gt;
&lt;br /&gt;
[[File:List of accounts.png]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s basically it. &lt;br /&gt;
&lt;br /&gt;
==Add contacts==&lt;br /&gt;
&lt;br /&gt;
Your Barev address is your nick@your_yggdrasil_ipv6 address. The nick you already chose.&lt;br /&gt;
&lt;br /&gt;
To tell others how to add you, you need to know your Yggdrasil address.&lt;br /&gt;
&lt;br /&gt;
There are several ways to know your Yggdrasil address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yggdrasilctl getself&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There&#039;s a field: &amp;lt;pre&amp;gt;IPv6 address&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can take it from there.&lt;br /&gt;
&lt;br /&gt;
Other way is to run &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have not configured Yggdrasil yourself, before installing Barev, then Barev have configured you a &amp;lt;pre&amp;gt;barev0&amp;lt;/pre&amp;gt; network interface. You can find your Yggdrasil IPv6 address under it.&lt;br /&gt;
&lt;br /&gt;
Now go to the addressbook and let&#039;s add a Barev contact.&lt;br /&gt;
&lt;br /&gt;
[[File:Abook.png]]&lt;br /&gt;
&lt;br /&gt;
Tap on &amp;quot;New contact&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:New contact.png]]&lt;br /&gt;
&lt;br /&gt;
Fill the fields, add name, surname, and paste your friend&#039;s nick@ipv6 in Barev field.&lt;br /&gt;
&lt;br /&gt;
[[File:Adding barev contact.png]]&lt;br /&gt;
&lt;br /&gt;
Then your addressbook will list your contact, and if the contact also added you back, you&#039;ll see them online.&lt;br /&gt;
&lt;br /&gt;
[[File:Abook with barev contact.png]]&lt;br /&gt;
&lt;br /&gt;
==How to add you==&lt;br /&gt;
&lt;br /&gt;
Your contact can add you in Pidgin or other Maemo device.&lt;br /&gt;
&lt;br /&gt;
In pidgin, they must use Buddies -&amp;gt; Add buddy.&lt;br /&gt;
&lt;br /&gt;
Then paste your Yggdrasil address in Buddy&#039;s username field, choose a group to which to add you, and that&#039;s it.&lt;br /&gt;
&lt;br /&gt;
[[File:Pidgin add barev contact.png]]&lt;br /&gt;
&lt;br /&gt;
And here your maemo account is becoming online.&lt;br /&gt;
&lt;br /&gt;
[[File:Pidgin contact list.png]]&lt;br /&gt;
&lt;br /&gt;
==Start chatting==&lt;br /&gt;
&lt;br /&gt;
You can start chatting with your contact by tapping on Barev field in the contact&#039;s page:&lt;br /&gt;
&lt;br /&gt;
[[File:Barev contact page.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Barev chat window.png]]&lt;br /&gt;
&lt;br /&gt;
==Set status==&lt;br /&gt;
&lt;br /&gt;
You can set Online, Busy, and Offline, and also choose a status line.&lt;br /&gt;
&lt;br /&gt;
[[File:Barev status.png]]&lt;br /&gt;
&lt;br /&gt;
Have fun!!&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:Pidgin_contact_list.png&amp;diff=2012</id>
		<title>File:Pidgin contact list.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Pidgin_contact_list.png&amp;diff=2012"/>
		<updated>2026-07-08T14:57: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:Pidgin_add_barev_contact.png&amp;diff=2011</id>
		<title>File:Pidgin add barev contact.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Pidgin_add_barev_contact.png&amp;diff=2011"/>
		<updated>2026-07-08T14:46:51Z</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=Extras/Barev&amp;diff=2010</id>
		<title>Extras/Barev</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Barev&amp;diff=2010"/>
		<updated>2026-07-08T14:43:42Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Barev P2P communication protocol==&lt;br /&gt;
&lt;br /&gt;
The protocol was created out of attempts to make serverless communication. The authors were experimenting on how to use standardized serverless protocol: Bonjour(XEP-0174), over the Yggdrasil network.&lt;br /&gt;
&lt;br /&gt;
It turned out we can&#039;t implement all Bonjour features without MDNS, so we had to fork the Pidgin Bonjour plugin, and created a Barev plugin, where MDNS dependent Bonjour features were replaced by xmpp stanzas from XEP-0004, XEP-0071, XEP-0085, XEP-0095, XEP-0096, XEP-0153, XEP-0199.&lt;br /&gt;
&lt;br /&gt;
Usually Barev chat is used in Pidgin, as a [https://codeberg.org/norayr/barev-purple purple plugin]. &lt;br /&gt;
You can chat with people who have Barev messenger - be it in Pidgin, or in Maemo. There are WIP Android/ios clients too. &lt;br /&gt;
&lt;br /&gt;
== What is supported==&lt;br /&gt;
&lt;br /&gt;
On Pidgin, statuses:(Online, Away, Do not disturb), status line, typing notifications, file transfers, and of course chats are supported. &lt;br /&gt;
In maemo/conversations, all the features are supported, except Maemo has no &amp;quot;Away&amp;quot; status, and it has no file transfers.&lt;br /&gt;
&lt;br /&gt;
If the other party is offline, the message will be queued and delivered once the contact becomes available. The messages are queued in memory currently, after the device restart (or pidgin restart) they will be lost.&lt;br /&gt;
&lt;br /&gt;
Each Barev client is one account. So if you have one Barev in Pidgin on your desktop, and one in Maemo, those are different accounts. Your contacts need to choose where to write.&lt;br /&gt;
&lt;br /&gt;
==How to install==&lt;br /&gt;
&lt;br /&gt;
Get &amp;lt;pre&amp;gt;rtcom-accounts-plugin-barev&amp;lt;/pre&amp;gt; in Hildon Application Manager.&lt;br /&gt;
&lt;br /&gt;
It will pull as a dependency &amp;lt;pre&amp;gt;Yggdrasil&amp;lt;/pre&amp;gt; and &amp;lt;pre&amp;gt;barev-purple&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Add an account ==&lt;br /&gt;
&lt;br /&gt;
Go to Settings, &amp;lt;pre&amp;gt;VoIP and IM accounts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Voip and im accounts.png]]&lt;br /&gt;
&lt;br /&gt;
It&#039;ll show a list of already added accounts.&lt;br /&gt;
&lt;br /&gt;
[[File:Accounts.png]]&lt;br /&gt;
&lt;br /&gt;
Press New to add an account.&lt;br /&gt;
&lt;br /&gt;
[[File:Choose barev.png]]&lt;br /&gt;
&lt;br /&gt;
Choose a nick, type it in:&lt;br /&gt;
&lt;br /&gt;
[[File:Choose nick.png]]&lt;br /&gt;
&lt;br /&gt;
And here&#039;s a list of your accounts.&lt;br /&gt;
&lt;br /&gt;
[[File:List of accounts.png]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s basically it. &lt;br /&gt;
&lt;br /&gt;
==Add contacts==&lt;br /&gt;
&lt;br /&gt;
Your Barev address is your nick@your_yggdrasil_ipv6 address. The nick you already chose.&lt;br /&gt;
&lt;br /&gt;
To tell others how to add you, you need to know your Yggdrasil address.&lt;br /&gt;
&lt;br /&gt;
There are several ways to know your Yggdrasil address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yggdrasilctl getself&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There&#039;s a field: &amp;lt;pre&amp;gt;IPv6 address&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can take it from there.&lt;br /&gt;
&lt;br /&gt;
Other way is to run &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have not configured Yggdrasil yourself, before installing Barev, then Barev have configured you a &amp;lt;pre&amp;gt;barev0&amp;lt;/pre&amp;gt; network interface. You can find your Yggdrasil IPv6 address under it.&lt;br /&gt;
&lt;br /&gt;
Now go to the addressbook and let&#039;s add a Barev contact.&lt;br /&gt;
&lt;br /&gt;
[[File:Abook.png]]&lt;br /&gt;
&lt;br /&gt;
Tap on &amp;quot;New contact&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:New contact.png]]&lt;br /&gt;
&lt;br /&gt;
Fill the fields, add name, surname, and paste your friend&#039;s nick@ipv6 in Barev field.&lt;br /&gt;
&lt;br /&gt;
[[File:Adding barev contact.png]]&lt;br /&gt;
&lt;br /&gt;
Then your addressbook will list your contact, and if the contact also added you back, you&#039;ll see them online.&lt;br /&gt;
&lt;br /&gt;
[[File:Abook with barev contact.png]]&lt;br /&gt;
&lt;br /&gt;
==Stach chatting==&lt;br /&gt;
&lt;br /&gt;
You can start chatting with your contact by tapping on Barev field in the contact&#039;s page:&lt;br /&gt;
&lt;br /&gt;
[[File:Barev contact page.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Barev chat window.png]]&lt;br /&gt;
&lt;br /&gt;
==Set status==&lt;br /&gt;
&lt;br /&gt;
You can set Online, Busy, and Offline, and also choose a status line.&lt;br /&gt;
&lt;br /&gt;
[[File:Barev status.png]]&lt;br /&gt;
&lt;br /&gt;
Have fun!!&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:Barev_status.png&amp;diff=2009</id>
		<title>File:Barev status.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Barev_status.png&amp;diff=2009"/>
		<updated>2026-07-08T14:36:26Z</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:Barev_chat_window.png&amp;diff=2008</id>
		<title>File:Barev chat window.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Barev_chat_window.png&amp;diff=2008"/>
		<updated>2026-07-08T14:34:56Z</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:Barev_contact_page.png&amp;diff=2007</id>
		<title>File:Barev contact page.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Barev_contact_page.png&amp;diff=2007"/>
		<updated>2026-07-08T14:33:46Z</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:Abook_with_barev_contact.png&amp;diff=2006</id>
		<title>File:Abook with barev contact.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Abook_with_barev_contact.png&amp;diff=2006"/>
		<updated>2026-07-08T14:29:59Z</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:Adding_barev_contact.png&amp;diff=2005</id>
		<title>File:Adding barev contact.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Adding_barev_contact.png&amp;diff=2005"/>
		<updated>2026-07-08T14:27:38Z</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:New_contact.png&amp;diff=2004</id>
		<title>File:New contact.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:New_contact.png&amp;diff=2004"/>
		<updated>2026-07-08T14:24:42Z</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=Extras/Barev&amp;diff=2003</id>
		<title>Extras/Barev</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Barev&amp;diff=2003"/>
		<updated>2026-07-08T14:21:44Z</updated>

		<summary type="html">&lt;p&gt;Norayr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Barev communication protocol==&lt;br /&gt;
&lt;br /&gt;
The protocol was created out of attempts to make serverless communication. The authors were experimenting on how to use standardized serverless protocol: Bonjour(XEP-0174), over the Yggdrasil network.&lt;br /&gt;
&lt;br /&gt;
It turned out we can&#039;t implement all Bonjour features without MDNS, so we had to fork the Pidgin Bonjour plugin, and created a Barev plugin, where MDNS dependent Bonjour features were replaced by xmpp stanzas from XEP-0004, XEP-0071, XEP-0085, XEP-0095, XEP-0096, XEP-0153, XEP-0199.&lt;br /&gt;
&lt;br /&gt;
==How to install==&lt;br /&gt;
&lt;br /&gt;
Get &amp;lt;pre&amp;gt;rtcom-accounts-plugin-barev&amp;lt;/pre&amp;gt; in Hildon Application Manager.&lt;br /&gt;
&lt;br /&gt;
It will pull as a dependency &amp;lt;pre&amp;gt;Yggdrasil&amp;lt;/pre&amp;gt; and &amp;lt;pre&amp;gt;barev-purple&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Add an account ==&lt;br /&gt;
&lt;br /&gt;
Go to Settings, &amp;lt;pre&amp;gt;VoIP and IM accounts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Voip and im accounts.png]]&lt;br /&gt;
&lt;br /&gt;
It&#039;ll show a list of already added accounts.&lt;br /&gt;
&lt;br /&gt;
[[File:Accounts.png]]&lt;br /&gt;
&lt;br /&gt;
Press New to add an account.&lt;br /&gt;
&lt;br /&gt;
[[File:Choose barev.png]]&lt;br /&gt;
&lt;br /&gt;
Choose a nick, type it in:&lt;br /&gt;
&lt;br /&gt;
[[File:Choose nick.png]]&lt;br /&gt;
&lt;br /&gt;
And here&#039;s a list of your accounts.&lt;br /&gt;
&lt;br /&gt;
[[File:List of accounts.png]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s basically it. Your Barev address is your nick@your_yggdrasil_ipv6 address. The nick you already chose.&lt;br /&gt;
&lt;br /&gt;
To tell others how to add you, you need to know your Yggdrasil address.&lt;br /&gt;
&lt;br /&gt;
There are several ways to know your Yggdrasil address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yggdrasilctl getself&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There&#039;s a field: &amp;lt;pre&amp;gt;IPv6 address&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can take it from there.&lt;br /&gt;
&lt;br /&gt;
Other way is to run &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have not configured Yggdrasil yourself, before installing Barev, then Barev have configured you a &amp;lt;pre&amp;gt;barev0&amp;lt;/pre&amp;gt; network interface. You can find your Yggdrasil IPv6 address under it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
to be continued.&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:Abook.png&amp;diff=2002</id>
		<title>File:Abook.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Abook.png&amp;diff=2002"/>
		<updated>2026-07-08T14:21: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:List_of_accounts.png&amp;diff=2001</id>
		<title>File:List of accounts.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:List_of_accounts.png&amp;diff=2001"/>
		<updated>2026-07-08T14:18:50Z</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:Choose_nick.png&amp;diff=2000</id>
		<title>File:Choose nick.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Choose_nick.png&amp;diff=2000"/>
		<updated>2026-07-08T14:13:28Z</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:Choose_barev.png&amp;diff=1999</id>
		<title>File:Choose barev.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Choose_barev.png&amp;diff=1999"/>
		<updated>2026-07-08T14:12:17Z</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:Accounts.png&amp;diff=1998</id>
		<title>File:Accounts.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Accounts.png&amp;diff=1998"/>
		<updated>2026-07-08T14:11: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:Voip_and_im_accounts.png&amp;diff=1997</id>
		<title>File:Voip and im accounts.png</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Voip_and_im_accounts.png&amp;diff=1997"/>
		<updated>2026-07-08T14:09: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=Extras/Barev&amp;diff=1996</id>
		<title>Extras/Barev</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Extras/Barev&amp;diff=1996"/>
		<updated>2026-07-05T18:16:27Z</updated>

		<summary type="html">&lt;p&gt;Norayr: Created page with &amp;quot;==Barev communication protocol==  The protocol was created out of attempts to make serverless communication. We were experimenting on how to use standardized serverless protocol: Bonjour, over the Yggdrasil network.  It turned out we can&amp;#039;t implement Bonjour features without MDNS, so we had to for the Pidgin Bonjour plugin, and created a Barev plugin.  ==How to install==  Get &amp;lt;pre&amp;gt;rtcom-accounts-plugin-barev&amp;lt;/pre&amp;gt; in Hildon Application Manager.  to be continued.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Barev communication protocol==&lt;br /&gt;
&lt;br /&gt;
The protocol was created out of attempts to make serverless communication. We were experimenting on how to use standardized serverless protocol: Bonjour, over the Yggdrasil network.&lt;br /&gt;
&lt;br /&gt;
It turned out we can&#039;t implement Bonjour features without MDNS, so we had to for the Pidgin Bonjour plugin, and created a Barev plugin.&lt;br /&gt;
&lt;br /&gt;
==How to install==&lt;br /&gt;
&lt;br /&gt;
Get &amp;lt;pre&amp;gt;rtcom-accounts-plugin-barev&amp;lt;/pre&amp;gt; in Hildon Application Manager.&lt;br /&gt;
&lt;br /&gt;
to be continued.&lt;/div&gt;</summary>
		<author><name>Norayr</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1988</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=1988"/>
		<updated>2026-07-04T12:01:32Z</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;
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/excalibur&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/excalibur&lt;br /&gt;
Switched to a new branch &#039;maemo/excalibur&#039;&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/excalibur&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/excalibur&#039; by visiting:&lt;br /&gt;
remote:      https://git.maemo.org/leste-extras/msid/pull/new/maemo/excalibur&lt;br /&gt;
remote:&lt;br /&gt;
To git.maemo.org:leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/excalibur -&amp;amp;gt; maemo/excalibur&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=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>
</feed>