Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

Empaquetar es DIFÍCIL

O ni si­quie­ra eso, quie­ro que la gen­te ten­ga la opor­tu­ni­dad de usar­lo.

Eso sig­ni­fi­ca que quie­ro que fun­cio­ne en Win­do­ws (y tal vez en OSX al­gún día, si al­guien me da una ma­no­). Lo que sig­ni­fi­ca que ten­go que ha­cer una ver­sión pa­ra Win­do­ws.

ha­ga­mos una com­pa­ra­ción rá­pi­da des­de el pun­to de vis­ta del usua­rio y del de­sa­rro­lla­do­r.

El usuario, en Linux

Es­to es en Ar­ch Li­nu­x, que es lo que yo uso, en otras va­rian­tes es más o me­nos lo mis­mo una vez que Ma­ra­ve sea mas co­no­ci­do.

yaourt -S marave-svn --noconfirm

Eso ob­tie­ne el có­di­go de SVN (por aho­ra es lo me­jo­r, más ade­lan­te em­pa­que­ta­ré re­lea­ses), to­das las de­pen­den­cia­s, y lo ins­ta­la. Tar­da unos 15 se­gun­dos en mi no­te­book.

Des­pués de eso, te­nés un Ma­ra­ve fun­cio­nan­do.

En ca­so de que no es­té en tu dis­tro, te­nés que ins­ta­lar Py­Qt (que se­gu­ro si es­tá) y co­rre­r:

easy_install marave

El usuario, en windows

Vas a http://­ma­ra­ve.­google­co­de.­com, cli­ck en "Ma­ra­ve-0.5.wi­n32.exe" (No lo bus­ques, to­da­vía no es­tá) ba­jás un pro­gra­ma de 10M­B. Eso es un pro­gra­ma de 10MB por­que win­do­ws no cree en pa­que­tes y en de­pen­den­cia­s. En Li­nux un pa­que­te de Ma­ra­ve se­ría 1MB (ca­si to­do imá­ge­nes), y se­ría da­to­s, no eje­cu­ta­ble.

Por su­pues­to hoy en día un bro­w­ser no te eje­cu­ta un pro­gra­ma que ba­jas­te, asi que... ha­ga­mos una ga­le­ría!

110111105613-My-Desktop

Sí, guar­da­r.

11011111220-My-Desktop

Do­ble cli­ck pa­ra abri­r.

11011111417-My-Desktop

Sí, es­toy de acuer­do.

11011111514-My-Desktop

Hm­m­m, bue­no.

1101111167-My-Desktop

Bár­ba­ro­...

11011111750-My-Desktop

Ge­nia­l!

Aho­ra es­te Ma­ra­ve pue­de fun­cio­nar o no pe­ro eso es pa­ra más ade­lan­te...

El desarrollador, en Linux

Pri­me­ro, es­te es el ma­yor pro­ble­ma un "em­pa­que­ta­do­r" pue­de te­ner en Li­nu­x:

Co­mo Ma­ra­ve es una apli­ca­ción nue­va, y la de­sa­rro­llo en Ar­ch Li­nux que es me­dio cu­tting edge, usa fea­tu­res que só­lo es­tán en ver­sio­nes nue­vas de Py­Q­t. De he­cho no fun­cio­na con Py­Qt < 4.6, que no es­tá en al­gu­nas dis­tros "len­ta­s" o en un Ubun­tu que no es el úl­ti­mo.

So­lu­ció­n? Bue­no, po­dría ig­no­rar­lo, pe­ro que tan­to, va­mos a arre­glar­lo!

Graias a PyIns­ta­ller ni si­quie­ra es tan di­fí­ci­l, es­te es el ar­chi­vo spe­c:

a = Analysis([os.path.join(HOMEPATH,'support/_mountzlib.py'), os.path.join(HOMEPATH,'support/useUnicode.py'), 'marave/main.py'],
            pathex=['/home/ralsina/trunk/trunk'])

