View previous topic :: View next topic |
Author |
Message |
anacleto44 n00b
Joined: 24 Aug 2005 Posts: 18
|
Posted: Thu Mar 23, 2006 3:19 pm Post subject: [TIPS] Tempi di compilazione... |
|
|
Sinceramente iniziare a fare l'aggiornamento del mio sistema e non sapere neanche orientativamente quanto impiegherò a completare tutto... mi ha sempre dato molto fastidio. L'utilità che ho trovato nel forum (genlop) mi permette di vedere quanto tempo ho impiegato nelle compilazioni precedenti...ma l'idea guardarmi ogni pacchetto manualmenete e singolarmente non mi andava molto giù. Così ho fatto questo piccolo script in perl che calcola quanto tempo impiegherò ad effettuare l'aggiornamento sommando tutti i tempi di ogni pacchetto nelle compilazioni precedenti.
gentime.pl:
Code: | #!/usr/bin/perl -w
$i = 0;
print "Avviato emerge --columns -puD world...\n";
@emerge = `emerge --columns -puD world`;
print "Calcolo in corso dei pacchetti...\n";
foreach $emerge(@emerge) {
if (($emerge =~ "ebuild") && (($emerge =~ "U ]") || ($emerge =~ "UD]"))) {
$i++;
$string = "echo \"".$emerge."\" \| cut -d ']' -f 2 \| cut -d ' ' -f 2";
$last = `$string`;
chop($last);
$emerge = $last;
$time = `echo "\`genlop -t $last\`" | tail -n 1 | cut -d ':' -f 2`;
chop($time);
$time = `echo "$time"`;# | cut -d ';' -f 2 | cut -d '[' -f 1`;
@time = split(/ /, $time);
$minutes = 0;
$hours = 0;
$seconds = 0;
foreach $time(@time) {
if ($time =~ "minute") {
$minutes = $last;
} elsif ($time =~ "hour") {
$hours = $last;
} elsif ($time =~ "second") {
$seconds = $last;
}
$last = $time;
}
$hours = `echo "$hours" | cut -d 'm' -f 2 | cut -d '[' -f 1`;
$minutes = `echo "$minutes" | cut -d 'm' -f 2 | cut -d '[' -f 1`;
$seconds = `echo "$seconds" | cut -d 'm' -f 2 | cut -d '[' -f 1`;
$hours++; $hours--;
$minutes++; $minutes--;
$seconds++; $seconds--;
chop($emerge);
print "(".$i.") $emerge => Ore: $hours Minuti: $minutes Secondi: $seconds\n";
$seconds = $seconds + $minutes*60 + $hours*3600;
print "Secondi Totali Pacchetto: $seconds\n";
$sum += $seconds;
}
}
print "Totale secondi tutti pacchetti: $sum\n";
$hours = int($sum/3600);
$minutes = int($sum/60) - ($hours*60);
$seconds = $sum - $minutes*60 - $hours*3600;
print "Ore totali: $hours Minuti totali: $minutes Secondi totali: $seconds\n"; |
Naturalmente e' richiesto genlop e il risultato del suo utilizzo è questo:
Se ad esempio voglio aggiornare questi pacchetti sul sistema:
Quote: | These are the packages that would be merged, in order:
Calculating world dependencies ..... ..^H^H... done!
[ebuild U ] sys-libs/libstdc++-v3 [3.3.6] [3.3.4] USE="-build% -nptl%"
[ebuild U ] sys-libs/glibc [2.4-r1] [2.3.5-r2]
[ebuild U ] sys-devel/gettext [0.14.5] [0.14.4] USE="-nocxx%"
[ebuild U ] sys-apps/groff [1.19.2-r1] [1.19.1-r2]
[ebuild U ] sys-libs/db [4.2.52_p4] [4.2.52_p2-r1] USE="-java*"
[ebuild U ] sys-devel/libperl [5.8.8] [5.8.7]
[ebuild U ] dev-lang/perl [5.8.8] [5.8.7-r3]
[ebuild U ] app-admin/perl-cleaner [1.03] [1.01]
[ebuild U ] dev-lang/python [2.4.2-r1] [2.4.2]
[ebuild U ] sys-apps/sandbox [1.2.17] [1.2.12]
[ebuild U ] sys-apps/debianutils [2.15] [2.14.1-r1]
[ebuild U ] sys-apps/man-pages [2.26] [2.25]
[ebuild U ] sys-apps/grep [2.5.1a] [2.5.1-r8]
[ebuild U ] sys-apps/help2man [1.35.1] [1.33.1]
[ebuild U ] sys-devel/autoconf-wrapper [3.2] [3-r1]
[ebuild U ] media-libs/freetype [2.1.10] [2.1.9-r1]
[ebuild U ] media-libs/fontconfig [2.3.2] [2.2.3]
[ebuild U ] sys-apps/file [4.17-r1] [4.13]
[ebuild U ] sys-apps/util-linux [2.12r-r3] [2.12r-r2]
[ebuild U ] app-arch/rpm2targz [9.0-r4] [9.0-r3]
[ebuild U ] sys-apps/coreutils [5.94-r1] [5.2.1-r7] |
per sapere orientativamente quanto impiegherò basta avviare lo script e il risultato sarà come questo:
Code: | Avviato emerge --columns -puD world...
Calcolo in corso dei pacchetti...
(1) sys-libs/libstdc++-v3 => Ore: 0 Minuti: 26 Secondi: 33
Secondi Totali Pacchetto: 1593
(2) sys-libs/glibc => Ore: 0 Minuti: 37 Secondi: 38
Secondi Totali Pacchetto: 2258
(3) sys-devel/gettext => Ore: 0 Minuti: 8 Secondi: 44
Secondi Totali Pacchetto: 524
(4) sys-apps/groff => Ore: 0 Minuti: 1 Secondi: 53
Secondi Totali Pacchetto: 113
(5) sys-libs/db => Ore: 0 Minuti: 9 Secondi: 34
Secondi Totali Pacchetto: 574
(6) sys-devel/libperl => Ore: 0 Minuti: 3 Secondi: 5
Secondi Totali Pacchetto: 185
(7) dev-lang/perl => Ore: 0 Minuti: 5 Secondi: 44
Secondi Totali Pacchetto: 344
(8) app-admin/perl-cleaner => Ore: 0 Minuti: 0 Secondi: 42
Secondi Totali Pacchetto: 42
(9) dev-lang/python => Ore: 0 Minuti: 8 Secondi: 41
Secondi Totali Pacchetto: 521
(10) sys-apps/sandbox => Ore: 0 Minuti: 1 Secondi: 21
Secondi Totali Pacchetto: 81
(11) sys-apps/debianutils => Ore: 0 Minuti: 1 Secondi: 27
Secondi Totali Pacchetto: 87
(12) sys-apps/man-pages => Ore: 0 Minuti: 2 Secondi: 7
Secondi Totali Pacchetto: 127
(13) sys-apps/grep => Ore: 0 Minuti: 1 Secondi: 38
Secondi Totali Pacchetto: 98
(14) sys-apps/help2man => Ore: 0 Minuti: 0 Secondi: 10
Secondi Totali Pacchetto: 10
(15) sys-devel/autoconf-wrapper => Ore: 0 Minuti: 0 Secondi: 37
Secondi Totali Pacchetto: 37
(16) media-libs/freetype => Ore: 0 Minuti: 2 Secondi: 25
Secondi Totali Pacchetto: 145
(17) media-libs/fontconfig => Ore: 0 Minuti: 1 Secondi: 9
Secondi Totali Pacchetto: 69
(18) sys-apps/file => Ore: 0 Minuti: 0 Secondi: 40
Secondi Totali Pacchetto: 40
(19) sys-apps/util-linux => Ore: 0 Minuti: 2 Secondi: 22
Secondi Totali Pacchetto: 142
(20) app-arch/rpm2targz => Ore: 0 Minuti: 0 Secondi: 12
Secondi Totali Pacchetto: 12
(21) sys-apps/coreutils => Ore: 0 Minuti: 8 Secondi: 53
Secondi Totali Pacchetto: 533
Totale secondi tutti pacchetti: 7535
Ore totali: 2 Minuti totali: 5 Secondi totali: 35 |
Spero sia utile. Fatemi sapere. (P.S.: e' orientativo e basato sui tempi dell'ultima compilazione di ogni pacchetto) |
|
Back to top |
|
|
skakz Guru
Joined: 03 Jul 2004 Posts: 380 Location: Ischia/Napoli/Italia/Terra
|
Posted: Sat Mar 25, 2006 10:45 am Post subject: |
|
|
oppure semplicemente accodare genlop ad emerge -up world......
Code: | sk@omega ~ $ emerge -up world | genlop -p
These are the pretended packages: (this may take a while; wait...)
[ebuild U ] media-libs/libsndfile-1.0.15 [1.0.12-r1] USE="alsa%"
Estimated update time: 7 minutes.
sk@omega ~ $ |
_________________ Linux Registered User n.340423
Linux User Group Ischia
www.tush.it |
|
Back to top |
|
|
anacleto44 n00b
Joined: 24 Aug 2005 Posts: 18
|
Posted: Sat Mar 25, 2006 2:39 pm Post subject: |
|
|
Ok...sono io che mi complico la vita...apposto |
|
Back to top |
|
|
!ico Apprentice
Joined: 26 Oct 2005 Posts: 199 Location: Bassano del Grappa (VI)
|
Posted: Thu Mar 30, 2006 1:46 pm Post subject: |
|
|
se può servire nel forum internazionale ancora anni fa era stato postato questo script per sapere la percentuale di compilazione di un ebuild:
https://forums.gentoo.org/viewtopic.php?t=197646
io lo uso costantemente e lo trovo molto comodo, l'unico problema è che bisogna lanciarlo per vedere la percentuale (non ha una barra che avanza..)
ola _________________ " I tasti iniziano. I tasti finiscono. Tu sai che sono 88; su questo nessuno può fregarti. Non sono infiniti loro. Tu, tu sei infinito, e dentro quei tasti, infinita è la musica che puoi fare. Loro sono 88. Tu sei infinito".
Novecento (Baricco) |
|
Back to top |
|
|
anacleto44 n00b
Joined: 24 Aug 2005 Posts: 18
|
Posted: Sun Apr 02, 2006 1:10 pm Post subject: |
|
|
Visto che lo script per il controllo della percentuale che ci hai postato non aveva la barra, ho fatto un bello script per il controllo della percentuale con la barra, che si interrompe al 100% della compilazione o con un semplice CTRL+C.
pprogressbar.pl
Code: | #!/usr/bin/perl -w
$tmpdir = "/var/tmp";
$portagedir = $tmpdir."/portage";
$ple = "/bin/ls -l ".$portagedir."/";
@packageslist = `$ple`;
shift(@packageslist);
$packageslist_size = @packageslist."";
$percent = 0;
$x = -1;
for ($i=0; $i<$packageslist_size; $i++) {
while($packageslist[$i] =~ / /) {
$packageslist[$i] =~ s/ / /;
}
@plist = split(/ /, $packageslist[$i]);
$packageslist[$i] = $plist[8];
chop($packageslist[$i]);
if ($packageslist[$i] ne "homedir") {
$pack[++$x] = $packageslist[$i];
}
}
print "Trovati i seguenti pacchetti in compilazione: \n";
for ($i=0; $i<=$x; $i++) {
print "\t[".$i."] ".$pack[$i]."\n";
}
print "Quale pacchetto deve essere controllato? ";
$n = <STDIN>;
$pack = $pack[$n];
$c_file = "find ".$portagedir."/".$pack."/ -name *.c* | wc -l";
$c_file = `$c_file`;
if ($c_file == 0) { print "Nessun file da compilare trovato! Stop!\n"; exit 1; }
$len = 0;
while ($percent < 100) {
for ($i=0; $i<$len; $i++) { print "\b"; }
$len = 0;
$o_file = "find ".$portagedir."/".$pack."/ -name *.o | wc -l";
$o_file = `$o_file`;
print $pack.": ";
$len += length($pack) + 2;
if ($c_file != 0) {
$percent = int($o_file * 100 / $c_file);
} else {
$percent = 0;
}
print $percent;
$len += length($percent);
print "% |";
$len += 3;
for ($i=0; $i<$percent/2-1; $i++) {
$len++;
print "=";
}
$len++;
print ">";
for ($i=0; $i<48-int($percent/2-1); $i++) {
$len++;
print "#";
}
$len++;
print "|";
`sleep 1`;
}
print "\n"; |
Il risultato è questo:
Code: | localhost anacleto44 # ./pprogressbar.pl
Trovati i seguenti pacchetti in compilazione:
[0] kde-i18n-3.5.2
[1] qcad-2.0.4.0-r3
Quale pacchetto deve essere controllato? 1
qcad-2.0.4.0-r3: 59% |=============================>####################| |
|
|
Back to top |
|
|
Luca89 Advocate
Joined: 27 Apr 2005 Posts: 2107 Location: Agrigento (Italy)
|
Posted: Sun Apr 02, 2006 7:22 pm Post subject: |
|
|
Bel tool, ottimo lavoro. _________________ Running Fast! |
|
Back to top |
|
|
Ilvalle Guru
Joined: 07 Mar 2005 Posts: 325 Location: Gallarate - ITALY
|
Posted: Mon Apr 03, 2006 9:24 am Post subject: |
|
|
Code: | ada ~ # ./progre_time.pl
Trovati i seguenti pacchetti in compilazione:
[0] httptunnel-3.3
Quale pacchetto deve essere controllato? 0
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####||
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####|
find: /var/tmp/portage/httptunnel-3.3/: No such file or directory#####| |
Terminato alla fine con un crt -C
Se la cartella /var/tmp/portage e' vuota saltano fuori alcuni errori...
Si potrebbe usare in qualche modo la variabile del Make.conf per leggere
la tmp dir??? Io per esempio di default uso /tmp.(montata in ram)
Paolo |
|
Back to top |
|
|
!ico Apprentice
Joined: 26 Oct 2005 Posts: 199 Location: Bassano del Grappa (VI)
|
Posted: Mon Apr 03, 2006 1:20 pm Post subject: |
|
|
uh, ottimo lavoro!
ola _________________ " I tasti iniziano. I tasti finiscono. Tu sai che sono 88; su questo nessuno può fregarti. Non sono infiniti loro. Tu, tu sei infinito, e dentro quei tasti, infinita è la musica che puoi fare. Loro sono 88. Tu sei infinito".
Novecento (Baricco) |
|
Back to top |
|
|
anacleto44 n00b
Joined: 24 Aug 2005 Posts: 18
|
Posted: Mon Apr 03, 2006 4:29 pm Post subject: |
|
|
Ilvalle provvedo subito a effettuare le correzioni. A tra poco |
|
Back to top |
|
|
anacleto44 n00b
Joined: 24 Aug 2005 Posts: 18
|
Posted: Mon Apr 03, 2006 5:00 pm Post subject: |
|
|
Ecco il nuovo codice con le correzioni effettuate:
Code: | #!/usr/bin/perl -w
$tmpdir = `cat /etc/make.globals | grep PORTAGE_TMPDIR | cut -d '=' -f 2`;
$tmpdir_conf = `cat /etc/make.conf | grep PORTAGE_TMPDIR | cut -d '=' -f 2`;
if (length($tmpdir_conf) > 0) {
$tmpdir = $tmpdir_conf;
}
chop($tmpdir);
$portagedir = $tmpdir."/portage";
$ple = "/bin/ls -l ".$portagedir."/";
@packageslist = `$ple`;
shift(@packageslist);
$packageslist_size = @packageslist."";
$percent = 0;
$x = -1;
for ($i=0; $i<$packageslist_size; $i++) {
while($packageslist[$i] =~ / /) {
$packageslist[$i] =~ s/ / /;
}
@plist = split(/ /, $packageslist[$i]);
$packageslist[$i] = $plist[8];
chop($packageslist[$i]);
if ($packageslist[$i] ne "homedir") {
$pack[++$x] = $packageslist[$i];
}
}
if ($x == -1) { print "\nNessun pacchetto in compilazione trovato!\n"; exit 1; }
print "Trovati i seguenti pacchetti in compilazione: \n";
for ($i=0; $i<=$x; $i++) {
print "\t[".$i."] ".$pack[$i]."\n";
}
print "Quale pacchetto deve essere controllato? ";
$n = <STDIN>;
if (($n > $x) || ($n < 0)) { print "\nErrore nella scelta del pacchetto!\n"; exit 1; }
$pack = $pack[$n];
$c_file = "find ".$portagedir."/".$pack."/ -name *.c* | wc -l";
$c_file = `$c_file`;
if ($c_file == 0) { print "Nessun file da compilare trovato!\n"; exit 1; }
$len = 0;
$lastpercent = -1;
while ($percent < 100) {
if (! -d ($portagedir."/".$pack)) { print "\n\nDirectory non piu' presente!\n"; exit 1; }
else {
for ($i=0; $i<$len; $i++) { print "\b"; }
$len = 0;
$o_file = "find ".$portagedir."/".$pack."/ -name *.o | wc -l";
$o_file = `$o_file`;
print $pack.": ";
$len += length($pack) + 2;
if ($o_file != 0) {
$percent = int($o_file * 100 / $c_file);
} else {
$percent = 0;
}
if ($percent <= $lastpercent) { $percent = $lastpercent; }
print $percent;
$lastpercent = $percent;
$len += length($percent);
print "% |";
$len += 3;
for ($i=0; $i<$percent/2-1; $i++) {
$len++;
print "=";
}
$len++;
print ">";
for ($i=0; $i<48-int($percent/2-1); $i++) {
$len++;
print "#";
}
$len++;
print "|";
`sleep 1`;
}
}
print "\n";
exit 1; |
Aggiunti e corretti:
Il controllo per l'esistenza della directory.
La lettura della PORTAGE_TMPDIR dal make.globals e successivamente dal make.conf
Il controllo della scelta corretta del numero di pacchetto
La percentuale può solo salire senza tornare indietro
Per qualsiasi altra correzione o consiglio fatemi sapere.
//$t4ck |
|
Back to top |
|
|
Ilvalle Guru
Joined: 07 Mar 2005 Posts: 325 Location: Gallarate - ITALY
|
Posted: Wed Apr 05, 2006 9:15 am Post subject: |
|
|
ciao, l'ho provato ma c'e' ancora qualcosa che non va
Code: | ada ~ # ls /tmp/portage/
gpm-1.20.1-r4 homedir
ada ~ # ./progre_time.pl
Trovati i seguenti pacchetti in compilazione:
[0] gpm-1.20.1-r4
Quale pacchetto deve essere controllato? 0
Directory non piu' presente!
|
valle |
|
Back to top |
|
|
|