Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Chạy máy chủ | Ubuntu > | Fedora > |


Biểu tượng yêu thích OnWorks

include_server - Trực tuyến trên Đám mây

Chạy include_server trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks qua Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là lệnh include_server có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


include_server.py - xấp xỉ thận trọng của các phụ thuộc bao gồm cho C / C ++

SYNOPSIS


include_server --Hải cảng INCLUDE_SERVER_PORT [TÙY CHỌN]

MÔ TẢ


include_server.py bắt đầu một quy trình máy chủ bao gồm. Quá trình này trả lời các truy vấn từ
distcc(1) khách hàng về những tệp nào cần đưa vào biên dịch C / C ++. Include_server.py
lệnh tự kết thúc ngay sau khi máy chủ bao gồm được tạo.

Đối số INCLUDE_SERVER_PORT là tên của một ổ cắm được sử dụng cho tất cả các giao tiếp
giữa các máy khách distcc và máy chủ bao gồm. Các máy bơm phân phối(1) lệnh có trách nhiệm
để tạo vị trí ổ cắm, để chuyển nó tới tập lệnh này và để chuyển nó cho tất cả
máy khách phân phối thông qua biến môi trường có tên INCLUDE_SERVER_PORT.

Giao thức được sử dụng bởi máy chủ bao gồm sử dụng triển khai RPC của distcc. Mỗi bản phân phối
yêu cầu bao gồm (1) thư mục hiện tại và (2) danh sách các đối số của
lệnh biên dịch.

Nếu máy chủ bao gồm có thể xử lý yêu cầu, thì nó sẽ trả lời ứng dụng khách distcc bằng cách
gửi một danh sách các đường dẫn tệp. Các đường dẫn tệp là của nguồn nén và tiêu đề
các tệp cần thiết để biên dịch thông qua phân tích bao gồm. Danh sách cũng
bao gồm các liên kết tượng trưng và thậm chí cả các tệp giả cần thiết cho máy chủ biên dịch
tạo một bản sao chính xác của các phần của hệ thống tệp cần thiết để biên dịch. Trong
theo cách này, tệp tiêu đề cần thiết như /path/foo.h được nén, đổi tên và lưu trữ trong
vị trí tạm thời, chẳng hạn như /dev/shm/tmpiAvfGv.include_server-9368-1/path/foo.h.lzo. Các
máy khách distcc sẽ chuyển các tệp này đến máy chủ biên dịch, nơi chúng sẽ
không nén và được gắn kết tạm thời.

Nếu máy chủ bao gồm không thể xử lý yêu cầu, thì nó sẽ trả về danh sách trống
cho ứng dụng khách distcc.

Có hai loại lỗi liên quan đến máy chủ bao gồm. Máy chủ bao gồm có thể
không tính được bao gồm hoặc không thành công theo những cách khác, hãy xem phần BAO GỒM MÁY CHỦ TRIỆU CHỨNG.
Ngoài ra, quá trình biên dịch trên máy chủ loại bỏ có thể không thành công do tính toán không đủ
bao gồm đóng, nhưng sau đó thành công khi thử lại cục bộ, xem phần DISTCC GIẢI QUYẾT
TRIỆU CHỨNG.

TÙY CHỌN TÓM TẮT


Các tùy chọn sau đây được hiểu bởi include_server.py.

-dPAT, --debug_pattern = PAT
Vectơ bit để bật cảnh báo và gỡ lỗi
1 = cảnh báo
2 = theo dõi một số chức năng
các quyền hạn khác của hai: xem include_server / basics.py.

-e, --e-mail
Gửi email đến 'distcc-pump-error' hoặc nếu được xác định, giá trị của biến môi trường
DISTCC_EMAILLOG_WHOM_TO_BLAME, khi máy chủ bao gồm gặp sự cố. Mặc định là
để không gửi email.

--email_bound CON SỐ
Số lượng email tối đa để gửi (ngoài một email cuối cùng). Mặc định: 3.

- không có email
Không gửi email. Đây là mặc định.

--path_observation_re = RE
Thông báo cảnh báo sự cố bất cứ khi nào tên tệp được giải quyết thành một đường dẫn thực phù hợp
bởi RE, là một biểu thức chính quy trong cú pháp Python. Điều này rất hữu ích cho việc tìm kiếm
xem các tệp được bao gồm thực sự đến từ đâu. Sử dụng RE = "" để tìm tất cả. Ghi chú:
cảnh báo phải được kích hoạt với ít nhất -d1.

