Compile Qooxdoo for eyeOS (I)

juliol 6th, 2011

Sometimes an eyeOS developer may need to use a Qooxdoo contrib, or to update Qooxdoo, or to fix anything. For instance, contribs extend the library and let the hacker have more backend features, widgets, themes, etc. There is a manual that helps Qooxdoo applications developers, but in eyeOS things might turn a bit tricky.

The first part of this article explains the standard method. The second part, the patches that sometimes are required.

To include a contrib, you have to ‘compile’ Qooxdoo. That is, Qooxdoo needs to resolve dependencies and to be compressed.

Requirements

When is this article useful?

  • Contribs — you want to use a Qooxdoo contrib
  • Core modifications — If you modified qx.* or aristo.Aristo or a dependency declared in the config file.
  • Debugging — If your face turned green fixing a bug.
  • Deployment — generate files to deploy eyeOS.

Getting the big picture

Edit eyeOS config file. This file differs a bit from Qooxdoo’s in order to include the Aristo theme and to adapt paths to libraries. Run the generate.py script.
generate.py build

Where ‘build’ is a job defined in config.json. In eyeOS you can use ‘debug’ as well, but it won”t work most times.

config.json

This file defines what to include, what to exclude, where to find the libraries… In eyeOS two jobs are declared: ‘build’ and ‘debug’. In the ‘build’ job you’ll find a line to declare your libraries. If you need to use a contrib, add it there.
"include": ["qx.*", "aristo.Aristo", "svg.*"]

Right beneath this line you’ll have to tell Qooxdoo where to find the code you’re including:
{
"manifest" : "/home/edu/svg/Manifest.json"
}

All contribs contain a Manifest.json. Just extract all the files of the contrib anywhere (e.g  /home/edu/mycontrib). They’ll be copied and compressed to the source/ folder of your Qooxdoo application.

Adapt all other paths. You may need to download the Aristo theme and edit the path in this file so the “compiler” finds it, like you did for the contrib and the “manifest” field 30 seconds before.

Troubleshooting

If you’re using a Qooxdoo version older than 1.4.1 and GNU/Linux, you might see ‘global name ‘WindowsError’ is not defined’. There’s a very quick fix available explained in bug 5273.

Fixing a WindowsError in Qooxdoo’s generate.py

juny 24th, 2011

eyeOS 2.5 uses Qooxdoo  1.3. For my project I needed to include the SVG contrib by Marc Puts, so I checked if there was an easy way to do this in eyeOS.

A step in this process is calling generate.py, which is quite simple but wouldn’t finish on my laptop. Well, it happened to be a bug with a very quick patch. I sent a bug report and it has been fixed for trunk and branch 1.4.x.

Under certain circumstances generate.py can't finish its job.

I tried to build an app with
generate.py build
where build is a job defined in our (eyeOS) custom config.json

It failed with the message "global name 'WindowsError' is not defined".
The program was attempting to copy some files and the destination folder's
owner was somebody with higher privileges.

The affected file is qooxdoo-sdk/tool/pylib/misc/copytool.py
line 82:
   except WindowsError:
     try:
       os.chmod(targetPath, stat.S_IWUSR)

WindowsError is a subclass of OSError, as stated in
http://docs.python.org/library/exceptions.html#exceptions.WindowsError
"it's raised when a Windows-specific error occurs or when the error number does
not correspond to an errno value"

I suggest changing WindowsError for OSError.

I'm running Fedora 14 (2.6.35.13-92.fc14.i686)
Python 2.7 (r27:82500, Sep 16 2010, 18:03:06) 

Steps to reproduce
1. get a working qooxdoo app
2. set its owner to somebody but yourself (e.g. chown apache:apache -R myApp/ )
3. run generate.py

Acords de «dies i nits de guerra i d’amor», de Cesk Freixas

juny 9th, 2011

Acords de «Dies i nits de guerra i d’amor», de Cesk Freixas.

M’agrada més tocar-la amb acords buits i cinquenes.
El mi inicial és més ric amb una 9a (?): 02410x

Re* 554030 (com un do començant al 3r trast)
La sus2 002200
La sus2/#F 202200

(1)
Mi(9)        La sus2/#F    La sus2
Arribaràs cansada a casa
      Si          #Dom
després de treballar,
          La sus2/#F    La sus2
obriràs, lenta, la porta,
         Si                Mi
i et pesarà el dia a les mans.

(1)
Veuré com entres a la sala,
m'aixecaré i m'abraçaràs,
caurem rient, sense parlar-nos,
al millor lloc d'aquell sofà.

(1)
A fora, la fosca ens banyarà
i alguna espurna de la pluja
esquitxarà tots aquells vidres
que més tard s'entelaran.

(1)
Mullarem de negre els gots
i beurem buscant el delit,
més en els nostres cossos,
que en els distants glops de vi.

(2)
          Do#m     Sol#m        La sus2
- Què hi ha, com ha anat el dia?
La sus2      Mi
    - Tenia ganes de plegar.
Do#m            Sol#m       La sus2
  - Et regalo el sol, per tu, bonica.
          Si             Do#m
I una abraçada em sorprendrà.

Do#m                     Sol#m
    - M'has trucat... ha passat res?
La sus2                Mi
    - Només volia dir-te «nosaltres».
     Do#m              Sol#m
- Ja t'ho vaig dir: no passaran!
           La sus2        Si          Do#m
