diff --git a/index/alire-index-ada_lua.ads b/index/alire-index-ada_lua.ads index 6ec4ec15..8a74f016 100644 --- a/index/alire-index-ada_lua.ads +++ b/index/alire-index-ada_lua.ads @@ -26,9 +26,8 @@ package Alire.Index.Ada_Lua is License (GPL_3_0), Private_Properties => - GPR_File ("lua.gpr") and - GPR_File ("examples/example1/example1.gpr") and - GPR_File ("examples/example2/example2.gpr") + Project_File ("examples/example1/example1.gpr") and + Project_File ("examples/example2/example2.gpr") ); end Alire.Index.Ada_Lua; diff --git a/index/alire-index-adayaml.ads b/index/alire-index-adayaml.ads new file mode 100644 index 00000000..a56010a4 --- /dev/null +++ b/index/alire-index-adayaml.ads @@ -0,0 +1,36 @@ +with Alire.Index.AUnit; + +package Alire.Index.AdaYaml is + + function Project is new Catalogued_Project (Projects.AdaYaml); + + Prj_Repo : constant URL := "https://github.com/yaml/AdaYaml.git"; + Prj_Author : constant String := "Felix Krause"; + Prj_Website : constant URL := "https://ada.yaml.io/"; + + V_0_2 : constant Release := + Project.Register + (V ("0.2"), + Git (Prj_Repo, "0264b03fd92eeedfe3e2713ed1da3f0d255c1727"), + + Dependencies => + AUnit.Project >= AUnit.V_2017, + + Properties => + Project_File ("yaml.gpr") and + Project_File ("yaml-utils.gpr") and + + GPR_Scenario ("Mode", "debug" or "release") and + + Author (Prj_Author) and + Website (Prj_Website) and + License (MIT), + + Private_Properties => + Project_File ("yaml-tests.gpr") and + + Executable ("yaml-lexer-harness") and + Executable ("yaml-parser-harness") + ); + +end Alire.Index.AdaYaml; diff --git a/index/alire-index-alire.ads b/index/alire-index-alire.ads index 084cfa4a..251f4097 100644 --- a/index/alire-index-alire.ads +++ b/index/alire-index-alire.ads @@ -61,17 +61,17 @@ package Alire.Index.Alire is GPR_Free_Scenario ("Path_To_Something") and -- Known scenario variables - GPR_File ("scenarios/catastrophical.gpr") and + Project_File ("scenarios/catastrophical.gpr") and -- Way to specify a project file not named like the project -- Path separators are always "/" and internally converted to native ones On_Condition (Operating_System = Windows, - GPR_File ("project_win.gpr")) and + Project_File ("project_win.gpr")) and On_Condition (Operating_System = GNU_Linux, On_Condition (Distribution = Ubuntu, -- Nested conditions - GPR_File ("project_ubuntu.gpr"))) and + Project_File ("project_ubuntu.gpr"))) and -- Conditional project file On_Condition diff --git a/index/alire-index-apq.ads b/index/alire-index-apq.ads index 2046efd3..0ff28fc8 100644 --- a/index/alire-index-apq.ads +++ b/index/alire-index-apq.ads @@ -9,6 +9,8 @@ package Alire.Index.APQ is (V ("3.2.0"), Git (Repo, "3b5b4b99f528f853e02abf239da7db3d8c9962b4"), Properties => + Project_File ("apq.gpr") and + GPR_Scenario ("OS", "Windows_NT" or "GNU/Linux" or "Darwin") and GPR_Scenario ("DEBUG", "true" or "false") and @@ -16,8 +18,7 @@ package Alire.Index.APQ is License (GMGPL_3_0), Private_Properties => - GPR_File ("apq.gpr") and - GPR_File ("samples/apq-samples.gpr") + Project_File ("samples/apq-samples.gpr") ); end Alire.Index.APQ; diff --git a/index/alire-index-aunit.ads b/index/alire-index-aunit.ads index c0e62d08..db8ccaad 100644 --- a/index/alire-index-aunit.ads +++ b/index/alire-index-aunit.ads @@ -14,6 +14,8 @@ package Alire.Index.AUnit is GPR_Scenario ("RUNTIME", "full" or "zfp" or "ravenscar" or "ravenscar-cert" or "cert") and + Project_File ("aunit.gpr") and + Executable ("aunit_harness") and Executable ("run-ppc-elf") and Executable ("test_liskov") and @@ -25,21 +27,20 @@ package Alire.Index.AUnit is License (GPL_3_0), Private_Properties => - GPR_File ("aunit.gpr") and - GPR_File ("test/aunit_tests.gpr") and + Project_File ("test/aunit_tests.gpr") and - GPR_File ("examples/calculator/harness.gpr") and - GPR_File ("examples/calculator/tested_lib/testlib.gpr") and - GPR_File ("examples/failures/harness.gpr") and - GPR_File ("examples/failures/tested_lib/testlib.gpr") and - GPR_File ("examples/liskov/harness.gpr") and - GPR_File ("examples/liskov/tested_lib/testlib.gpr") and - GPR_File ("examples/simple_test/harness.gpr") and - GPR_File ("examples/simple_test/tested_lib/testlib.gpr") and - GPR_File ("examples/test_caller/harness/harness.gpr") and - GPR_File ("examples/test_caller/tested_lib/testlib.gpr") and - GPR_File ("examples/test_fixture/harness.gpr") and - GPR_File ("examples/test_fixture/tested_lib/testlib.gpr") + Project_File ("examples/calculator/harness.gpr") and + Project_File ("examples/calculator/tested_lib/testlib.gpr") and + Project_File ("examples/failures/harness.gpr") and + Project_File ("examples/failures/tested_lib/testlib.gpr") and + Project_File ("examples/liskov/harness.gpr") and + Project_File ("examples/liskov/tested_lib/testlib.gpr") and + Project_File ("examples/simple_test/harness.gpr") and + Project_File ("examples/simple_test/tested_lib/testlib.gpr") and + Project_File ("examples/test_caller/harness/harness.gpr") and + Project_File ("examples/test_caller/tested_lib/testlib.gpr") and + Project_File ("examples/test_fixture/harness.gpr") and + Project_File ("examples/test_fixture/tested_lib/testlib.gpr") ); end Alire.Index.AUnit; diff --git a/index/alire-index-dak_components.ads b/index/alire-index-dak_components.ads index a2d0d1c5..b25bbab9 100644 --- a/index/alire-index-dak_components.ads +++ b/index/alire-index-dak_components.ads @@ -49,8 +49,7 @@ package Alire.Index.DAK_Components is Website (DAK_Website), Private_Properties => - GPR_File ("strings_edit.gpr") and - GPR_File ("test_strings_edit/strings_edit-test.gpr") + Project_File ("test_strings_edit/strings_edit-test.gpr") ); Tables_V_4_27 : constant Release := @@ -70,8 +69,7 @@ package Alire.Index.DAK_Components is Website (DAK_Website), Private_Properties => - GPR_File ("tables.gpr") and - GPR_File ("test_tables/tables-test.gpr") + Project_File ("test_tables/tables-test.gpr") ); Components_V_4_27 : constant Release := @@ -125,8 +123,7 @@ package Alire.Index.DAK_Components is Comment ("Tasking=Single seems to be broken at persistent-single_file-text_io.adb"), Private_Properties => - GPR_File ("components.gpr") and - GPR_File ("test_components/components-tests.gpr") + Project_File ("test_components/components-tests.gpr") ); Components_NTP_V_4_27 : constant Release := @@ -146,8 +143,7 @@ package Alire.Index.DAK_Components is Website (DAK_Website), Private_Properties => - GPR_File ("components-ntp.gpr") and - GPR_File ("test_components/components-ntp-test_ntp.gpr") + Project_File ("test_components/components-ntp-test_ntp.gpr") ); Components_Sqlite_V_4_27 : constant Release := @@ -168,9 +164,8 @@ package Alire.Index.DAK_Components is Website (DAK_Website), Private_Properties => - GPR_File ("components-sqlite.gpr") and - GPR_File ("test_components/components-sqlite-benchmark_tests.gpr") and - GPR_File ("test_components/components-sqlite-sqlite_persistence_tests.gpr") + Project_File ("test_components/components-sqlite-benchmark_tests.gpr") and + Project_File ("test_components/components-sqlite-sqlite_persistence_tests.gpr") ); Components_Connections_V_4_27 : constant Release := @@ -213,24 +208,16 @@ package Alire.Index.DAK_Components is Website (DAK_Website), Private_Properties => - GPR_File ("components-connections_server.gpr") and - GPR_File ("components-connections_server-elv_max_cube.gpr") and - GPR_File ("components-connections_server-http_server.gpr") and - GPR_File ("components-connections_server-http_server-sqlite_browser.gpr") and - GPR_File ("components-connections_server-modbus.gpr") and - GPR_File ("components-connections_server-mqtt.gpr") and - GPR_File ("components-connections_server-smtp.gpr") and - -- Test projects - GPR_File ("test_components/components-connections_server-elv_max_cube-test_elv_max_cube_client.gpr") and - GPR_File ("test_components/components-connections_server-http_server-test_http_server.gpr") and - GPR_File ("test_components/components-connections_server-modbus-test_modbus_client.gpr") and - GPR_File ("test_components/components-connections_server-mqtt-test_mqtt.gpr") and - GPR_File ("test_components/components-connections_server-test_data_server.gpr") and - GPR_File ("test_components/components-connections_server-test_echo_client_async.gpr") and - GPR_File ("test_components/components-connections_server-test_echo_client.gpr") and - GPR_File ("test_components/components-connections_server-test_echo_server.gpr") and - GPR_File ("test_components/components-connections_server-test_websockets_mqtt.gpr") and - GPR_File ("test_components/components-test_sqlite_browser.gpr") + Project_File ("test_components/components-connections_server-elv_max_cube-test_elv_max_cube_client.gpr") and + Project_File ("test_components/components-connections_server-http_server-test_http_server.gpr") and + Project_File ("test_components/components-connections_server-modbus-test_modbus_client.gpr") and + Project_File ("test_components/components-connections_server-mqtt-test_mqtt.gpr") and + Project_File ("test_components/components-connections_server-test_data_server.gpr") and + Project_File ("test_components/components-connections_server-test_echo_client_async.gpr") and + Project_File ("test_components/components-connections_server-test_echo_client.gpr") and + Project_File ("test_components/components-connections_server-test_echo_server.gpr") and + Project_File ("test_components/components-connections_server-test_websockets_mqtt.gpr") and + Project_File ("test_components/components-test_sqlite_browser.gpr") ); Components_Connections_Secure_V_4_27 : constant Release := @@ -254,10 +241,8 @@ package Alire.Index.DAK_Components is Website (DAK_Website), Private_Properties => - GPR_File ("components-connections_server-secure.gpr") and - GPR_File ("components-gnutls.gpr") and - GPR_File ("test_components/components-connections_server-http_server-test_https_server.gpr") and - GPR_File ("test_components/components-connections_server-smtp-test_smtp.gpr") + Project_File ("test_components/components-connections_server-http_server-test_https_server.gpr") and + Project_File ("test_components/components-connections_server-smtp-test_smtp.gpr") ); Components_ODBC_V_4_27 : constant Release := @@ -278,8 +263,7 @@ package Alire.Index.DAK_Components is Website (DAK_Website), Private_Properties => - GPR_File ("components-odbc.gpr") and - GPR_File ("test_components/components-odbc-odbc_bindings_tests.gpr") and + Project_File ("test_components/components-odbc-odbc_bindings_tests.gpr") and On_Condition (Operating_System = GNU_Linux, diff --git a/index/alire-index-eagle_lander.ads b/index/alire-index-eagle_lander.ads index 89bcb721..9565d28f 100644 --- a/index/alire-index-eagle_lander.ads +++ b/index/alire-index-eagle_lander.ads @@ -21,10 +21,7 @@ package Alire.Index.Eagle_Lander is Author (Prj_Author) and Website (Prj_Website) and - License (GPL_3_0), - - Private_Properties => - GPR_File ("lunar_lander.gpr") + License (GPL_3_0) ); end Alire.Index.Eagle_Lander; diff --git a/index/alire-index-globe_3d.ads b/index/alire-index-globe_3d.ads index e4f0c997..aec332b1 100644 --- a/index/alire-index-globe_3d.ads +++ b/index/alire-index-globe_3d.ads @@ -18,6 +18,7 @@ package Alire.Index.Globe_3D is Properties => Project_File ("globe_3d.gpr") and + GPR_Scenario ("OS_Kind", "linux" or "macosx" or "win32") and Executable ("globe_3d_demo") and @@ -31,11 +32,10 @@ package Alire.Index.Globe_3D is License (Unknown), Private_Properties => - GPR_File ("globe_3d.gpr") and - GPR_File ("demo/culler/armada/armada.gpr") and - GPR_File ("demo/globe_3d_demos.gpr") and - GPR_File ("demo/multi_window/multi_window.gpr") and - GPR_File ("demo/sprite/sprite_demo.gpr") and + Project_File ("demo/culler/armada/armada.gpr") and + Project_File ("demo/globe_3d_demos.gpr") and + Project_File ("demo/multi_window/multi_window.gpr") and + Project_File ("demo/sprite/sprite_demo.gpr") and On_Condition (Operating_System = GNU_Linux, diff --git a/index/alire-index-libadacrypt.ads b/index/alire-index-libadacrypt.ads index 2b7281c8..253d757a 100644 --- a/index/alire-index-libadacrypt.ads +++ b/index/alire-index-libadacrypt.ads @@ -16,6 +16,8 @@ package Alire.Index.Libadacrypt is AUnit.V_2017.Within_Major, Properties => + Project_File ("libadacrypt.gpr") and + GPR_Scenario ("system", "unix" or "windows") and GPR_Scenario ("mode", "debug" or "release") and @@ -30,8 +32,7 @@ package Alire.Index.Libadacrypt is License (GMGPL_3_0), Private_Properties => - GPR_File ("libadacrypt.gpr") and - GPR_File ("acltest.gpr") and + Project_File ("acltest.gpr") and On_Condition (Operating_System = GNU_Linux, diff --git a/index/alire-index-openglada.ads b/index/alire-index-openglada.ads index b4f1b1a9..80605038 100644 --- a/index/alire-index-openglada.ads +++ b/index/alire-index-openglada.ads @@ -42,11 +42,6 @@ package Alire.Index.OpenGLAda is License (MIT), Private_Properties => - GPR_File ("opengl.gpr") and - GPR_File ("opengl-glfw.gpr") and - GPR_File ("opengl-soil.gpr") and - GPR_File ("opengl-test.gpr") and - On_Condition (Operating_System = GNU_Linux, GPR_External ("Windowing_System", "x11")), diff --git a/index/alire-index-sdlada.ads b/index/alire-index-sdlada.ads index 0244d86e..aceeb168 100644 --- a/index/alire-index-sdlada.ads +++ b/index/alire-index-sdlada.ads @@ -18,7 +18,7 @@ package Alire.Index.SDLAda is LibSDL2.SDL_TTF_V_2.Within_Major, Properties => - Project_File ("sdlada.gpr") and + Project_File ("build/gnat/sdlada.gpr") and GPR_Scenario ("SDL_MODE", "debug" or "release") and GPR_Scenario ("SDL_PLATFORM", "linux" or "bsd" or "windows" or "macosx" or "ios" or "android") and @@ -27,15 +27,11 @@ package Alire.Index.SDLAda is License (Zlib), Private_Properties => - GPR_Path ("build/gnat") and - - GPR_File ("build/gnat/sdlada.gpr") and - -- GPR_File ("build/gnat/sdlada_image.gpr") and - GPR_File ("build/gnat/tests.gpr") and - -- GPR_File ("build/gnat/tests_image.gpr") and - GPR_File ("build/gnat/test_maths_build.gpr") and - -- GPR_File ("build/gnat/tools.gpr") and - -- GPR_File ("build/gnat/unit_tests.gpr") and + Project_File ("build/gnat/tests.gpr") and + -- Project_File ("build/gnat/tests_image.gpr") and + Project_File ("build/gnat/test_maths_build.gpr") and + -- Project_File ("build/gnat/tools.gpr") and + -- Project_File ("build/gnat/unit_tests.gpr") and Executable ("clipboard") and Executable ("error") and diff --git a/index/alire-index-whitakers_words.ads b/index/alire-index-whitakers_words.ads index 90561208..da171e38 100644 --- a/index/alire-index-whitakers_words.ads +++ b/index/alire-index-whitakers_words.ads @@ -24,9 +24,6 @@ package Alire.Index.Whitakers_Words is Comment ("This package builds the binary but additional steps are needed") and Comment ("See the README file for further instructions"), - Private_Properties => - GPR_File ("words.gpr"), - Available_When => Compiler > GNAT_FSF_7_2 -- bug with SAL library failing binding ); diff --git a/index/alire-projects.ads b/index/alire-projects.ads index 3a2fba53..32760e9e 100644 --- a/index/alire-projects.ads +++ b/index/alire-projects.ads @@ -8,8 +8,13 @@ package Alire.Projects with Preelaborate is -- Full list in alphabetical order type Names is - (Ada_Lua, + (------- + -- A -- + ------- + + Ada_Lua, Adacurses, + AdaYaml, Alire, Alr, APQ, @@ -92,10 +97,16 @@ package Alire.Projects with Preelaborate is function Description (Name : Names) return Description_String is (case Name is + ------- + -- A -- + ------- + when Ada_Lua => "An Ada binding for Lua", when Adacurses => "Wrapper on different packagings of NcursesAda", + when AdaYaml => + "Experimental YAML 1.3 implementation in Ada", when Alire => "Alire project catalog and support files", when Alr => diff --git a/src/alire-index.adb b/src/alire-index.adb index cf3e4451..8fec308a 100644 --- a/src/alire-index.adb +++ b/src/alire-index.adb @@ -1,7 +1,8 @@ with Ada.Containers.Ordered_Maps; -with Ada.Directories; with Ada.Strings.Maps; +with Gnat.OS_Lib; + package body Alire.Index is use all type Version; @@ -173,15 +174,13 @@ package body Alire.Index is function To_Native (Path : Platform_Independent_Path) return String is use Ada.Strings.Maps; begin - for I in Path'Range loop - if Is_In (Path (I), Dir_Seps) then - return Ada.Directories.Compose - (Path (Path'First .. I - 1), - To_Native (Path (I + 1 .. Path'Last))); - end if; - end loop; - - return Path; + return Native : String := Path do + for I in Native'Range loop + if Is_In (Path (I), Dir_Seps) then + Native (I) := GNAT.OS_Lib.Directory_Separator; + end if; + end loop; + end return; end To_Native; ----------- diff --git a/src/alire-index.ads b/src/alire-index.ads index 91f41328..0df2dc6f 100644 --- a/src/alire-index.ads +++ b/src/alire-index.ads @@ -234,13 +234,12 @@ package Alire.Index is function Comment is new PL.Cond_New_Label (Properties.Labeled.Comment); function Executable is new PL.Cond_New_Label (Properties.Labeled.Executable); function Maintainer is new PL.Cond_New_Label (Properties.Labeled.Maintainer); - function Project_File is new PL.Cond_New_Label (Properties.Labeled.Project_File); function Website is new PL.Cond_New_Label (Properties.Labeled.Website); function U (Prop : Properties.Vector) return Conditional.Properties renames Conditional.For_Properties.New_Value; - -- Non-label attributes require a custom builder function + -- Non-label attributes or processed data require a custom builder function function GPR_Free_Scenario (Name : String) return Properties.Vector is (+Properties.Scenarios.New_Property (GPR.Free_Variable (Name))); function GPR_Free_Scenario (Name : String) return Conditional.Properties is (U (GPR_Free_Scenario (Name))); @@ -250,6 +249,9 @@ package Alire.Index is function License (L : Licensing.Licenses) return Properties.Vector is (+Properties.Licenses.Values.New_Property (L)); function License (L : Licensing.Licenses) return Conditional.Properties is (U (License (L))); + function Project_File (File : Platform_Independent_Path) return Release_Properties; + + -- Concatenate function "and" (L, R : Release_Properties) return Release_Properties renames Conditional.For_Properties."and"; @@ -260,9 +262,6 @@ package Alire.Index is function GPR_External (Name : String; Value : String) return Conditional.Properties is (U (+Properties.Scenarios.New_Property (GPR.External_Value (Name, Value)))); - - function GPR_File (File : Platform_Independent_Path) return Release_Properties; - function GPR_Path (Path : Platform_Independent_Path) return Release_Properties; ------------------ -- REQUISITES -- @@ -349,11 +348,10 @@ private function Name (C : Catalog_Entry) return Projects.Names is (C.Name); - function GPR_File_Unsafe is new PL.Cond_New_Label (Properties.Labeled.GPR_File); - function GPR_Path_Unsafe is new PL.Cond_New_Label (Properties.Labeled.GPR_Path); + function Project_File_Unsafe is new PL.Cond_New_Label (Properties.Labeled.Project_File); - function GPR_File (File : Platform_Independent_Path) return Release_Properties renames GPR_File_Unsafe; - function GPR_Path (Path : Platform_Independent_Path) return Release_Properties renames GPR_Path_Unsafe; + function Project_File (File : Platform_Independent_Path) return Release_Properties is + (Project_File_Unsafe (To_Native (File))); function Unavailable return Conditional.Dependencies is (Conditional.For_Dependencies.New_Value -- A conditional (without condition) dependency vector diff --git a/src/alire-properties-labeled.ads b/src/alire-properties-labeled.ads index b85bb765..9aeffce7 100644 --- a/src/alire-properties-labeled.ads +++ b/src/alire-properties-labeled.ads @@ -12,13 +12,8 @@ package Alire.Properties.Labeled with Preelaborate is Description, -- One-liner description, so it is searched too Executable, -- A resulting executable built by the project Maintainer, -- Info about the maintainer of the alr-packaged project - Project_File,-- GPR files that the user can use. No path. Search paths given with GPR_Path - Website, -- A website other than the repository - - -- internal labels - GPR_File, -- Alternative naming of the project file (or aditional ones) - -- Those are used when testing the build, and must include full relative path - GPR_Path -- Extra path to add to the environment to look for projects + Project_File,-- Buildable project files in the release, with full relative path + Website -- A website other than the repository ); type Label (<>) is new Properties.Property with private; diff --git a/src/alire-releases.adb b/src/alire-releases.adb index ba4705ed..6c61b763 100644 --- a/src/alire-releases.adb +++ b/src/alire-releases.adb @@ -62,36 +62,59 @@ package body Alire.Releases is end return; end Executables; - --------------- - -- GPR_Files -- - --------------- - - function GPR_Files (R : Release; - P : Properties.Vector) - return Utils.String_Vector is - begin - return Files : Utils.String_Vector := Values (R.All_Properties.Evaluate (P), GPR_File) do - if Files.Is_Empty then - Files.Append (R.Project & ".gpr"); - end if; - end return; - end GPR_Files; - ------------------- -- Project_Files -- ------------------- - function Project_Files (R : Release; - P : Properties.Vector) - return Utils.String_Vector is + function Project_Files (R : Release; + P : Properties.Vector; + With_Path : Boolean) + return Utils.String_Vector + is + use Utils; + + With_Paths : Utils.String_Vector := Values (R.All_Properties.Evaluate (P), Project_File); + Without : Utils.String_Vector; begin - return Files : Utils.String_Vector := Values (R.All_Properties.Evaluate (P), Project_File) do - if Files.Is_Empty then - Files.Append (R.Project & ".gpr"); - end if; - end return; + if With_Paths.Is_Empty then + With_Paths.Append (String'(R.Project & ".gpr")); + end if; + + if With_Path then + return With_Paths; + else + for File of With_Paths loop + -- Has path or not + if Tail (File, '/') = "" then + Without.Append (File); -- As is + else + Without.Append (Tail (File, '/')); + end if; + end loop; + + return Without; + end if; end Project_Files; + ------------------- + -- Project_Paths -- + ------------------- + + function Project_Paths (R : Release; + P : Properties.Vector) return Utils.String_Set + is + use Utils; + Files : constant String_Vector := Project_Files (R, P, With_Path => True); + begin + return Paths : String_Set do + for File of Files loop + if Contains (File, "/") then + Paths.Include (Head (File, '/')); + end if; + end loop; + end return; + end Project_Paths; + ------------------------ -- Labeled_Properties -- ------------------------ diff --git a/src/alire-releases.ads b/src/alire-releases.ads index f2a2758d..7c21dc42 100644 --- a/src/alire-releases.ads +++ b/src/alire-releases.ads @@ -58,18 +58,15 @@ package Alire.Releases with Preelaborate is -- Only explicity declared ones -- Under some conditions (usually current platform) - function GPR_Files (R : Release; - P : Properties.Vector) - return Utils.String_Vector; - -- Explicitly declared ones, or default one if none declared - -- Under some conditions (usually current platform) - -- These have full paths to their exact location + function Project_Paths (R : Release; + P : Properties.Vector) return Utils.String_Set; + -- Deduced from Project_Files - function Project_Files (R : Release; - P : Properties.Vector) + function Project_Files (R : Release; + P : Properties.Vector; + With_Path : Boolean) return Utils.String_Vector; - -- Informative ones, usable by anyone with-ing the library. May be anywhere in the given GPR_Path-s. - -- Only a basename without path. + -- with relative path on demand function Image (R : Release) return Folder_String; -- Unique string built as name_version_id diff --git a/src/alire-utils.ads b/src/alire-utils.ads index 91549db7..69a4e9d1 100644 --- a/src/alire-utils.ads +++ b/src/alire-utils.ads @@ -1,3 +1,4 @@ +with Ada.Containers.Indefinite_Ordered_Sets; with Ada.Containers.Indefinite_Vectors; package Alire.Utils with Preelaborate is @@ -23,6 +24,9 @@ package Alire.Utils with Preelaborate is When_Empty : String := "(empty)"; function Image_One_Line (V : Vector) return String; + package String_Sets is new Ada.Containers.Indefinite_Ordered_Sets (String); + type String_Set is new String_Sets.Set with null record; + -------------------- -- String_Vectors -- --------------------