Platform Team/Guide/Sweets Usage: Difference between revisions

No edit summary
Line 1: Line 1:
This guide describes how to use Sugar Labs' Packaging Management System. See also [[Platform_Team/Sweets|introduction page]].
This guide describes how to use Sugar Labs' Packaging Management System. See also [[Platform_Team/Sweets|introduction page]] and [[Platform_Team/Guide/Sweets_Packaging|Packaging guide]].


== Installation ==
== Installation ==
Line 45: Line 45:
  git submodule update
  git submodule update


== Launch sugar ==
== Usage ==


To launch sugar session:
Read the [[Platform_Team/Sweets/Glossary|Sweets Glossary]] to understand the basic conception. The rest of the text will operate with following terms:


sweets sdk/sugar
* {{Code|SWEET}}, the full ''interface'' url, like {{Code|http://sweets.sugarlabs.org/sdk/sugar}}, or the short one, like {{Code|sdk/sugar}};
* {{Code|COMMAND}}, ''sweet'''s command that points how to run particular ''sweet''; by default, ''sweet''s have only {{Code|run}} command but it is possible to have several commands;
* {{Code|VERSION}}, ''sweet'''s version
 
See the [[#Sugar_via_Sweets|Sugar via Sweets]] section for real examples how use ''Sweets'' to run Sugar Shell.
 
=== Launch ===
 
To launch a ''sweet'' with verbatim passing optional {{Code|ARGUMENTS}}:
 
sweets SWEET [ARGUMENTS]


or to run from Xephyr:
Sometimes ''sweet''s support several launching command, it is possible to specify one during the launch:


  sweets sdk/sugar:emulator
  sweets SWEET:COMMAND


It is possible to run different glucose versions via sweets (for now, testing 0.92+ and stable 0.88 based on Dextrose-2), e.g.:
To run particular, not the latest, version:


  sweets sdk/sugar:emulator=0.88
  sweets SWEET[''=''|''>=''|''<=''VERSION]


To get the full list of available versions:
To get the full list of available versions:
sweets show sdk/sugar -v


For launch command, all arguments passed after sweet name are treated as launched sweet's arguments. For example, it is possible to run sugar by bassing {{Code|-f}} argument:
sweets status SWEET -v
 
=== Troubleshooting ===


sweets sdk/sugar:emulator=0.88 -f
If {{Code|sweets}} can't find proper ''implementation'', see the {{Code|e}} lines in the output of:


If sweets can't find proper implementation, see the {{Code|E}} lines in output of:
  sweets status SWEET -vdd
  sweets show sdk/sugar -vdd


== Search ==
=== Search ===


It is possible to search sweets among locally known ones and registered on http://sweets.sugarlabs.org (not yet implemented). The search is based on [http://xapian.org/ Xapian] search engine. Thus, it is possible to use Xapian's [http://xapian.org/docs/queryparser.html query language].
It is possible to search ''sweet''s among locally known ones and registered on http://sweets.sugarlabs.org (not yet implemented). The search is based on [http://xapian.org/ Xapian] search engine. Thus, it is possible to use Xapian's [http://xapian.org/docs/queryparser.html query language].


For command format is:
For command format is:


  sweets search ''query''
  sweets search QUERY


Notice that [http://xapian.org/docs/queryparser.html#partially-entered-query-matching partial] search is enabled. So, the query {{Code|tele}} will be treated as {{Code|tele*}} to search all words that start from {{Code|tele}}.
Notice that [http://xapian.org/docs/queryparser.html#partially-entered-query-matching partial] search is enabled. So, the query {{Code|tele}} will be treated as {{Code|tele*}} to search all words that start from {{Code|tele}}.


Sweets supports following search [http://xapian.org/docs/queryparser.html#searching-within-a-probabilistic-field prefixes] basing of [[Platform_Team/Recipe_Specification|recipe options]]:
{{Code|sweets}} supports following search [http://xapian.org/docs/queryparser.html#searching-within-a-probabilistic-field prefixes] basing of [[Platform_Team/Recipe_Specification|recipe options]]:


* '''interface''' the first interface from implementations list, e.g., {{Code|http://sweets.sugarlabs.org/sdk/sugar}};
* '''interface''' the first interface from implementations list, e.g., {{Code|http://sweets.sugarlabs.org/sdk/sugar}};
Line 97: Line 107:
So, it possible to search only among particular sweet attributes, like {{Code|name:telepathy}} to search only among sweet names.
So, it possible to search only among particular sweet attributes, like {{Code|name:telepathy}} to search only among sweet names.


Sweets support additional notation for exact searching in form of {{Code|''prefix''<nowiki>:=</nowiki>''string''}}. For example the query {{Code|name<nowiki>:=</nowiki>sugar}} will find sweets only with exactly {{Code|sugar}} name and omit names like {{Code|sugar-base}}. If search string contains spaces, wrap it to double quotes, {{Code|name<nowiki>:=</nowiki>"Sugar Commander"}}. Note, wildcards does not work in exact search case and asterisks will be treated literally.
{{Code|sweets}} support additional notation for exact searching in form of {{Code|''prefix''<nowiki>:=</nowiki>''string''}}. For example the query {{Code|name<nowiki>:=</nowiki>sugar}} will find ''sweet''s only with exactly {{Code|sugar}} name and omit names like {{Code|sugar-base}}. If search string contains spaces, wrap it to double quotes, {{Code|name<nowiki>:=</nowiki>"Sugar Commander"}}. Note, wildcards does not work in exact search case and asterisks will be treated literally.
 
== Development workflow with sweets ==
 
During the first launch, sources will be auto-built and kept in internal storage. To make sweets useful for development, checkout developing project sources in sweets:
 
sweets checkout [''path-to-sources'']
 
The only thing that is required from sources is having a [[Platform Team/Recipe Specification|sweets.recipe]] spec file for non-activity projects or {{Code|activity/activity.info}} (that conforms to the same spec) for activities. All sweets for Glucose components are located in the http://git.sugarlabs.org/sdk project.
 
After being checked out, these sources might be launched using {{Code|<nowiki>http://</nowiki>sweets.sugarlabs.org/''sweet-value-from-sweets.recipe''}} or just mentioning a sweet value:
 
sweets ''sweet''
 
For glucose projects, you can find ready-to-use and always-rebased-to-upstream projects in the [http://git.sugarlabs.org/sdk SDK] http://git.sugarlabs.org project. For now, there are two branches: {{Code|master}} for recent trunk, and {{Code|master-0.88}} for 0.88 code based on Dextrose-2 patches.
 
Checked out projects will be built according to the {{Code|[Build]}} section commands in the {{Code|sweets.recipe}} files. In general, for autotools-based projects, there is no further need for the {{Code|sweets}} command, just run {{Code|make install}} to build current sources and {{Code|make install them}} them to the directory that was specified by {{Code|sweets}} in the configure stage. For glucose projects, there is no need even in calling the {{Code|make}} command (python code will be reused from its original place, see {{Code|binding}} options in [[Platform Team/Recipe Specification|sweets.recipe]] files), just change the code and restart sugar.


=== Run sweets from X session ===
=== Run sweets from X session ===


Place sweets invocation into your {{Code|~/.xsession}} file:
Place {{Code|sweets}} invocation into your {{Code|~/.xsession}} file:


  PATH=$HOME/.local/bin:$PATH
  PATH=$HOME/.local/bin:$PATH
Line 130: Line 124:
  Exec=/etc/X11/Xsession
  Exec=/etc/X11/Xsession
  Type=Application
  Type=Application
== Sugar via Sweets ==
There is {{Code|sdk/sugar}} ''sweet'' that represents the whole Sucrose. For now, it supports the following versions:
* '''0.88''' stable Dextrose-2,
* '''0.92''' stable upstream 0.92 branch,
* '''0.93''' testing version of current upstream trunk with initial support of ''Sweets'' in the Shell.
Run sugar session without mentioning any version and the most recent (as possible) will be launched:
sweets sdk/sugar
Sugar ''sweet'' supports {{Code|emulator}} command to run Sugar from Xephyr:
sweets sdk/sugar:emulator


== Current limitations ==
== Current limitations ==