CAT | scripting
Dopo tanto lavoro prove e sbattimenti vari abbiamo il primo rilascio ufficiale di ckit!
Ringrazio Luca ‘Nss’ e Giovanni ‘voidnull’ per l’insostituibile contributo, e per aver creduto nel progetto.
Il lavoro non è certo finito, anzi ora viene il bello, appena ho tempo libero devo aggiungere alcune nuove funzioni e ristrutturarne altre. Sarà dura ma si tirerà avanti. Alla prossima!
[dax@feeder ~]$ ./ckit_unarch -ULC
==> Updating local PKGBUILD from AUR
-> Getting xbmc-svn from AUR... done
==> Getting db
-> unarch.db.tar.gz... 100% done
==> Checking for outdated packages
-> amarok-git REPO:20100118-1 LOCAL:20100118-1 AUR:20090921-1 DEVEL:20100128-1
-> aurget-git REPO:20100118-1 LOCAL:20100118-1 AUR:20090623-1 DEVEL:20100128-1
-> fotowall-git REPO:20100118-1 LOCAL:20100118-1 AUR:20090725-2 DEVEL:20100128-1
-> handbrake-svn REPO:3077-1 LOCAL:3077-1 AUR:3054-1 DEVEL:3087-1
-> kdenlive-svn REPO:4231-1 LOCAL:4231-1 AUR:3497-2 DEVEL:4250-1
-> microdia-git REPO:20100122-1 LOCAL:Null AUR:20100106-1 DEVEL:20100128-1
-> minitube-git REPO:20100118-1 LOCAL:20100118-1 AUR:20091116-1 DEVEL:20100128-1
-> mpd-git REPO:20100122-1 LOCAL:20100122-1 AUR:20100125-1 DEVEL:20100128-1
-> skype4pidgin-svn REPO:569-1 LOCAL:569-1 AUR:568-1 DEVEL:573-1
-> tilda-cvs REPO:20100125-1 LOCAL:20100125-1 AUR:20080506-1 DEVEL:20100128-1
-> xbmc-svn REPO:26936-1 LOCAL:26936-1 AUR:27229-1 DEVEL:27229-1
[dax@feeder ~]$ ./ckit_unarch -LBain
==> xbmc-svn
-> Getting xbmc-svn from AUR... done
..
...
....
==> Compilazione terminata: amarok-git 20100128-1 i686 (gio 28 gen 2010, 13.17.10, CET)
==> Installing package amarok-git with pacman -U...
caricamento dei dati in corso...
controllo delle dipendenze in corso...
(1/1) controllo dei conflitti in corso [#########################################] 100%
(1/1) aggiornamento in corso di amarok-git [#########################################] 100%
==> Yo, amarok-git done ![]()
==> Packages waiting to be added:
-> amarok-git
-> aurget-git
-> fotowall-git
-> handbrake-svn
-> kdenlive-svn
-> microdia-git
-> minitube-git
-> mpd-git
-> skype4pidgin-svn
-> tilda-cvs
-> xbmc-svn
[dax@feeder ~]$ ./ckit_unarch -A
==> Locking ftp to prevent jumble between maintenances
-> lock.lk... 100% done
==> Getting db
-> unarch.db.tar.gz... 100% done
==> Deleting previous packages
-> amarok-git-20100118-1-i686.pkg.tar.gz... done
-> aurget-git-20100118-1-i686.pkg.tar.gz... done
-> fotowall-git-20100118-1-i686.pkg.tar.gz... done
-> handbrake-svn-3077-1-i686.pkg.tar.gz... done
-> kdenlive-svn-4231-1-i686.pkg.tar.gz... done
-> microdia-git-20100122-1-i686.pkg.tar.gz... done
-> minitube-git-20100118-1-i686.pkg.tar.gz... done
-> mpd-git-20100122-1-i686.pkg.tar.gz... done
-> skype4pidgin-svn-569-1-i686.pkg.tar.gz... done
-> tilda-cvs-20100125-1-i686.pkg.tar.gz... done
-> xbmc-svn-26936-1-i686.pkg.tar.gz... done
==> Adding packages queued
-> amarok-git-20100128-1-i686.pkg.tar.gz... done
-> aurget-git-20100128-1-i686.pkg.tar.gz... done
-> fotowall-git-20100128-1-i686.pkg.tar.gz... done
-> handbrake-svn-3087-1-i686.pkg.tar.gz... done
-> kdenlive-svn-4250-1-i686.pkg.tar.gz... done
-> microdia-git-20100128-1-i686.pkg.tar.gz... done
-> minitube-git-20100128-1-i686.pkg.tar.gz... done
-> mpd-git-20100128-1-i686.pkg.tar.gz... done
-> skype4pidgin-svn-573-1-i686.pkg.tar.gz... done
-> tilda-cvs-20100128-1-i686.pkg.tar.gz... done
-> xbmc-svn-27229-1-i686.pkg.tar.gz... done
==> Putting db
-> unarch.db.tar.gz... 100% done
==> Getting db
-> unarch.db.tar.gz... 100% done
-> Size test ok (20212)
==> Uploading packages
-> amarok-git-20100128-1-i686.pkg.tar.gz... 100% done
-> aurget-git-20100128-1-i686.pkg.tar.gz... 100% done
-> fotowall-git-20100128-1-i686.pkg.tar.gz... 100% done
-> handbrake-svn-3087-1-i686.pkg.tar.gz... 100% done
-> kdenlive-svn-4250-1-i686.pkg.tar.gz... 100% done
-> microdia-git-20100128-1-i686.pkg.tar.gz... 100% done
-> minitube-git-20100128-1-i686.pkg.tar.gz... 100% done
-> mpd-git-20100128-1-i686.pkg.tar.gz... 100% done
-> skype4pidgin-svn-573-1-i686.pkg.tar.gz... 100% done
-> tilda-cvs-20100128-1-i686.pkg.tar.gz... 100% done
-> xbmc-svn-27229-1-i686.pkg.tar.gz... 100% done
==> Unlocking ftp
-> lock.lk... done
==> Repository updated! Gj, see ya.
[dax@feeder ~]$ ./ckit_unarch -C
==> Getting db
-> unarch.db.tar.gz... 100% done
==> Checking for outdated packages
-> oxygenrefit2-icon-theme REPO:2.4.0-3 LOCAL:2.4.0-3 AUR:2.4.0-4 DEVEL:Null
[dax@feeder ~]$ ./ckit_unarch -ALBain
==> oxygenrefit2-icon-theme
-> Getting oxygenrefit2-icon-theme from AUR... done
==> Creazione del pacchetto: oxygenrefit2-icon-theme 2.4.0-4 i686 (gio 28 gen 2010, 14.08.37, CET)
==> Controllo delle dipendenze per l'esecuzione in corso...
==> Controllo delle dipendenze per la compilazione in corso...
==> Download dei sorgenti in corso...
-> Download di OxygenRefit2-2.4.0.tar.bz2 in corso...
..
...
....
==> Installing package oxygenrefit2-icon-theme with pacman -U...
caricamento dei dati in corso...
controllo delle dipendenze in corso...
(1/1) controllo dei conflitti in corso [#########################################] 100%
(1/1) aggiornamento in corso di oxygenrefit2-ic... [#########################################] 100%
==> Yo, oxygenrefit2-icon-theme done ![]()
==> Cleaning oxygenrefit2-icon-theme directory
-> /home/dax/pkg/workspace/oxygenrefit2-icon-theme/src removed
-> bz2 removed
==> Packages waiting to be added:
-> oxygenrefit2-icon-theme
==> Locking ftp to prevent jumble between maintenances
-> lock.lk... 100% done
==> Getting db
-> unarch.db.tar.gz... 100% done
==> Deleting previous packages
-> oxygenrefit2-icon-theme-2.4.0-3-i686.pkg.tar.gz... done
==> Adding packages queued
-> oxygenrefit2-icon-theme-2.4.0-4-i686.pkg.tar.gz... done
==> Putting db
-> unarch.db.tar.gz... 100% done
==> Getting db
-> unarch.db.tar.gz... 100% done
-> Size test ok (20222)
==> Uploading packages
-> oxygenrefit2-icon-theme-2.4.0-4-i686.pkg.tar.gz... 100% done
==> Unlocking ftp
-> lock.lk... done
==> Repository updated! Gj, see ya.
20
ckit miglioramenti e nuova sede
1 commento | Posted by dax in archlinux, me, scripting, tales
Da considerare deprecata la pagina su googlepage, ckit è tornato a casa e lo ospito direttamente io qui.
Sistemate cosucce ed introdotta la versione. È in prova da una settimana rispetto alle ultime funzioni aggiunte e pare vada bene, posso dire che si può iniziare a pensare alla fusione con repoman.
Come non saprete, ckit è un lavoro sperimentale quasi una scommessa che io ho fatto con delle idee che avevo e che ho maturato durante lo sviluppo di repoman, ma che ho iniziato a mettere in pratica senza alcun traguardo od ambizione nei momenti morti. Con il tempo l’idea si è raffinata fino a diventare senza nessuna aspettativa, un bello scriptino funzionale e pulito, imho nella filosofia arciera. È un progetto nato per morire però, nel caso fosse andato bene si avrebbe potuto iniziare a parlare di fusione con repoman, nel caso fosse andato male sarebbe rimasto li e cancellato.
Perché non fate domani la fusione? La risposta è semplice, ckit ha forse troppe interfacce pubbliche, siccome non ho tanto tempo da dedicargli e non mi sono mai messo con carta e penna a perdere le giornate per capire come migliorargli l’usabilità lato utente (certo sempre utente-sviluppatore non utente-utonto), lo studio durante l’utilizzo cercando di capire se questo lo facessi così come verrebbe? Vi dirò di più questo script è stato fatto praticamente a runtime, tutte le sue funzioni sono state scritte un minuto prima di usarlo e anche durante, e poi raffinate nei giorni successivi con correzzioni semantiche e pulizia del codice. Sapete benissimo che in bash puoi fare una cosa in mille mila maniere e c’è sempre una strada più pulita per fare qualunque cosa, bisogna solo mettersi a pensare un pò. È questo il lavoro che faccio quando dico “lo tengo in prova per una settimana”, altro non è che guardare il codice e farsi venire idee su come si potrebbe migliorare, sempre nei momenti morti che può essere mezz’ora la mattina dopo le 12 oppure un’oretta la sera dopo le 8, a seconda che abbia allenamenti di boxe o no. Dico questo per giustificare la qualità e la lentezza nello sviluppo.
Detto ciò penso che il post sia completo, dalla pagina del progetto su deelab c’è qualche altra spegazioncina. Se notate strafalcioni di inglese datemi voce, avevo chiesto ad alcuni amici di darci una letta ma pare che stavolta nessuno abbia avuto tempo libero (il che rispecchia esattamente le mie richieste).
Aggiunto il –skipinteg, pulito il codice e creata una pagina da zio google come home del progetto.
Niente di che, sempre tutto casereccio, rustico e semplice semplice.
http://archlinuxckit.googlepages.com/
Saluti
Dunque, in questa versione si può dire che ho riscritto quasi da zero ogni singola funzione che utilizzo ripulendo il codice in lungo e in largo. Andando a ritroso devo proprio ammettere di aver sbandierato praticamente porcherie scritte senza giudizio nei post precedenti. Comunque ho cambiato un pò i comandi ed aggiunto roba segato altra riscritto quasi tutto il codice. Io dico che ora merita, ma tanto me lo dico da solo visto che sarò l’unico ad usarlo ![]()
Ad ogni modo credo di poter dire che si avvicina la prima versione stabile, il prossimo post annuncerà questo e se tutto va bene sarà pubblicato per i primi di settembre, detto ciò siori e siore ecco ckit.
Saluti.
Belli miei, ecco il mio capolavoro. Il vecchio ckit con l’implementazione della getopts.
E’ anche cambiata qualcosa nel codice, ho migliorato un pò di cose ed eliminate altre, sempre la solita solfa di quando si fa un programma insomma.
Non mi dilungo in inutili spiegazioni: LINK.
Più che altro ho in previsione di implementare un controllo sugli argomenti in input. Per ora il programma avvia ogni task l’utente voglia, logicamente ci sono argomenti che non ha senso passare insieme. E’ logico poter avviare -BaiA (-B build, -a tira il tarball da AUR, -i installa e -A aggiungi al repo), però non avrebbe senso lanciare un check al termine di un build.
Per il resto limitatevi a dare uno sguardo all’help raggiungibile dal -h o senza argomenti.
Saluti.
Aggiunta roba, migliorata dell’altra ed ecco che una bidonata di ammasso di codice inutile forse inizia a diventare qualcosa di figo: LINK. Ammè mepiasce, lo tengo in uso per un altro pò vediamo come si comporta. Forse la prima versione ufficiale e stabile 1.0 è vicina.
In maniera molto rudimentale però si va avanti, ho abbozzato un primissimo controllo sul repo uppato. In breve semplicemente lo invio, lo riscarico quindi controllo la dimensione di ciò che avevo e ciò che ho ottenuto segnalando lo stato del db. In caso di esito negativo consiglio l’uso di un restoredb che ripristina il repo allo stato precedente. La cosa va comunque migliorata, per ora è solo un abbozzo.
lftp_put_repo(){
cp "$repo" "$repo"_prev
lftp_run "put $repo" &>/dev/null
wgetrepo
i=$(stat -c%s "$repo")
j=$(stat -c%s "$repo"_prev)
[[ $i = $j ]] && echo " -> Fatto, controllo dimensione ok ($i)." || echo " -> OCCHIO: $i ~ $j! Potresti aver bisogno di restoredb!"
}
Lo stavo facendo con md5sum ma ho avuto noie. LINK.
Serviva un modo per poter aggiornare i pacchetti ottenuti dal check, quindi ho scritto una seconda funzione per la compilazione: build1. LINK.
$ sh CKIT build1
==> CKIT - Construction KIT
==> Ok, azione scelta build1.
==> Processo i pacchetti ottenuti dal check.
==> tilda-cvs: vuoi aggiornare? (y/n) y
-> Vuoi prendere il PKGBUILD da AUR? (y/n) y
-> Ti basta compilare da user? (y/n) y
-> Ok, tilda-cvs fatto ![]()
==> pidgin-facebookchat-svn: vuoi aggiornare? (y/n) n
==> pcmanfm-svn: vuoi aggiornare? (y/n) y
-> Vuoi prendere il PKGBUILD da AUR? (y/n) y
-> Ti basta compilare da user? (y/n) y
-> Ok, pcmanfm-svn fatto ![]()
==> minitube-git: vuoi aggiornare? (y/n) y
-> Vuoi prendere il PKGBUILD da AUR? (y/n) y
-> Ti basta compilare da user? (y/n) y
-> Spiacente, il pacco minitube-git non compila ![]()
==> microdia-git: vuoi aggiornare? (y/n) n
==> gnome-do-bzr: vuoi aggiornare? (y/n) y
-> Vuoi prendere il PKGBUILD da AUR? (y/n) y
-> Ti basta compilare da user? (y/n) y
-> Ok, gnome-do-bzr fatto ![]()
==> aurget-git: vuoi aggiornare? (y/n) y
-> Vuoi prendere il PKGBUILD da AUR? (y/n) y
-> Ti basta compilare da user? (y/n) y
-> Ok, aurget-git fatto ![]()
==> amarok-svn: vuoi aggiornare? (y/n) n
Spendo due paroline per descrivere la funzione. Ho aggiunto nel check due righe che aggiornano un file di testo man mano che trovo pacchetti da aggiornare.
Quindi il build1 va a scansionare questo file, richiedendo di voce in voce se scaricare il PKGBUILD da AUR e se compilare da user o root, mantenendo sempre la filosofia principale del programma. Ho inoltre nascosto l’output del makepkg perchè non è l’operazione predominante, fermo restando che per un uso verboso c’è il “build pacco flag flag”.
Per concludere, le due funzioni di compilazione usano le stesse risorse e sono perfettamente compatibili, è possibile lavorare prima con un build1 generico e successivamente con un build specifico su un pacchetto che, ad esempio, prima non compilava causa dipendenze mancanti o PKGBUILD da sistemare, per poi concludere con un unico add. L’eventuale modifica del PKGBUILD dovrà essere fatta in separata sede ed a mano.
Il programma comunque non è ancora multitasking e dubito lo sarà mai, perchè la compilazione tende ad usare gia di suo l’intera potenza della cpu.
Per ora questo è quanto. Saluti.