--pid_file ĐƯỜNG DẪN TẬP TIN
Pid của máy chủ bao gồm được ghi vào tệp FILEPATH. Điều này cho phép một tập lệnh
thật là máy bơm phân phối để phá bỏ máy chủ bao gồm.

-S, --số liệu thống kê
In thông tin để stdout về phân tích bao gồm.

--stat_reset_triggers = LIST
Xóa thống kê vào bộ nhớ đệm khi dấu thời gian của bất kỳ đường dẫn tệp nào trong LIST thay đổi hoặc
filepath xuất hiện hoặc không tồn tại. LIST là một chuỗi được phân tách bằng dấu hai chấm của
các đường dẫn tệp, có thể chứa các hình cầu đơn giản (như được cho phép bởi mô-đun hình cầu của Python).
In cảnh báo bất cứ khi nào thay đổi như vậy xảy ra (nếu cảnh báo được bật). Cái này
tùy chọn cho phép các ngoại lệ giới hạn đối với giả định bình thường của máy bơm phân phối rằng nguồn
các tệp không được sửa đổi trong quá trình xây dựng.

-NS, --thời gian
In thời gian đã trôi qua, người dùng và hệ thống để viết thư.

--unsafe_absolute_includes
Thực hiện xử lý trước trên máy chủ biên dịch ngay cả khi bao gồm các đường dẫn tệp tuyệt đối
đang gặp phải. Thông thường, máy chủ bao gồm sẽ quay trở lại quá trình xử lý trước cục bộ
nếu nó phát hiện bất kỳ bao gồm tuyệt đối nào. Do đó, cờ này rất hữu ích để ngăn chặn
dự phòng khi giá trị tuyệt đối bao gồm là một cảnh báo sai, bởi vì giá trị tuyệt đối
bao gồm bị loại bỏ trong quá trình tiền xử lý hoặc vì tệp hoàn toàn được bao gồm
tồn tại trên các máy chủ biên dịch.

Chính xác hơn, với --unsafe_absolute_includes, bao gồm tuyệt đối bị bỏ qua đối với
mục đích của việc thu thập bao đóng. Sử dụng tùy chọn này có thể dẫn đến
kết quả không chính xác vì (1) tiêu đề thực sự có thể được đưa vào
máy chủ biên dịch và nó có thể không giống như trên máy khách, (2) bao gồm
các chỉ thị của tiêu đề không được phân tích thêm.

Tùy chọn này hữu ích để biên dịch mã có các vị trí tuyệt đối được mã hóa cứng như vậy
của các tệp tiêu đề bên trong các lệnh có điều kiện (ví dụ: "#ifdef") hiển thị
bao gồm không liên quan. Chính xác hơn, những bao gồm này phải được loại bỏ trong
tiền xử lý cho cấu hình thực tế. Sau đó, câu hỏi về sự tồn tại của
tập tin tiêu đề là tranh luận và biên dịch từ xa là âm thanh. Điều này thường xảy ra nếu
bao gồm như vậy có nghĩa là cho các cấu hình bất thường khác với thực tế
cấu hình.

-v, --xác nhận
Xác minh rằng các tệp trong phần đóng CPP được chứa trong phần đóng được tính bằng bao gồm
xử lý.

-w, --write_include_closure
Viết tệp .d_approx liệt kê tất cả các tệp được bao gồm được tính toán bởi bao gồm
người phục vụ; với -x, ghi thêm các tệp được bao gồm theo tính toán của CPP vào một
.d_exact tệp.

-NS, --exact_analysis
Sử dụng CPP để thay thế, không bỏ qua các tệp tiêu đề hệ thống.

BAO GỒM MÁY CHỦ TRIỆU CHỨNG CÁC VẤN ĐỀ


Các thông báo và cảnh báo có nhiều khả năng đến từ bộ xử lý bao gồm được liệt kê bên dưới.

Sơ chế tại địa phương Bao gồm máy chủ không bao gồm: Không thể xác định mặc định hệ thống
bao gồm thư mục
Để xác định các thư mục tiêu đề hệ thống mặc định, máy chủ bao gồm chạy
trình biên dịch một lần cho mỗi ngôn ngữ cần thiết trong phiên của nó. Thông báo này cho biết
rằng trình biên dịch được chỉ định cho distcc không có trên máy khách.

