Problem mit den Berechtigungen von CMake configure_file(), wenn es von mehreren Benutzern ausgeführt wirdC++

Programme in C++. Entwicklerforum
Anonymous
 Problem mit den Berechtigungen von CMake configure_file(), wenn es von mehreren Benutzern ausgeführt wird

Post by Anonymous »

Beim Versuch, ein CMake-Projekt als anderer Linux-Benutzer neu zu erstellen, wird „Vorgang nicht zulässig“ generiert, obwohl über Gruppenberechtigungen Lese- und Schreibzugriff besteht. Die einzige Möglichkeit, das Problem zu lösen, besteht darin, das Build-Verzeichnis an den Benutzer zu übergeben, der erstellen möchte.
Dies kann mit den folgenden Schritten reproduziert werden:
  • Klonen Sie ein Repository, zum Beispiel Hiredis.
  • Erstellen Sie es mit CMake.
  • Führen Sie chmod -R aus g+rw im Build-Verzeichnis.
  • Benutzer austauschen und erneut versuchen, es zu erstellen.
Beispielfehler:

Code: Select all

CMake Error at 3rd_party/hiredis/CMakeLists.txt:70 (CONFIGURE_FILE):
Operation not permitted

CMake Error at /usr/local/share/cmake-3.31/Modules/WriteBasicConfigVersionFile.cmake:64 (configure_file):
Operation not permitted
Call Stack (most recent call first):
/usr/local/share/cmake-3.31/Modules/CMakePackageConfigHelpers.cmake:402 (write_basic_config_version_file)
3rd_party/hiredis/CMakeLists.txt:134 (write_basic_package_version_file)
Zeile 70 des Hiredis CMake:

Code: Select all

CONFIGURE_FILE(hiredis.pc.in hiredis.pc @ONLY)
Ich bin immer noch nicht sicher, ob ich die Ursache des Problems verstehe. Ich habe mir die Dokumentation für die Funktion configure_file() angesehen und es scheint, dass es sich nur um einen Wrapper für die Funktion file() handelt. Ich habe versucht, ein Makro für configure_file() zu erstellen, um es mit anderen Berechtigungen aufzurufen, aber das hat nicht funktioniert.
Irgendwelche Ideen oder andere Setups, die Sinn machen könnten? Ich habe darüber nachgedacht, das Repository in das Konto jedes Benutzers zu klonen, aber das würde viel Zeit in Anspruch nehmen, da unser Repository ziemlich groß ist.
Der Grund für die Erstellung mit unterschiedlichen Benutzern liegt darin, dass wir bei der Arbeit eine gemeinsame Entwicklungsmaschine mit einem Benutzerkonto für jeden Entwickler haben, die über die zum Testen erforderliche Hardware verfügt. Wir klonen unser Repository in das Home-Verzeichnis eines Hauptkontos und fügen alle zur Gruppe des Hauptbenutzers hinzu, damit jeder Zugriff auf die Dateien hat.
Wir möchten das Repository nicht in das Home-Verzeichnis jedes Benutzers klonen, da das Repo ziemlich groß ist (ca. 40 GiB). Wir importieren mehrere Bibliotheken von Drittanbietern als Git-Submodule, und der CMake-Build gibt „Vorgang nicht zulässig für die Funktion configure_file() zurück, wenn versucht wird, als anderer Benutzer neu zu erstellen.
Ich habe hier einen ähnlichen Beitrag gefunden:

Make configure_file schlägt fehl, wenn es nicht vom Besitzer der Ausgabedatei ausgeführt wird

Der Vorschlag dort war, einfach ein Makro zu erstellen, das die löscht Dateien, was die Builds effektiv sauber macht.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post