dev-ada/gnatcoll: simplify using ada eclass
authorTupone Alfredo <tupone@gentoo.org>
Sat, 14 Sep 2019 17:10:16 +0000 (19:10 +0200)
committerTupone Alfredo <tupone@gentoo.org>
Sat, 14 Sep 2019 17:10:16 +0000 (19:10 +0200)
Package-Manager: Portage-2.3.69, Repoman-2.3.16
Signed-off-by: Alfredo Tupone <tupone@gentoo.org>
dev-ada/gnatcoll/files/gnatcoll-2017-r1-gentoo.patch [new file with mode: 0644]
dev-ada/gnatcoll/gnatcoll-2017-r1.ebuild [new file with mode: 0644]

diff --git a/dev-ada/gnatcoll/files/gnatcoll-2017-r1-gentoo.patch b/dev-ada/gnatcoll/files/gnatcoll-2017-r1-gentoo.patch
new file mode 100644 (file)
index 0000000..b8b92e4
--- /dev/null
@@ -0,0 +1,186 @@
+--- a/Makefile 2017-01-20 19:39:07.131398270 +0100
++++ b/Makefile 2017-01-20 19:42:30.088728844 +0100
+@@ -43,18 +43,18 @@
+ # Build either type of library. The argument (%) is the type of library to build
+-GPRBLD_OPTS=-p -m -j${PROCESSORS} -XLIBRARY_TYPE=$(@F) -XGnatcoll_Build=${Gnatcoll_Build} -XXMLADA_BUILD=$(@F)
++GPRBLD_OPTS=-p -m -j${PROCESSORS} -XGPR_BUILD=$(@F) -XLIBRARY_TYPE=$(@F) -XGnatcoll_Build=${Gnatcoll_Build} -XXMLADA_BUILD=$(@F)
+ build_library_type/%: generate_sources
+       @${RM} src/gnatcoll-atomic.adb
+       @echo "====== Building $(@F) libraries ======"
+-      ${GPRBUILD} ${GPRBLD_OPTS} -Pgnatcoll_full
++      ${GPRBUILD} ${GPRBLD_OPTS} -Pgnatcoll_full -v -cargs ${ADAFLAGS}
+       @# Need to build libgnatcoll_gtk separately, because its project files
+       @# requires gtkada.gpr, which might not exist on the machine.
+ ifeq (${WITH_GTK},yes)
+-      ${GPRBUILD} ${GPRBLD_OPTS} -Psrc/gnatcoll_gtk
++      ${GPRBUILD} ${GPRBLD_OPTS} -Psrc/gnatcoll_gtk -v -cargs ${ADAFLAGS}
+ endif
+ build_tools/%: build_library_type/%
+@@ -63,13 +63,14 @@
+       @# They are not build as part of the above because only the Main from
+       @# gnatcoll_full.gpr are build. We could use aggregate projects to
+       @# speed things up.
+-      ${GPRBUILD} ${GPRBLD_OPTS} -q -Psrc/gnatcoll_tools
++      ${GPRBUILD} ${GPRBLD_OPTS} -q -Psrc/gnatcoll_tools -v -cargs ${ADAFLAGS}
+ #######################################################################
+ #  install
+ GPRINST_OPTS=-p -f --prefix=${prefix} --install-name=gnatcoll \
+       --exec-subdir=${bindir} --project-subdir=lib/gnat -XXMLADA_BUILD=$(@F) \
++      -XGPR_BUILD=$(@F) \
+       --build-var=LIBRARY_TYPE --build-name=$(@F) -XLIBRARY_TYPE=$(@F)
+ install-clean:
+--- a/gnatcoll_shared.gpr.in   2017-01-20 19:50:03.222808656 +0100
++++ b/gnatcoll_shared.gpr.in   2017-01-20 19:50:28.200399274 +0100
+@@ -13,7 +13,7 @@
+    type Yes_No is ("yes", "no");
+    Gtk       : Yes_No := External ("GTK", "@WITH_GTK@");
+-   Python    : Yes_No := External ("PYTHON", "@WITH_PYTHON@");
++   Python    : Yes_No := "@WITH_PYTHON@"; 
+    Syslog    : Yes_No := External ("SYSLOG", "@WITH_SYSLOG@");
+    Postgres  : Yes_No := External ("POSTGRES", "@WITH_POSTGRES@");
+    type Sqlite_Inclusion is ("yes", "no", "embedded");
+--- a/testsuite/json/__init__.py       2017-04-24 17:52:34.158513249 +0200
++++ b/testsuite/json/__init__.py       2017-04-24 17:52:52.636207017 +0200
+@@ -21,7 +21,7 @@
+     @requires_not_aix    # Storage_Error on that machine
+     @chdir("MB28-001")
+     def test_MB28_001(self):
+-        self.runexec(["python", "make_json.py"])
++        self.runexec(["python2.7", "make_json.py"])
+         self.gprbuild()
+         self.runexec("json_stack_test", "test.out")
+--- a/testsuite/projects/__init__.py   2017-04-24 19:10:30.465246199 +0200
++++ b/testsuite/projects/__init__.py   2017-04-24 19:10:42.768035080 +0200
+@@ -105,25 +105,6 @@
+         self.gprbuild("default.gpr")
+         self.runexec("main", "")
+-    @support.requires_not_windows
+-    @chdir("N918-040")
+-    def test_bareboard(self):
+-        self.create_fake_bb_compiler('install', 'arm-eabi', '6.1.0w', '3.4.6')
+-
+-        # Make sure auto.cgpr is not deleted on exit
+-        try:
+-            os.unlink('auto.cgpr')
+-        except:
+-            pass
+-        self.gprbuild('main_prj', switches=['--autoconf=auto.cgpr'])
+-        m = re.search('for Target use "(.*?)"', open('auto.cgpr').read())
+-        target = m.group(1)
+-
+-        def customFilter(actual):
+-            return actual.replace(target, "<native>")
+-
+-        self.runexec(['sh', 'test.sh'], 'test.out', customFilter=customFilter)
+-
+     @chdir("NB12-045")
+     def test_NB12_045(self):
+         # Test registering attribute in unknown package
+--- a/src/tools/gnatcoll_db2ada.adb    2017-04-24 21:36:09.193973179 +0200
++++ b/src/tools/gnatcoll_db2ada.adb    2017-04-24 21:36:16.029858932 +0200
+@@ -211,7 +211,7 @@
+       declare
+          Output : constant String := Get_Command_Output
+-           (Command     => "python",
++           (Command     => "python2.7",
+             Arguments   => Args,
+             Input       => "",
+             Status      => Status'Access,
+--- a/src/gnatcoll-projects.ads        2017-11-25 14:50:06.919939453 +0100
++++ b/src/gnatcoll-projects.ads        2017-11-25 14:50:38.932387204 +0100
+@@ -1917,7 +1917,8 @@
+       Predefined_Source_Files : GNATCOLL.VFS.File_Array_Access;
+       --  The list of source files in Predefined_Source_Path
+-      Default_Gnatls : GNAT.Strings.String_Access := new String'("gnatls");
++      Default_Gnatls : GNAT.Strings.String_Access :=
++         new String'("@GNATLS@");
+       --  The default gnatls command to run.
+       Xrefs_Subdir : GNAT.Strings.String_Access;
+--- a/src/tools/gnatinspect.adb        2017-11-25 14:52:47.282170250 +0100
++++ b/src/tools/gnatinspect.adb        2017-11-25 14:52:57.691990254 +0100
+@@ -642,7 +642,7 @@
+       GNAT_Version : GNAT.Strings.String_Access;
+    begin
+       Env.Set_Path_From_Gnatls
+-        (Gnatls       => "gnatls",
++        (Gnatls       => "@GNATLS@",
+          GNAT_Version => GNAT_Version,
+          Errors       => Local_On_Error'Unrestricted_Access);
+       Free (GNAT_Version);
+--- a/src/gnatcoll-projects.adb        2018-11-14 18:47:27.760365233 +0100
++++ b/src/gnatcoll-projects.adb        2018-11-14 19:10:43.961337201 +0100
+@@ -3273,9 +3273,9 @@
+       Status                   : out Status_Type;
+       Result                   : out GNATCOLL.VFS.File_Array_Access)
+    is
+-      Mains_Str_List : String_List_Access;
++      Mains_Str_List : String_Vectors.Vector;
+       Closure_Status : GPR.Util.Status_Type;
+-      Closures_List  : String_List_Access;
++      Closures_List  : String_Vectors.Vector;
+    begin
+       Trace (Me, "Get_Closures");
+@@ -3287,25 +3287,18 @@
+          return;
+       end if;
+-      Mains_Str_List := new String_List (Mains'First .. Mains'Last);
+       for I in Mains'Range loop
+-         Mains_Str_List (I) := new String'(Mains (I).Display_Base_Name);
++         Mains_Str_List.Append (Mains (I).Display_Base_Name);
+       end loop;
+       GPR.Util.Get_Closures
+         (Project.Get_View, Project.Tree_View,
+-         Mains                    => Mains_Str_List.all,
++         Mains                    => Mains_Str_List,
+          All_Projects             => All_Projects,
+          Include_Externally_Built => Include_Externally_Built,
+          Status                   => Closure_Status,
+          Result                   => Closures_List);
+-      --  Freeing temporary list of mains.
+-      for I in Mains_Str_List'Range loop
+-         Free (Mains_Str_List (I));
+-      end loop;
+-      Free (Mains_Str_List);
+-
+       case Closure_Status is
+          when Success =>
+             Status := Success;
+@@ -3321,17 +3314,10 @@
+       end case;
+       if Closure_Status in Success | Incomplete_Closure then
+-         for I in Closures_List'Range loop
+-            Append (Result, Create (+Closures_List (I).all));
++         for Closure of Closures_List loop
++            Append (Result, Create (+Closure));
+          end loop;
+       end if;
+-
+-      --  Freeing temporary list of closures.
+-      for I in Closures_List'Range loop
+-         Free (Closures_List (I));
+-      end loop;
+-      Free (Closures_List);
+-
+    end Get_Closures;
+    ----------------
diff --git a/dev-ada/gnatcoll/gnatcoll-2017-r1.ebuild b/dev-ada/gnatcoll/gnatcoll-2017-r1.ebuild
new file mode 100644 (file)
index 0000000..ae3680e
--- /dev/null
@@ -0,0 +1,129 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python2_7 )
+ADA_COMPAT=( gnat_201{6,7} )
+inherit ada multilib multiprocessing autotools python-single-r1
+
+MYP=${PN}-gpl-${PV}
+
+DESCRIPTION="GNAT Component Collection"
+HOMEPAGE="http://libre.adacore.com"
+SRC_URI="http://mirrors.cdn.adacore.com/art/591c45e2c7a447af2deed016
+       -> ${MYP}-src.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="gmp gtk iconv postgres pygobject projects readline
+       +shared sqlite static-libs syslog tools"
+
+RDEPEND="${ADA_DEPS}
+       ${PYTHON_DEPS}
+       gmp? ( dev-libs/gmp:* )
+       gtk? (
+               dev-ada/gtkada[${ADA_USEDEP},shared?,static-libs?]
+               dev-libs/atk
+               dev-libs/glib
+               x11-libs/cairo
+               x11-libs/gdk-pixbuf
+               x11-libs/gtk+:3
+               x11-libs/pango
+       )
+       pygobject? ( dev-python/pygobject:3[${PYTHON_USEDEP}] )
+       postgres? ( dev-db/postgresql:* )
+       sqlite? ( dev-db/sqlite )
+       projects? (
+               >=dev-ada/libgpr-2018[${ADA_USEDEP},shared?,static-libs?]
+               dev-ada/xmlada[shared?,static-libs?]
+       )
+       !dev-ada/gnatcoll-core
+       !dev-ada/gnatcoll-bindings
+       !dev-ada/gnatcoll-db"
+DEPEND="${RDEPEND}
+       dev-ada/gprbuild[${ADA_USEDEP}]"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+       tools? ( static-libs )
+       pygobject? ( gtk )
+       ${ADA_REQUIRED_USE}"
+
+S="${WORKDIR}"/${MYP}-src
+
+PATCHES=( "${FILESDIR}"/${P}-r1-gentoo.patch )
+
+src_prepare() {
+       default
+       mv configure.{in,ac} || die
+       sed -i \
+               -e "s:@GNATLS@:${GNATLS}:g" \
+               src/gnatcoll-projects.ads \
+               src/tools/gnatinspect.adb \
+               || die
+       eautoreconf
+}
+
+src_configure() {
+       if use sqlite; then
+               myConf="--with-sqlite=$(get_libdir)"
+       else
+               myConf="--without-sqlite"
+       fi
+       if use gtk ; then
+               myConf="$myConf --with-gtk=3.0"
+       else
+               myConf="$myConf --with-gtk=no"
+       fi
+       econf \
+               --with-python \
+               $(use_with gmp) \
+               $(use_with iconv) \
+               $(use_with postgres postgresql) \
+               $(use_enable projects) \
+               $(use_enable pygobject) \
+               $(use_enable readline gpl) \
+               $(use_enable readline) \
+               $(use_enable syslog) \
+               --with-python-exec=${EPYTHON} \
+               --enable-shared-python \
+               --disable-pygtk \
+               $myConf
+}
+
+src_compile() {
+       if use shared; then
+               emake PROCESSORS=$(makeopts_jobs) build_library_type/relocatable
+       fi
+       if use static-libs; then
+               emake PROCESSORS=$(makeopts_jobs) build_library_type/static
+       fi
+       if use tools; then
+               emake PROCESSORS=$(makeopts_jobs) build_tools/static
+       fi
+       python_fix_shebang .
+}
+
+src_install() {
+       if use shared; then
+               emake prefix="${D}usr" install_library_type/relocatable
+       fi
+       if use static-libs; then
+               emake prefix="${D}usr" install_library_type/static
+       fi
+       if use tools; then
+               emake prefix="${D}usr" install_tools/static
+       fi
+       emake prefix="${D}usr" install_gps_plugin
+       einstalldocs
+}
+
+src_test() {
+       # The test suite is in
+       # To run you need to have the ada compiler available as gcc
+       # Even in this case there are still some problems
+       # Going into the testsuite directory and running
+       # ./run.py -v -v
+       # run here (having enabled most USE flags)
+       true
+}