Sơ chế tại địa phương Bao gồm máy chủ không bao gồm: Bailing ra bởi vì bao gồm máy chủ
tiêu Chi tiết hơn ...NS người sử dụng thời gian xử lý yêu cầu
Trong các tình huống không phổ biến, máy chủ bao gồm không phân tích được macro rất phức tạp
biểu thức. Ứng dụng khách phân phối sẽ sử dụng chế độ phân phối đơn giản.

Cảnh báo: Đường dẫn tập tin phải be tương đối nhưng không phải
Máy chủ bao gồm không chấp nhận các đường dẫn tệp tuyệt đối, chẳng hạn như
/usr/include/stdio.h, trong các chỉ thị bao gồm, vì không có gì đảm bảo rằng
tiêu đề này trên máy chủ biên dịch sẽ giống như tiêu đề trên
khách hàng. Máy chủ bao gồm từ bỏ việc phân tích việc đóng bao gồm. Bản phân phối
khách hàng không thể sử dụng chế độ máy bơm.

Để khắc phục sự cố này không phải lúc nào cũng đáng tin cậy, hãy đặt biến môi trường
INCLUDE_SERVER_ARGS = '- secure_absolute_includes' khi gọi máy bơm phân phối
script để chuyển tùy chọn --unsafe_absolute_includes tới máy chủ bao gồm.

Cảnh báo: Tuyệt đối đường dẫn tập tin hữu ích. Cảm ơn ! MẶC KỆ
--Unsafe_absolute_includes đang được sử dụng. Tình huống này xảy ra theo cùng một
các trường hợp như khi "Đường dẫn tệp phải tương đối nhưng không phải là tương đối" được đưa ra, nhưng trong trường hợp này
trường hợp bao gồm sẽ cung cấp câu trả lời cho khách hàng phân phối.

Cảnh báo: Đường dẫn '/ PATH / FILE' đã thay đổi / đến trong tồn tại / không còn tồn tại
Những cảnh báo này được đưa ra khi sử dụng trình kích hoạt đặt lại thống kê. Bởi vì / PATH / FILE
đã thay đổi, máy chủ bao gồm xóa bộ nhớ đệm của nó; phiên bản mới của tệp (hoặc
thiếu nó) làm cho phân tích bao gồm không hợp lệ. Thông báo này thường có thể là
mặc kệ; nó biểu thị việc sử dụng tệp của hệ thống xây dựng có phần không ổn định.
Bạn nên sửa hệ thống xây dựng để các tệp không bị viết lại.

Cảnh báo: Trong dịch đơn vị ..., tra cứu of hồ sơ hữu ích. Cảm ơn ! quyết định đến hữu ích. Cảm ơn ! đường dẫn thực is
hữu ích. Cảm ơn !
Cảnh báo này xảy ra với --path_observation_re khi một đường dẫn thực mới khớp với
nguồn hoặc tệp tiêu đề được quan sát.

DISTCC GIẢI QUYẾT TRIỆU CHỨNG


Tương tác giữa hệ thống xây dựng, phân phối và máy chủ bao gồm phần nào
phức tạp. Khi một lệnh distcc nhận được biên dịch không thành công từ máy chủ từ xa, nó
thử lại bản biên dịch cục bộ. Phần này thảo luận về nguyên nhân của sự khác biệt
giữa biên dịch từ xa và cục bộ. Chúng được gắn cờ bởi thông báo cách chức:

__________Cảnh báo: hữu ích. Cảm ơn ! chế độ bơm biên soạn không on máy chủ, nhưng đã thành công tại địa phương
__________ Máy bơm phân phối giáng chức đến đồng bằng chế độ. Xem các Distcc Sự khác nhau Các triệu chứng
phần in các include_server(1) người đàn ông .

Tập lệnh distcc-pump đưa ra thông báo này ở cuối bản dựng. Điều này có nghĩa là lúc
ít nhất một lệnh gọi distcc một biên dịch cục bộ đã thành công sau khi biên dịch từ xa
thất bại. Mỗi lời gọi phân phối mà sự khác biệt như vậy xảy ra lần lượt cũng gây ra một
thông báo chẳng hạn như:

Cảnh báo: xa biên soạn of '...' thất bại, thử lại tại địa phương a khác nhau kết quả.

Việc hạ cấp làm cho các lệnh gọi distcc tiếp theo sử dụng chế độ distcc đơn giản. Như vậy
tiền xử lý sẽ diễn ra trên máy cục bộ trong phần còn lại của bản dựng. Cái này
kỹ thuật ngăn chặn các bản dựng rất chậm trong đó tất cả các quá trình tổng hợp kết thúc trên máy cục bộ
sau khi thất bại từ xa.

