InglésFrancésEspañol

Ejecutar servidores | Ubuntu > | Fedora > |


icono de página de OnWorks

include_server: en línea en la nube

Ejecute include_server en el proveedor de alojamiento gratuito de OnWorks sobre Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando include_server que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


include_server.py: aproximación conservadora de las dependencias de inclusión para C / C ++

SINOPSIS


incluir_servidor --Puerto INCLUYE_SERVIDOR_PUERTO [OPCIONES]

DESCRIPCIÓN


include_server.py inicia un proceso de servidor de inclusión. Este proceso responde consultas de
distcc(1) clientes sobre qué archivos incluir en las compilaciones de C / C ++. El include_server.py
El comando en sí termina tan pronto como se genera el servidor de inclusión.

El argumento INCLUDE_SERVER_PORT es el nombre de un conector utilizado para todas las comunicaciones
entre los clientes distcc y el servidor de inclusión. los distcc-bomba(1) el mando es responsable
para crear la ubicación del socket, para pasarlo a este script y para pasarlo a todos
clientes distcc a través de la variable de entorno denominada INCLUDE_SERVER_PORT.

El protocolo utilizado por el servidor de inclusión utiliza la implementación RPC de distcc. Cada distcc
La solicitud consta de (1) el directorio actual y (2) la lista de argumentos del
comando de compilación.

Si el servidor de inclusión puede procesar la solicitud, responde al cliente distcc mediante
enviando una lista de rutas de archivo. Las rutas de archivo son las de la fuente y el encabezado comprimidos.
archivos que se consideren necesarios para la compilación mediante el análisis de inclusión. La lista también
comprende enlaces simbólicos e incluso archivos ficticios necesarios para que el servidor de compilación
Construya una réplica precisa de las partes del sistema de archivos necesarias para la compilación. En
de esta manera, un archivo de encabezado necesario como /path/foo.h se comprime, se renombra y se almacena en un
ubicación temporal, como /dev/shm/tmpiAvfGv.include_server-9368-1/path/foo.h.lzo. los
El cliente distcc pasará estos archivos a un servidor de compilación, donde estarán
descomprimido y montado temporalmente.

Si el servidor de inclusión no puede procesar la solicitud, devuelve la lista vacía
al cliente distcc.

Hay dos tipos de fallas que se relacionan con el servidor de inclusión. El servidor de inclusión puede
fallan al calcular las inclusiones o fallan de otras maneras, consulte la sección INCLUIR SERVIDOR SÍNTOMAS.
Además, la compilación en el servidor de eliminación puede fallar debido a la inadecuación del calculado
incluir el cierre, pero luego tener éxito cuando se reintenta localmente, consulte la sección DISTCC DISCREPANCIA
SÍNTOMAS.

OPCIÓN RESUMEN


Las siguientes opciones se entienden por include_server.py.

-dPAT, --debug_pattern = PAT
Vector de bits para activar advertencias y depurar
1 = advertencias
2 = rastrear algunas funciones
otros poderes de dos: consulte include_server / basics.py.

-mi, --Email
Envíe un correo electrónico a 'distcc-pump-errors' o, si se define, el valor de la variable ambiental
DISTCC_EMAILLOG_WHOM_TO_BLAME, cuando el servidor de inclusión tiene problemas. El valor predeterminado es
para no enviar correo electrónico.

--email_bound NÚMERO
Número máximo de correos electrónicos para enviar (además de un correo electrónico final). Predeterminado: 3.

--sin correo electrónico
No envíe correo electrónico. Este es el predeterminado.

--path_observation_re = RE
Emitir un mensaje de advertencia cada vez que un nombre de archivo se resuelve en una ruta real que coincide
por RE, que es una expresión regular en la sintaxis de Python. Esto es útil para encontrar
averiguar de dónde provienen realmente los archivos incluidos. Utilice RE = "" para encontrarlos todos. Nota:
las advertencias deben estar habilitadas con al menos -d1.

--pid_archivo RUTA DE ARCHIVO
El pid del servidor de inclusión se escribe en el archivo FILEPATH. Esto permite una secuencia de comandos
tal distcc-bomba para derribar el servidor de inclusión.

-s, --Estadísticas
Imprima información en la salida estándar sobre el análisis de inclusión.

--stat_reset_triggers = LISTA
Vacíe las cachés de estadísticas cuando cambie la marca de tiempo de cualquier ruta de archivo en LIST o
filepath entra o desaparece. LIST es una cadena de dos puntos separados
filepaths, que posiblemente contengan globs simples (según lo permitido por el módulo glob de Python).
Imprima una advertencia cada vez que se produzca un cambio de este tipo (si las advertencias están habilitadas). Esta
La opción permite excepciones limitadas a la suposición normal de distcc-pump de que la fuente
los archivos no se modifican durante la compilación.

