dev-ada/gprbuild: Fix executable stack
authorTupone Alfredo <tupone@gentoo.org>
Tue, 28 Mar 2017 07:40:26 +0000 (09:40 +0200)
committerTupone Alfredo <tupone@gentoo.org>
Tue, 28 Mar 2017 07:41:37 +0000 (09:41 +0200)
Package-Manager: Portage-2.3.3, Repoman-2.3.1

dev-ada/gprbuild/files/gprbuild-2016-gentoo.patch [new file with mode: 0644]
dev-ada/gprbuild/gprbuild-2016.ebuild

diff --git a/dev-ada/gprbuild/files/gprbuild-2016-gentoo.patch b/dev-ada/gprbuild/files/gprbuild-2016-gentoo.patch
new file mode 100644 (file)
index 0000000..952c2c0
--- /dev/null
@@ -0,0 +1,162 @@
+diff -Naur gprbuild-gpl-2016-src.old/src/gprbuild-main.adb gprbuild-gpl-2016-src/src/gprbuild-main.adb
+--- gprbuild-gpl-2016-src.old/src/gprbuild-main.adb    2017-03-28 09:12:24.205058242 +0200
++++ gprbuild-gpl-2016-src/src/gprbuild-main.adb        2017-03-28 09:21:20.495344963 +0200
+@@ -52,7 +52,8 @@
+ with GPR.Tempdir;                use GPR.Tempdir;
+ with GPR.Tree;                   use GPR.Tree;
+ with GPR.Util;                   use GPR.Util;
++with Gprbuild.Sigint_Intercepted;
+ procedure Gprbuild.Main is
+    use Stamps;
+@@ -124,11 +124,6 @@
+    pragma Import (C, Install_Int_Handler, "__gnat_install_int_handler");
+    --  Called by Gnatmake to install the SIGINT handler below
+-   procedure Sigint_Intercepted;
+-   pragma Convention (C, Sigint_Intercepted);
+-   --  Called when the program is interrupted by Ctrl-C to delete the
+-   --  temporary mapping files and configuration pragmas files.
+-
+    No_Object_Check_Switch     : constant String := "--no-object-check";
+    Direct_Import_Only_Switch  : constant String := "--direct-import-only";
+    Indirect_Imports_Switch    : constant String := "--indirect-imports";
+@@ -1616,22 +1611,6 @@
+       end if;
+    end Scan_Arg;
+-   ------------------------
+-   -- Sigint_Intercepted --
+-   ------------------------
+-
+-   procedure Sigint_Intercepted is
+-   begin
+-      Put_Line ("*** Interrupted ***");
+-      Delete_All_Temp_Files (Project_Tree.Shared);
+-
+-      if Distributed_Mode then
+-         Compilation.Slave.Unregister_Remote_Slaves (From_Signal => True);
+-      end if;
+-
+-      OS_Exit (1);
+-   end Sigint_Intercepted;
+-
+    ----------------
+    -- Initialize --
+    ----------------
+@@ -2293,7 +2272,7 @@
+    --  And install Ctrl-C handler
+-   Install_Int_Handler (Sigint_Intercepted'Unrestricted_Access);
++   Install_Int_Handler (Gprbuild.Sigint_Intercepted'Unrestricted_Access);
+    --  Check command line arguments. These will be overridden when looking
+    --  for the configuration file
+diff -Naur gprbuild-gpl-2016-src.old/src/gprbuild-sigint_intercepted.adb gprbuild-gpl-2016-src/src/gprbuild-sigint_intercepted.adb
+--- gprbuild-gpl-2016-src.old/src/gprbuild-sigint_intercepted.adb      1970-01-01 01:00:00.000000000 +0100
++++ gprbuild-gpl-2016-src/src/gprbuild-sigint_intercepted.adb  2017-03-28 09:20:00.661792854 +0200
+@@ -0,0 +1,20 @@
++------------------------
++-- Sigint_Intercepted --
++------------------------
++
++with Ada.Text_IO;      use Ada.Text_IO;
++with Gpr_Util;                   use Gpr_Util;
++with Gprbuild.Compile;
++with Gprbuild.Compilation.Slave;
++
++procedure Gprbuild.Sigint_Intercepted is
++begin
++   Put_Line ("*** Interrupted ***");
++   Delete_All_Temp_Files (Project_Tree.Shared);
++
++   if Distributed_Mode then
++      Compilation.Slave.Unregister_Remote_Slaves (From_Signal => True);
++   end if;
++
++   OS_Exit (1);
++end Gprbuild.Sigint_Intercepted;
+diff -Naur gprbuild-gpl-2016-src.old/src/gprbuild-sigint_intercepted.ads gprbuild-gpl-2016-src/src/gprbuild-sigint_intercepted.ads
+--- gprbuild-gpl-2016-src.old/src/gprbuild-sigint_intercepted.ads      1970-01-01 01:00:00.000000000 +0100
++++ gprbuild-gpl-2016-src/src/gprbuild-sigint_intercepted.ads  2017-03-28 09:15:35.275616543 +0200
+@@ -0,0 +1,4 @@
++procedure Gprbuild.Sigint_Intercepted;
++pragma Convention (C, Sigint_Intercepted);
++--  Called when the program is interrupted by Ctrl-C to delete the
++--  temporary mapping files and configuration pragmas files.
+diff -Naur gprbuild-gpl-2016-src.old/src/gprinstall-main.adb gprbuild-gpl-2016-src/src/gprinstall-main.adb
+--- gprbuild-gpl-2016-src.old/src/gprinstall-main.adb  2017-03-28 09:12:24.205058242 +0200
++++ gprbuild-gpl-2016-src/src/gprinstall-main.adb      2017-03-28 09:25:36.515709886 +0200
+@@ -42,6 +42,7 @@
+ with Gprinstall.DB;
+ with Gprinstall.Install;
+ with Gprinstall.Uninstall;
++with Gprinstall.Sigint_Intercepted;
+ procedure Gprinstall.Main is
+@@ -94,11 +94,6 @@
+    pragma Import (C, Install_Int_Handler, "__gnat_install_int_handler");
+    --  Called by Gnatmake to install the SIGINT handler below
+-   procedure Sigint_Intercepted;
+-   pragma Convention (C, Sigint_Intercepted);
+-   --  Called when the program is interrupted by Ctrl-C to delete the
+-   --  temporary mapping files and configuration pragmas files.
+-
+    ---------------
+    -- Copyright --
+    ---------------
+@@ -514,17 +509,6 @@
+       end if;
+    end Scan_Arg;
+-   ------------------------
+-   -- Sigint_Intercepted --
+-   ------------------------
+-
+-   procedure Sigint_Intercepted is
+-   begin
+-      Put_Line ("*** Interrupted ***");
+-      Delete_All_Temp_Files (Project_Tree.Shared);
+-      OS_Exit (1);
+-   end Sigint_Intercepted;
+-
+    ----------------
+    -- Initialize --
+    ----------------
+@@ -862,7 +846,7 @@
+    --  And install Ctrl-C handler
+-   Install_Int_Handler (Sigint_Intercepted'Unrestricted_Access);
++   Install_Int_Handler (Gprinstall.Sigint_Intercepted'Unrestricted_Access);
+    --  Check command line arguments. These will be overridden when looking
+    --  for the configuration file
+diff -Naur gprbuild-gpl-2016-src.old/src/gprinstall-sigint_intercepted.adb gprbuild-gpl-2016-src/src/gprinstall-sigint_intercepted.adb
+--- gprbuild-gpl-2016-src.old/src/gprinstall-sigint_intercepted.adb    1970-01-01 01:00:00.000000000 +0100
++++ gprbuild-gpl-2016-src/src/gprinstall-sigint_intercepted.adb        2017-03-28 09:24:50.307545617 +0200
+@@ -0,0 +1,12 @@
++------------------------
++-- Sigint_Intercepted --
++------------------------
++
++with Ada.Text_IO;      use Ada.Text_IO;
++
++procedure Gprinstall.Sigint_Intercepted is
++begin
++   Put_Line ("*** Interrupted ***");
++   Delete_All_Temp_Files (Project_Tree.Shared);
++   OS_Exit (1);
++end Gprinstall.Sigint_Intercepted;
+diff -Naur gprbuild-gpl-2016-src.old/src/gprinstall-sigint_intercepted.ads gprbuild-gpl-2016-src/src/gprinstall-sigint_intercepted.ads
+--- gprbuild-gpl-2016-src.old/src/gprinstall-sigint_intercepted.ads    1970-01-01 01:00:00.000000000 +0100
++++ gprbuild-gpl-2016-src/src/gprinstall-sigint_intercepted.ads        2017-03-28 09:22:18.462294461 +0200
+@@ -0,0 +1,4 @@
++procedure Gprinstall.Sigint_Intercepted;
++pragma Convention (C, Sigint_Intercepted);
++--  Called when the program is interrupted by Ctrl-C to delete the
++--  temporary mapping files and configuration pragmas files.
index 57eee67bea64f36c006e47ae64f1ae3792f8b4ca..03d3c2baa53e7a66706435baeec5f37445c1b45b 100644 (file)
@@ -25,6 +25,8 @@ RDEPEND="${DEPEND}"
 
 S="${WORKDIR}"/${MYP}-src
 
+PATCHES=( "${FILESDIR}"/${P}-gentoo.patch )
+
 pkg_setup() {
        GCC=${ADA:-$(tc-getCC)}
        local base=$(basename ${GCC})
@@ -53,14 +55,14 @@ src_compile() {
        incflags="-Isrc -Igpr/src -I${xmlada_src}/sax -I${xmlada_src}/dom \
                -I${xmlada_src}/schema -I${xmlada_src}/unicode \
                -I${xmlada_src}/input_sources"
-       ${GCC} -c ${CFLAGS} src/gpr_imports.c -o gpr_imports.o
+       ${GCC} -c ${CFLAGS} src/gpr_imports.c -o gpr_imports.o || die
        for bin in ${bin_progs}; do
                ${GNATMAKE} -j$(makeopts_jobs) ${incflags} $ADAFLAGS ${bin}-main \
-                       -o ${bin} -largs gpr_imports.o
+                       -o ${bin} -largs gpr_imports.o || die
        done
        for lib in $lib_progs; do
                ${GNATMAKE} -j$(makeopts_jobs) ${incflags} ${lib} $ADAFLAGS \
-                       -largs gpr_imports.o
+                       -largs gpr_imports.o || die
        done
 }