I em semblaràs més tendra que abans.

Do#m  Sol#m La sus2 Si   x2

(1)
Vessarà de ple el nostre món
i et pintaré amb aquests dits
els llavis que en el dibuix no tens
per cuidar les nostres nits.

(1)
Just abans d'agafar el son
amagaré sota el coixí
alguna rosa groga
que ens salvi el «tu» i el «mi».

    Do#m        Sol#m        La sus2
M'estrenyeràs el nom amb força
La sus2            Mi
- Vull que sempre sigui així...
    Do#m        Sol#m        La sus2
S'escaparà alguna promesa:
La sus2            Si
- A mi més, ho sento aquí...

          Do#m            Sol#m
- Ets tu! sempre ho he vist tan clar!
La sus2              Mi
Les gotes ja hauran parat.
Do#m                  Sol#m
- Ja t'ho vaig dir: no passaran!
        Lam7           Re*       Si5    Do#5
I et fiaré el cel, la lluna i la mà.

Lam7  Re* Si5  Do#5
Lam7  Re*

(1)
Repicaran martells a l'obra
i xisclarà el despertador,
alguna cosa t'il·luminarà,
serà el sol o la tardor.

(1)
Quedarà encara algun tirà
que vencerem amb la unitat,
i armarem aquesta revolució;
dies i nits de guerra i d'amor.

Acords d’«Amiga», de Cesk Freixas

juny 4th, 2011

Acords d’«Amiga», de Cesk Freixas.

D/#F 200230
cADD9 X32033

G              D/#F
He trobat la cançó
                  Cadd9
a la boca del meu poble,
  Am                 D/#F
aquell que comença a Xàtiva
        G             D
i m'ha dut la veu de Filio.

He passat per Vilafranca
on he crescut amb els companys
i he tornat a la meva vall
a les arrels, amb els records.

L'aigua fosca d'aquest riu
m'ha ensenyat a respectar-lo,
a entendre què vol dir amor
i també tenir enemics.

   G            D/#F
Estimo tant la font
      Cadd9
que sovint canto per ella,
    Am           D/#F
com tot allò que vull
       G           D
i necessito per aprendre.

      G          B7          Em
La cançó em salvarà com un escut
       Am        D/#F
i cantaré amb la veu
     Cadd9                    D
d'aquells a qui no deixen dir res.

He trobat una amiga
en la cançó,
que m'acompanya
i m'alimenta les raons.

L'amiga que no s'asseu
davant d'aquells
que parlen amb la boca plena
i tenyeixen el futur de submissió.

Ella m'ha alimentat
fins despertar-me,
i no hi haurà treva
en aquestes veus i el cant.

Et dono una cançó
per tot el que comença,
i posaré a les teves mans
el valor, la il·lusió i un somriure.

La cançó em salvarà com un escut
i cantaré amb la veu
d'aquells a qui no deixen dir res.
Per tots aquells companys que m'han robat,
i en el combat han perdut vida...
però tornaran.

Acords de «He de partir-me en dos» (versió de Cesk Freixas)

juny 1st, 2011

Acords de «He de partir-me en dos» (versió de Cesk Freixas). Original de Silvio Rodríguez

Al disc «Les veus dels pobles lliures» sona en sol.
en directe i l'original és en La.

Am bB E

1)
Am              bB                 E
No us penseu que és per qüestió de vici,
Am            bB                  E       C
que ningú s'aixequi encara que el miri,
C                                      G
ja fa dies que acabo discutint amb la gent,
C                                 G
perquè diu que jo canto coses indecents.

2)
C              Am
T'estimo, amor meu,
F            G
no em deixis sol.
C                      Am
No et vull sentir tan lluny,
F    D/#F      G
mira que jo ploro...

1)
Ho veuen? Ja sóc decent; m'ha sigut fàcil.
Que el públic s'agrupi i que m'aclami.
Que s'apropin els nens, tots els amants del ritme.
Que es quedin asseguts els intel·lectuals...

3)
G        F
He de partir-me en dos
         E
He de partir-me en dos

4)
E               Am
Uns diuen que aquí,
                  F
altres diuen que allà,
                 Am
i jo només vinc a dir,
               F
només vinc a cantar,
              Dm
i no importa la sort
           C
que pugui tenir
      G
una cançó.

4)
Uns diuen que aquí,
altres diuen que allà,
i jo només vinc a dir,
només vinc a cantar,
i no importa que després
em suspenguin l'actuació.

1)
Jo també vaig cantar en tons menors,
també vaig tenir tots aquests dolors.
Jo també semblava que cantés com un sant,
també vaig repetir en més de cent i mil cants;

T'estimo, amor meu...

Però vaig aventurar-me amb més assumptes,
i van aparèixer causes, atzars i lluites;
l'amnistia, el carrer, la cançó de protesta,
i el poeta del poble es va posar de moda.

He de partir-me en dos...

Jo voldria cantar encaputxat
i després barrejar-me al vostre costat,
encara que així no hagués conegut
alguns racons de la terra i a persones com tu...

T'estimo, amor meu...

No repetiré més aquesta tornada,
veig que alguns ulls m'encenen amb mala mirada,
i si us sóc sincer temo no ser interpretat,
gairebé sempre el què passa és que algú ha malpensat...

He de partir-me en dos...

Uns diuen que aquí...
       C            G         F     E
em suspenguin l'actuació

Entra