pyz = PYZ(a.pure)
exe = EXE(pyz,
        a.scripts,
        exclude_binaries=1,
        name=os.path.join('build/pyi.linux2/main', 'marave.exe'),
        debug=False,
        strip=False,
        upx=True,
        console=0 )

coll = COLLECT( exe,
            a.binaries,
            [('radios.txt','marave/radios.txt','DATA')],
            Tree('marave/icons','icons'),
            Tree('marave/backgrounds','backgrounds'),
            Tree('marave/clicks','clicks'),
            Tree('marave/stylesheets','stylesheets'),
            Tree('marave/themes','themes'),
            a.zipfiles,
            a.datas,
            strip=False,
            upx=True,
            name=os.path.join('dist', 'marave'))

Usan­do es­to, PyIns­ta­ller pro­du­ce una lin­da car­pe­ta lle­na de to­do lo que Ma­ra­ve ne­ce­si­ta pa­ra fun­cio­nar en cual­quier Li­nu­x.

Por otro la­do, si se pue­de con­tar con que ha­ya un Py­Qt re­cien­te dis­po­ni­ble, tam­bién es fá­ci­l. És­te es el ar­chi­vo de con­fi­gu­ra­ción pa­ra un pa­que­te si­mi­lar en Ar­ch Li­nux (to­da­vía no hi­ce uno pa­ra Ma­ra­ve). Pa­ra otros Li­nux es más o me­nos lo mis­mo, y nor­mal­men­te al­guien te lo ha­ce:

