IngleseFranceseSpagnolo

Esegui server | Ubuntu > | Fedora > |


Favicon di OnWorks

include_server - Online nel cloud

Esegui include_server nel provider di hosting gratuito OnWorks su Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

Questo è il comando include_server che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

PROGRAMMA:

NOME


include_server.py - approssimazione conservativa delle dipendenze di inclusione per C/C++

SINOSSI


include_server --porta INCLUDE_SERVER_PORT [Opzioni]

DESCRIZIONE


include_server.py avvia un processo di inclusione del server. Questo processo risponde alle domande di
distcc(1) client su quali file includere nelle compilazioni C/C++. Il include_server.py
Il comando stesso termina non appena viene generato il server di inclusione.

L'argomento INCLUDE_SERVER_PORT è il nome di un socket utilizzato per tutte le comunicazioni
tra i client distcc e il server di inclusione. Il distcc-pompa(1) il comando è responsabile
per creare la posizione del socket, per passarlo a questo script e per passarlo a tutti
client distcc tramite la variabile di ambiente denominata INCLUDE_SERVER_PORT.

Il protocollo utilizzato dal server include utilizza l'implementazione RPC di distcc. ogni distcc
la richiesta consiste di (1) la directory corrente e (2) l'elenco di argomenti del
comando di compilazione.

Se il server include è in grado di elaborare la richiesta, risponde al client distcc con
invio di un elenco di percorsi di file. I percorsi dei file sono quelli della sorgente compressa e dell'intestazione
file ritenuti necessari per la compilazione tramite l'analisi di inclusione. Anche la lista
comprende collegamenti simbolici e persino file fittizi necessari al server di compilazione per
costruire una replica accurata delle parti del filesystem necessarie per la compilazione. In
in questo modo, un file di intestazione necessario come /path/foo.h viene compresso, rinominato e archiviato in a
posizione temporanea, come /dev/shm/tmpiAvfGv.include_server-9368-1/path/foo.h.lzo. Il
il client distcc passerà questi file a un server di compilazione, dove saranno
non compresso e montato temporaneamente.

Se il server di inclusione non è in grado di elaborare la richiesta, restituisce l'elenco vuoto
al client distcc.

Esistono due tipi di errori relativi al server di inclusione. Il server di inclusione potrebbe
non riesce a calcolare le include o fallisce in altri modi, vedere la sezione INCLUDERE SERVER SINTOMI.
Inoltre, la compilazione sul server di rimozione potrebbe non riuscire a causa dell'inadeguatezza del calcolato
includere la chiusura, ma poi avere successo quando viene riprovato localmente, vedere la sezione DISTCC INCONGRUENZA
SINTOMI.

OPZIONE SOMMARIO


Le seguenti opzioni sono comprese da include_server.py.

-dPAT, --debug_pattern=PAT
Vettore di bit per l'attivazione di avvisi e debug
1 = avvisi
2 = traccia alcune funzioni
altri poteri di due: vedere include_server/basics.py.

-e, --e-mail
Invia e-mail a 'distcc-pump-errors' o, se definito, il valore della variabile d'ambiente
DISTCC_EMAILLOG_WHOM_TO_BLAME, quando il server di inclusione ha dei problemi. L'impostazione predefinita è
per non inviare e-mail.

