diff --git a/index/alire-index-libgnutls.ads b/index/alire-index-libgnutls.ads index ffdcb285..d28553fe 100644 --- a/index/alire-index-libgnutls.ads +++ b/index/alire-index-libgnutls.ads @@ -7,7 +7,7 @@ package Alire.Index.LibGNUTLS is Register (Name, V ("3.5.8"), Desc, - Apt ("libgnutls28-dev"), + Native ("libgnutls28-dev"), Available_When => Distribution_Is (Debian_Buster) or Distribution_Is (Ubuntu_Artful)); diff --git a/src/alire-conditional.ads b/src/alire-conditional.ads new file mode 100644 index 00000000..ae219dfa --- /dev/null +++ b/src/alire-conditional.ads @@ -0,0 +1,36 @@ +with Alire.Properties; +with Alire.Requisites; + +generic + type Values is private; +package Alire.Conditional is + + type Conditional_Value (<>) is tagged private; + + function New_Conditional (If_X : Requisites.Tree; + Then_X : Values; + Else_X : Values) return Conditional_Value; + + function Evaluate (This : Conditional_Value; Against : Properties.Vector) return Values; + +private + + type Conditional_Value is tagged record + Condition : Requisites.Tree; + Then_Value : Values; + Else_Value : Values; + end record; + + function Evaluate (This : Conditional_Value; Against : Properties.Vector) return Values is + (if This.Condition.Check (Against) + then This.Then_Value + else This.Else_Value); + + function New_Conditional (If_X : Requisites.Tree; + Then_X : Values; + Else_X : Values) return Conditional_Value is + (Condition => If_X, + Then_Value => Then_X, + Else_Value => Else_X); + +end Alire.Conditional; diff --git a/src/alire-index.ads b/src/alire-index.ads index 9de617f6..86605060 100644 --- a/src/alire-index.ads +++ b/src/alire-index.ads @@ -63,7 +63,7 @@ package Alire.Index is -- Shortcuts for common origins: - function Apt (Pack : String ) return Origins.Origin renames Origins.New_Apt; + function Native (Pack : String ) return Origins.Origin renames Origins.New_Native; function Git (URL : Alire.URL; Commit : Origins.Git_Commit) return Origins.Origin renames Origins.New_Git; function Hg (URL : Alire.URL; Commit : Origins.Hg_Commit) return Origins.Origin renames Origins.New_Hg; diff --git a/src/alire-origins.ads b/src/alire-origins.ads index b2871bf4..e418efac 100644 --- a/src/alire-origins.ads +++ b/src/alire-origins.ads @@ -7,10 +7,10 @@ package Alire.Origins with Preelaborate is -- The actual capabilities for check-outs or fetches are in alr proper - type Kinds is (Apt, -- Native platform package - Filesystem, -- Not really an origin, but a working copy of a project + type Kinds is (Filesystem, -- Not really an origin, but a working copy of a project Git, -- Remote git repo - Hg -- Remote hg repo + Hg, -- Remote hg repo + Native -- Native platform package ); type Origin is tagged private; @@ -21,7 +21,7 @@ package Alire.Origins with Preelaborate is function Id (This : Origin) return String; - function Is_Native (This : Origin) return Boolean; + function Is_Native (This : Origin) return Boolean is (This.Kind = Native); -- Helper types @@ -30,7 +30,7 @@ package Alire.Origins with Preelaborate is -- Constructors - function New_Filesystem (URL_As_Path : String) return Origin; + function New_Filesystem (Path : String) return Origin; function New_Git (URL : Alire.URL; Id : Git_Commit) @@ -40,7 +40,10 @@ package Alire.Origins with Preelaborate is Id : Hg_Commit) return Origin; - function New_Apt (Id_As_Package_Name : String) return Origin; + function New_Native (Package_Name : String) return Origin; + + function Native_Package (This : Origin) return String + with Pre => This.Kind = Native; function Image (This : Origin) return String; @@ -54,10 +57,10 @@ private Id : Unbounded_String; end record; - function New_Filesystem (URL_As_Path : String) return Origin is + function New_Filesystem (Path : String) return Origin is (Filesystem, Id => Null_Unbounded_String, - URL => To_Unbounded_String (URL_As_Path)); + URL => To_Unbounded_String (Path)); function New_Git (URL : Alire.URL; Id : Git_Commit) @@ -73,9 +76,9 @@ private URL => To_Unbounded_String (URL), Id => To_Unbounded_String (Id)); - function New_Apt (Id_As_Package_Name : String) return Origin is - (Apt, - Id => To_Unbounded_String (Id_As_Package_Name), + function New_Native (Package_Name : String) return Origin is + (Native, + Id => To_Unbounded_String (Package_Name), URL => Null_Unbounded_String); function Kind (This : Origin) return Kinds is (This.Kind); @@ -84,15 +87,14 @@ private function Id (This : Origin) return String is (To_String (This.Id)); - function Is_Native (This : Origin) return Boolean is - (This.Kind in Apt); + function Native_Package (This : Origin) return String renames Id; function S (Str : Unbounded_String) return String is (To_String (Str)); function Image (This : Origin) return String is (case This.Kind is - when Git | Hg => "commit " & S (This.Id) & " from " & S (This.URL), - when Apt => "package " & S (This.Id) & " from native package manager (apt)", + when Git | Hg => "commit " & S (This.Id) & " from " & S (This.URL), + when Native => "package " & S (This.Id) & " from platform software manager", when Filesystem => "path " & S (This.Id)); diff --git a/src/alire-platforms.ads b/src/alire-platforms.ads index f91605ff..cedabaab 100644 --- a/src/alire-platforms.ads +++ b/src/alire-platforms.ads @@ -17,4 +17,12 @@ package Alire.Platforms with Preelaborate is -- It turns out that Debian uses no numbers for its non-stable releases, so we'll prefer the codename -- These are important mostly to tie platform package names to releases + type Package_Managers is (Apt, + Unsupported); + + function Package_Manager (D : Distributions) return Package_Managers is + (case D is + when Debian_Buster .. Ubuntu_Artful => Apt, + when others => Unsupported); + end Alire.Platforms;