diff --git a/index/alire-index-ada_lua.ads b/index/alire-index-ada_lua.ads index bb8f58b3..6ec4ec15 100644 --- a/index/alire-index-ada_lua.ads +++ b/index/alire-index-ada_lua.ads @@ -2,32 +2,33 @@ with Alire.Index.Liblua; package Alire.Index.Ada_Lua is - Prj_Repo : constant URL := "https://github.com/alire-project/ada-lua.git"; + function Project is new Catalogued_Project (Projects.Ada_Lua); + Prj_Repo : constant URL := "https://github.com/alire-project/ada-lua.git"; Prj_Maintainer : constant String := "AdaCore"; Prj_Website : constant URL := "https://github.com/AdaCore/ada-lua"; V_0_0_0 : constant Release := - Register (Projects.Ada_Lua, - V ("0.0.0-5.3"), - Git (Prj_Repo, "ba2fcbf9f8d54d3f6362f20523deb4371371f658"), + Project.Register + (V ("0.0.0-5.3"), + Git (Prj_Repo, "ba2fcbf9f8d54d3f6362f20523deb4371371f658"), - Dependencies => - Within_Major (Liblua.V_5_3), + Dependencies => + Liblua.V_5_3.Within_Major, - Properties => - Project_File ("lua.gpr") and + Properties => + Project_File ("lua.gpr") and - Executable ("main") and + Executable ("main") and - Maintainer (Prj_Maintainer) and - Website (Prj_Website) and - License (GPL_3_0), + Maintainer (Prj_Maintainer) and + Website (Prj_Website) and + License (GPL_3_0), - Private_Properties => - GPR_File ("lua.gpr") and - GPR_File ("examples/example1/example1.gpr") and - GPR_File ("examples/example2/example2.gpr") - ); + Private_Properties => + GPR_File ("lua.gpr") and + GPR_File ("examples/example1/example1.gpr") and + GPR_File ("examples/example2/example2.gpr") + ); end Alire.Index.Ada_Lua; diff --git a/index/alire-index-adacurses.ads b/index/alire-index-adacurses.ads index 8db667cb..3b27b9ea 100644 --- a/index/alire-index-adacurses.ads +++ b/index/alire-index-adacurses.ads @@ -2,6 +2,8 @@ with Alire.Index.NcursesAda; package Alire.Index.Adacurses is + function Project is new Catalogued_Project (Projects.Adacurses); + Repo : constant String := "https://github.com/alire-project/adacurses-wrapper.git"; Comments : constant Conditional.Properties := @@ -10,33 +12,33 @@ package Alire.Index.Adacurses is Comment ("This package wraps these differences so clients can always safely use adacurses"); V_6 : constant Release := - Register (Projects.Adacurses, - V ("6.0+20170708-2"), - Git (Repo, "4ccb20409becb50c0b5fd29effb676b650608326"), + Project.Register + (V ("6.0+20170708-2"), + Git (Repo, "4ccb20409becb50c0b5fd29effb676b650608326"), - Dependencies => - On_Condition - (Distribution = Debian or Distribution = Ubuntu, - When_True => When_Available (Within_Major (NcursesAda.V_5)), - When_False => Unavailable), + Dependencies => + On_Condition + (Distribution = Debian or Distribution = Ubuntu, + When_True => When_Available (NcursesAda.V_5.Within_Major), + When_False => Unavailable), - Properties => - Comments - ); + Properties => + Comments + ); V_5_9 : constant Release := - Register (Projects.Adacurses, - V ("5.9+20140726-1build1"), - Git (Repo, "4ccb20409becb50c0b5fd29effb676b650608326"), + Project.Register + (V ("5.9+20140726-1build1"), + Git (Repo, "4ccb20409becb50c0b5fd29effb676b650608326"), - Dependencies => - On_Condition - (Distribution = Debian or Distribution = Ubuntu, - When_True => When_Available (Within_Major (NcursesAda.V_3)), - When_False => Unavailable), + Dependencies => + On_Condition + (Distribution = Debian or Distribution = Ubuntu, + When_True => When_Available (NcursesAda.V_3.Within_Major), + When_False => Unavailable), - Properties => - Comments - ); + Properties => + Comments + ); end Alire.Index.Adacurses; diff --git a/index/alire-index-alire.ads b/index/alire-index-alire.ads index ec298e0e..f897e2c0 100644 --- a/index/alire-index-alire.ads +++ b/index/alire-index-alire.ads @@ -3,88 +3,88 @@ with Alire.Index.Simple_Logging; package Alire.Index.Alire is - Repo : constant URL := "https://bitbucket.org/aleteolabs/alire.git"; + function Project is new Catalogued_Project (Projects.Alire); + + Repo : constant URL := "https://bitbucket.org/aleteolabs/alire.git"; V_0_1_2 : constant Release := - Register (Projects.Alire, - V ("0.1.2"), - Git (Repo, "e2dee2e147ae9e4d666567b53b108cbe61bc06e8"), - Dependencies => - Within_Minor (Semantic_Versioning.V_0_1_2) and - Within_Major (Simple_Logging.V_1_0_0) - ); + Project.Register + (V ("0.1.2"), + Git (Repo, "e2dee2e147ae9e4d666567b53b108cbe61bc06e8"), + Dependencies => + Semantic_Versioning.V_0_1_2.Within_Minor and + Simple_Logging.V_1_0_0.Within_Major); + + function Example_Project is new Catalogued_Project (Projects.Alire_Reserved); Elite_Dangerous, Half_Life_3, Star_Citizen, - Windows_100 : constant Projects.Names := Alire_Reserved; + Windows_100 : Catalog_Entry; -- A few fake release to spice descriptions a bit up. - Syntax_Example : constant Release := - Register (Projects.Alire_Reserved, - V ("1.0.0"), - Origins.New_Filesystem ("/alire"), + Syntax_Example : constant Release := Example_Project.Register + (V ("1.0.0"), + Origins.New_Filesystem ("/alire"), + Dependencies => + Half_Life_3.Current and -- unconditional + On_Condition -- conditional + (Operating_System = GNU_Linux, + When_True => Elite_Dangerous >= "2.0" and Star_Citizen >= V ("3.0"), -- Wish... + When_False => Windows_100 > V ("1.0")) and + When_Available -- Chained preferences + (Preferred => Within_Major (Alire.Project, V ("1.0")), -- as function + Otherwise => Alire.Project.Within_Major (V ("0.0"))) and -- or dot notation + When_Available -- Chained preferences + (Preferred => Alire.Project.Within_Major ("2.0"), + Otherwise => When_Available -- Chained preferences multi-level + (Preferred => Within_Major (Alire.Project, V ("1.0")), + Otherwise => Alire.Project.Within_Major ("0.5"))), -- V () is optional - Dependencies => - Current (Half_Life_3) and -- unconditional - On_Condition -- conditional - (Operating_System = GNU_Linux, - When_True => At_Least (Elite_Dangerous, V ("2.0")) and - At_Least (Star_Citizen, V ("3.0")), -- Wish... - When_False => At_Least (Windows_100, V ("1.0"))) and - When_Available -- Chained preferences - (Preferred => Within_Major (Projects.Alire, V ("1.0")), - Otherwise => Within_Major (Projects.Alire, V ("0.0"))) and - When_Available -- Chained preferences - (Preferred => Within_Major (Projects.Alire, V ("2.0")), - Otherwise => When_Available -- Chained preferences multi-level - (Preferred => Within_Major (Projects.Alire, V ("1.0")), - Otherwise => Within_Major (Projects.Alire, V ("0.5")))), + Private_Properties => -- These are only interesting to alr, not users + GPR_External ("Profile", "False"), + -- Sample extra params for build - Private_Properties => -- These are only interesting to alr, not users - GPR_External ("Profile", "False"), - -- Sample extra params for build + Properties => + GPR_Scenario ("Build", "Debug" or "Release") and + GPR_Free_Scenario ("Path_To_Something") and + -- Known scenario variables - Properties => - GPR_Scenario ("Build", "Debug" or "Release") and - GPR_Free_Scenario ("Path_To_Something") and - -- Known scenario variables + GPR_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 - GPR_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 + On_Condition + (Operating_System = GNU_Linux, + On_Condition (Distribution = Ubuntu, -- Nested conditions + GPR_File ("project_ubuntu.gpr"))) and + -- Conditional project file - On_Condition - (Operating_System = Windows, - GPR_File ("project_win.gpr")) and - On_Condition - (Operating_System = GNU_Linux, - On_Condition (Distribution = Ubuntu, -- Nested conditions - GPR_File ("project_ubuntu.gpr"))) and - -- Conditional project file + On_Condition + (Operating_System = GNU_Linux, + Comment ("Long life the penguin")) and + -- Conditions on operating system - On_Condition - (Operating_System = GNU_Linux, - Comment ("Long life the penguin")) and - -- Conditions on operating system + On_Condition + (Compiler = GNAT_Unknown, -- /= also works + Comment ("Never saw that compiler") and Comment ("But I would like to")) and + -- Conditions on compiler version - On_Condition - (Compiler = GNAT_Unknown, -- /= also works - Comment ("Never saw that compiler") and Comment ("But I would like to")) and - -- Conditions on compiler version + On_Condition + (Distro_Release = Ubuntu_Artful, + When_True => Comment ("Living on the edge"), + When_False => Comment ("I am a rock")) and + -- Conditions on distribution release - On_Condition - (Distro_Release = Ubuntu_Artful, - When_True => Comment ("Living on the edge"), - When_False => Comment ("I am a rock")) and - -- Conditions on distribution release + Comment ("Tell me about your mother") and + Website ("http://www.www.www"), + -- Unconditional properties - Comment ("Tell me about your mother") and - Website ("http://www.www.www"), - -- Unconditional properties - - Available_When => -- Impossible mix - (Operating_System = Windows and Operating_System /= GNU_Linux) or - (Compiler = GNAT_Unknown and Compiler /= GNAT_Unknown)); + Available_When => -- Impossible mix + (Operating_System = Windows and Operating_System /= GNU_Linux) or + (Compiler = GNAT_Unknown and Compiler /= GNAT_Unknown)); end Alire.Index.Alire; diff --git a/index/alire-index-alr.ads b/index/alire-index-alr.ads index 0e16cc80..0cd19280 100644 --- a/index/alire-index-alr.ads +++ b/index/alire-index-alr.ads @@ -3,14 +3,16 @@ with Alire.Index.Simple_Logging; package Alire.Index.Alr is - Repo : constant URL := "https://bitbucket.org/aleteolabs/alr.git"; + function Project is new Catalogued_Project (Projects.Alr); + + Repo : constant URL := "https://bitbucket.org/aleteolabs/alr.git"; V_0_1_2 : constant Release := - Register (Projects.Alr, - V ("0.1.2"), - Git (Repo, "4002536beea8aee12b455077df4dd144b409bde4"), - Dependencies => - Within_Major (Alire.V_0_1_2) and - Within_Major (Simple_Logging.V_1_0_0)); + Project.Register + (V ("0.1.2"), + Git (Repo, "4002536beea8aee12b455077df4dd144b409bde4"), + Dependencies => + Alire.V_0_1_2.Within_Minor and + Simple_Logging.V_1_0_0.Within_Major); end Alire.Index.Alr; diff --git a/index/alire-index-apq.ads b/index/alire-index-apq.ads index 37302170..2046efd3 100644 --- a/index/alire-index-apq.ads +++ b/index/alire-index-apq.ads @@ -1,21 +1,23 @@ package Alire.Index.APQ is - Repo : constant URL := "https://github.com/alire-project/apq.git"; + function Project is new Catalogued_Project (Projects.APQ); + + Repo : constant URL := "https://github.com/alire-project/apq.git"; V_3_2_0 : constant Release := - Register (Projects.APQ, - V ("3.2.0"), - Git (Repo, "3b5b4b99f528f853e02abf239da7db3d8c9962b4"), - Properties => - GPR_Scenario ("OS", "Windows_NT" or "GNU/Linux" or "Darwin") and - GPR_Scenario ("DEBUG", "true" or "false") and + Project.Register + (V ("3.2.0"), + Git (Repo, "3b5b4b99f528f853e02abf239da7db3d8c9962b4"), + Properties => + GPR_Scenario ("OS", "Windows_NT" or "GNU/Linux" or "Darwin") and + GPR_Scenario ("DEBUG", "true" or "false") and - License (GMGPL_2_0) and - License (GMGPL_3_0), + License (GMGPL_2_0) and + License (GMGPL_3_0), - Private_Properties => - GPR_File ("apq.gpr") and - GPR_File ("samples/apq-samples.gpr") - ); + Private_Properties => + GPR_File ("apq.gpr") and + GPR_File ("samples/apq-samples.gpr") + ); end Alire.Index.APQ; diff --git a/index/alire-index-aunit.ads b/index/alire-index-aunit.ads index 9a274c05..c0e62d08 100644 --- a/index/alire-index-aunit.ads +++ b/index/alire-index-aunit.ads @@ -1,43 +1,45 @@ package Alire.Index.AUnit is + function Project is new Catalogued_Project (Projects.AUnit); + Prj_Repo : constant URL := "https://github.com/alire-project/libaunit.git"; Prj_Maintainer : constant String := "AdaCore"; Prj_Website : constant URL := "https://www.adacore.com/download/more"; V_2017 : constant Release := - Register (Projects.AUnit, - V ("2017"), - Git (Prj_Repo, "b66a41ceb35bfc81b9345655c5f46317a57de3b4"), - Properties => - GPR_Scenario ("RUNTIME", - "full" or "zfp" or "ravenscar" or "ravenscar-cert" or "cert") and + Project.Register + (V ("2017"), + Git (Prj_Repo, "b66a41ceb35bfc81b9345655c5f46317a57de3b4"), + Properties => + GPR_Scenario ("RUNTIME", + "full" or "zfp" or "ravenscar" or "ravenscar-cert" or "cert") and - Executable ("aunit_harness") and - Executable ("run-ppc-elf") and - Executable ("test_liskov") and - Executable ("test_calculator") and - Executable ("test_math") and + Executable ("aunit_harness") and + Executable ("run-ppc-elf") and + Executable ("test_liskov") and + Executable ("test_calculator") and + Executable ("test_math") and - Maintainer (Prj_Maintainer) and - Website (Prj_Website) and - License (GPL_3_0), + Maintainer (Prj_Maintainer) and + Website (Prj_Website) and + License (GPL_3_0), - Private_Properties => - GPR_File ("aunit.gpr") and - GPR_File ("test/aunit_tests.gpr") and + Private_Properties => + GPR_File ("aunit.gpr") and + GPR_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") - ); + 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") + ); end Alire.Index.AUnit; diff --git a/index/alire-index-dak.ads b/index/alire-index-dak.ads deleted file mode 100644 index 8b7d6261..00000000 --- a/index/alire-index-dak.ads +++ /dev/null @@ -1,283 +0,0 @@ -with Alire.Index.LibGNUTLS; -with Alire.Index.UnixODBC; - -package Alire.Index.DAK is - - -- Simple Components by Dmitry A. Kazakov - -- This library is a good challenge since it has many subprojects - -- It prompted the introduction of the GPR_File property - - -- Since most project names are common words, I've taken the liberty to prefix them with dak_ - -- but the original sources are unchanged. - - Repo : constant URL := "https://github.com/alire-project/dak_simple_components.git"; - - DAK_Author : constant String := "Dmitry A. Kazakov"; - DAK_Website : constant String := "http://www.dmitry-kazakov.de/ada/components.htm"; - - Strings_Edit_V_4_27 : constant Release := - Register (DAK_Strings_Edit, - V ("4.27"), - Git (Repo, "8ac67a28d666dde3a0f96b5a08a7016e4f29d491"), - Properties => - Project_File ("strings_edit.gpr") and - - GPR_Scenario ("Legacy", "Ada95" or "Ada2005" or "Ada2012") and - GPR_Scenario ("Development", "Debug" or "Release") and - - Executable ("test_base64") and - Executable ("test_strings_edit") and - Executable ("test_string_streams") and - - License (GMGPL_2_0) and - Author (DAK_Author) and - Website (DAK_Website), - - Private_Properties => - GPR_File ("strings_edit.gpr") and - GPR_File ("test_strings_edit/strings_edit-test.gpr") - ); - - Tables_V_4_27 : constant Release := - Register (DAK_Tables, - V ("4.27"), - Git (Repo, "19205e4981d72242daf72da7d59c5faf2b4c91fd"), - Properties => - Project_File ("tables.gpr") and - - GPR_Scenario ("Legacy", "Ada95" or "Ada2005" or "Ada2012") and - GPR_Scenario ("Development", "Debug" or "Release") and - - Executable ("test_tables") and - - License (GMGPL_2_0) and - Author (DAK_Author) and - Website (DAK_Website), - - Private_Properties => - GPR_File ("tables.gpr") and - GPR_File ("test_tables/tables-test.gpr") - ); - - Components_V_4_27 : constant Release := - Register (DAK_Components, - V ("4.27"), - Git (Repo, "542f02c9be86693f759fcb784a8462bc4b25f1f2"), - Dependencies => - Within_Major (Strings_Edit_V_4_27) and - Within_Major (Tables_V_4_27), - - Properties => - Project_File ("components.gpr") and - - GPR_Scenario ("Atomic_Access", "Pragma-atomic" or "GCC-built-ins" or "GCC-long-offsets") and - GPR_Scenario ("Tasking", "Multiple" or "Single") and - GPR_Scenario ("Traced_objects", "Off" or "On") and - - Executable ("test_approximations") and - Executable ("test_association") and - Executable ("test_blackboard") and - Executable ("test_blackboard_performance") and - Executable ("test_blocking_files") and - Executable ("test_block_streams") and - Executable ("test_b_trees") and - Executable ("test_cubic_spline") and - Executable ("test_dining_philosophers") and - Executable ("test_fifo") and - Executable ("test_generic_indefinite_sets") and - Executable ("test_generic_maps") and - Executable ("test_generic_sets") and - Executable ("test_graphs") and - Executable ("test_handles") and - Executable ("test_ieee_754") and - Executable ("test_linked_lists") and - Executable ("test_linked_lists_scheduler_test") and - Executable ("test_parser_stream_io") and - Executable ("test_persistent_memory_pool") and - Executable ("test_persistent_storage") and - Executable ("test_sequencer") and - Executable ("test_single_file_persistence") and - Executable ("test_stack") and - Executable ("test_storage_streams") and - Executable ("test_string_streams") and - Executable ("test_synchronization_events") and - Executable ("test_transactional_blocking_files") and - Executable ("test_utf8_tables") and - - License (GMGPL_2_0) and - Author (DAK_Author) and - Website (DAK_Website) and - 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") - ); - - Components_NTP_V_4_27 : constant Release := - Register (DAK_Components_NTP, - V ("4.27"), - Git (Repo, "34fb305d6ef360cde5e272b51409097a5de72017"), - Dependencies => - Within_Major (Components_V_4_27), - - Properties => - Project_File ("components-ntp.gpr") and - - Executable ("test_ntp") and - - License (GMGPL_2_0) and - Author (DAK_Author) and - Website (DAK_Website), - - Private_Properties => - GPR_File ("components-ntp.gpr") and - GPR_File ("test_components/components-ntp-test_ntp.gpr") - ); - - Components_Sqlite_V_4_27 : constant Release := - Register (DAK_Components_SQLite, - V ("4.27"), - Git (Repo, "6fda0f3f7494815c87b329f7411b9a49ff97b9ba"), - Dependencies => - Within_Major (Components_V_4_27), - - Properties => - Project_File ("components-sqlite.gpr") and - - Executable ("test_sqlite_benchmark") and - Executable ("test_sqlite_persistence") and - - License (GMGPL_2_0) and - Author (DAK_Author) and - 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") - ); - - Components_Connections_V_4_27 : constant Release := - Register (DAK_Components_Connections, - V ("4.27"), - Git (Repo, "008935d5a89396cc0c39afb39f04bf6a89a92058"), - Dependencies => - Within_Major (Components_V_4_27) and - Within_Major (Components_Sqlite_V_4_27), - - Properties => - -- Main projects - Project_File ("components-connections_server.gpr") and - Project_File ("components-connections_server-elv_max_cube.gpr") and - Project_File ("components-connections_server-http_server.gpr") and - Project_File ("components-connections_server-http_server-sqlite_browser.gpr") and - Project_File ("components-connections_server-modbus.gpr") and - Project_File ("components-connections_server-mqtt.gpr") and - Project_File ("components-connections_server-smtp.gpr") and - - Executable ("test_data_server") and - Executable ("test_echo_client") and - Executable ("test_echo_client_async") and - Executable ("test_echo_server") and - Executable ("test_elv_max_cube_client") and - Executable ("test_http_client") and - Executable ("test_http_continuous_server") and - Executable ("test_http_server") and - Executable ("test_http_sqlite_browser") and - Executable ("test_infinity_server") and - Executable ("test_modbus_client") and - Executable ("test_mqtt_client") and - Executable ("test_mqtt_server") and - Executable ("test_mqtt_webserver") and - Executable ("test_websocket_duplex_server") and - Executable ("test_websocket_server") and - - License (GMGPL_2_0) and - Author (DAK_Author) and - 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") - ); - - Components_Connections_Secure_V_4_27 : constant Release := - Register (DAK_Components_Connections_Secure, - V ("4.27"), - Git (Repo, "ca72cf4150ae14ba6d40c3d2dd92c7846cb4cb5d"), - Dependencies => - Within_Major (Components_Connections_V_4_27) and - Within_Major (LibGNUTLS.V_3_5_8), - - Properties => - Project_File ("components-connections_server-secure.gpr") and - Project_File ("components-gnutls.gpr") and - - Executable ("test_https_client") and - Executable ("test_https_server") and - Executable ("test_smtp_client") and - - License (GMGPL_2_0) and - Author (DAK_Author) and - 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") - ); - - Components_ODBC_V_4_27 : constant Release := - Register (DAK_Components_ODBC, - V ("4.27"), - Git (Repo, "47337f8a5dd69404087129d5cca79885d6e8cd3f"), - Dependencies => - Within_Major (Components_V_4_27) and - Current (UnixODBC.V_2_3), - - Properties => - Project_File ("components-odbc.gpr") and - - Executable ("test_odbc_bindings") and - - License (GMGPL_2_0) and - Author (DAK_Author) and - Website (DAK_Website), - - Private_Properties => - GPR_File ("components-odbc.gpr") and - GPR_File ("test_components/components-odbc-odbc_bindings_tests.gpr") and - - On_Condition - (Operating_System = GNU_Linux, - GPR_External ("odbc", "unixODBC")) and - On_Condition - (Operating_System = Windows, - GPR_External ("odbc", "ODBC32")) and - On_Condition - (Word_Size = Bits_32, - GPR_External ("arch", "i686")) and - On_Condition - (Word_Size = Bits_64, - GPR_External ("arch", "x86_64")) - ); - -end Alire.Index.DAK; diff --git a/index/alire-index-dak_components.ads b/index/alire-index-dak_components.ads new file mode 100644 index 00000000..a2d0d1c5 --- /dev/null +++ b/index/alire-index-dak_components.ads @@ -0,0 +1,298 @@ +with Alire.Index.LibGNUTLS; +with Alire.Index.UnixODBC; + +package Alire.Index.DAK_Components is + + function Project is new Catalogued_Project (Projects.DAK_Components); + + function Subproject_DAK_Strings_Edit is new Catalogued_Project (DAK_Strings_Edit, + Projects.DAK_Components); + function Subproject_DAK_Tables is new Catalogued_Project (DAK_Tables, + Projects.DAK_Components); + function Subproject_DAK_Components_Connections is new Catalogued_Project (DAK_Components_Connections, + Projects.DAK_Components); + function Subproject_DAK_Components_Connections_Secure is new Catalogued_Project + (DAK_Components_Connections_Secure, Projects.DAK_Components); + + function Subproject_DAK_Components_NTP is new Catalogued_Project (DAK_Components_NTP, + Projects.DAK_Components); + function Subproject_DAK_Components_ODBC is new Catalogued_Project (DAK_Components_ODBC, + Projects.DAK_Components); + function Subproject_DAK_Components_SQLite is new Catalogued_Project (DAK_Components_SQLite, + Projects.DAK_Components); + + -- Simple Components by Dmitry A. Kazakov + -- Since most project names are common words, I've taken the liberty to prefix them with dak_ + -- but the original sources are unchanged. + + Repo : constant URL := "https://github.com/alire-project/dak_simple_components.git"; + + DAK_Author : constant String := "Dmitry A. Kazakov"; + DAK_Website : constant String := "http://www.dmitry-kazakov.de/ada/components.htm"; + + Strings_Edit_V_4_27 : constant Release := + Subproject_DAK_Strings_Edit.Register + (V ("4.27"), + Git (Repo, "8ac67a28d666dde3a0f96b5a08a7016e4f29d491"), + Properties => + Project_File ("strings_edit.gpr") and + + GPR_Scenario ("Legacy", "Ada95" or "Ada2005" or "Ada2012") and + GPR_Scenario ("Development", "Debug" or "Release") and + + Executable ("test_base64") and + Executable ("test_strings_edit") and + Executable ("test_string_streams") and + + License (GMGPL_2_0) and + Author (DAK_Author) and + Website (DAK_Website), + + Private_Properties => + GPR_File ("strings_edit.gpr") and + GPR_File ("test_strings_edit/strings_edit-test.gpr") + ); + + Tables_V_4_27 : constant Release := + Subproject_DAK_Tables.Register + (V ("4.27"), + Git (Repo, "19205e4981d72242daf72da7d59c5faf2b4c91fd"), + Properties => + Project_File ("tables.gpr") and + + GPR_Scenario ("Legacy", "Ada95" or "Ada2005" or "Ada2012") and + GPR_Scenario ("Development", "Debug" or "Release") and + + Executable ("test_tables") and + + License (GMGPL_2_0) and + Author (DAK_Author) and + Website (DAK_Website), + + Private_Properties => + GPR_File ("tables.gpr") and + GPR_File ("test_tables/tables-test.gpr") + ); + + Components_V_4_27 : constant Release := + Project.Register + (V ("4.27"), + Git (Repo, "542f02c9be86693f759fcb784a8462bc4b25f1f2"), + Dependencies => + Strings_Edit_V_4_27.Within_Major and + Tables_V_4_27.Within_Major, + + Properties => + Project_File ("components.gpr") and + + GPR_Scenario ("Atomic_Access", "Pragma-atomic" or "GCC-built-ins" or "GCC-long-offsets") and + GPR_Scenario ("Tasking", "Multiple" or "Single") and + GPR_Scenario ("Traced_objects", "Off" or "On") and + + Executable ("test_approximations") and + Executable ("test_association") and + Executable ("test_blackboard") and + Executable ("test_blackboard_performance") and + Executable ("test_blocking_files") and + Executable ("test_block_streams") and + Executable ("test_b_trees") and + Executable ("test_cubic_spline") and + Executable ("test_dining_philosophers") and + Executable ("test_fifo") and + Executable ("test_generic_indefinite_sets") and + Executable ("test_generic_maps") and + Executable ("test_generic_sets") and + Executable ("test_graphs") and + Executable ("test_handles") and + Executable ("test_ieee_754") and + Executable ("test_linked_lists") and + Executable ("test_linked_lists_scheduler_test") and + Executable ("test_parser_stream_io") and + Executable ("test_persistent_memory_pool") and + Executable ("test_persistent_storage") and + Executable ("test_sequencer") and + Executable ("test_single_file_persistence") and + Executable ("test_stack") and + Executable ("test_storage_streams") and + Executable ("test_string_streams") and + Executable ("test_synchronization_events") and + Executable ("test_transactional_blocking_files") and + Executable ("test_utf8_tables") and + + License (GMGPL_2_0) and + Author (DAK_Author) and + Website (DAK_Website) and + 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") + ); + + Components_NTP_V_4_27 : constant Release := + Subproject_DAK_Components_NTP.Register + (V ("4.27"), + Git (Repo, "34fb305d6ef360cde5e272b51409097a5de72017"), + Dependencies => + Components_V_4_27.Within_Major, + + Properties => + Project_File ("components-ntp.gpr") and + + Executable ("test_ntp") and + + License (GMGPL_2_0) and + Author (DAK_Author) and + Website (DAK_Website), + + Private_Properties => + GPR_File ("components-ntp.gpr") and + GPR_File ("test_components/components-ntp-test_ntp.gpr") + ); + + Components_Sqlite_V_4_27 : constant Release := + Subproject_DAK_Components_SQLite.Register + (V ("4.27"), + Git (Repo, "6fda0f3f7494815c87b329f7411b9a49ff97b9ba"), + Dependencies => + Components_V_4_27.Within_Major, + + Properties => + Project_File ("components-sqlite.gpr") and + + Executable ("test_sqlite_benchmark") and + Executable ("test_sqlite_persistence") and + + License (GMGPL_2_0) and + Author (DAK_Author) and + 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") + ); + + Components_Connections_V_4_27 : constant Release := + Subproject_DAK_Components_Connections.Register + (V ("4.27"), + Git (Repo, "008935d5a89396cc0c39afb39f04bf6a89a92058"), + Dependencies => + Components_V_4_27.Within_Major and + Components_Sqlite_V_4_27.Within_Major, + + Properties => + -- Main projects + Project_File ("components-connections_server.gpr") and + Project_File ("components-connections_server-elv_max_cube.gpr") and + Project_File ("components-connections_server-http_server.gpr") and + Project_File ("components-connections_server-http_server-sqlite_browser.gpr") and + Project_File ("components-connections_server-modbus.gpr") and + Project_File ("components-connections_server-mqtt.gpr") and + Project_File ("components-connections_server-smtp.gpr") and + + Executable ("test_data_server") and + Executable ("test_echo_client") and + Executable ("test_echo_client_async") and + Executable ("test_echo_server") and + Executable ("test_elv_max_cube_client") and + Executable ("test_http_client") and + Executable ("test_http_continuous_server") and + Executable ("test_http_server") and + Executable ("test_http_sqlite_browser") and + Executable ("test_infinity_server") and + Executable ("test_modbus_client") and + Executable ("test_mqtt_client") and + Executable ("test_mqtt_server") and + Executable ("test_mqtt_webserver") and + Executable ("test_websocket_duplex_server") and + Executable ("test_websocket_server") and + + License (GMGPL_2_0) and + Author (DAK_Author) and + 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") + ); + + Components_Connections_Secure_V_4_27 : constant Release := + Subproject_DAK_Components_Connections_Secure.Register + (V ("4.27"), + Git (Repo, "ca72cf4150ae14ba6d40c3d2dd92c7846cb4cb5d"), + Dependencies => + Components_Connections_V_4_27.Within_Major and + LibGNUTLS.V_3_5_8.Within_Major, + + Properties => + Project_File ("components-connections_server-secure.gpr") and + Project_File ("components-gnutls.gpr") and + + Executable ("test_https_client") and + Executable ("test_https_server") and + Executable ("test_smtp_client") and + + License (GMGPL_2_0) and + Author (DAK_Author) and + 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") + ); + + Components_ODBC_V_4_27 : constant Release := + Subproject_DAK_Components_ODBC.Register + (V ("4.27"), + Git (Repo, "47337f8a5dd69404087129d5cca79885d6e8cd3f"), + Dependencies => + Components_V_4_27.Within_Major and + UnixODBC.V_2_3.Within_Major, + + Properties => + Project_File ("components-odbc.gpr") and + + Executable ("test_odbc_bindings") and + + License (GMGPL_2_0) and + Author (DAK_Author) and + Website (DAK_Website), + + Private_Properties => + GPR_File ("components-odbc.gpr") and + GPR_File ("test_components/components-odbc-odbc_bindings_tests.gpr") and + + On_Condition + (Operating_System = GNU_Linux, + GPR_External ("odbc", "unixODBC")) and + On_Condition + (Operating_System = Windows, + GPR_External ("odbc", "ODBC32")) and + On_Condition + (Word_Size = Bits_32, + GPR_External ("arch", "i686")) and + On_Condition + (Word_Size = Bits_64, + GPR_External ("arch", "x86_64")) + ); + +end Alire.Index.DAK_Components; diff --git a/index/alire-index-eagle_lander.ads b/index/alire-index-eagle_lander.ads index 54d7fc7b..87a82338 100644 --- a/index/alire-index-eagle_lander.ads +++ b/index/alire-index-eagle_lander.ads @@ -2,28 +2,29 @@ with Alire.Index.GtkAda; package Alire.Index.Eagle_Lander is - Prj_Repo : constant URL := "https://github.com/alire-project/eagle-lander.git"; + function Project is new Catalogued_Project (Projects.Eagle_Lander); - Prj_Author : constant String := "Fabien Chouteau"; - Prj_Website : constant URL := "https://blog.adacore.com/make-with-ada-the-eagle-has-landed"; + Prj_Repo : constant URL := "https://github.com/alire-project/eagle-lander.git"; + Prj_Author : constant String := "Fabien Chouteau"; + Prj_Website : constant URL := "https://blog.adacore.com/make-with-ada-the-eagle-has-landed"; V_1_0 : constant Release := - Register (Projects.Eagle_Lander, - V ("1.0"), - Git (Prj_Repo, "5a3bcc61eff4d60d2b741add7841410ce539d0b8"), + Project.Register + (V ("1.0"), + Git (Prj_Repo, "5a3bcc61eff4d60d2b741add7841410ce539d0b8"), - Dependencies => - Within_Major (Alire.Index.GtkAda.V_16_1), + Dependencies => + GtkAda.V_16_1.Within_Major, - Properties => - Project_File ("lunar_lander.gpr") and + Properties => + Project_File ("lunar_lander.gpr") and - Author (Prj_Author) and - Website (Prj_Website) and - License (GPL_3_0), + Author (Prj_Author) and + Website (Prj_Website) and + License (GPL_3_0), - Private_Properties => - GPR_File ("lunar_lander.gpr") - ); + Private_Properties => + GPR_File ("lunar_lander.gpr") + ); end Alire.Index.Eagle_Lander; diff --git a/index/alire-index-globe_3d.ads b/index/alire-index-globe_3d.ads index 23f35f1f..1768fc4a 100644 --- a/index/alire-index-globe_3d.ads +++ b/index/alire-index-globe_3d.ads @@ -2,46 +2,47 @@ with Alire.Index.GLUT; package Alire.Index.Globe_3D is - Prj_Repo : constant URL := "https://github.com/svn2github/GLOBE_3D.git"; + function Project is new Catalogued_Project (Projects.Globe_3D); - Prj_Author : constant String := "Gautier de Montmollin"; - Prj_Website : constant URL := "https://globe3d.sourceforge.io/"; + Prj_Repo : constant URL := "https://github.com/svn2github/GLOBE_3D.git"; + Prj_Author : constant String := "Gautier de Montmollin"; + Prj_Website : constant URL := "https://globe3d.sourceforge.io/"; V_20180111 : constant Release := - Register (Projects.Globe_3D, - V ("20180111"), - Git (Prj_Repo, "93f7185130e2fb0db7f1f7e67eaf1b6ca561d651"), + Project.Register + (V ("20180111"), + Git (Prj_Repo, "93f7185130e2fb0db7f1f7e67eaf1b6ca561d651"), - Dependencies => - Within_Major (GLUT.V_2_8_1), + Dependencies => + GLUT.V_2_8_1.Within_Major, - Properties => - Project_File ("globe_3d.gpr") and - GPR_Scenario ("OS_Kind", "linux" or "macosx" or "win32") and + Properties => + Project_File ("globe_3d.gpr") and + GPR_Scenario ("OS_Kind", "linux" or "macosx" or "win32") and - Executable ("globe_3d_demo") and - Executable ("launch_armada") and - Executable ("launch_multi_window") and - Executable ("launch_sprite_demo") and - Executable ("mini") and + Executable ("globe_3d_demo") and + Executable ("launch_armada") and + Executable ("launch_multi_window") and + Executable ("launch_sprite_demo") and + Executable ("mini") and - Author (Prj_Author) and - Website (Prj_Website) and - License (Unknown), + Author (Prj_Author) and + Website (Prj_Website) and + License (Unknown), - Private_Properties => - GPR_File ("globe_3d.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 + Private_Properties => + GPR_File ("globe_3d.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 - On_Condition - (Operating_System = GNU_Linux, - GPR_External ("OS_Kind", "linux")), + On_Condition + (Operating_System = GNU_Linux, + GPR_External ("OS_Kind", "linux")), - Available_When => - Operating_System = GNU_Linux - -- It's available in more platforms, but still untested and with unknown dependencies - ); + Available_When => + Operating_System = GNU_Linux + -- It's available in more platforms, but still untested and with unknown dependencies + ); end Alire.Index.Globe_3D; diff --git a/index/alire-index-hello.ads b/index/alire-index-hello.ads index 2a2a9f06..7da47bfb 100644 --- a/index/alire-index-hello.ads +++ b/index/alire-index-hello.ads @@ -2,18 +2,20 @@ with Alire.Index.Libhello; package Alire.Index.Hello is - Repo : constant URL := "https://bitbucket.org/aleteolabs/hello.git"; + function Project is new Catalogued_Project (Projects.LibHello); + + Repo : constant URL := "https://bitbucket.org/aleteolabs/hello.git"; V_1_0_0 : constant Release := - Register (Projects.Hello, - V ("1.0.0"), - Git (Repo, "8cac0afddc505794ae3e5634745ce0830129d241"), - Dependencies => Within_Major (Libhello.V_1_0)); + Project.Register + (V ("1.0.0"), + Git (Repo, "8cac0afddc505794ae3e5634745ce0830129d241"), + Dependencies => Libhello.V_1_0.Within_Major); V_1_0_1 : constant Release := - Register (Projects.Hello, - V ("1.0.1"), - Git (Repo, "65725c20778875eef12b61a01b437120932965f3"), - Dependencies => Within_Major (Libhello.V_1_0)); + Project.Register + (V ("1.0.1"), + Git (Repo, "65725c20778875eef12b61a01b437120932965f3"), + Dependencies => Libhello.V_1_0.Within_Major); end Alire.Index.Hello; diff --git a/index/alire-index-libadacrypt.ads b/index/alire-index-libadacrypt.ads index 446abb70..2b7281c8 100644 --- a/index/alire-index-libadacrypt.ads +++ b/index/alire-index-libadacrypt.ads @@ -2,45 +2,47 @@ with Alire.Index.AUnit; package Alire.Index.Libadacrypt is + function Project is new Catalogued_Project (Projects.Libadacrypt); + Prj_Repo : constant URL := "https://github.com/alire-project/Ada-Crypto-Library.git"; Prj_Author : constant String := "Christian Forler"; V_0_8_7 : constant Release := - Register (Projects.Libadacrypt, - V ("0.8.7"), - Git (Prj_Repo, "33d15283abbc6d8a51d717de2bd822e026710c0d"), + Project.Register + (V ("0.8.7"), + Git (Prj_Repo, "33d15283abbc6d8a51d717de2bd822e026710c0d"), - Dependencies => - Within_Major (AUnit.V_2017), + Dependencies => + AUnit.V_2017.Within_Major, - Properties => - GPR_Scenario ("system", "unix" or "windows") and - GPR_Scenario ("mode", "debug" or "release") and + Properties => + GPR_Scenario ("system", "unix" or "windows") and + GPR_Scenario ("mode", "debug" or "release") and - Executable ("test-asymmetric_ciphers") and - Executable ("test-big_number") and - Executable ("test-kdf") and - Executable ("test-symmetric_ciphers") and - Executable ("test-tests") and + Executable ("test-asymmetric_ciphers") and + Executable ("test-big_number") and + Executable ("test-kdf") and + Executable ("test-symmetric_ciphers") and + Executable ("test-tests") and - Author (Prj_Author) and - License (GMGPL_2_0) and - License (GMGPL_3_0), + Author (Prj_Author) and + License (GMGPL_2_0) and + License (GMGPL_3_0), - Private_Properties => - GPR_File ("libadacrypt.gpr") and - GPR_File ("acltest.gpr") and + Private_Properties => + GPR_File ("libadacrypt.gpr") and + GPR_File ("acltest.gpr") and - On_Condition - (Operating_System = GNU_Linux, - GPR_External ("system", "unix")) and - On_Condition - (Operating_System = Windows, - GPR_External ("system", "windows")), + On_Condition + (Operating_System = GNU_Linux, + GPR_External ("system", "unix")) and + On_Condition + (Operating_System = Windows, + GPR_External ("system", "windows")), - Available_When => - Compiler > GNAT_FSF_7_2 - -- It fails self-tests; might be a spureous warning - ); + Available_When => + Compiler > GNAT_FSF_7_2 + -- It fails self-tests; might be a spureous warning + ); end Alire.Index.Libadacrypt; diff --git a/index/alire-index-libhello.ads b/index/alire-index-libhello.ads index 585f22b8..26d48f78 100644 --- a/index/alire-index-libhello.ads +++ b/index/alire-index-libhello.ads @@ -1,12 +1,12 @@ package Alire.Index.Libhello is - Repo : constant URL := "https://bitbucket.org/aleteolabs/libhello.git"; + function Project is new Catalogued_Project (Projects.Libhello); - Desc : constant Description_String := "A sample dependency for the hello project"; + Repo : constant URL := "https://bitbucket.org/aleteolabs/libhello.git"; V_1_0 : constant Release := - Register (Projects.Libhello, - V ("1.0"), - Git (Repo, "ce78e7706c9d3f97605df48d8befca5407f8d328")); + Project.Register + (V ("1.0"), + Git (Repo, "ce78e7706c9d3f97605df48d8befca5407f8d328")); end Alire.Index.Libhello; diff --git a/index/alire-index-openglada.ads b/index/alire-index-openglada.ads index 6d25b711..b4f1b1a9 100644 --- a/index/alire-index-openglada.ads +++ b/index/alire-index-openglada.ads @@ -3,53 +3,55 @@ with Alire.Index.LibX11; package Alire.Index.OpenGLAda is - Prj_Repo : constant URL := "https://github.com/flyx/OpenGLAda.git"; + function Project is new Catalogued_Project (Projects.OpenGLAda); - Prj_Author : constant String := "Felix Krause "; - Prj_Website : constant URL := "http://flyx.github.io/OpenGLAda/"; + Prj_Repo : constant URL := "https://github.com/flyx/OpenGLAda.git"; + Prj_Author : constant String := "Felix Krause "; + Prj_Website : constant URL := "http://flyx.github.io/OpenGLAda/"; - V_0_0_0 : constant Release := - Register (Projects.OpenGLAda, - V ("0.6"), - Git (Prj_Repo, "54a7a50cebab2cba0262c7f59b927e9ddf6e4649"), + V_0_6 : constant Release := + Project.Register + (V ("0.6"), + Git (Prj_Repo, "54a7a50cebab2cba0262c7f59b927e9ddf6e4649"), - Dependencies => - On_Condition - (Operating_System = GNU_Linux, - Within_Major (Libglfw3.V_3) and Within_Major (LibX11.V_2)), + Dependencies => + On_Condition + (Operating_System = GNU_Linux, + Libglfw3.V_3.Within_Major And + LibX11.V_2.Within_Major), - Properties => - Project_File ("opengl.gpr") and - Project_File ("opengl-glfw.gpr") and - Project_File ("opengl-soil.gpr") and - Project_File ("opengl-test.gpr") and + Properties => + Project_File ("opengl.gpr") and + Project_File ("opengl-glfw.gpr") and + Project_File ("opengl-soil.gpr") and + Project_File ("opengl-test.gpr") and - GPR_Scenario ("GLFW_Version", "2" or "3") and - GPR_Scenario ("Mode", "debug" or "release") and - GPR_Scenario ("Auto_Exceptions", "enabled" or "disabled") and + GPR_Scenario ("GLFW_Version", "2" or "3") and + GPR_Scenario ("Mode", "debug" or "release") and + GPR_Scenario ("Auto_Exceptions", "enabled" or "disabled") and - Executable ("gl_test-opengl3") and - Executable ("gl_test-context") and - Executable ("gl_test-vbos") and - Executable ("gl_test-shaders") and - Executable ("gl_test-framebuffers") and - Executable ("gl_test-immediate") and + Executable ("gl_test-opengl3") and + Executable ("gl_test-context") and + Executable ("gl_test-vbos") and + Executable ("gl_test-shaders") and + Executable ("gl_test-framebuffers") and + Executable ("gl_test-immediate") and - Author (Prj_Author) and - Website (Prj_Website) and - License (MIT), + Author (Prj_Author) and + Website (Prj_Website) and + 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 + 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")), + On_Condition + (Operating_System = GNU_Linux, GPR_External ("Windowing_System", "x11")), - Available_When => - Operating_System = GNU_Linux - ); + Available_When => + Operating_System = GNU_Linux + ); end Alire.Index.OpenGLAda; diff --git a/index/alire-index-pragmarc.ads b/index/alire-index-pragmarc.ads index a7d46183..77ba8d32 100644 --- a/index/alire-index-pragmarc.ads +++ b/index/alire-index-pragmarc.ads @@ -1,34 +1,36 @@ package Alire.Index.PragmARC is + function Project is new Catalogued_Project (Projects.PragmARC); + Repo : constant URL := "https://github.com/alire-project/PragmARC.git"; Auth : constant String := "Jeffrey R. Carter"; Web1 : constant String := "https://github.com/jrcarter/PragmARC"; Web2 : constant String := "https://pragmada.x10hosting.com/"; V_2017 : constant Release := -- Experimental '07 version - Register (Projects.PragmARC, - V ("2017.2007.0"), - Git (Repo, "db6c1730fe825f8303c60b48f82db08bd408588d"), - Notes => "ISO/IEC 8652:2007 version", - Properties => - Executable ("compile_all") and - License (GMGPL_2_0) and - Author (Auth) and - Website (Web1) and - Website (Web2) - ); + Project.Register + (V ("2017.2007.0"), + Git (Repo, "db6c1730fe825f8303c60b48f82db08bd408588d"), + Notes => "ISO/IEC 8652:2007 version", + Properties => + Executable ("compile_all") and + License (GMGPL_2_0) and + Author (Auth) and + Website (Web1) and + Website (Web2) + ); V_2011 : constant Release := -- Pure Ada95 version - Register (Projects.PragmARC, - V ("2011.1995.0"), - Git (Repo, "34b0e12b5f9aea63408c94cc48ba7a16687c8d76"), - Notes => "Ada 95 version", - Properties => - Executable ("compile_all") and - License (GMGPL_2_0) and - Author (Auth) and - Website (Web1) and - Website (Web2) - ); + Project.Register + (V ("2011.1995.0"), + Git (Repo, "34b0e12b5f9aea63408c94cc48ba7a16687c8d76"), + Notes => "Ada 95 version", + Properties => + Executable ("compile_all") and + License (GMGPL_2_0) and + Author (Auth) and + Website (Web1) and + Website (Web2) + ); end Alire.Index.PragmARC; diff --git a/index/alire-index-rxada.ads b/index/alire-index-rxada.ads index 0011d19c..c83fbad5 100644 --- a/index/alire-index-rxada.ads +++ b/index/alire-index-rxada.ads @@ -1,18 +1,20 @@ package Alire.Index.RxAda is + function Project is new Catalogued_Project (Projects.RxAda); + Repo : constant URL := "https://bitbucket.org/amosteo/rxada"; V_0_1_0 : constant Release := - Register (Projects.RxAda, - V ("0.1.0"), - Hg (Repo, "361d4e2ab20a7dcca007e31bf7094d57b13fee6b"), - Properties => - Executable ("rx-examples-basic") and - Executable ("rx-examples-minimal") and - Executable ("rx-examples-tests") and - Executable ("rx-examples-threading") and + Project.Register + (V ("0.1.0"), + Hg (Repo, "361d4e2ab20a7dcca007e31bf7094d57b13fee6b"), + Properties => + Executable ("rx-examples-basic") and + Executable ("rx-examples-minimal") and + Executable ("rx-examples-tests") and + Executable ("rx-examples-threading") and - Author ("alejandro@mosteo.com") and - License (LGPL_3_0)); + Author ("alejandro@mosteo.com") and + License (LGPL_3_0)); end Alire.Index.RxAda; diff --git a/index/alire-index-sdlada.ads b/index/alire-index-sdlada.ads index 2fa1767a..0244d86e 100644 --- a/index/alire-index-sdlada.ads +++ b/index/alire-index-sdlada.ads @@ -2,60 +2,61 @@ with Alire.Index.LibSDL2; package Alire.Index.SDLAda is - Prj_Repo : constant URL := "https://github.com/alire-project/sdlada.git"; + function Project is new Catalogued_Project (Projects.SDLAda); - Prj_Author : constant String := "Luke A. Guest"; + Prj_Repo : constant URL := "https://github.com/alire-project/sdlada.git"; + Prj_Author : constant String := "Luke A. Guest"; V_2_3_1 : constant Release := - Register (Projects.SDLAda, - V ("2.3.1"), - Git (Prj_Repo, "570232193facb90a58f67aadac93df9dfae8bcd4"), + Project.Register + (V ("2.3.1"), + Git (Prj_Repo, "570232193facb90a58f67aadac93df9dfae8bcd4"), - Dependencies => - Within_Major (LibSDL2.SDL_V_2) and - Within_Major (LibSDL2.SDL_Image_V_2) and - Within_Major (LibSDL2.SDL_TTF_V_2), + Dependencies => + LibSDL2.SDL_V_2.Within_Major and + LibSDL2.SDL_Image_V_2.Within_Major and + LibSDL2.SDL_TTF_V_2.Within_Major, - Properties => - Project_File ("sdlada.gpr") and + Properties => + Project_File ("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 + GPR_Scenario ("SDL_MODE", "debug" or "release") and + GPR_Scenario ("SDL_PLATFORM", "linux" or "bsd" or "windows" or "macosx" or "ios" or "android") and - Author (Prj_Author) and - License (Zlib), + Author (Prj_Author) and + License (Zlib), - Private_Properties => - GPR_Path ("build/gnat") and + 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 + 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 - Executable ("clipboard") and - Executable ("error") and - Executable ("libraries") and - Executable ("load_surface") and - Executable ("platform") and - Executable ("rwops") and - Executable ("stream") and - Executable ("stream2") and - Executable ("surface") and - Executable ("test") and - Executable ("version") and + Executable ("clipboard") and + Executable ("error") and + Executable ("libraries") and + Executable ("load_surface") and + Executable ("platform") and + Executable ("rwops") and + Executable ("stream") and + Executable ("stream2") and + Executable ("surface") and + Executable ("test") and + Executable ("version") and - GPR_External ("SDL_MODE", "release") and + GPR_External ("SDL_MODE", "release") and - On_Condition - (Operating_System = GNU_Linux, - GPR_External ("SDL_PLATFORM", "linux")), + On_Condition + (Operating_System = GNU_Linux, + GPR_External ("SDL_PLATFORM", "linux")), - Available_When => - Operating_System = GNU_Linux - ); + Available_When => + Operating_System = GNU_Linux + ); end Alire.Index.SDLAda; diff --git a/index/alire-index-semantic_versioning.ads b/index/alire-index-semantic_versioning.ads index 8495cc1d..67585f43 100644 --- a/index/alire-index-semantic_versioning.ads +++ b/index/alire-index-semantic_versioning.ads @@ -1,10 +1,11 @@ package Alire.Index.Semantic_Versioning is + function Project is new Catalogued_Project (Projects.Semantic_Versioning); + Repo : constant URL := "https://bitbucket.org/aleteolabs/semver.git"; - V_0_1_2 : constant Release := - Register (Projects.Semantic_Versioning, - V ("0.1.2"), - Git (Repo, "09774d80fac62ea3a09d46b22d4807da530387e2")); + V_0_1_2 : constant Release := Project.Register + (V ("0.1.2"), + Git (Repo, "09774d80fac62ea3a09d46b22d4807da530387e2")); end Alire.Index.Semantic_Versioning; diff --git a/index/alire-index-simple_logging.ads b/index/alire-index-simple_logging.ads index fd9d4a0e..9b662763 100644 --- a/index/alire-index-simple_logging.ads +++ b/index/alire-index-simple_logging.ads @@ -1,10 +1,11 @@ package Alire.Index.Simple_Logging is + function Project is new Catalogued_Project (Projects.Simple_Logging); + Repo : constant URL := "https://github.com/mosteo/simple_logging.git"; V_1_0_0 : constant Release := - Register (Projects.Simple_Logging, - V ("1.0.0"), - Git (Repo, "d98242b8bd1c7f964cebc454e9b1206ffdbb0ca9")); + Project.Register (V ("1.0.0"), + Git (Repo, "d98242b8bd1c7f964cebc454e9b1206ffdbb0ca9")); end Alire.Index.Simple_Logging; diff --git a/index/alire-index-steamsky.ads b/index/alire-index-steamsky.ads index 7a61cba7..bec17cb4 100644 --- a/index/alire-index-steamsky.ads +++ b/index/alire-index-steamsky.ads @@ -3,41 +3,43 @@ with Alire.Index.GtkAda; package Alire.Index.Steamsky is + function Project is new Catalogued_Project (Projects.Steamsky); + Prj_Repo : constant URL := "https://github.com/thindil/steamsky.git"; Prj_Author : constant String := "Bartek Jasicki"; Prj_Website : constant URL := "https://thindil.github.io/steamsky/"; V_2_1_Dev : constant Release := - Register (Projects.Steamsky, - V ("2.1-dev"), - Git (Prj_Repo, "faee42a72506f2522d3db9c714d0b0a001c0032d"), + Project.Register + (V ("2.1-dev"), + Git (Prj_Repo, "faee42a72506f2522d3db9c714d0b0a001c0032d"), - Notes => "GtkAda version", + Notes => "GtkAda version", - Dependencies => - Within_Major (Alire.Index.GtkAda.V_16_1), + Dependencies => + GtkAda.V_16_1.Within_Major, - Properties => - Author (Prj_Author) and - Website (Prj_Website) and - License (GPL_3_0) - ); + Properties => + Author (Prj_Author) and + Website (Prj_Website) and + License (GPL_3_0) + ); V_2_0_2 : constant Release := - Register (Projects.Steamsky, - V ("2.0.2"), - Git (Prj_Repo, "8b4dd319c3199f4b770e39de13f9ef3d9020266f"), + Project.Register + (V ("2.0.2"), + Git (Prj_Repo, "8b4dd319c3199f4b770e39de13f9ef3d9020266f"), - Notes => "Console (ncurses) version", + Notes => "Console (ncurses) version", - Dependencies => - Within_Major (Alire.Index.Adacurses.V_6), + Dependencies => + Adacurses.V_6.Within_Major, - Properties => - Author (Prj_Author) and - Website (Prj_Website) and - License (GPL_3_0) - ); + Properties => + Author (Prj_Author) and + Website (Prj_Website) and + License (GPL_3_0) + ); end Alire.Index.Steamsky; diff --git a/index/alire-index-whitakers_words.ads b/index/alire-index-whitakers_words.ads index bf116d0d..90561208 100644 --- a/index/alire-index-whitakers_words.ads +++ b/index/alire-index-whitakers_words.ads @@ -1,32 +1,34 @@ package Alire.Index.Whitakers_Words is + function Project is new Catalogued_Project (Projects.Whitakers_Words); + Prj_Repo : constant URL := "https://github.com/mk270/whitakers-words.git"; Prj_Author : constant String := "William A. Whitaker"; Prj_Maintainer : constant String := "Martin Keegan"; Prj_Website : constant URL := "http://mk270.github.io/whitakers-words/"; V_2017_09_10 : constant Release := - Register (Projects.Whitakers_Words, - V ("2017.09.10"), - Git (Prj_Repo, "27be95b8a06d7b22c0600c824cf929ab43efcf25"), - Properties => - Project_File ("words.gpr") and + Project.Register + (V ("2017.09.10"), + Git (Prj_Repo, "27be95b8a06d7b22c0600c824cf929ab43efcf25"), + Properties => + Project_File ("words.gpr") and - Executable ("words") and + Executable ("words") and - Author (Prj_Author) and - Maintainer (Prj_Maintainer) and - Website (Prj_Website) and - License (Public_Domain) and + Author (Prj_Author) and + Maintainer (Prj_Maintainer) and + Website (Prj_Website) and + License (Public_Domain) and - Comment ("This package builds the binary but additional steps are needed") and - Comment ("See the README file for further instructions"), + 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"), + Private_Properties => + GPR_File ("words.gpr"), - Available_When => - Compiler > GNAT_FSF_7_2 -- bug with SAL library failing binding - ); + Available_When => + Compiler > GNAT_FSF_7_2 -- bug with SAL library failing binding + ); end Alire.Index.Whitakers_Words; diff --git a/index/alire-projects.ads b/index/alire-projects.ads index a4398d62..6e37bc91 100644 --- a/index/alire-projects.ads +++ b/index/alire-projects.ads @@ -73,6 +73,7 @@ package Alire.Projects with Preelaborate is ----------- function Image (Name : Names) return String; + -- Lower case ----------------- -- Description -- diff --git a/index/native/alire-index-glut.ads b/index/native/alire-index-glut.ads index a6019957..f711d5c4 100644 --- a/index/native/alire-index-glut.ads +++ b/index/native/alire-index-glut.ads @@ -1,9 +1,11 @@ package Alire.Index.GLUT is + function Project is new Catalogued_Project (Projects.GLUT); + V_2_8_1 : constant Release := - Register (Projects.GLUT, - V ("2.8.1-3"), - Native ((Debian | Ubuntu => Packaged_As ("freeglut3-dev"), - others => Unavailable))); + Project.Register + (V ("2.8.1-3"), + Native ((Debian | Ubuntu => Packaged_As ("freeglut3-dev"), + others => Unavailable))); end Alire.Index.GLUT; diff --git a/index/native/alire-index-gtkada.ads b/index/native/alire-index-gtkada.ads index 1c8fe80f..b5cd207d 100644 --- a/index/native/alire-index-gtkada.ads +++ b/index/native/alire-index-gtkada.ads @@ -1,13 +1,15 @@ package Alire.Index.GtkAda is - V_16_1 : constant Release := - Register (Projects.GtkAda, - V ("16.1"), - Native ((Debian | Ubuntu => Packaged_As ("libgtkada16.1.0-dev"), - others => Unavailable)), + function Project is new Catalogued_Project (Projects.GtkAda); - Available_When => Compiler_Is_Native - -- Unfortunately packaged libs can't be used with non-platform compilers due to .ali clashes - ); + V_16_1 : constant Release := + Project.Register + (V ("16.1"), + Native ((Debian | Ubuntu => Packaged_As ("libgtkada16.1.0-dev"), + others => Unavailable)), + + Available_When => Compiler_Is_Native + -- Unfortunately packaged libs can't be used with non-platform compilers due to .ali clashes + ); end Alire.Index.GtkAda; diff --git a/index/native/alire-index-libglfw3.ads b/index/native/alire-index-libglfw3.ads index 4266aae3..a81e4c40 100644 --- a/index/native/alire-index-libglfw3.ads +++ b/index/native/alire-index-libglfw3.ads @@ -1,9 +1,11 @@ package Alire.Index.Libglfw3 is + function Project is new Catalogued_Project (Projects.Libglfw3); + V_3 : constant Release := - Register (Projects.Libglfw3, - V ("3"), - Native ((Debian | Ubuntu => Packaged_As ("libglfw3-dev"), - others => Unavailable))); + Project.Register + (V ("3"), + Native ((Debian | Ubuntu => Packaged_As ("libglfw3-dev"), + others => Unavailable))); end Alire.Index.Libglfw3; diff --git a/index/native/alire-index-libgnutls.ads b/index/native/alire-index-libgnutls.ads index c53d864b..2a935a16 100644 --- a/index/native/alire-index-libgnutls.ads +++ b/index/native/alire-index-libgnutls.ads @@ -1,9 +1,11 @@ package Alire.Index.LibGNUTLS is + function Project is new Catalogued_Project (Projects.LibGNUTLS); + V_3_5_8 : constant Release := - Register (Projects.LibGNUTLS, - V ("3.5.8"), - Native ((Debian | Ubuntu => Packaged_As ("libgnutls28-dev"), - others => Unavailable))); + Project.Register + (V ("3.5.8"), + Native ((Debian | Ubuntu => Packaged_As ("libgnutls28-dev"), + others => Unavailable))); end Alire.Index.LibGNUTLS; diff --git a/index/native/alire-index-liblua.ads b/index/native/alire-index-liblua.ads index 30bd3b12..daee6cc5 100644 --- a/index/native/alire-index-liblua.ads +++ b/index/native/alire-index-liblua.ads @@ -1,9 +1,11 @@ package Alire.Index.Liblua is + function Project is new Catalogued_Project (Projects.Liblua); + V_5_3 : constant Release := - Register (Projects.Liblua, - V ("5.3"), - Native ((Debian | Ubuntu => Packaged_As ("liblua5.3-dev"), - others => Unavailable))); + Project.Register + (V ("5.3"), + Native ((Debian | Ubuntu => Packaged_As ("liblua5.3-dev"), + others => Unavailable))); end Alire.Index.Liblua; diff --git a/index/native/alire-index-libsdl2.ads b/index/native/alire-index-libsdl2.ads index 6ca7855a..cf90a348 100644 --- a/index/native/alire-index-libsdl2.ads +++ b/index/native/alire-index-libsdl2.ads @@ -1,21 +1,27 @@ package Alire.Index.LibSDL2 is + function Project is new Catalogued_Project (Projects.LibSDL2); + + function Subproject_Image is new Catalogued_Project (Projects.LibSDL2_Image, Projects.LibSDL2); + + function Subproject_TTF is new Catalogued_Project (Projects.LibSDL2_TTF, Projects.LibSDL2); + SDL_V_2 : constant Release := - Register (Projects.LibSDL2, - V ("2"), - Native ((Debian | Ubuntu => Packaged_As ("libsdl2-dev"), - others => Unavailable))); + Project.Register + (V ("2"), + Native ((Debian | Ubuntu => Packaged_As ("libsdl2-dev"), + others => Unavailable))); SDL_Image_V_2 : constant Release := - Register (LibSDL2_Image, - V ("2"), - Native ((Debian | Ubuntu => Packaged_As ("libsdl2-image-dev"), - others => Unavailable))); + Subproject_Image.Register + (V ("2"), + Native ((Debian | Ubuntu => Packaged_As ("libsdl2-image-dev"), + others => Unavailable))); SDL_TTF_V_2 : constant Release := - Register (LibSDL2_TTF, - V ("2"), - Native ((Debian | Ubuntu => Packaged_As ("libsdl2-ttf-dev"), - others => Unavailable))); + Subproject_TTF.Register + (V ("2"), + Native ((Debian | Ubuntu => Packaged_As ("libsdl2-ttf-dev"), + others => Unavailable))); end Alire.Index.LibSDL2; diff --git a/index/native/alire-index-libx11.ads b/index/native/alire-index-libx11.ads index 56780fb1..0e552daf 100644 --- a/index/native/alire-index-libx11.ads +++ b/index/native/alire-index-libx11.ads @@ -1,9 +1,11 @@ package Alire.Index.LibX11 is + function Project is new Catalogued_Project (Projects.LibX11); + V_2 : constant Release := - Register (Projects.LibX11, - V ("2"), - Native ((Debian | Ubuntu => Packaged_As ("libx11-dev"), - others => Unavailable))); + Project.Register + (V ("2"), + Native ((Debian | Ubuntu => Packaged_As ("libx11-dev"), + others => Unavailable))); end Alire.Index.LibX11; diff --git a/index/native/alire-index-ncursesada.ads b/index/native/alire-index-ncursesada.ads index 91ac622f..895d2f68 100644 --- a/index/native/alire-index-ncursesada.ads +++ b/index/native/alire-index-ncursesada.ads @@ -1,21 +1,23 @@ package Alire.Index.NcursesAda is - V_5 : constant Release := - Register (Projects.NcursesAda, - V ("5.0.0+6.0.20170708-2"), - Native ((Debian | Ubuntu => Packaged_As ("libncursesada5-dev"), - others => Unavailable)), + function Project is new Catalogued_Project (Projects.NcursesAda); - Available_When => Compiler_Is_Native - -- Unfortunately packaged libs can't be used with non-platform compilers due to .ali clashes - ); + V_5 : constant Release := + Project.Register + (V ("5.0.0+6.0.20170708-2"), + Native ((Debian | Ubuntu => Packaged_As ("libncursesada5-dev"), + others => Unavailable)), + + Available_When => Compiler_Is_Native + -- Unfortunately packaged libs can't be used with non-platform compilers due to .ali clashes + ); V_3 : constant Release := - Register (Projects.NcursesAda, - V ("3.0.0+5.9.20140726-1build1"), - Native ((Debian | Ubuntu => Packaged_As ("libncursesada3-dev"), - others => Unavailable)), + Project.Register + (V ("3.0.0+5.9.20140726-1build1"), + Native ((Debian | Ubuntu => Packaged_As ("libncursesada3-dev"), + others => Unavailable)), - Available_When => Compiler_Is_Native); + Available_When => Compiler_Is_Native); end Alire.Index.NcursesAda; diff --git a/index/native/alire-index-unixodbc.ads b/index/native/alire-index-unixodbc.ads index eea73132..059ad5dd 100644 --- a/index/native/alire-index-unixodbc.ads +++ b/index/native/alire-index-unixodbc.ads @@ -1,11 +1,13 @@ package Alire.Index.UnixODBC is + function Project is new Catalogued_Project (Projects.UnixODBC); + V_2_3 : constant Release := - Register (Projects.UnixODBC, - V ("2.3"), - Native ((Debian | Ubuntu => Packaged_As ("unixodbc-dev"), - others => Unavailable)), - Properties => - Website ("www.unixodbc.org")); + Project.Register + (V ("2.3"), + Native ((Debian | Ubuntu => Packaged_As ("unixodbc-dev"), + others => Unavailable)), + Properties => + Website ("www.unixodbc.org")); end Alire.Index.UnixODBC; diff --git a/src/alire-conditional.ads b/src/alire-conditional.ads index ad4783e8..dd4909b0 100644 --- a/src/alire-conditional.ads +++ b/src/alire-conditional.ads @@ -1,8 +1,11 @@ with Alire.Conditional_Values; with Alire.Dependencies.Vectors; +with Alire.Projects; with Alire.Properties; with Alire.Requisites; +with Semantic_Versioning; + package Alire.Conditional with Preelaborate is package For_Dependencies is new Conditional_Values (Dependencies.Vectors.Vector, @@ -10,9 +13,30 @@ package Alire.Conditional with Preelaborate is Dependencies.Vectors.Image_One_Line); subtype Dependencies is For_Dependencies.Conditional_Value; + function New_Dependency (Name : Projects.Names; + Versions : Semantic_Versioning.Version_Set) + return Dependencies; + + package For_Properties is new Conditional_Values (Properties.Vector, Properties."and", Properties.Image_One_Line); subtype Properties is For_Properties.Conditional_Value; + function New_Property (Property : Alire.Properties.Property'Class) + return Properties; + +private + + function New_Dependency (Name : Projects.Names; + Versions : Semantic_Versioning.Version_Set) + return Dependencies is + (For_Dependencies.New_Value + (Alire.Dependencies.Vectors.New_Dependency (Name, Versions))); + + function New_Property (Property : Alire.Properties.Property'Class) + return Properties is + (For_Properties.New_Value + (Alire.Properties.To_Vector (Property, 1))); + end Alire.Conditional; diff --git a/src/alire-index.adb b/src/alire-index.adb index a8c39133..a55948a4 100644 --- a/src/alire-index.adb +++ b/src/alire-index.adb @@ -1,3 +1,4 @@ +with Ada.Containers.Ordered_Maps; with Ada.Directories; with Ada.Strings.Maps; @@ -5,6 +6,49 @@ package body Alire.Index is use all type Version; + package Name_Entry_Maps is new Ada.Containers.Ordered_Maps (Projects.Names, + Catalog_Entry); + + Master_Entries : Name_Entry_Maps.Map; + + ------------------------ + -- Catalogued_Project -- + ------------------------ + + function Catalogued_Project return Catalog_Entry is + begin + return C : constant Catalog_Entry := (Name, Parent) do + if Master_Entries.Contains (Name) then + Trace.Error ("Duplicate master project registration"); + raise Constraint_Error with "Duplicate project master entry"; + else + Master_Entries.Insert (Name, C); + end if; + end return; + end Catalogued_Project; + + ------------- + -- Current -- + ------------- + + function Current (C : Catalog_Entry) return Release is + begin + for R of reverse Catalog loop + if R.Name = C.Name then + return R; + end if; + end loop; + + raise Program_Error with "Catalog entry without releases: " & Image (C.Name); + end Current; + + --------- + -- Get -- + --------- + + function Get (Name : Projects.Names) return Catalog_Entry is + (Master_Entries.Element (Name)); + ------------ -- Exists -- ------------ @@ -55,7 +99,7 @@ package body Alire.Index is -------------- function Register (-- Mandatory - Project : Names; + Project : Catalog_Entry; Version : Semantic_Versioning.Version; Origin : Origins.Origin; -- we force naming beyond this point with this ugly guard: @@ -72,7 +116,7 @@ package body Alire.Index is use all type Alire.Properties.Labeled.Labels; begin return Rel : constant Alire.Releases.Release := - Alire.Releases.New_Release (Project, + Alire.Releases.New_Release (Project.Name, Version, Origin, Notes, diff --git a/src/alire-index.ads b/src/alire-index.ads index 0731fce0..52903128 100644 --- a/src/alire-index.ads +++ b/src/alire-index.ads @@ -19,6 +19,7 @@ with Alire.Requisites.Platform; with Alire.Root; with Alire.Roots; with Alire.Utils; +with Alire.Versions; with Semantic_Versioning; @@ -29,6 +30,23 @@ package Alire.Index is --------------- Catalog : Containers.Release_Set; + + type Catalog_Entry is new Versions.Comparable with private; + + function Name (C : Catalog_Entry) return Projects.Names; + + generic + Name : Projects.Names; + + -- The following two allow to group several releases in one index file + -- It's a bit of an abuse, but I'm feeling lazy right now + -- The instance should be called subproject_name instead of just project + Parent : Projects.Names := Name; + function Catalogued_Project return Catalog_Entry; + + function Callable_String (C : Catalog_Entry) return String; + -- Returns Name.Project, for master projects + -- Returns Parent.Subproject_Name, for subprojects ----------------- -- Index types -- @@ -46,7 +64,7 @@ package Alire.Index is subtype Release is Alire.Releases.Release; function Register (-- Mandatory - Project : Names; + Project : Catalog_Entry; Version : Semantic_Versioning.Version; Origin : Origins.Origin; -- we force naming beyond this point with this ugly guard: @@ -71,6 +89,12 @@ package Alire.Index is --------------------- -- BASIC QUERIES -- --------------------- + + function Current (C : Catalog_Entry) return Release; + -- Get newest release of C project + + function Get (Name : Projects.Names) return Catalog_Entry; + -- Master entry for project function Exists (Project : Name_String) return Boolean; @@ -110,60 +134,36 @@ package Alire.Index is function V (Semantic_Version : String) return Semver.Version renames Semver.Relaxed; + + use Versions.Expressions; - function On (Name : Names; - Versions : Semver.Version_Set) - return Conditional.Dependencies renames Releases.On; - - -- We provide two easy shortcut forms: - -- One, using another release, from which we'll take name and version - -- The advantage is that strong typing is used - -- Two, using textual name plus version - -- Simpler if there's no exact release matching the versions we want to say - -- Also needed for the generated _alr files which don't know about package names - - function Unavailable return Release_Dependencies renames Releases.Unavailable; + function Unavailable return Release_Dependencies; -- A never available release - function Current (R : Release) return Release_Dependencies is - (On (R.Name, Semver.Within_Major (R.Version))); - -- Within the major of R, - -- it will accept the newest/oldest version according to the resolution policy (by default, newest) - - -- These take a release and use its name and version to derive a dependency - function Within_Major is new Releases.From_Release (Semver.Within_Major); - function Within_Minor is new Releases.From_Release (Semver.Within_Minor); - function At_Least is new Releases.From_Release (Semver.At_Least); - function At_Most is new Releases.From_Release (Semver.At_Most); - function Less_Than is new Releases.From_Release (Semver.Less_Than); - function More_Than is new Releases.From_Release (Semver.More_Than); - function Exactly is new Releases.From_Release (Semver.Exactly); - function Except is new Releases.From_Release (Semver.Except); + -- DEPENDENCIES BUILT FROM RELEASES + + -- See too Major_Compatible and Minor_Compatible methods of Release subtype Version is Semantic_Versioning.Version; subtype Version_Set is Semantic_Versioning.Version_Set; - - function Current (P : Names) return Release_Dependencies is (On (P, Semver.Any)); - -- These take a project name and a semantic version (see V above) - function Within_Major is new Releases.From_Names (Semver.Within_Major); - function Within_Minor is new Releases.From_Names (Semver.Within_Minor); - function At_Least is new Releases.From_Names (Semver.At_Least); - function At_Most is new Releases.From_Names (Semver.At_Most); - function Less_Than is new Releases.From_Names (Semver.Less_Than); - function More_Than is new Releases.From_Names (Semver.More_Than); - function Exactly is new Releases.From_Names (Semver.Exactly); - function Except is new Releases.From_Names (Semver.Except); + function Current (C : Catalog_Entry) return Conditional.Dependencies; + + function Within_Major (C : Catalog_Entry; V : Version) return Conditional.Dependencies; + function Within_Major (C : Catalog_Entry; V : String) return Conditional.Dependencies; + + function Within_Minor (C : Catalog_Entry; V : Version) return Conditional.Dependencies; + function Within_Minor (C : Catalog_Entry; V : String) return Conditional.Dependencies; function On_Condition (Condition : Requisites.Tree; When_True : Release_Dependencies; When_False : Release_Dependencies := No_Dependencies) return Release_Dependencies renames Conditional.For_Dependencies.New_Conditional; - -- Excplicitly conditional + -- Explicitly conditional function When_Available (Preferred : Release_Dependencies; - Otherwise : Release_Dependencies := Releases.Unavailable) + Otherwise : Release_Dependencies := Unavailable) return Release_Dependencies is (On_Condition (Requisites.Dependencies.New_Requisite (Preferred), Preferred, @@ -274,12 +274,47 @@ package Alire.Index is return Roots.Root renames Alire.Root.Set; -- An unindexed working copy -private +private + + type Catalog_Entry is new Versions.Comparable with record + Name : Projects.Names; + Parent : Projects.Names; + end record; + + overriding + function New_Dependency (L : Catalog_Entry; VS : Semantic_Versioning.Version_Set) + return Conditional.Dependencies is + (Conditional.For_Dependencies.New_Value -- A conditional (without condition) dependency vector + (Dependencies.Vectors.New_Dependency (L.Name, VS))); + + function Callable_String (C : Catalog_Entry) return String is + (if C.Parent = C.Name + then Utils.To_Mixed_Case (Projects.Image (C.Name) & ".Project") + else Utils.To_Mixed_Case (Projects.Image (C.Parent) & ".Subproject_" & Image (C.Name))); + + function Current (C : Catalog_Entry) return Conditional.Dependencies is + (Conditional.New_Dependency (C.Name, Semver.Any)); + + function Within_Major (C : Catalog_Entry; V : Version) return Conditional.Dependencies is + (Conditional.New_Dependency (C.Name, Semver.Within_Major (V))); + function Within_Major (C : Catalog_Entry; V : String) return Conditional.Dependencies is + (Conditional.New_Dependency (C.Name, Semver.Within_Major (Index.V (V)))); + + function Within_Minor (C : Catalog_Entry; V : Version) return Conditional.Dependencies is + (Conditional.New_Dependency (C.Name, Semver.Within_Minor (V))); + function Within_Minor (C : Catalog_Entry; V : String) return Conditional.Dependencies is + (Conditional.New_Dependency (C.Name, Semver.Within_Minor (Index.V (V)))); + + 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 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 Unavailable return Conditional.Dependencies is + (Conditional.For_Dependencies.New_Value -- A conditional (without condition) dependency vector + (Dependencies.Vectors.New_Dependency (Projects.Alire_Reserved, Semver.Any))); end Alire.Index; diff --git a/src/alire-releases.adb b/src/alire-releases.adb index d3b82588..5e6dc72a 100644 --- a/src/alire-releases.adb +++ b/src/alire-releases.adb @@ -1,4 +1,5 @@ with Alire.Conditional_Values; +with Alire.Dependencies.Vectors; with Alire.Platforms; with Alire.Requisites.Booleans; diff --git a/src/alire-releases.ads b/src/alire-releases.ads index 55dd43a3..2dfbf1d9 100644 --- a/src/alire-releases.ads +++ b/src/alire-releases.ads @@ -1,6 +1,6 @@ with Alire.Conditional; with Alire.Dependencies; -with Alire.Dependencies.Vectors; +-- with Alire.Dependencies.Vectors; with Alire.Milestones; with Alire.Origins; with Alire.Projects; @@ -8,6 +8,7 @@ with Alire.Properties; with Alire.Properties.Labeled; with Alire.Requisites; with Alire.Utils; +with Alire.Versions; with Semantic_Versioning; @@ -15,7 +16,7 @@ private with Alire.OS_Lib; package Alire.Releases with Preelaborate is - type Release (<>) is tagged private; + type Release (<>) is new Versions.Versioned with private; function New_Release (Name : Projects.Names; Version : Semantic_Versioning.Version; @@ -98,36 +99,25 @@ package Alire.Releases with Preelaborate is -- Dependency generation helpers for all semantic versioning functions: -- These are here to avoid a 'body not seen' Program_Error if they were in Index - function On (Name : Projects.Names; - Versions : Semantic_Versioning.Version_Set) - return Conditional.Dependencies; - - generic - with function Condition (V : Semantic_Versioning.Version) return Semantic_Versioning.Version_Set; - function From_Release (R : Release) return Conditional.Dependencies; - - generic - with function Condition (V : Semantic_Versioning.Version) return Semantic_Versioning.Version_Set; - function From_Names (P : Projects.Names; - V : Semantic_Versioning.Version) return Conditional.Dependencies; - - function Unavailable return Conditional.Dependencies; - -- A never available dependency that is useful in conditional chained dependencies (see Index) +-- function On (Name : Projects.Names; +-- Versions : Semantic_Versioning.Version_Set) +-- return Conditional.Dependencies; +-- +-- generic +-- with function Condition (V : Semantic_Versioning.Version) return Semantic_Versioning.Version_Set; +-- function From_Release (R : Release) return Conditional.Dependencies; private use all type Projects.Names; - function All_Properties (R : Release) return Conditional.Properties; - - function Unavailable return Conditional.Dependencies is - (On (Alire_Reserved, Semantic_Versioning.Any)); + function All_Properties (R : Release) return Conditional.Properties; use Alire.Properties; function Comment is new Alire.Properties.Labeled.Cond_New_Label (Alire.Properties.Labeled.Comment); function Describe is new Alire.Properties.Labeled.Cond_New_Label (Alire.Properties.Labeled.Description); - type Release (Descr_Len : Natural) is tagged record + type Release (Descr_Len : Natural) is new Versions.Versioned with record Name : Projects.Names; Version : Semantic_Versioning.Version; Origin : Origins.Origin; @@ -206,17 +196,13 @@ private -- Dependency helpers - function On (Name : Projects.Names; - Versions : Semantic_Versioning.Version_Set) - return Conditional.Dependencies is - (Conditional.For_Dependencies.New_Value -- A conditional (without condition) dependency vector - (Dependencies.Vectors.New_Dependency (Name, Versions))); -- A dependency vector +-- function On (Name : Projects.Names; +-- Versions : Semantic_Versioning.Version_Set) +-- return Conditional.Dependencies is +-- (Conditional.For_Dependencies.New_Value -- A conditional (without condition) dependency vector +-- (Dependencies.Vectors.New_Dependency (Name, Versions))); -- A dependency vector - function From_Release (R : Release) return Conditional.Dependencies is - (On (R.Name, Condition (R.Version))); - - function From_Names (P : Projects.Names; - V : Semantic_Versioning.Version) return Conditional.Dependencies is - (On (P, Condition (V))); +-- function From_Release (R : Release) return Conditional.Dependencies is +-- (On (R.Name, Condition (R.Version))); end Alire.Releases; diff --git a/src/alire-root.adb b/src/alire-root.adb index d6a897ad..42e358be 100644 --- a/src/alire-root.adb +++ b/src/alire-root.adb @@ -34,7 +34,7 @@ package body Alire.Root is return Root.all; else -- Session is outdated or outside - Trace.Debug ("Storing incomplete root for outdated session"); + Trace.Warning ("Storing incomplete root for outdated session"); return Set (Projects.Image (Project), Conditional.For_Dependencies.Empty); end if; diff --git a/src/alire-versions.ads b/src/alire-versions.ads new file mode 100644 index 00000000..f7a2294b --- /dev/null +++ b/src/alire-versions.ads @@ -0,0 +1,43 @@ +with Alire.Conditional; +with Alire.Projects; + +with Semantic_Versioning; +with Semantic_Versioning.Expressions; + +package Alire.Versions with Preelaborate is + + -- Helper package to prepare expressions on version for use in Alire.Index.* + + type Versioned is interface; + + function Name (V : Versioned) return Projects.Names is abstract; + + function Version (V : Versioned) return Semantic_Versioning.Version is abstract; + + function Within_Major (V : Versioned'Class) return Conditional.Dependencies; + function Within_Minor (V : Versioned'Class) return Conditional.Dependencies; + + type Comparable is interface; + + function New_Dependency (L : Comparable; VS : Semantic_Versioning.Version_Set) + return Conditional.Dependencies is abstract; + + function New_Dependency_Classwide (L : Comparable'Class; VS : Semantic_Versioning.Version_Set) + return Conditional.Dependencies is (L.New_Dependency (VS)); + + package Expressions is new Semantic_Versioning.Expressions + (Comparable'Class, + Conditional.Dependencies, + New_Dependency_Classwide); + +private + + use Semantic_Versioning; + + function Within_Major (V : Versioned'Class) return Conditional.Dependencies is + (Conditional.New_Dependency (V.Name, Within_Major (V.Version))); + + function Within_Minor (V : Versioned'Class) return Conditional.Dependencies is + (Conditional.New_Dependency (V.Name, Within_Minor (V.Version))); + +end Alire.Versions;