--email_bound NUMERO
Numero massimo di email da inviare (oltre a un'email finale). Predefinito: 3.

--no-e-mail
Non inviare email. Questa è l'impostazione predefinita.

--percorso_osservazione_re=RE
Invia un messaggio di avviso ogni volta che un nome file viene risolto in un percorso reale corrispondente
da RE, che è un'espressione regolare nella sintassi Python. Questo è utile per trovare
da dove provengono effettivamente i file inclusi. Usa RE="" per trovarli tutti. Nota:
gli avvisi devono essere abilitati con almeno -d1.

--pid_file PERCORSO DEL FILE
Il pid del server di inclusione viene scritto nel file FILEPATH. Ciò consente uno script
come un distcc-pompa per abbattere il server di inclusione.

-S, --statistiche
Stampa le informazioni sullo stdout sull'analisi di inclusione.

--stat_reset_triggers=LISTA
Svuota le cache delle statistiche quando il timestamp di qualsiasi percorso file in LIST cambia o il
filepath entra o esce dall'esistenza. LIST è una stringa separata da due punti di
percorsi di file, possibilmente contenenti semplici glob (come consentito dal modulo glob di Python).
Stampa un avviso ogni volta che si verifica tale modifica (se gli avvisi sono abilitati). Questo
l'opzione consente eccezioni limitate al normale presupposto di distcc-pump che source
i file non vengono modificati durante la compilazione.

-T, --tempo
Stampa il tempo trascorso, l'utente e il tempo di sistema su stderr.

--unsafe_absolute_includes
Esegui la preelaborazione sul server di compilazione anche se include percorsi di file assoluti
si incontrano. Normalmente il server di inclusione ricorrerà alla preelaborazione locale
se rileva eventuali inclusioni assolute. Pertanto, questo flag è utile per prevenire tale
i fallback quando l'assoluto include sono un falso allarme, sia perché l'assoluto
include viene scartato durante la preelaborazione o perché il file assolutamente incluso
esiste sui server di compilazione.

Più precisamente, con --unsafe_absolute_includes gli inclusioni assoluti vengono ignorati per
gli scopi di raccogliere la chiusura di inclusione. L'uso di questa opzione può portare a
risultati errati perché (1) l'intestazione potrebbe essere effettivamente inclusa nel
server di compilazione e potrebbe non essere lo stesso del client, (2) l'inclusione
le direttive dell'intestazione non vengono ulteriormente analizzate.

L'opzione è utile per compilare codice che ha tali posizioni assolute hardcoded
di file di intestazione all'interno di direttive condizionali (ad esempio "#ifdef") che rendono il
include irrilevante. Più precisamente, questi include devono essere eliminati durante
pre-elaborazione per la configurazione effettiva. Quindi la questione dell'esistenza del
il file di intestazione è discutibile e la compilazione remota è sana. Questo è spesso il caso se
tali include sono pensati per configurazioni insolite diverse da quelle effettive
configurazione.

-v, --verificare
Verificare che i file in chiusura CPP siano contenuti nella chiusura calcolata da include
processore.

-w, --write_include_closure
Scrivi un file .d_approssimativamente che elenchi tutti i file inclusi calcolati dall'inclusione
server; con -x, scrivi inoltre i file inclusi come calcolato da CPP su a
.d_file esatto.

-X, --analisi_esatta
Utilizzare invece CPP, non omettere i file di intestazione di sistema.

INCLUDERE SERVER SINTOMI E PROBLEMI


Di seguito sono elencati i messaggi e gli avvisi più probabili provenienti dal processore di inclusione.

Pre-elaborazione localmente. Includere server non copertura: non potrei determinare difetto sistema
includere directory
Per determinare le directory di intestazione di sistema predefinite, il server di inclusione esegue il
compilatore una volta per ogni lingua necessaria durante la sua sessione. Questo messaggio indica
che il compilatore specificato in distcc non sia presente sul client.

Pre-elaborazione localmente. Includere server non copertura: Salvataggio su perché includere server
esaurito ancora di più di ...S Utente a che ora manipolazione richiesta
In situazioni non comuni, il server di inclusione non riesce ad analizzare macro molto complicate
espressioni. Il client distcc utilizzerà la modalità semplice distcc.

Attenzione: Percorso del file devi obbligatoriamente be parente ma non è
Il server di inclusione non accetta percorsi di file assoluti, come
/usr/include/stdio.h, nelle direttive include, perché non c'è garanzia che
questa intestazione sulla macchina del server di compilazione sarà la stessa di quella sul
cliente. Il server di inclusione rinuncia ad analizzare la chiusura dell'inclusione. il distcc
il client non può utilizzare la modalità pompa.

Per ovviare a questo problema in modo non sempre affidabile, impostare la variabile d'ambiente
INCLUDE_SERVER_ARGS='--unsafe_absolute_includes' quando si invoca la pompa distcc
script per passare l'opzione --unsafe_absolute_includes al server di inclusione.

Attenzione: Assoluta percorso del file ... era IGNORATO
Il --unsafe_absolute_includes è in uso. Questa situazione si verifica sotto lo stesso
circostanze come quando viene emesso "Il percorso del file deve essere relativo ma non lo è", ma in questo
caso l'inclusione fornirà una risposta al client distcc.

Attenzione: sentiero '/PERCORSO/FILE' cambiato/venuto ai miglioramenti esistenza/non più a lungo esiste
Questi avvisi vengono emessi quando si utilizzano i trigger di ripristino delle statistiche. Perché /PERCORSO/FILE
modificato, il server di inclusione cancella le sue cache; la nuova versione del file (o il
mancanza di esso) rende non valida l'analisi di inclusione. Questo messaggio di solito può essere
ignorato; significa un uso alquanto precario dei file da parte del sistema di compilazione.
Si consiglia di correggere il sistema di compilazione in modo che i file non vengano riscritti.

Attenzione: Fatti traduzione unità ..., ricerca of filetto ... risoluto a ... di chi percorso reale is
...
Questo avviso si verifica con --path_observation_re quando un nuovo realpath corrisponde a a
viene osservato il file di origine o di intestazione.

DISTCC INCONGRUENZA SINTOMI


Le interazioni tra il sistema di compilazione, distcc e il server di inclusione sono in qualche modo
complesso. Quando un comando distcc riceve una compilazione non riuscita dal server remoto,
ritenta la compilazione in locale. Questa sezione discute le cause delle discrepanze
tra compilazione remota e locale. Questi sono contrassegnati dal messaggio di retrocessione:

__________Avvertimento: ... modalità pompa compilazione(i) mancato on server, ma ha avuto successo localmente.
__________Distcc-pompa era retrocesso a pianura modalità. Andate a le Distcc Discrepanza Sintomi
del prodotto in le include_server(1) uomo .

Lo script distcc-pump invia questo messaggio alla fine della build. Ciò significa che per at
almeno una chiamata distcc una compilazione locale è riuscita dopo la compilazione remota
fallito. Ogni invocazione distcc per la quale si è verificata una tale discrepanza genera a sua volta anche un
messaggio come:

Attenzione: a distanza compilazione of '...' fallito, riprovato a livello locale e ha ottenuto a diverso risultato.

La retrocessione fa sì che le successive chiamate distcc utilizzino la modalità distcc semplice. così
la pre-elaborazione avverrà sulla macchina locale per il resto della build. Questo
la tecnica impedisce build molto lente in cui tutte le compilazioni finiscono sulla macchina locale
dopo aver fallito a distanza.

Ovviamente, se le compilazioni locali falliscono dopo gli errori remoti, allora il distcc
l'invocazione esce con lo stato diverso da zero della compilazione locale. I messaggi di errore
stampati sono anche quelli della compilation locale.

Il comportamento di fallback per la modalità distcc-pump alla compilazione locale può essere disabilitato impostando
la variabile d'ambiente DISTCC_FALLBACK a 1, che fa fallire il comando distcc non appena
poiché la compilazione remota non è riuscita. Questa impostazione è molto utile per il debug del motivo per cui
la compilazione remota è andata male, perché ora verrà stampato l'output dal server.

Successivamente discutiamo le possibili cause delle discrepanze.

Il termoprotettore Utente cambiato a source or testata filetto durante le costruire.
Questo produce risultati incoerenti ovviamente.

A source or testata filetto cambiato durante le costruire.
Il sistema di compilazione riscrive un file. Per il kernel Linux 2.6, questo accade per
'include/linux/compile.h' e 'include/asm/asm-offsets.h'. Questa condizione è risolta
facendo sapere al server di inclusione che deve ripristinare le sue cache quando una stat di any
dei file cambia. In pratica, questo viene fatto raccogliendo i file in due punti.
elenco separato e quindi impostando il comando INCLUDE_SERVER_ARGS come in:

include_server_args="--stat_reset_triggers=include/linux/compile.h:include/asm/asm-
offset.h"

A testata filetto is potenzialmente incluso, ma effettua non esistere, e is poi dopo incluso.

Ciò si verifica quando un'intestazione foo.h include un altro file di intestazione trick.h, ma il
Il file trick.h non è stato ancora generato e l'inclusione viene effettivamente ignorata
a causa delle direttive di pre-elaborazione. Il server di inclusione cercherà il
esistenza di trick.h, perché approssima tutte le possibili direttive di modi
effettivamente valutare. Il file trick.h è determinato a non esistere. Se è più tardi
generato e quindi realmente incluso, il server di inclusione crederà erroneamente
che il file non esiste ancora. La soluzione a questo problema è fare il
build system genera trick.h prima che venga incluso un file di intestazione per la prima volta
che fa un riferimento sintattico a trick.h

Il termoprotettore includere server era iniziato con --unsafe_absolute_includes.
Questo è un problema se ci sono file di intestazione localmente che non esistono in remoto e
che vengono effettivamente utilizzati. Tali include sono spesso protetti da condizionale
direttive che valutano in modo che vengano effettivamente utilizzate solo su specifici e spesso
piattaforme non comuni. Se non stai compilando per una piattaforma del genere, potrebbe essere
corretto da usare --unsafe_absolute_include.

Il termoprotettore includere server ha calcolato le Wrongs comprende.
Non siamo a conoscenza di una situazione del genere.

EXIT CODICI


Il codice di uscita di include_server.py di solito è 0. Che il server di inclusione sia stato avviato
correttamente viene comunicato attraverso l'esistenza del pid_file.

AMBIENTE VARIABILI


DISTCC_EMAILLOG_WHOM_TO_BLAME L'indirizzo email da utilizzare per includere il server automatizzato
e-mail. L'impostazione predefinita è 'distcc-pump-errors' (che è un indirizzo email che probabilmente lo farà
non esiste nel tuo dominio).

Inoltre, l'invocazione del compilatore può utilizzare variabili di ambiente aggiuntive.

Usa include_server online utilizzando i servizi onworks.net


Ad


Ad