Tất nhiên, nếu quá trình biên dịch cục bộ không thành công sau sự cố từ xa, thì bản phân phối
lệnh gọi thoát với trạng thái khác không của biên dịch cục bộ. Các thông báo lỗi
bản in cũng là của biên soạn địa phương.

Hành vi dự phòng cho chế độ distcc-pump sang biên dịch cục bộ có thể bị vô hiệu hóa bằng cách cài đặt
biến môi trường DISTCC_FALLBACK thành 1, làm cho lệnh distcc sớm bị lỗi
vì quá trình biên dịch từ xa không thành công. Cài đặt này rất hữu ích để gỡ lỗi tại sao
biên dịch từ xa đã bị lỗi, vì bây giờ đầu ra từ máy chủ sẽ được in.

Tiếp theo, chúng ta thảo luận về các nguyên nhân có thể có của sự khác biệt.

Mô hình người sử dụng thay đổi a nguồn or cú đội đầu hồ sơ suốt trong các xây dựng.
Tất nhiên, điều này mang lại kết quả không nhất quán.

A nguồn or cú đội đầu hồ sơ thay đổi suốt trong các xây dựng.
Hệ thống xây dựng ghi lại một tệp. Đối với nhân Linux 2.6, điều này xảy ra đối với
'include / linux / compile.h' và 'include / asm / asm-offsets.h'. Điều kiện này đã được khắc phục
bằng cách cho máy chủ bao gồm biết rằng nó phải đặt lại bộ nhớ đệm khi có một trạng thái bất kỳ
của các tập tin thay đổi. Thực tế, điều này được thực hiện bằng cách tập hợp các tệp trong dấu hai chấm-
danh sách được phân tách và sau đó đặt lệnh INCLUDE_SERVER_ARGS như trong:

include_server_args = "- stat_reset_triggers = include / linux / compile.h: include / asm / asm-
hiệu số.h "

A cú đội đầu hồ sơ is có khả năng bao gồm, nhưng làm không hiện hữu, is sau đó một lát sau bao gồm.

Điều này xảy ra khi một số tiêu đề foo.h bao gồm một tệp tiêu đề khác trick.h, nhưng
tệp trick.h chưa được tạo và phần bao gồm thực sự bị bỏ qua
vì chỉ thị tiền xử lý. Máy chủ bao gồm sẽ thăm dò
sự tồn tại của trick.h, bởi vì nó bao trùm tất cả các chỉ thị cách có thể
thực sự đánh giá. Tệp trick.h được xác định là không tồn tại. Nếu nó là muộn hơn
được tạo ra và sau đó thực sự được đưa vào, khi đó máy chủ bao gồm sẽ tin một cách sai lệch
rằng tệp vẫn không tồn tại. Giải pháp cho vấn đề này là làm cho
xây dựng hệ thống tạo trick.h trước lần đầu tiên bất kỳ tệp tiêu đề nào được đưa vào
điều đó tạo ra một tham chiếu cú ​​pháp đến trick.h

Mô hình bao gồm máy chủ bắt đầu với --unsafe_absolute_includes.
Đây là sự cố nếu có các tệp tiêu đề cục bộ không tồn tại từ xa và
mà thực sự được sử dụng. Các bao gồm như vậy thường được bảo vệ bằng điều kiện
các chỉ thị đánh giá để thực sự chỉ được sử dụng trên các
các nền tảng không phổ biến. Nếu bạn không biên dịch cho một nền tảng như vậy, thì có thể
đúng để sử dụng --unsafe_absolute_include.

Mô hình bao gồm máy chủ tính các sai bao gồm.
Chúng tôi không biết về một tình huống như vậy.

EXIT


Mã thoát của include_server.py thường là 0. Rằng máy chủ bao gồm đã được khởi động
được giao tiếp đúng cách thông qua sự tồn tại của pid_file.

MÔI TRƯỜNG BIẾN


DISTCC_EMAILLOG_WHOM_TO_BLAME Địa chỉ email để sử dụng bao gồm máy chủ tự động
email. Giá trị mặc định là 'distcc-pump-error' (là một địa chỉ email có thể sẽ
không tồn tại trong miền của bạn).

Ngoài ra, việc gọi trình biên dịch có thể sử dụng các biến môi trường bổ sung.

Sử dụng include_server trực tuyến bằng các dịch vụ onworks.net


Ad


Ad