# Contributor: Roberto Alsina <ralsina@kde.org>
pkgname=python-rst2pdf
pkgver=0.12.1
pkgrel=4
pkgdesc="Create PDFs from simple text markup, no LaTeX required."
arch=('i686' 'x86_64')
url="http://rst2pdf.googlecode.com"
license=('custom')
depends=('python' 'setuptools' 'docutils' 'pygments' 'python-reportlab' 'python-simplejson' 'pil')
source=(http://rst2pdf.googlecode.com/files/rst2pdf-$pkgver.tar.gz LICENSE.txt)
optdepends=('uniconvertor: vector images support'
            'python-svglib: SVG support'
            'python-wordaxe: hyphenation'
            'pythonmagick: PDF images support')
build() {
cd $startdir/src/rst2pdf-$pkgver
python setup.py install --root=$startdir/pkg || return 1
install -D ../LICENSE.txt $startdir/pkg/usr/share/licenses/python-rst2pdf/COPYING
install -D doc/rst2pdf.1 $startdir/pkg/usr/share/man/man1/rst2pdf.1
}
md5sums=('ea6beda9a46f34ba42c4c94d48cc607a'
        '416f8046c66b9476cdbacda69a673afe')

Y eso es to­do lo que hay que sa­ber del pro­ce­so de em­pa­que­tar tu apli­ca­ción pa­ra Li­nu­x, es fá­cil de ha­ce­r, y la ma­yor par­te del tiem­po, fá­cil de ha­cer bien.

Aho­ra, la sec­ción fi­na­l...

Windows para el desarrollador

¿Pri­me­ro, te acor­dás de eso de de­pen­der de la ver­sión de sis­te­ma de Qt? Ol­ví­da­lo, no hay ver­sión de sis­te­ma. Tam­po­co hay Py­tho­n, así que no im­por­ta. Y na­die los va a ins­ta­lar pa­ra tu apli­ca­ció­n, así que te­ne­mos que me­ter to­do no­so­tro­s, o na­da.

Pe­ro lo bue­no es que PyIns­ta­ller fun­cio­na pa­ra Win­do­ws! En­ton­ce­s, usan­do el mis­mo spec fun­cio­na, no?

Bue­no, hay dos pro­ble­ma­s...

Problema 1: El instalador

Los usua­rios de Win­do­ws no van a abrir un zip y co­nec­tar el bi­na­rio con el me­nú de ini­cio ni na­da pa­re­ci­do, así que hay que ha­cer un ins­ta­la­do­r.

Es­to es lo que hi­ce pa­ra NSIS, un crea­dor de ins­ta­la­do­res gra­tui­to:

;--------------------------------
;Include Modern UI

!include "MUI2.nsh"

;--------------------------------
;General

;Name and file
Name "Marave"
OutFile "Marave-0.5.win32.exe"

;Default installation folder
InstallDir "$LOCALAPPDATA\Marave"

;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\Marave" ""

;Request application privileges for Windows Vista
RequestExecutionLevel user

;--------------------------------
;Interface Settings

!define MUI_ABORTWARNING

;--------------------------------
;Pages

!insertmacro MUI_PAGE_LICENSE "LICENSE"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

;--------------------------------
;Languages

!insertmacro MUI_LANGUAGE "English"

;--------------------------------
;Installer Sections

Section "Install"

SetOutPath "$INSTDIR"
File /r "dist\marave"


;Store installation folder
WriteRegStr HKCU "Software\Marave" "" $INSTDIR

;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"

;Create shortcuts
CreateDirectory $SMPROGRAMS\Marave
CreateShortCut "$SMPROGRAMS\Marave\Marave.lnk" "$INSTDIR\marave\marave.exe" ; use defaults for parameters, icon, etc.
CreateShortCut "$SMPROGRAMS\Marave\Uninstall Marave.lnk" "$INSTDIR\Uninstall.exe" ; use defaults for parameters, icon, etc.

SectionEnd


;--------------------------------
;Uninstaller Section

Section "Uninstall"

Delete "$INSTDIR\Uninstall.exe"
RMDir /r "$INSTDIR"

DeleteRegKey /ifempty HKCU "Software\Marave"

SectionEnd

Es com­pa­ra­ble al es­fuer­zo de ha­cer un arhi­vo de em­pa­que­ta­do, ex­cep­to que ca­da vez que lo que­rés pro­ba­r... lo ins­ta­lá­s. No hay ma­ne­ra (que yo vea) de sa­ber qué hay aden­tro del ins­ta­la­dor ex­cep­to co­rrer­lo.

Cuan­do las co­sas fa­llan, no hay men­sa­jes de erro­r, por lo me­nos no del ti­po que es útil pa­ra un de­sa­rro­lla­do­r, el que ne­ce­si­ta sa­ber que salió mal.

Des­pués de que ter­mi­na, tal vez no fun­cio­ne por­que...

Problema 2: bibliotecas de sistema. Ja!

Los bi­na­rios de Py­thon 2.6 es­tán com­pi­la­dos con Vi­sual Stu­dio. Eso quie­re de­cir que ne­ce­si­tan el Vi­sual Stu­dio Runti­me, es­pe­cí­fi­ca­men­te MS­V­CR90.D­LL. És­ta con­tie­ne co­sas que en Li­nux se­rían con­si­de­ra­do par­te de la li­bc (li­nu­xe­ro: ima­gi­na­te apli­ca­cio­nes que de­pen­den de una li­bc es­pe­cí­fi­ca... ¡no es fá­ci­l!)

En Li­nux eso es par­te del sis­te­ma. Más aú­n, si lo ne­ce­si­ta­s, lo re­dis­tri­buís. En Win­do­ws... es di­fe­ren­te.

  1. Es pa­r­­te del "Vi­­sual C++ re­­dis­­tri­­bu­­ta­­ble­s"

  2. In­s­­ta­­la­r­­lo no es ga­­ran­­tía de que an­­de (sí, lo pro­­­bé)

  3. La li­­cen­­cia de esos 're­­dis­­tri­­bu­­ta­­ble­s' di­­ce que no lo po­­­dés ha­­cer dis­­po­­­ni­­ble pa­­ra des­­ca­r­­ga.

    Me han di­­cho que in­­cluír­­lo en tu in­s­­ta­­la­­dor es le­­ga­­l, pe­­ro a mí me pa­­re­­ce que eso es ha­­ce­r­­lo dis­­po­­­ni­­ble pa­­ra des­­ca­r­­ga!

¿Qué se ha­ce cuan­do ne­ce­si­tás una bi­blio­te­ca, no la po­dés dis­tri­buir y el usua­rio no la va a ins­ta­la­r?

Bue­no, por al­go no hay bi­na­rios de Ma­ra­ve pa­ra Win­do­ws to­da­vía ;-) Por su­pues­to si al­guien lo pue­de re­sol­ve­r, me en­can­ta­ría!

