commit:     a03a5a8853334720a406d5d83c4a7bc975a93111
Author:     Alfredo Tupone <tupone <AT> gentoo <DOT> org>
AuthorDate: Wed May 28 18:59:57 2025 +0000
Commit:     Alfredo Tupone <tupone <AT> gentoo <DOT> org>
CommitDate: Wed May 28 19:03:04 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a03a5a88

dev-ada/ada_language_server: add gtk use flags, fix errors

Signed-off-by: Alfredo Tupone <tupone <AT> gentoo.org>

 ...=> ada_language_server-25.0.20241014-r4.ebuild} | 17 ++++-
 ...language_server-25.0.20241014-accessCheck.patch | 81 ++++++++++++++++++++++
 2 files changed, 96 insertions(+), 2 deletions(-)

diff --git 
a/dev-ada/ada_language_server/ada_language_server-25.0.20241014-r3.ebuild 
b/dev-ada/ada_language_server/ada_language_server-25.0.20241014-r4.ebuild
similarity index 84%
rename from 
dev-ada/ada_language_server/ada_language_server-25.0.20241014-r3.ebuild
rename to 
dev-ada/ada_language_server/ada_language_server-25.0.20241014-r4.ebuild
index ecad5b9ad467..f7be27e21dce 100644
--- a/dev-ada/ada_language_server/ada_language_server-25.0.20241014-r3.ebuild
+++ b/dev-ada/ada_language_server/ada_language_server-25.0.20241014-r4.ebuild
@@ -14,7 +14,7 @@ 
SRC_URI="https://github.com/AdaCore/${PN}/archive/refs/tags/${PV}.tar.gz
 LICENSE="GPL-3"
 SLOT="0"
 KEYWORDS="~amd64 ~arm64 ~x86"
-IUSE="test"
+IUSE="gtk test"
 RESTRICT="test" # Tests do not work
 
 RDEPEND="${ADA_DEPS}
@@ -31,7 +31,7 @@ RDEPEND="${ADA_DEPS}
        >=dev-ada/libadalang-tools-23:=[${ADA_USEDEP}]
        dev-ada/libgpr:=[${ADA_USEDEP}]
        dev-ada/prettier-ada:=[${ADA_USEDEP}]
-       dev-ada/spawn:=[${ADA_USEDEP}]
+       dev-ada/spawn:=[${ADA_USEDEP},gtk?]
        dev-ada/templates-parser:=[${ADA_USEDEP},shared(+)]
        >=dev-ada/VSS-25.0.0:=[${ADA_USEDEP},shared]
        dev-ada/xmlada:=[${ADA_USEDEP},shared]
@@ -43,6 +43,8 @@ BDEPEND="dev-ada/gprbuild[${ADA_USEDEP}]
 
 REQUIRED_USE="${ADA_REQUIRED_USE}"
 