-t, --tiempo
Imprime el tiempo transcurrido, del usuario y del sistema en stderr.

--unsafe_absolute_includes
Realice el preprocesamiento en el servidor de compilación incluso si incluye rutas de archivo absolutas
se encuentran. Normalmente, el servidor de inclusión recurrirá al preprocesamiento local
si detecta alguna inclusión absoluta. Por lo tanto, esta bandera es útil para prevenir tales
retrocesos cuando lo absoluto incluye son una falsa alarma, ya sea porque el absoluto
include se descarta durante el preprocesamiento o porque el archivo absolutamente incluido
existe en los servidores de compilación.

Más precisamente, con --unsafe_absolute_includes las inclusiones absolutas se ignoran para
los propósitos de recopilar el cierre de inclusión. El uso de esta opción puede llevar a
resultados incorrectos porque (1) el encabezado puede estar incluido en el
servidor de compilación y puede que no sea el mismo que en el cliente, (2) la inclusión
las directivas del encabezado no se analizan más a fondo.

La opción es útil para compilar código que tiene tales ubicaciones absolutas codificadas
de archivos de encabezado dentro de directivas condicionales (por ejemplo, "#ifdef") que representan el
incluye irrelevante. Más precisamente, estas inclusiones deben eliminarse durante
preprocesamiento para la configuración real. Entonces, la cuestión de la existencia del
El archivo de encabezado es discutible y la compilación remota es sólida. Este suele ser el caso si
Tales inclusiones están pensadas para configuraciones inusuales diferentes de las reales.
configuración.

-v, --verificar
Verifique que los archivos en el cierre de CPP estén contenidos en el cierre calculado por incluir
procesador.

-w, --escribir_incluir_cierre
Escriba un archivo .d_approx que enumere todos los archivos incluidos calculados por la inclusión
servidor; con -x, escriba adicionalmente los archivos incluidos calculados por CPP en un
Archivo .d_exact.

-X, --análisis_exacto
Utilice CPP en su lugar, no omita los archivos de encabezados del sistema.

INCLUIR SERVIDOR SÍNTOMAS Y DE CUESTIONES


Los mensajes y advertencias más probables que provienen del procesador de inclusión se enumeran a continuación.

preprocesamiento en la zona. Incluyendo servidor no cubierta: No pude determinar tu préstamo estudiantil iTero
incluiyendo directorios
Para determinar los directorios de encabezado del sistema predeterminados, el servidor de inclusión ejecuta el
compilador una vez para cada idioma necesario durante su sesión. Este mensaje indica
que el compilador especificado para distcc no está presente en el cliente.

preprocesamiento en la zona. Incluyendo servidor no cubierta: Empacado salir porque incluiyendo servidor
gastado más, que ...s usuario hora manipulación solicita
En situaciones poco comunes, el servidor de inclusión no puede analizar macros muy complicados.
Expresiones El cliente distcc utilizará el modo distcc simple.

Aviso: Ruta de archivo debe: be relativo pero no es
El servidor de inclusión no acepta rutas de archivo absolutas, como
/usr/include/stdio.h, en directivas include, porque no hay garantía de que
este encabezado en la máquina del servidor de compilación será el mismo que en el
cliente. El servidor de inclusión deja de analizar el cierre de inclusión. El distcc
el cliente no puede utilizar el modo de bomba.

Para superar este problema de una manera no siempre confiable, establezca la variable de entorno
INCLUDE_SERVER_ARGS = '- unsafe_absolute_includes' al invocar la bomba distcc
script para pasar la opción --unsafe_absolute_includes al servidor de inclusión.

Aviso: Absoluto ruta de archivo ... fue Ignorado
--Unsafe_absolute_includes está en uso. Esta situación ocurre bajo el mismo
circunstancias como cuando se emite "Filepath debe ser relativo pero no lo es", pero en este
caso el include proporcionará una respuesta al cliente distcc.

Aviso: Shrimp '/ RUTA / ARCHIVO' cambiado / vino dentro existencia / no por más tiempo existe
Estas advertencias se emiten cuando se utilizan activadores de restablecimiento de estadísticas. Porque / PATH / FILE
cambiado, el servidor de inclusión borra sus cachés; la nueva versión del archivo (o el
falta) invalida el análisis de inclusión. Este mensaje generalmente puede ser
ignorado significa un uso algo precario de archivos por parte del sistema de compilación.
Se recomienda arreglar el sistema de compilación para que los archivos no se vuelvan a escribir.

Aviso: Para traducción unidad ... búsqueda of presentar ... resuelto a ... cuyo Realpath is
...
Esta advertencia ocurre con --path_observation_re cuando una nueva ruta real que coincide con un
se observa el archivo fuente o de encabezado.

