From b02a8239037d55a2a01a85f6b567d712492fbf37 Mon Sep 17 00:00:00 2001 From: Alejandro R Mosteo Date: Thu, 15 Mar 2018 11:41:48 +0100 Subject: [PATCH] Use the native version as the build part --- src/alire-hooks.ads | 4 +++- src/alire-releases.adb | 23 +++++++++++++++++++++++ src/alire-releases.ads | 1 - 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/alire-hooks.ads b/src/alire-hooks.ads index 48f0fc16..4e77b6e8 100644 --- a/src/alire-hooks.ads +++ b/src/alire-hooks.ads @@ -4,6 +4,8 @@ package Alire.Hooks with Preelaborate is -- Hackish way to enable Alire to obtain some platform-specific info that only Alr knows how to get - Version_Getter_Hook : access function (O : Origins.Origin) return String; + -- WARNING: this will be null during elaboration! + + Version_Getter : access function (O : Origins.Origin) return String; end Alire.Hooks; diff --git a/src/alire-releases.adb b/src/alire-releases.adb index 5e6dc72a..4b843721 100644 --- a/src/alire-releases.adb +++ b/src/alire-releases.adb @@ -1,5 +1,6 @@ with Alire.Conditional_Values; with Alire.Dependencies.Vectors; +with Alire.Hooks; with Alire.Platforms; with Alire.Requisites.Booleans; @@ -241,6 +242,28 @@ package body Alire.Releases is return False; end Property_Contains; + ------------- + -- Version -- + ------------- + + function Version (R : Release) return Semantic_Versioning.Version is + use Hooks; + begin + if Hooks.Version_Getter /= null and then R.Origin.Is_Native then + declare + Native_Version : constant String := Hooks.Version_Getter (R.Origin); + begin + if Native_Version /= "" then + return New_Version (Image (R.Version) & "+" & Native_Version); + else + return R.Version; + end if; + end; + else + return R.Version; + end if; + end Version; + -------------- -- Whenever -- -------------- diff --git a/src/alire-releases.ads b/src/alire-releases.ads index 687c2c96..f2a2758d 100644 --- a/src/alire-releases.ads +++ b/src/alire-releases.ads @@ -165,7 +165,6 @@ private function Project (R : Release) return Name_String is (Projects.Image (R.Name)); function Description (R : Release) return Description_String is (Projects.Description (R.Name)); function Notes (R : Release) return Description_String is (R.Notes); - function Version (R : Release) return Semantic_Versioning.Version is (R.Version); function Depends (R : Release) return Conditional.Dependencies is (R.Dependencies);