+PATCHES=( "${FILESDIR}"/${P}-accessCheck.patch )
+
 src_compile() {
        gprbuild -v -m -j$(makeopts_jobs) -P gnat/lsp_server.gpr -p \
                -XLIBRARY_TYPE=relocatable -XXMLADA_BUILD=relocatable \
@@ -60,6 +62,12 @@ src_compile() {
                -XLIBRARY_TYPE=relocatable -XXMLADA_BUILD=relocatable \
                -XGPR_BUILD=relocatable -cargs:Ada ${ADAFLAGS} -largs 
${LDFLAGS} \
                || die
+       if use gtk; then
+               gprbuild -v -m -j$(makeopts_jobs) -P gnat/lsp_client_glib.gpr 
-p \
+                       -XLIBRARY_TYPE=relocatable -XXMLADA_BUILD=relocatable \
+                       -XGPR_BUILD=relocatable -cargs:Ada ${ADAFLAGS} -largs 
${LDFLAGS} \
+                       || die
+       fi
        mkdir -p integration/vscode/ada/x64/linux
        cp -f .obj/server/ada_language_server integration/vscode/ada/x64/linux 
|| die
 }
@@ -74,6 +82,11 @@ src_install() {
        gprinstall -v -f -P gnat/lsp_client.gpr -p -r --mode=dev \
                --prefix="${D}"/usr -XLIBRARY_TYPE=relocatable \
                -XXMLADA_BUILD=relocatable -XGPR_BUILD=relocatable || die
+       if use gtk; then
+               gprinstall -v -f -P gnat/lsp_client_glib.gpr -p -r --mode=dev \
+                       --prefix="${D}"/usr -XLIBRARY_TYPE=relocatable \
+                       -XXMLADA_BUILD=relocatable -XGPR_BUILD=relocatable || 
die
+       fi
        rm "${D}"/usr/share/gpr/gnatcoll.gpr || die
        einstalldocs
 }

diff --git 
a/dev-ada/ada_language_server/files/ada_language_server-25.0.20241014-accessCheck.patch
 
b/dev-ada/ada_language_server/files/ada_language_server-25.0.20241014-accessCheck.patch
new file mode 100644
index 000000000000..1e5397afac0a
--- /dev/null
+++ 
b/dev-ada/ada_language_server/files/ada_language_server-25.0.20241014-accessCheck.patch
@@ -0,0 +1,81 @@
+--- a/source/server/lsp-servers.adb    2025-05-28 14:26:39.929607310 +0200
++++ b/source/server/lsp-servers.adb    2025-05-28 20:40:01.934644123 +0200
+@@ -840,13 +840,14 @@
+             else
+                declare
+                   Waste : Server_Message_Access;
++                  use type Server_Message_Access;
+ 
+                begin
+                   --  Call Process_Job at least once to complete a fenced
+                   --  job if any.
+                   Server.Scheduler.Process_Job (Server.all, Waste);
+ 
+-                  if Waste.Assigned then
++                  if Waste /= null then
+                      Server.Destroy_Queue.Enqueue (Waste);
+                   end if;
+ 
+@@ -893,6 +894,7 @@
+       end Process_Message;
+ 
+       Request : Server_Message_Access;
++      use type Server_Message_Access;
+    begin
+       --  Perform initialization
+       accept Start
+@@ -919,7 +921,7 @@
+                   Continue := False;
+                end select;
+ 
+-               if Request.Assigned then
++               if Request /= null then
+                   Process_Message (Request);
+                end if;
+             end loop;
+@@ -930,7 +932,7 @@
+ 
+          Execute_Jobs (Server.Look_Ahead);
+ 
+-         if not Server.Look_Ahead.Assigned then
++         if Server.Look_Ahead = null then
+             --  there is no jobs any more, just wait for input messages
+ 
+             select
+--- a/source/server/lsp-job_schedulers.adb     2025-05-28 20:27:48.015040064 
+0200
++++ b/source/server/lsp-job_schedulers.adb     2025-05-28 20:38:31.969675280 
+0200
+@@ -38,8 +38,9 @@
+      (Self  : in out Job_Scheduler'Class;
+       Next  : LSP.Server_Messages.Server_Message_Access;
+       Waste : out LSP.Server_Messages.Server_Message_Access) is
++      use type LSP.Server_Jobs.Server_Job_Access;
+    begin
+-      if Self.Done.Assigned then
++      if Self.Done /= null then
+          Self.Done.Complete (Next);
+          Waste := Self.Done.Message;
+          Free (Self.Done);
+@@ -92,8 +93,9 @@
+    --------------
+ 
+    function Has_Jobs (Self : Job_Scheduler'Class) return Boolean is
++      use type LSP.Server_Jobs.Server_Job_Access;
+    begin
+-      return Self.Blocker.Assigned or else
++      return Self.Blocker /= null or else
+         (for some List of Self.Jobs => not List.Is_Empty);
+    end Has_Jobs;
+ 
+@@ -169,10 +171,11 @@
+       From   : LSP.Server_Jobs.Job_Priority := LSP.Server_Jobs.Lowest)
+    is
+       Status : LSP.Server_Jobs.Execution_Status;
++      use type LSP.Server_Messages.Server_Message_Access;
+    begin
+       Self.Complete_Last_Fence_Job (null, Waste);
+ 
+-      if not Waste.Assigned then
++      if Waste = null then
+          for List of reverse Self.Jobs (From .. LSP.Server_Jobs.High)
+            when not List.Is_Empty
+          loop

Reply via email to