Difference between revisions of "Sugar"

From ArchWiki
Jump to: navigation, search
m (Activities)
m (Activities: style: dont suggest AUR helpers, just list packages)
(23 intermediate revisions by 13 users not shown)
Line 1: Line 1:
[[Category:Desktop environments (English)]]
+
[[Category:Desktop environments]]
[[Category:HOWTOs (English)]]
+
[[it:Sugar]]
A product of the [http://en.wikipedia.org/wiki/One_Laptop_per_Child OLPC] initiative, [http://en.wikipedia.org/wiki/Sugar_(GUI) Sugar] is a Desktop Environment akin to [[KDE]] and [[GNOME]], but geared towards children and education. If you have a young son, daughter, brother, sister, puppy or alien, the best way to introduce them to the world of Arch Linux is by deploying an Arch/Sugar platform and then forgetting about it. That's the beauty of Arch Linux (TM) - Deploy and Forget (But Know How to Deploy).
+
A product of the [http://en.wikipedia.org/wiki/One_Laptop_per_Child OLPC] initiative, [http://en.wikipedia.org/wiki/Sugar_(GUI) Sugar] is a Desktop Environment akin to [[KDE]] and [[GNOME]], but geared towards children and education. If you have a young son, daughter, brother, sister, puppy or alien, the best way to introduce them to the world of Arch Linux is by deploying an Arch/Sugar platform and then forgetting about it.
  
 
But wait..where art thou, O Sugar?
 
But wait..where art thou, O Sugar?
Line 7: Line 7:
 
That's right. To lead such a good life, you need at least some Sugar-related packages in at least [[AUR]].
 
That's right. To lead such a good life, you need at least some Sugar-related packages in at least [[AUR]].
  
== Getting Started ==
+
Sugar has a special [http://wiki.sugarlabs.org/go/Taxonomy Taxonomy] to name the parts of its system. The desktop itself constitute the '''glucose''' group. This is the basic system an activity can reasonably expect to be present when installing Sugar. But to really use the environment, you need activities. Basic and sample activities are part of '''fructose'''. Then, '''sucrose''' is constituted by both {{Ic|glucose}} and {{Ic|fructose}} and represents what should be distributed as a basic sugar desktop environment. Note that {{Ic|ribose}} (the underlaying operating system) is here replaced by Arch.{{Ic|Honey}} (the extra activities) are not currently provided in AUR but can be installed as shown in the [[#Building]] section.
 +
 
 +
== Getting started: Glucose ==
 
=== Building from AUR ===
 
=== Building from AUR ===
  
The esiest way is to use ''yaourt'' or a similar aur helper.
+
Install {{AUR|sugar}} from the [[AUR]].
yaourt -S sugar
+
  
 
=== Building a Bundle ===
 
=== Building a Bundle ===
 
[http://wiki.sugarlabs.org/go/Development_Team/Jhbuild This] is a cool build system provided by the developers that allows one to download and build Sugar ''almost'' in its entirety. You will be told what you need, and of course, it will not help if what you need has not yet been packaged for us mighty Archers.
 
[http://wiki.sugarlabs.org/go/Development_Team/Jhbuild This] is a cool build system provided by the developers that allows one to download and build Sugar ''almost'' in its entirety. You will be told what you need, and of course, it will not help if what you need has not yet been packaged for us mighty Archers.
  
The resulting project can then be offered as a bundle. This method of building should not be encouraged, since it is not "modular". A likely analogy is the [[E17#Installing_E17_using_easy_e17.sh|easy-e17 script]], except that we are in the opposite situation whereby there are no modular packages and thus no group - yet. Adding the provision is a safety measure, .eg:
+
The resulting project can then be offered as a bundle. This method of building should not be encouraged, since it is not "modular". A likely analogy is the [[Enlightenment#Compiling with easy_e17.sh|easy-e17 script]], except that we are in the opposite situation whereby there are no modular packages and thus no group - yet. Adding the provision is a safety measure, .eg:
  
 
  pkgname=sugar-bundle
 
  pkgname=sugar-bundle
Line 31: Line 32:
 
''Note: It might be possible to use the new split functions of makepkg here, in which case it will end up as a modular build :)''
 
''Note: It might be possible to use the new split functions of makepkg here, in which case it will end up as a modular build :)''
  
=== Building a Modular Group ===
 
This is the more appropriate route to take. Here is the current list of noted dependencies, acquired by inspecting the build trees of distributions supported by Sugar (Gentoo in particular):
 
 
# Syntax: pkgname .. :-> location + comment1 + comment2 ..
 
 
espeak :-> [community]
 
squeak :-> [unsupported] + outdated + needs patching for sugar
 
evince :-> [extra] + needs patching for sugar
 
pyabiword :-> [unsupported]
 
python-cjson :-> [community]
 
python-telepathy :-> [community]
 
gstreamer0.10-espeak :-> [unsupported]
 
olpcsound :-> [unsupported]
 
telepathy-glib :-> [community]
 
xulrunner :-> [extra]
 
telepathy-gabble :-> [community]
 
telepathy-salut :-> [community]
 
hippo-canvas :-> [unsupported]
 
 
And the ''bash-fu'' to install all existing packages (if you have saved the above in a file called '''sugar.todo'''):
 
 
~# pacman -S $(grep ":->" sugar.todo | grep -v unsupported | awk '{print $1}')
 
 
The above basically filters the output, first matching a string with '''grep''', then leaving out matches with '''grep -v''', and finally showing only the first coloumn of ''stdout'' with '''awk'''.
 
 
The following are "Level 2" dependencies:
 
 
abiword-devel :-> [unsupported] + required by pyabiword
 
 
== The Applications ==
 
 
=== Depedency tree===
 
=== Depedency tree===
 
Below is the dependency tree of sugar 0.86
 
Below is the dependency tree of sugar 0.86
Line 101: Line 72:
 
                 |--libsm
 
                 |--libsm
  
===Activities===
+
=== Building a Modular Group ===
 +
This is the more appropriate route to take. Here is the current list of noted dependencies, acquired by inspecting the build trees of distributions supported by Sugar (Gentoo in particular):
 +
 
 +
# Syntax: pkgname .. :-> location + comment1 + comment2 ..
 +
 +
espeak :-> [community]
 +
squeak :-> [unsupported]
 +
evince :-> [extra]
 +
pyabiword :-> [unsupported]
 +
python-cjson :-> [community]
 +
python-telepathy :-> [community]
 +
gstreamer0.10-espeak :-> [unsupported]
 +
olpcsound :-> [unsupported]
 +
telepathy-glib :-> [community]
 +
xulrunner :-> [extra]
 +
telepathy-gabble :-> [community]
 +
telepathy-salut :-> [community]
 +
hippo-canvas :-> [unsupported]
 +
 
 +
== Activities ==
 +
 
 +
=== Fructose ===
 +
 
 +
All {{Ic|fructose}} activities are available from the [[AUR]] as {{ic|sugar-activity-'''activity'''}}:
 +
*{{AUR|sugar-activity-browse}}
 +
*{{AUR|sugar-activity-calculate}}
 +
*{{AUR|sugar-activity-chat}}
 +
*{{AUR|sugar-activity-imageviewer}}
 +
*{{AUR|sugar-activity-jukebox}}
 +
*{{AUR|sugar-activity-log}}
 +
*{{AUR|sugar-activity-pippy}}
 +
*{{AUR|sugar-activity-read}}
 +
*{{AUR|sugar-activity-terminal}}
 +
*{{AUR|sugar-activity-turtleart}}
 +
*{{AUR|sugar-activity-write}}
 +
 
 +
=== Etoys ===
 +
 
 +
{{Ic|etoys}} is provided separately as it is part of glucose but also include the fructose activity. It is available as {{AUR|etoys}} in the AUR.
 +
 
 +
=== Building===
  
Now you have a working Sugar environment, it is time to populate it with activities such as a browser, a calculator, an image viewer or games and toys. They almost all have the same building procedure, a {{Filename|setup.py}} that calls functions shipped with sugar. Below is a typical {{Filename|PKGBUILD}}:
+
Now you have a working Sugar environment, it is time to populate it with activities such as a browser, a calculator, an image viewer or games and toys. They almost all have the same building procedure, a {{ic|setup.py}} that calls functions shipped with sugar. Below is a typical {{ic|PKGBUILD}}:
{{File|name=PKGBUILD|content=
+
{{hc|PKGBUILD|2=
 
  # Contributor: Name <name@mail.com>
 
  # Contributor: Name <name@mail.com>
 
pkgname=sugar-activity-calculate
 
pkgname=sugar-activity-calculate
Line 125: Line 136:
 
# vim:set ts=2 sw=2 et:
 
# vim:set ts=2 sw=2 et:
 
}}
 
}}
You may need <tt>squeak</tt> to run some activities (like <tt>etoys</tt>).
+
You may need {{Ic|squeak}} to run some activities (like {{Ic|etoys}}).
  
 
===Notes===
 
===Notes===
  
* Activity building procedure is not made for packaging and using <tt>--prefix</tt> can be dangerous if the application uses this path internally. I think the correct way to do this would be to patch the installation procedure in <tt>sugar</tt> so it accept an argument such as <tt>--destdir=</tt>.
+
* Activity building procedure is not made for packaging and using {{Ic|--prefix}} can be dangerous if the application uses this path internally. I think the correct way to do this would be to patch the installation procedure in {{Ic|sugar}} so it accepts an argument such as {{Ic|<nowiki>--destdir=</nowiki>}}.
 
+
* I ''suggest'' that we prefix sugar activities packages in AUR with <tt>sugar-activity-</tt>.
+
  
* About groups according to the official site, the desktop itself consitute the <tt>glucose</tt> group. Main activities are part of <tt>fructose</tt>. And <tt>sucrose</tt> is constituted by both <tt>glucose</tt> and <tt>fructose</tt> and represents what should be distributed as a basic sugar desktop environment.
+
* I ''suggest'' that we prefix sugar activities packages in AUR with {{Ic|sugar-activity-}}.
  
* Below is a list of basic activities we should probably provide in AUR:
+
* You may need to install {{Ic|python-pygame}} if activities do not start up.
imageviewer
+
browse
+
terminal
+
turtleart
+
etoys
+
chat
+
pippy
+
read
+
calculate
+
jukebox
+
write
+

Revision as of 20:33, 3 June 2013

A product of the OLPC initiative, Sugar is a Desktop Environment akin to KDE and GNOME, but geared towards children and education. If you have a young son, daughter, brother, sister, puppy or alien, the best way to introduce them to the world of Arch Linux is by deploying an Arch/Sugar platform and then forgetting about it.

But wait..where art thou, O Sugar?

That's right. To lead such a good life, you need at least some Sugar-related packages in at least AUR.

Sugar has a special Taxonomy to name the parts of its system. The desktop itself constitute the glucose group. This is the basic system an activity can reasonably expect to be present when installing Sugar. But to really use the environment, you need activities. Basic and sample activities are part of fructose. Then, sucrose is constituted by both glucose and fructose and represents what should be distributed as a basic sugar desktop environment. Note that ribose (the underlaying operating system) is here replaced by Arch.Honey (the extra activities) are not currently provided in AUR but can be installed as shown in the #Building section.

Getting started: Glucose

Building from AUR

Install sugarAUR from the AUR.

Building a Bundle

This is a cool build system provided by the developers that allows one to download and build Sugar almost in its entirety. You will be told what you need, and of course, it will not help if what you need has not yet been packaged for us mighty Archers.

The resulting project can then be offered as a bundle. This method of building should not be encouraged, since it is not "modular". A likely analogy is the easy-e17 script, except that we are in the opposite situation whereby there are no modular packages and thus no group - yet. Adding the provision is a safety measure, .eg:

pkgname=sugar-bundle
pkgdesc="The Sugar environment and applications built with jhbuild"
provides=('sugar-desktop') # as in provides=('e')
conflicts=('sugar-desktop')

But as soon as someone uploads a component of the build/Sugar as a separate package, it must be part of the group (and the bundle package will automatically conflict), eg.:

pkgname=sugar-toolkit
pkgdesc="The Sugar environment toolkit"
groups=('sugar-desktop' 'sugar-desktop-base')

Note: It might be possible to use the new split functions of makepkg here, in which case it will end up as a modular build :)

Depedency tree

Below is the dependency tree of sugar 0.86

|--sugar
   |--hicolor-icon-theme
   |--shared-mime-info
   |--metacity
   |--libwnck
   |--pygtksourceview2
   |--sugar-artwork
   |--python-xklavier
   |  |--libxklavier
   |  |--pygobject
   |  |--gtk2
   |--sugar-toolkit
      |--alsa-lib
      |--gnome-python-desktop
      |--hippo-canvas
      |  |--librsvg
      |     |--gtk2
      |     |--libcroco
      |--sugar-datastore
      |  |--dbus-python
      |  |--xapian-python-bindings
      |  |--python-cjson
      |  |--sugar-base
      |     |--pygobject
      |     |--python-decorator
      |--sugar-presence-service
         |--telepathy-gabble
         |--telepathy-salut
         |--python-telepathy
         |--sugar-base
         |  |--pygobject
         |  |--python-decorator
         |--gnome-python
            |--pygtk
            |--pyorbit
            |--libgnomeui
               |--libsm

Building a Modular Group

This is the more appropriate route to take. Here is the current list of noted dependencies, acquired by inspecting the build trees of distributions supported by Sugar (Gentoo in particular):

# Syntax: pkgname .. :-> location + comment1 + comment2 ..

espeak			 :-> [community]
squeak			 :-> [unsupported]
evince			 :-> [extra]
pyabiword		 :-> [unsupported]
python-cjson		 :-> [community]
python-telepathy	 :-> [community]
gstreamer0.10-espeak	 :-> [unsupported]
olpcsound		 :-> [unsupported]
telepathy-glib		 :-> [community]
xulrunner		 :-> [extra]
telepathy-gabble	 :-> [community]
telepathy-salut		 :-> [community]
hippo-canvas		 :-> [unsupported]

Activities

Fructose

All fructose activities are available from the AUR as sugar-activity-activity:

Etoys

etoys is provided separately as it is part of glucose but also include the fructose activity. It is available as etoysAUR in the AUR.

Building

Now you have a working Sugar environment, it is time to populate it with activities such as a browser, a calculator, an image viewer or games and toys. They almost all have the same building procedure, a setup.py that calls functions shipped with sugar. Below is a typical PKGBUILD:

PKGBUILD
# Contributor: Name <name@mail.com>
pkgname=sugar-activity-calculate
_realname=Calculate
pkgver=30
pkgrel=1
pkgdesc="A calculator for Sugar."
arch=('i686' 'x86_64')
url="http://www.sugarlabs.org/"
license=('GPL')
groups=('sucrose' 'fructose')
depends=('sugar')
source=(http://download.sugarlabs.org/sources/sucrose/fructose/${_realname}/${_realname}-$pkgver.tar.bz2)
md5sums=('011bd911516f27d05194320164c7dcd7')

build() {
  cd "$srcdir/${_realname}-$pkgver"
  ./setup.py install --prefix="$pkgdir/usr" || return 1
}
# vim:set ts=2 sw=2 et:

You may need squeak to run some activities (like etoys).

Notes

  • Activity building procedure is not made for packaging and using --prefix can be dangerous if the application uses this path internally. I think the correct way to do this would be to patch the installation procedure in sugar so it accepts an argument such as --destdir=.
  • I suggest that we prefix sugar activities packages in AUR with sugar-activity-.
  • You may need to install python-pygame if activities do not start up.