Marave 0.4 en la calle!

Es­ta ver­sión in­clu­ye va­rios bugs arre­gla­dos y nue­vos fea­tu­res com­pa­ra­do con 0.3:

  • Fun­­cio­­­na bien con Wi­n­­do­­w­­Maker (los diá­­lo­­­gos salían atrás de la ven­­ta­­na pri­n­­ci­­pa­­l)

  • Fun­­cio­­­na me­­jor con el es­­ti­­lo GTK+ de Qt (y otro­­s) en los que los co­m­­bos eran inu­s­a­­bles

  • Nue­­vo so­­­po­r­­te de fo­n­­dos en SVG

  • Li­m­­pie­­za de có­­­di­­go

Ma­ra­ve es so­ftwa­re li­bre ba­jo la GPL, y de­be­ría fun­cio­nar en to­das las pla­ta­for­mas im­por­tan­tes.

Me en­can­ta­ría ver reac­cio­nes a es­te re­lea­se, así co­mo ideas pa­ra el fu­tu­ro de Ma­ra­ve, si quie­res ayu­da­r, por fa­vor úne­te a la lis­ta de co­rreo:

http://­group­s.­google.­co­m/­grou­p/­ma­ra­ve-­dis­cuss

Por su­pues­to, si te gus­ta Ma­ra­ve, eres li­bre de dar­me di­ne­ro

Marave 0.3 en la calle!

Es­ta ver­sión in­clu­ye va­rios bugs arre­gla­dos y nue­vos fea­tu­res com­pa­ra­do con 0.2:

  • Nue­­vo so­­­po­r­­te de 'Es­­ti­­lo­­s', se pue­­de ca­m­­biar el as­­pe­c­­to de Ma­­ra­­ve con si­n­­ta­­xis CSS

  • Me­­jo­­­ra­­do so­­­po­r­­te de te­­ma­s, se in­­clu­­yen al­­gu­­no­­s.

  • Arre­­gla­­do bug de pre­­fe­­ren­­cia de co­­­lor de tex­­to

  • Arre­­gla­­do bug de ca­m­­bio de ti­­po­­­gra­­fía

  • Usa el no­m­­bre del do­­­cu­­men­­to en el tí­­tu­­lo de la ven­­ta­­na

  • No­­­ti­­fi­­ca­­ción de qué es­­tás es­­cu­­chan­­do

ma­ra­ve es so­ftwa­re li­bre ba­jo la GPL, y de­be­ría fun­cio­nar en to­das las pla­ta­for­mas im­por­tan­tes.

Me en­can­ta­ría ver reac­cio­nes a es­te re­lea­se, así co­mo ideas pa­ra el fu­tu­ro de Ma­ra­ve, si quie­res ayu­da­r, por fa­vor úne­te a la lis­ta de co­rreo:

http://­group­s.­google.­co­m/­grou­p/­ma­ra­ve-­dis­cuss

Por su­pues­to, si te gus­ta Ma­ra­ve, eres li­bre de dar­me di­ne­ro

Salió Marave 0.2!

És­ta ver­sión in­clu­ye unos cuan­tos arre­glos y nue­vas ca­rac­te­rís­ti­cas im­ple­men­ta­das des­de 0.1.1:

  • Se co­­­rri­­gió el me­­nú de bo­­­tón de­­re­­cho co­­­rru­p­­to (Is­­sue 20)

  • No más pa­r­­pa­­deo al ca­m­­biar el fo­n­­do

  • In­­fo­r­­ma­­ción más de­­ta­­lla­­da de li­­cen­­cias

  • Más pro­­­ba­­do en Wi­n­­do­­ws

  • Ayu­­da (F1)

  • Bus­­car y Ree­m­­pla­­zar (pe­­ro "ree­m­­pla­­zar to­­­da­s" no es­­tá)

  • Nue­­vo ar­­te

  • No­­­ti­­fi­­ca­­cio­­­nes de sta­­tus

  • In­­fo del do­­­cu­­men­­to (C­­tr­­l+I)

  • Me­­jor fee­­dba­­ck en la in­­te­r­­faz (so­­­bre to­­­do los bo­­­to­­­nes)

  • Gua­r­­da ta­­ma­­ño de ti­­po­­­gra­­fía co­­­rre­c­­ta­­men­­te

  • Arre­­gla­­do el pro­­­ble­­ma de "A­­rran­­ca en el fo­n­­do" (Is­­sue 17)

