Я пытаюсь скомпилировать этот код: https://github.com/RanaExMachina/ada-fuse
К сожалению, при сборке я получаю эту ошибку:
fuse-system.ads:147:04: size clause not allowed for variable length type
Это кажется проблемой, потому что в коде он пытается установить размер записи, которая имеет общий тип в качестве записи. Кажется, это новая ошибка, поскольку у разработчика не было этой проблемы, когда он писал это 2,5 года назад. К сожалению, он не может помочь мне в кратчайшие сроки, но я должен запустить эту библиотеку. Однако я немного беспомощен в решении этой проблемы.
По сути, мне кажется, что я должен каким-то образом сообщить комару, насколько большим будет этот тип, который, вопреки убеждению комара, априори известен: это тип доступа. Либо в record
, либо в определении универсального типа.
Соответствующие части:
fuse-main.ads:
package Fuse.Main is
package IO is
new Ada.Direct_IO (Element_Type);
type File_Access is access IO.File_Type;
fuse-system.ads:
generic
type File_Access is private;
package Fuse.System is
...
type File_Info_Type is record
Flags : Flags_Type;
Fh_Old : Interfaces.C.unsigned_long;
Writepage : Interfaces.C.int;
Direct_IO : Boolean := True;
Keep_Cache : Boolean := True;
Flush : Boolean := True;
Nonseekable : Boolean := True;
Fh : File_Access;
Lock_Owner : Interfaces.Unsigned_64;
end record;
type File_Info_Access is access File_Info_Type;
pragma Convention (C, File_Info_Type);
for File_Info_Type'Size use 32*8;
Моя версия комара: 4.9.2-1 (debian jessie)