View previous topic :: View next topic |
Author |
Message |
Ashfoot n00b
Joined: 12 Oct 2005 Posts: 13
|
Posted: Sun Jun 18, 2006 10:45 am Post subject: |
|
|
Segnalo un'anomalia utilizzando la versione 0.8:
Se ho nel package.mem:
Eseguendo
Code: |
sudo emerge x11-libs/gtk+
|
Ho il seguente output:
Code: |
Calculating dependencies... done!
>>> Emerging (1 of 1) x11-libs/gtk+-2.8.12 to /
>>> checking ebuild checksums ;-)
>>> checking auxfile checksums ;-)
>>> checking miscfile checksums ;-)
>>> checking gtk+-2.8.12.tar.bz2 ;-)
* Mounting /var/tmp/portage/gtk+-2.8.12 of [ + ]
mount: wrong fs type, bad option, bad superblock on none,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
* Please remember that ccache data dir is outside the newly mounted
* portage temporary directory, to preserve the spool between merges.
>>> Unpacking source...
>>> Unpacking gtk+-2.8.12.tar.bz2 to /var/tmp/portage/gtk+-2.8.12/work
|
Non viene utilizzato tmpfs e l'output di dmesg è:
Code: |
tmpfs: Bad value '+' for mount option 'size'
tmpfs: Bad value '+' for mount option 'size'
tmpfs: Bad value '+' for mount option 'size'
|
Rimuovendoo la voce in package.mem tutto funziona correttamente. |
|
Back to top |
|
|
Ferdinando Veteran
Joined: 25 Nov 2003 Posts: 1027 Location: Gaeta (LT) - Italy
|
Posted: Sun Jun 18, 2006 10:48 am Post subject: versione 0.9 |
|
|
@Ashfoot: argh! Tutto questo perché ho -gnome -gtk -gtk2 nelle USE flag Purtroppo ho già rilasciato la nuova release e non posso correggere che nella prossima (alla meglio domani). Comunque penso che riscriverò completamente il parsing del file.
Annuncio la versione 0.9. Importante:- ora dovete creare manualmente il file /etc/portage/bashrc-ng/bashrc-ng.conf, e se avete /etc/portage/bashrc-ng/config potete tranquillamente cancellarlo;
- le variabili PORTAGE_MEMSIZE e PATCH_OVERLAY non vanno più impostate in /etc/make.conf ma in /etc/portage/bashrc-ng/bashrc-ng.conf;
- adesso impostare la variabile PORTAGE_MEMSIZE da riga di comando ha meno priorità del valore impostato in /etc/portage/bashrc-ng/bashrc-ng.conf, se volete sovrascrivere il valore per il singolo emerge usate OVERRIDE_MEMSIZE (es. "OVERRIDE_MEMSIZE=100M emerge ...");
- inoltre ho aggiunto qualche regola da seguire quando si creano nuovi moduli nel post iniziale.
Detto questo, annuncio anche che ho creato il thread su Unsupported Software e ho proposto il tool a Pythonhead perché sia annoverato tra le Portage utilities not in portage (se verrà accolto in portage glielo si comunicherà).
Ciao _________________ La risposta, non la devi cercare fuori, la devi cercare dentro di te: e però è SBAGLIATA!
-- Corrado Guzzanti, "Pippo Chennedy Show", 1997 |
|
Back to top |
|
|
Ashfoot n00b
Joined: 12 Oct 2005 Posts: 13
|
Posted: Sun Jun 18, 2006 1:02 pm Post subject: |
|
|
Allora approfitto prima dell'uscita dell 0.9 :
Se per un qualsiasi motivo mi si blocca un emerge(nel caso specifico perchè la partizione tmpfs era troppo piccola)
es:
Code: | emerge media-libs/lcms |
E con nel file package.mem:
E correttamente l'output di un
Risulta
Code: |
Filesystem Dimens. Usati Disp. Uso% Montato su
none 8,0M 8,0M 0 100% /var/tmp/portage/lcms-1.14-r1
|
Rieseguendo l'emerge dopo avere incrementato le dimensioni dela partizione tmpfs
Code: | media-libs/lcms 16M |
Ricevo il seguente messaggio di errore(non bloccante)
Code: | rmdir: /var/tmp/portage/lcms-1.14-r1: Dispositivo o risorsa occupata |
Bloccando intenzionalmente l'emerge l'output di un
Risulta erroneamente
Code: |
Filesystem Dimens. Usati Disp. Uso% Montato su
none 8,0M 148K 0 2% /var/tmp/portage/lcms-1.14-r1
|
Probabilmente l'eliminazione della cartella avviene prima dell'umount e quindi rimane montata la partizione tmpfs "vecchia"...
Purtroppo non sono in grado di dire se è un problema di questa versione o anche delle precedenti... |
|
Back to top |
|
|
skakz Guru
Joined: 03 Jul 2004 Posts: 380 Location: Ischia/Napoli/Italia/Terra
|
Posted: Sun Jun 18, 2006 7:17 pm Post subject: |
|
|
c'è questo piccolo errore:
Code: | >>> Source unpacked.
//etc/portage/bashrc-ng/bashrc-ng.conf: line 47: per-package=on: command not found
>>> Compiling source in /var/tmp/portage/flac-1.1.2-r7/work/flac-1.1.2 ... |
e anche in altri punti..
altri info:
Code: | omega ~ # bash --version
GNU bash, version 3.1.17(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
omega ~ # |
Code: | omega ~ # source //etc/portage/bashrc-ng/bashrc-ng.conf
-su: per-package=on: command not found |
si risolve se si cambia dappertutto per-package in perpackage _________________ Linux Registered User n.340423
Linux User Group Ischia
www.tush.it |
|
Back to top |
|
|
Ferdinando Veteran
Joined: 25 Nov 2003 Posts: 1027 Location: Gaeta (LT) - Italy
|
Posted: Sun Jun 18, 2006 7:40 pm Post subject: |
|
|
@darkdude: in effetti lo avevo cambiato nel mio bashrc-ng.conf ma ho dimenticato di cambiarlo nell'example... mea culpa
@Ashfoot: tu pensa che quella voleva essere una feature L'idea era che se la dir era già montata era inutile rimontarla, ma ovviamente se ne cambia la dimensione questo è vanificato; penso che risolverò ricorrendo alla mitica opzione remount.
Intanto Philantrop, un utente tedesco che ha visto il thread su USw, ha inviato un ebuild che devo dire sembra proprio ben fatto Prossimamente su sourceforge
Ciao _________________ La risposta, non la devi cercare fuori, la devi cercare dentro di te: e però è SBAGLIATA!
-- Corrado Guzzanti, "Pippo Chennedy Show", 1997 |
|
Back to top |
|
|
Ferdinando Veteran
Joined: 25 Nov 2003 Posts: 1027 Location: Gaeta (LT) - Italy
|
Posted: Mon Jun 19, 2006 10:36 am Post subject: versione 0.10 |
|
|
Annuncio la versione 0.10, che potete scaricare da qui; ovviamente nella nuova versione ho risolto i problemi su citati.
Il parsing del file ora dovrebbe essere perfetto, tranne che non riesco a supportare atoms come >=$categoria/$pacchetto-$versione, mentre portage lo fa. Qualcuno ha idee di come si possa controllare se la versione lì indicata sia minore o maggiore di quella corrente? Come fa portage, ad esempio, a determinare che 0.10 è maggiore di 0.9, visto che alfabeticamente sarebbe il contrario? Oltretutto il parsing dei singoli numeri è impensabile visto che occorre confrontarlo anche con un 2.1.1_pre1...
Ciao
P.S. Da ora in poi avremo un ebuild! Visto che Philantrop si è unito al progetto, ho chiesto a lui di occuparsene, e probabilmente lo distribuiremo in giornata; la mia idea sarebbe di sfruttare il server rsync di sourceforge: in tal caso dovreste poter ricevere l'update con "rsync -av rsync://portage-bashrc.cvs.sourceforge.net/cvsroot/portage-bashrc/overlay/* /usr/local/portage" Vi terrò informati sugli sviluppi.
EDIT: come non detto, l'idea precedente è stata scartata (anche perché devo ancora verificarne la fattibilità), comunque in serata Philantrop uploaderà l'ebuild. _________________ La risposta, non la devi cercare fuori, la devi cercare dentro di te: e però è SBAGLIATA!
-- Corrado Guzzanti, "Pippo Chennedy Show", 1997 |
|
Back to top |
|
|
Cazzantonio Bodhisattva
Joined: 20 Mar 2004 Posts: 4514 Location: Somewere around the world
|
Posted: Mon Jun 19, 2006 5:52 pm Post subject: Re: versione 0.10 |
|
|
Ferdinando wrote: | Come fa portage, ad esempio, a determinare che 0.10 è maggiore di 0.9, visto che alfabeticamente sarebbe il contrario? Oltretutto il parsing dei singoli numeri è impensabile visto che occorre confrontarlo anche con un 2.1.1_pre1... |
Una soluzione sarebbe usare le stesse funzioni usate da portage... ti garantirebbe anche la compatibilità futura...
comunque per come la vedo io tale feature è un po' inutile _________________ Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne |
|
Back to top |
|
|
Ferdinando Veteran
Joined: 25 Nov 2003 Posts: 1027 Location: Gaeta (LT) - Italy
|
Posted: Mon Jun 19, 2006 6:14 pm Post subject: Re: versione 0.10 |
|
|
Cazzantonio wrote: | Una soluzione sarebbe usare le stesse funzioni usate da portage... ti garantirebbe anche la compatibilità futura... |
E' vero, ma conosco poco di python e non so se riuscirei a riutilizzarle (farei fatica anche solo a trovarle... comunque domani mi leggo un po' di codice e vedo se le trovo).
Cazzantonio wrote: | comunque per come la vedo io tale feature è un po' inutile |
Per package.mem forse sì, ma già per package.cflags potrebbe essere utile; ad esempio se si stanno usando flags "spinte" e da una certa versione in poi queste inducono un errore si può ridurle solo da quella versione in poi. Un altro esempio più concreto: le LDFLAGS (che dite le implemento in per-package?) uccidono brutalmente xorg-7, mentre non hanno problemi con tutti gli xorg precedenti. Con pacchetti slotted potrebbe essere utile per avere entrambi gli slot con caratteristiche differenti; ad esempio, tornando a package.mem, gcc mi si compilava in 500M prima di gcc-4, che richiede 800M, e se avessi ancora entrambi gli slots mi potrebbe far piacere non montare 300M in più senza motivo.
Ciao _________________ La risposta, non la devi cercare fuori, la devi cercare dentro di te: e però è SBAGLIATA!
-- Corrado Guzzanti, "Pippo Chennedy Show", 1997 |
|
Back to top |
|
|
fabius Guru
Joined: 29 Nov 2004 Posts: 525
|
Posted: Mon Jun 19, 2006 6:41 pm Post subject: |
|
|
Tieni presente che ci sono anche delle eccezioni in portage per quanto riguarda le versioni degli ebuild. Ad esempio oggi ho notato quella in mplayer
Code: | [ebuild UD] media-video/mplayer-1.0_pre8 [1.0.20060415] |
dove ovviamente non si tratta di un downgrade |
|
Back to top |
|
|
fabius Guru
Joined: 29 Nov 2004 Posts: 525
|
Posted: Wed Jun 21, 2006 9:03 pm Post subject: |
|
|
Ho creato una prima bozza del modulo eselect per gestire l'abilitazione dei moduli
Code: | # Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id: $
DESCRIPTION="Manage bashrc modules"
MAINTAINER=""
SVN_DATE='$Date: $'
VERSION=$(svn_date_to_version "${SVN_DATE}" )
# find bashrc modules
find_modules() {
for f in ${ROOT}/etc/portage/bashrc-ng/*.module ; do
[[ -f ${f} ]] && echo $(basename ${f}) | awk -F . '{print $1}'
done
}
get_status() {
local module=${1}
local conf=/etc/portage/bashrc-ng/bashrc-ng.conf
if [ -e ${conf} ] ; then
local status=`grep ^${module}= ${conf} | awk -F \= '{print $2}'`
if [ "${status}" == "on" ] ; then
return 1
else
return 0
fi
else
return 0
fi
}
set_status() {
local module modules=( $( find_modules ) )
local new_status=${2}
local conf=/etc/portage/bashrc-ng/bashrc-ng.conf
if is_number ${1} ; then
module=${modules[$(( ${1} - 1 ))]}
if [ "$module" == "" ] ; then
die -q "'${1}' is an unknown module number"
fi
elif has ${1} ${modules[@]} ; then
module=${1}
else
die -q "'${1}' is an unknown module name"
fi
if [ -f ${conf} ] ; then
local old_status=`grep ${module}= ${conf} | awk -F \= '{print $2}'`
if [ "${old_status}" == "on" -o "${old_status}" == "off" ] ; then
sed -i -e "s:^#*${module}=${old_status}:${module}=${new_status}:" ${conf}
return 0
fi
return 1
else
die -q "Configuration file $conf is missing"
fi
}
###################
### list action ###
###################
describe_list() {
echo "List available bashrc modules"
}
do_list() {
targets=( $(find_modules ) )
write_list_start "Available bashrc modules:"
if [[ -n "${targets[@]}" ]] ; then
local i
for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do
get_status ${targets[${i}]}
[[ $? -eq 1 ]] && current="on" || current="off"
write_numbered_list_entry "$((i+1))" "${targets[${i}]} $(highlight ${current})"
done
else
write_kv_list_entry "(none found)" ""
fi
}
#####################
### enable action ###
#####################
describe_enable() {
echo "Enable a bashrc module"
}
do_enable() {
if [[ -z ${1} ]] ; then
# no parameter
die -q "You didn't tell me which module to enable"
else
set_status ${1} on || die -q "Couldn't enable module ${module}"
fi
}
######################
### disable action ###
######################
describe_disable() {
echo "Disable a bashrc module"
}
do_disable() {
if [[ -z ${1} ]] ; then
# no parameter
die -q "You didn't tell me which module to disable"
else
set_status ${1} off || die -q "Couldn't disable module ${module}"
fi
}
# vim: set ft=eselect :
|
Last edited by fabius on Wed Jun 21, 2006 9:39 pm; edited 1 time in total |
|
Back to top |
|
|
skakz Guru
Joined: 03 Jul 2004 Posts: 380 Location: Ischia/Napoli/Italia/Terra
|
Posted: Wed Jun 21, 2006 9:20 pm Post subject: |
|
|
fabius wrote: | # find a list of kernel symlink targets | _________________ Linux Registered User n.340423
Linux User Group Ischia
www.tush.it |
|
Back to top |
|
|
Ferdinando Veteran
Joined: 25 Nov 2003 Posts: 1027 Location: Gaeta (LT) - Italy
|
Posted: Wed Jun 21, 2006 9:35 pm Post subject: |
|
|
fabius wrote: | Ho creato una prima bozza del modulo eselect per gestire l'abilitazione dei moduli |
Grazie fabius, ora non ho molto tempo per testarlo ma lo farò appena possibile; se preferisci puoi joinare il progetto su sourceforge e occupartene direttamente tu (usiamo cvs).
Ciao _________________ La risposta, non la devi cercare fuori, la devi cercare dentro di te: e però è SBAGLIATA!
-- Corrado Guzzanti, "Pippo Chennedy Show", 1997 |
|
Back to top |
|
|
fabius Guru
Joined: 29 Nov 2004 Posts: 525
|
Posted: Wed Jun 21, 2006 9:49 pm Post subject: |
|
|
@darkdude: non si reinventa mica la ruota, no?
@Ferdinando: grazie, magari in futuro (ora come ora i miei contributi sarebbero molto irregolari) |
|
Back to top |
|
|
Luca89 Advocate
Joined: 27 Apr 2005 Posts: 2107 Location: Agrigento (Italy)
|
Posted: Thu Jun 22, 2006 9:44 am Post subject: |
|
|
fabius wrote: | @darkdude: non si reinventa mica la ruota, no? |
dove sta l'opensource altrimenti? _________________ Running Fast! |
|
Back to top |
|
|
skakz Guru
Joined: 03 Jul 2004 Posts: 380 Location: Ischia/Napoli/Italia/Terra
|
Posted: Thu Jun 22, 2006 10:03 am Post subject: |
|
|
[ot] la mia era soltanto una puntualizzazione fine alla correzione dello script (punto).
tutto il resto lo state facendo e dicendo voi. ammetto che forse era meglio un mp [/ot]
il modulo però l'ho provato e funziona bene _________________ Linux Registered User n.340423
Linux User Group Ischia
www.tush.it |
|
Back to top |
|
|
Ferdinando Veteran
Joined: 25 Nov 2003 Posts: 1027 Location: Gaeta (LT) - Italy
|
Posted: Thu Jun 22, 2006 11:11 am Post subject: |
|
|
darkdude wrote: | il modulo però l'ho provato e funziona bene |
Io ho notato solo un problemino sul per-package, ma si dovrebbe risolvere rapidamente con lo stesso passo di tr che ho messo nel bashrc (eliminando il '-'); probabilmente lo troverete nella prossima release (per la quale probabilmente l'ebuild diventerà il metodo di installazione ufficiale).
Ciao _________________ La risposta, non la devi cercare fuori, la devi cercare dentro di te: e però è SBAGLIATA!
-- Corrado Guzzanti, "Pippo Chennedy Show", 1997 |
|
Back to top |
|
|
fabius Guru
Joined: 29 Nov 2004 Posts: 525
|
Posted: Thu Jun 22, 2006 11:19 am Post subject: |
|
|
Ferdinando wrote: | darkdude wrote: | il modulo però l'ho provato e funziona bene |
Io ho notato solo un problemino sul per-package, ma si dovrebbe risolvere rapidamente con lo stesso passo di tr che ho messo nel bashrc (eliminando il '-'); probabilmente lo troverete nella prossima release (per la quale probabilmente l'ebuild diventerà il metodo di installazione ufficiale). |
C'è qualche motivo particolare per cui la variabile di attivazione del modulo non coincide con il nome del modulo stesso (da cui l'uso di tr)? |
|
Back to top |
|
|
Ferdinando Veteran
Joined: 25 Nov 2003 Posts: 1027 Location: Gaeta (LT) - Italy
|
Posted: Thu Jun 22, 2006 11:31 am Post subject: |
|
|
fabius wrote: | C'è qualche motivo particolare per cui la variabile di attivazione del modulo non coincide con il nome del modulo stesso (da cui l'uso di tr)? |
Solo perché 'per-package=on' non è legale in bash; la vera domanda dovrebbe essere "c'è qualche motivo per cui ad un modulo dovrebbe essere permesso avere nomi con caratteri non alfanumerici?" e la risposta è no Comincio a pensare che se dalla prossima versione cambio il nome al modulo semplifico la vita a tutti...
Ciao _________________ La risposta, non la devi cercare fuori, la devi cercare dentro di te: e però è SBAGLIATA!
-- Corrado Guzzanti, "Pippo Chennedy Show", 1997 |
|
Back to top |
|
|
fabius Guru
Joined: 29 Nov 2004 Posts: 525
|
Posted: Thu Jun 22, 2006 4:11 pm Post subject: |
|
|
Ferdinando wrote: | Comincio a pensare che se dalla prossima versione cambio il nome al modulo semplifico la vita a tutti... |
Voto per la modifica (al limite sostituisci - con _) |
|
Back to top |
|
|
.:chrome:. Advocate
Joined: 19 Feb 2005 Posts: 4588 Location: Brescia, Italy
|
Posted: Sat Jun 24, 2006 11:56 am Post subject: Re: [tool]portage-bashrc-ng |
|
|
segnalo un piccolo errore di battitura:
in /etc/portage/bashrc-ng/per-package.module, alla linea 178
exceport invece che export |
|
Back to top |
|
|
Ferdinando Veteran
Joined: 25 Nov 2003 Posts: 1027 Location: Gaeta (LT) - Italy
|
Posted: Sat Jun 24, 2006 6:01 pm Post subject: Re: [tool]portage-bashrc-ng |
|
|
k.gothmog wrote: | in /etc/portage/bashrc-ng/per-package.module, alla linea 178
exceport invece che export |
Strano, non lo trovo neanche in cvs; comunque /etc/portage/bashrc-ng/per-package.module era solo di 137 righe In ogni caso ho fatto un grep su tutti i files e non dovrebbe esserci più.
Ho rilasciato la beta 11 (disponibile qui) e il primo ebuild ufficiale, che siete caldamente invitati a usare, anche perché se no dovreste posizionare a mano la documentazione e il modulo eselect; inutile dire che prossimamente la directory dei moduli troverà una collocazione più adeguata (penso /usr/lib/bashrc-ng). Tra le altre novità, ho incluso il modulo eselect di fabius, il modulo di !equilibrium (che documenterò meglio nel post iniziale), e philantrop ha scritto un po' di documentazione; il modulo per-package, come dicevo sopra, è stato rinominato in perpackage (e ora gestisce anche package.ldflags), perciò vi consiglio di rimuovere il vecchio per-package.module per non confondere il modulo eselect. Quanto all'ebuild per ora le USE flags non sono particolarmente importanti, vengono utilizzate solo con emerge --config, prossimamente selezioneranno i files da installare.
Ciao _________________ La risposta, non la devi cercare fuori, la devi cercare dentro di te: e però è SBAGLIATA!
-- Corrado Guzzanti, "Pippo Chennedy Show", 1997 |
|
Back to top |
|
|
.:chrome:. Advocate
Joined: 19 Feb 2005 Posts: 4588 Location: Brescia, Italy
|
Posted: Sat Jun 24, 2006 6:23 pm Post subject: Re: [tool]portage-bashrc-ng |
|
|
evidentemente avevo una versione TROPPO vecchia.
chiedo scusa |
|
Back to top |
|
|
comio Advocate
Joined: 03 Jul 2003 Posts: 2191 Location: Taranto
|
Posted: Sat Jun 24, 2006 6:44 pm Post subject: |
|
|
metterei in keywords anche ~amd64.
ciao _________________ RTFM!!!!
e
http://www.comio.it
|
|
Back to top |
|
|
Ferdinando Veteran
Joined: 25 Nov 2003 Posts: 1027 Location: Gaeta (LT) - Italy
|
Posted: Sat Jun 24, 2006 7:22 pm Post subject: |
|
|
comio wrote: | metterei in keywords anche ~amd64. |
Sai, mi accorgo solo ora che questo ebuild è solo ~x86 Grazie per la segnalazione! Per ora aggiungete a mano, domattina fixo in cvs.
Ciao _________________ La risposta, non la devi cercare fuori, la devi cercare dentro di te: e però è SBAGLIATA!
-- Corrado Guzzanti, "Pippo Chennedy Show", 1997 |
|
Back to top |
|
|
comio Advocate
Joined: 03 Jul 2003 Posts: 2191 Location: Taranto
|
Posted: Sat Jun 24, 2006 7:38 pm Post subject: |
|
|
Ferdinando wrote: | comio wrote: | metterei in keywords anche ~amd64. |
Sai, mi accorgo solo ora che questo ebuild è solo ~x86 Grazie per la segnalazione! Per ora aggiungete a mano, domattina fixo in cvs.
Ciao |
farei inoltre queste modifiche al perpackage.module:
Code: |
# per-package module for portage-bashrc-ng
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /cvsroot/portage-bashrc/portage-bashrc-ng/bashrc-ng/per-package.module,v 1.7 2006/06/21 07:24:42 exairetos Exp $
# Originally written by Ned Ludd (solar_at_gentoo.org)
# modifications by Ryan McIntosh (thebigslide_at_gmail.com)
# V1.0_rc1
# See:http://forums.gentoo.org/viewtopic-t-280748-postdays-0-postorder-asc-start-0.html
# retrieved from http://gentoo-wiki.com/HOWTO_Update_Full_System#5.3_bashrc_for_portage
# adapted by Ferdinando Formica <exairetos@tele2.it> 2006-06-13
# Modified by Luigi Mantellini
# last revision 2006-06-20
GLOBALCONFIG=${ROOT}/etc/portage/bashrc-ng/perpackage.conf
CFLAGS_CONFFILE=${ROOT}/etc/portage/package.cflags
CXXFLAGS_CONFFILE=${ROOT}/etc/portage/package.cxxflags
LDFLAGS_CONFFILE=${ROOT}/etc/portage/package.ldflags
FEATURES_CONFFILE=${ROOT}/etc/portage/package.features
NOCFLAGS_CONFFILE=${ROOT}/etc/portage/package.nocflags
NOCXXFLAGS_CONFFILE=${ROOT}/etc/portage/package.nocxxflags
NOLDFLAGS_CONFFILE=${ROOT}/etc/portage/package.noldflags
NOFEATURES_CONFFILE=${ROOT}/etc/portage/package.nofeatures
filter-flags() {
local f x VAR VAL
declare -a new
VAR=$1
shift
eval VAL=\${${VAR}}
for f in ${VAL}; do
for x in "$@"; do
# Note this should work with globs like -O*
[[ ${f} == ${x} ]] && continue 2
done
eval new\[\${\#new\[@]}]=\${f}
done
eval export ${VAR}=\${new\[*]}
}
append-flags() {
local VAR
VAR=$1
shift
export $VAR="${$VAR} $*"
return 0
}
##################
# CFLAGS section #
##################
append-cflags() {
export CFLAGS="${CFLAGS} $*"
return 0
}
package-cflags() {
# parsing configuration file
parseconffile "${CFLAGS_CONFFILE}" || return 0
if [ -n "$configval" ]
then
ebegin "Found CFLAGS '$configval' in ${CFLAGS_CONFFILE}: altering CFLAGS"
unset CFLAGS
for flag in $configval
do
if [ "${flag}" = "GLOBALCFLAGS" ]
then
append-cflags $GLOBALCFLAGS
elif [ "${flag}" = "GLOBALCXXFLAGS" ]
then
append-cflags $GLOBALCXXFLAGS
else
append-cflags ${flag}
fi
done
export -n CFLAGS
eend $?
fi
}
####################
# NOCFLAGS section #
####################
package-nocflags() {
# parsing configuration file
parseconffile "${NOCFLAGS_CONFFILE}" || return 0
if [ -n "$configval" ]
then
ebegin "Found CFLAGS '$configval' in ${NOCFLAGS_CONFFILE}: altering CFLAGS"
for flag in $configval
do
filter-flags CFLAGS $flag
done
export -n CFLAGS
eend $?
fi
}
####################
# CXXFLAGS section #
####################
append-cxxflags() {
export CXXFLAGS="${CXXFLAGS} $*"
return 0
}
package-cxxflags() {
# parsing configuration file
parseconffile "${CXXFLAGS_CONFFILE}" || return 0
if [ -n "$configval" ]
then
ebegin "Found CXXFLAGS '$configval' in ${CXXFLAGS_CONFFILE}: altering CXXFLAGS"
unset CXXFLAGS
for flag in $configval
do
if [ "${flag}" = "GLOBALCXXFLAGS" ]
then
append-cxxflags $GLOBALCXXFLAGS
elif [ "${flag}" = "GLOBALCFLAGS" ]
then
append-cxxflags $GLOBALCFLAGS
else
append-cxxflags ${flag}
fi
done
export -n CXXFLAGS
eend $?
fi
}
######################
# NOCXXFLAGS section #
######################
package-nocxxflags() {
# parsing configuration file
parseconffile "${NOCXXFLAGS_CONFFILE}" || return 0
if [ -n "$configval" ]
then
ebegin "Found CXXFLAGS '$configval' in ${NOCXXFLAGS_CONFFILE}: altering CXXFLAGS"
for flag in $configval
do
filter-flags CXXFLAGS $flag
done
export -n CXXFLAGS
eend $?
fi
}
####################
# LDFLAGS section #
####################
append-ldflags() {
export LDFLAGS="${LDFLAGS} $*"
return 0
}
package-ldflags() {
# parsing configuration file
parseconffile "${LDFLAGS_CONFFILE}" || return 0
if [ -n "$configval" ]
then
ebegin "Found LDFLAGS '$configval' in ${LDFLAGS_CONFFILE}: altering LDFLAGS"
unset LDFLAGS
for flag in $configval
do
if [ "${flag}" = "GLOBALLDFLAGS" ]
then
append-ldflags $GLOBALLDFLAGS
else
append-ldflags ${flag}
fi
done
export -n LDFLAGS
eend $?
fi
}
######################
# NOLDFLAGS section #
######################
package-noldflags() {
# parsing configuration file
parseconffile "${NOLDFLAGS_CONFFILE}" || return 0
if [ -n "$configval" ]
then
ebegin "Found LDFLAGS '$configval' in ${NOLDFLAGS_CONFFILE}: altering LDFLAGS"
for flag in $configval
do
filter-flags LDFLAGS $flag
done
export -n LDFLAGS
eend $?
fi
}
####################
# FEATURES section #
####################
append-features() {
export FEATURES="${FEATURES} $*"
return 0
}
package-features() {
# parsing configuration file
parseconffile "${FEATURES_CONFFILE}" || return 0
if [ -n "$configval" ]
then
ebegin "Found FEATURES '$configval' in ${FEATURES_CONFFILE}: altering FEATURES"
unset FEATURES
for flag in $configval
do
if [ "${flag}" = "GLOBALFEATURES" ]
then
append-features $GLOBALFEATURES
else
append-features ${flag}
fi
done
# checking features for disstcc (maybe we disabled it)
isfeature distcc
if [ $itsafeature -eq 0 ]
then
debuginfo Distcc is not used ...
# I don't like this
export MAKEOPTS="-j2"
export OPTIONS="\-distcc"
unset DISTCC_HOSTS
export WANT_DISTCC="false"
fi
export -n FEATURES;
eend $?
fi
}
######################
# NOFEATURES section #
######################
package-nofeatures() {
# parsing configuration file
parseconffile "${NOFEATURES_CONFFILE}" || return 0
if [ -n "$configval" ]
then
ebegin "Found FEATURES '$configval' in ${NOFEATURES_CONFFILE}: altering FEATURES"
for flag in $configval
do
filter-flags FEATURES $flag
done
export -n FEATURES;
eend $?
fi
}
##############
# Activation #
##############
compile() {
export GLOBALCFLAGS=$CFLAGS
package-cflags
package-nocflags
einfo Active CFLAGS = $CFLAGS
unset GLOBALCFLAGS
export GLOBALCXXFLAGS=$CXXFLAGS
package-cxxflags
package-nocxxflags
einfo Active CXXFLAGS = $CXXFLAGS
unset GLOBALCXXFLAG
export GLOBALLDFLAGS=$LDFLAGS
package-ldflags
package-noldflags
einfo Active LDFLAGS = $LDFLAGS
unset GLOBALLDFLAGS
export GLOBALFEATURES=$FEATURES
package-features
package-nofeatures
einfo Active FEATURES = $FEATURES
unset GLOBALFEATURES
}
|
così possiamo fare i file package.noXXXX per filtrare le flags.
ciao _________________ RTFM!!!!
e
http://www.comio.it
|
|
Back to top |
|
|
|