Ma­ra­ve es so­ftwa­re li­bre li­be­ra­do ba­jo la GPL, y de­be­ría fun­cio­nar en to­das las pla­ta­for­mas prin­ci­pa­le­s.

Me en­can­ta­ría ob­te­ner fee­dba­ck de es­ta ver­sió­n, así co­mo ideas pa­ra el fu­tu­ro de Ma­ra­ve, por lo que se abrió una lis­ta de co­rreo:

http://­group­s.­google.­co­m/­grou­p/­ma­ra­ve-­dis­cuss

Por su­pues­to, si te gus­ta Ma­ra­ve, sos li­bre de dar­me di­ne­ro

Marave 0.1 liberado, necesita testers!

¿Qué es Ma­ra­ve?

Ma­ra­ve es un edi­tor que no te dis­trae. Tie­ne una in­ter­faz de pan­ta­lla com­ple­ta, y la ma­yor par­te del tiem­po, mien­tras es­cri­bís, se ve só­lo tu tex­to, y tal vez un fon­do.

marave1

Por su­pues­to que es bas­tan­te con­fi­gu­ra­ble:

marave2

Al­gu­nos de los fea­tu­res:

  • Fo­n­­dos pe­r­­so­­­na­­li­­za­­dos (i­­má­­ge­­nes o co­­­lo­­­res)

  • Ti­­po­­­gra­­fía co­n­­fi­­gu­­ra­­ble

  • El edi­­tor pue­­de ca­m­­biar de ta­­ma­­ño po­­­si­­ción u opa­­ci­­da­­d.

  • In­­te­r­­faz "des­­va­­ne­­cien­­te", cuan­­do es­­cri­­bís, to­­­do des­a­pa­­re­­ce.

  • Mú­­si­­ca op­­cio­­­nal (por aho­­­ra apun­­ta a strea­­ming de au­­dio, tal vez pro­n­­to soun­­d­s­­ca­­pes)

  • Op­­cio­­­nal fee­­dba­­ck de au­­dio de te­­cla­­do (por si ex­­tra­­ñas la Oli­­ve­­tti)

  • So­­­po­r­­ta te­­mas

  • Co­­­rre­c­­tor or­­to­­­grá­­fi­­co mu­l­­ti­­li­n­­güe (re­­quie­­re pyen­­chan­­t)

Ma­ra­ve es­tá im­ple­men­ta­do usan­do Py­Q­t, por lo que de­be­ría fun­cio­nar en to­das las pla­ta­for­mas prin­ci­pa­les de es­cri­to­rio, Win­do­ws, Li­nux y Mac OS­X, mien­tras ten­gas Py­Qt ins­ta­la­do.

En el fu­tu­ro, bi­na­rios sen­ci­llos de uti­li­zar se pro­vee­rán pa­ra Win­do­ws y Ma­c.

Es­ta ver­sión no es­tá com­ple­ta. Es­pe­cí­fi­ca­men­te:

  • Bus­­ca­­r+­­Ree­m­­pla­­zar no fun­­cio­­­na

  • Pue­­de ha­­ber co­n­­fi­­gu­­ra­­cio­­­nes no im­­ple­­men­­ta­­das

Des­car­ga Ma­ra­ve 0.1

OJO! 0.2 dis­po­ni­ble, en http://­co­de.­google.­co­m/­p/­ma­ra­ve/­do­wn­load­s/­list


Contents © 2000-2024 Roberto Alsina