DISTCC DISCREPANCIA SÍNTOMAS


Las interacciones entre el sistema de compilación, distcc y el servidor de inclusión son algo
complejo. Cuando un comando distcc recibe una compilación defectuosa del servidor remoto,
vuelve a intentar la compilación localmente. Esta sección analiza las causas de las discrepancias
entre compilación remota y local. Estos están marcados por el mensaje de degradación:

__________Advertencia: ... modo de bomba compilacion (es) fracasado on servidor, pero tenido éxito en la zona.
__________ Distcc-bomba fue degradado a llanura modo. Ven La Distcc Discrepancia Los síntomas
. in La incluir_servidor(1) hombre .

El script distcc-pump emite este mensaje al final de la compilación. Esto significa que para al
al menos una invocación distcc una compilación local tuvo éxito después de la compilación remota
fallido. Cada invocación de distcc para la que se produjo tal discrepancia, a su vez, también emite un
mensaje como:

Aviso: sanaciones compilación of '...' ha fallado, reintentado localmente y tiene a una experiencia diferente resultado.

La degradación hace que las invocaciones de distcc posteriores utilicen el modo distcc simple. Por lo tanto
el preprocesamiento se llevará a cabo en la máquina local durante el resto de la compilación. Esta
La técnica evita compilaciones muy lentas donde todas las compilaciones terminan en la máquina local.
después de fallar de forma remota.

Por supuesto, si las compilaciones locales fallan después de las fallas remotas, entonces el distcc
la invocación sale con el estado distinto de cero de la compilación local. Los mensajes de error
impresos son también los de la compilación local.

El comportamiento de reserva para el modo distcc-pump a la compilación local se puede deshabilitar configurando
la variable de entorno DISTCC_FALLBACK a 1, lo que hace que el comando distcc falle tan pronto
ya que la compilación remota ha fallado. Esta configuración es muy útil para depurar por qué
La compilación remota salió mal, porque ahora se imprimirá la salida del servidor.

A continuación, discutimos las posibles causas de las discrepancias.

El sistema usuario cambiado a fuente or encabezamiento presentar durante La construir.
Por supuesto, esto produce resultados inconsistentes.

A fuente or encabezamiento presentar cambiado durante La construir.
El sistema de compilación reescribe un archivo. Para el kernel 2.6 de Linux, esto sucede para
'include / linux / compile.h' e 'include / asm / asm-offsets.h'. Esta condición es fija
haciendo saber al servidor de inclusión que debe restablecer sus cachés cuando una estadística de cualquier
de los archivos cambia. Prácticamente, esto se hace reuniendo los archivos en dos puntos.
lista separada y luego configurando el comando INCLUDE_SERVER_ARGS como en:

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

A encabezamiento presentar is la posibilidad incluido, pero no existe, y is luego luego incluido.

Esto ocurre cuando algún encabezado foo.h incluye otro archivo de encabezado trick.h, pero el
El archivo trick.h aún no se ha generado y la inclusión en realidad se ignora
debido a las directivas de preprocesamiento. El servidor de inclusión buscará el
existencia de trick.h, porque sobreaproxima todas las formas posibles de las directivas
evaluar realmente. Se determina que el archivo trick.h no existe. Si es mas tarde
generado, y luego realmente incluido, entonces el servidor de inclusión creerá falsamente
que el archivo aún no existe. La solución a este problema es hacer que el
El sistema de compilación genera trick.h antes de que se incluya por primera vez cualquier archivo de encabezado
que hace una referencia sintáctica a trick.h

El sistema incluiyendo servidor fue fundó con --unsafe_absolute_includes.
Esto es un problema si hay archivos de encabezado localmente que no existen de forma remota y
que se utilizan realmente. Tales inclusiones a menudo están protegidas por condiciones
directivas que evalúan de modo que en realidad se utilizan solo en casos específicos y a menudo
plataformas poco comunes. Si no está compilando para una plataforma de este tipo, puede ser
correcto para usar --unsafe_absolute_include.

El sistema incluiyendo servidor tiene calculado La Mal incluye.
No conocemos tal situación.

SALIR Codigos


El código de salida de include_server.py suele ser 0. Que el servidor de inclusión se ha iniciado
se comunica correctamente a través de la existencia del pid_file.

MEDIOAMBIENTE VARIABLES


DISTCC_EMAILLOG_WHOM_TO_BLAME La dirección de correo electrónico que se utilizará para incluir el servidor automatizado
correos electrónicos. El valor predeterminado es 'distcc-pump-errors' (que es una dirección de correo electrónico que probablemente
no existen en su dominio).

Además, la invocación del compilador puede utilizar variables de entorno adicionales.

Use include_server en línea usando los servicios de onworks.net


Ad


Ad