[packages/ocaml-gapi-ocaml] - up to 0.4.1
baggins
baggins at pld-linux.org
Thu Mar 25 00:06:54 CET 2021
commit 5b797f51820fd0d719aae9d71863685d436e5ce9
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Thu Mar 25 00:06:44 2021 +0100
- up to 0.4.1
jbuilder.patch | 10154 ------------------------------------------------
ocaml-gapi-ocaml.spec | 36 +-
2 files changed, 14 insertions(+), 10176 deletions(-)
---
diff --git a/ocaml-gapi-ocaml.spec b/ocaml-gapi-ocaml.spec
index 0a8f824..b0066fb 100644
--- a/ocaml-gapi-ocaml.spec
+++ b/ocaml-gapi-ocaml.spec
@@ -11,13 +11,12 @@
%define debug_package %{nil}
Summary: Google Data Protocol (GData) client library
Name: ocaml-%{pkgname}
-Version: 0.3.6
+Version: 0.4.1
Release: 1
License: MIT
Group: Libraries
Source0: https://github.com/astrada/gapi-ocaml/archive/v%{version}/%{name}-%{version}.tar.gz
-# Source0-md5: b8759b3a9010769db86786141ed374dd
-Patch0: jbuilder.patch
+# Source0-md5: aeecae11fddf4511cea908808c73366a
URL: http://gapi-ocaml.forge.ocamlcore.org/
BuildRequires: cppo >= 0.9.3
BuildRequires: ocaml >= 4.02.3
@@ -25,10 +24,8 @@ BuildRequires: ocaml-biniou-devel >= 1.0.6
BuildRequires: ocaml-cryptokit-devel >= 1.9
BuildRequires: ocaml-curl-devel >= 0.6.0
BuildRequires: ocaml-easy-format-devel >= 1.0.1
-BuildRequires: ocaml-extlib-devel >= 1.5.4
BuildRequires: ocaml-findlib >= 1.4
BuildRequires: ocaml-net-netstring-devel >= 4.1.4
-BuildRequires: ocaml-xmlm-devel >= 1.1.1
BuildRequires: ocaml-yojson-devel >= 1.1.6
%requires_eq ocaml-runtime
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
@@ -47,15 +44,12 @@ używających tej biblioteki.
Summary: Google Data Protocol (GData) client library - development part
Summary(pl.UTF-8): Wiązania gapi dla OCamla - cześć programistyczna
Group: Development/Libraries
-%requires_eq ocaml
+%requires_eq ocaml
Requires: ocaml-biniou-devel >= 1.0.6
Requires: ocaml-cryptokit-devel >= 1.9
Requires: ocaml-curl-devel >= 0.6.0
Requires: ocaml-easy-format-devel >= 1.0.1
-Requires: ocaml-extlib-devel >= 1.5.4
-Requires: ocaml-net-netstring-devel >= 3.6
-#Requires: ocaml-net-netstring-devel >= 3.7.3
-Requires: ocaml-xmlm-devel >= 1.1.1
+Requires: ocaml-net-netstring-devel >= 3.7.3
Requires: ocaml-yojson-devel >= 1.1.6
%description devel
@@ -68,26 +62,22 @@ tej biblioteki.
%prep
%setup -q -n %{pkgname}-%{version}
-%patch0 -p1 -R
%build
-ocaml setup.ml -configure \
- --destdir $RPM_BUILD_ROOT
-ocaml setup.ml -build
+dune build
%install
rm -rf $RPM_BUILD_ROOT
-export OCAMLFIND_DESTDIR=$RPM_BUILD_ROOT%{_libdir}/ocaml
-install -d $OCAMLFIND_DESTDIR
-ocaml setup.ml -install
+
+dune install --destdir=$RPM_BUILD_ROOT
# move to dir pld ocamlfind looks
-install -d $RPM_BUILD_ROOT%{_libdir}/ocaml/site-lib/%{pkgname}
-mv $OCAMLFIND_DESTDIR/%{pkgname}/META \
- $RPM_BUILD_ROOT%{_libdir}/ocaml/site-lib/%{pkgname}
-cat <<EOF >> $RPM_BUILD_ROOT%{_libdir}/ocaml/site-lib/%{pkgname}/META
+cat <<EOF >> $RPM_BUILD_ROOT%{_libdir}/ocaml/%{pkgname}/META
directory="+%{pkgname}"
EOF
+install -d $RPM_BUILD_ROOT%{_libdir}/ocaml/site-lib/%{pkgname}
+ln -sr $RPM_BUILD_ROOT%{_libdir}/ocaml/%{pkgname}/META \
+ $RPM_BUILD_ROOT%{_libdir}/ocaml/site-lib/%{pkgname}
# no standard way of packaging .mli docs in pld. just drop
%{__rm} $RPM_BUILD_ROOT%{_libdir}/ocaml/%{pkgname}/*.mli
@@ -99,7 +89,9 @@ rm -rf $RPM_BUILD_ROOT
%defattr(644,root,root,755)
%doc LICENSE
%dir %{_libdir}/ocaml/%{pkgname}
-%{_libdir}/ocaml/%{pkgname}/*.annot
+%{_libdir}/ocaml/gapi-ocaml/META
+%{_libdir}/ocaml/gapi-ocaml/dune-package
+%{_libdir}/ocaml/gapi-ocaml/opam
%{_libdir}/ocaml/%{pkgname}/*.cma
%{_libdir}/ocaml/%{pkgname}/*.cmt*
%{_libdir}/ocaml/%{pkgname}/*.cm[ix]
diff --git a/jbuilder.patch b/jbuilder.patch
deleted file mode 100644
index e77f441..0000000
--- a/jbuilder.patch
+++ /dev/null
@@ -1,10154 +0,0 @@
-From 3eca798f99a6babfb457c532a1803f3b491e779d Mon Sep 17 00:00:00 2001
-From: Rudi Grinberg <rudi.grinberg at gmail.com>
-Date: Sat, 18 Nov 2017 17:00:26 +0800
-Subject: [PATCH] Port to jbuilder
-
-This PR switch the build system from oasis to jbuilder. The advantages include:
-
-* Much faster builds
-* No need to check in generated code
-* Support for building documentation using odoc. ($ jbuilder build @doc)
-* Ability to easily vendor gapi in other application.
----
- .gitignore | 9 +-
- _oasis | 187 -
- _tags | 136 -
- examples/auth/jbuild | 9 +
- gapi-ocaml.descr | 10 +
- gapi-ocaml.opam | 22 +
- myocamlbuild.ml | 902 ---
- opam/descr | 11 -
- opam/findlib | 1 -
- opam/opam | 36 -
- setup.ml | 8484 --------------------
- src/gapi-ocaml.odocl | 67 -
- src/gapi/jbuild | 8 +
- src/gdata/jbuild | 8 +
- src/test/jbuild | 10 +
- src/test/testMonadic.ml | 7 +-
- {test_data => src/test/test_data}/.gitignore | 0
- {test_data => src/test/test_data}/acl_feed.xml | 0
- .../test/test_data}/all_calendars.xml | 0
- .../test/test_data}/calendar_entry.xml | 0
- .../test_data}/calendar_entry_with_extensions.xml | 0
- .../test/test_data}/event_batch_request.xml | 0
- {test_data => src/test/test_data}/event_entry.xml | 0
- {test_data => src/test/test_data}/event_feed.xml | 0
- .../test/test_data}/new_event_entry.xml | 0
- {test_data => src/test/test_data}/recurrence.xml | 0
- {test_data => src/test/test_data}/settings.xml | 0
- {test_data => src/test/test_data}/test.pdf | Bin
- .../test_data}/test_acl_entry_to_data_model.xml | 0
- .../test/test_data}/test_adsense_accounts.json | 0
- .../test/test_data}/test_adsense_adclients.json | 0
- .../test/test_data}/test_adsense_adunits.json | 0
- .../test_data}/test_adsense_customchannels.json | 0
- .../test/test_data}/test_adsense_report.json | 0
- .../test/test_data}/test_adsense_urlchannels.json | 0
- .../test/test_data}/test_analytics_data.json | 0
- .../test/test_data}/test_bigquery_dataset.json | 0
- .../test_data}/test_bigquery_dataset_list.json | 0
- .../test_data}/test_bigquery_getqueryresults.json | 0
- .../test/test_data}/test_bigquery_job.json | 0
- .../test/test_data}/test_bigquery_job_list.json | 0
- .../test_data}/test_bigquery_project_list.json | 0
- .../test_data}/test_bigquery_queryrequest.json | 0
- .../test/test_data}/test_bigquery_queryresult.json | 0
- .../test/test_data}/test_bigquery_table.json | 0
- .../test/test_data}/test_bigquery_table_list.json | 0
- .../test_data}/test_bigquery_tabledata_list.json | 0
- .../test/test_data}/test_blogger_blog.json | 0
- .../test/test_data}/test_blogger_blog_list.json | 0
- .../test/test_data}/test_blogger_comment.json | 0
- .../test/test_data}/test_blogger_comment_list.json | 0
- .../test/test_data}/test_blogger_page.json | 0
- .../test/test_data}/test_blogger_page_list.json | 0
- .../test/test_data}/test_blogger_post.json | 0
- .../test/test_data}/test_blogger_post_list.json | 0
- .../test/test_data}/test_blogger_user.json | 0
- .../test/test_data}/test_calendar_acl.json | 0
- .../test/test_data}/test_calendar_colors.json | 0
- .../test_calendar_entry_to_data_model.xml | 0
- .../test/test_data}/test_calendar_event_list.json | 0
- .../test_data}/test_calendar_event_resource.json | 0
- .../test/test_data}/test_calendar_list.json | 0
- .../test_data}/test_calendar_rest_service.json | 0
- .../test/test_data}/test_calendar_settings.json | 0
- .../test/test_data}/test_calendars.json | 0
- .../test/test_data}/test_directory_list.json | 0
- .../test_data}/test_discovery_rest_service.json | 0
- .../test/test_data}/test_documents_acl_feed.xml | 0
- .../test_data}/test_documents_archive_entry.xml | 0
- .../test_data}/test_documents_changes_feed.xml | 0
- .../test/test_data}/test_documents_entry.xml | 0
- .../test/test_data}/test_documents_feed.xml | 0
- .../test_data}/test_documents_revisions_feed.xml | 0
- .../test_data}/test_documents_user_metadata.xml | 0
- .../test/test_data}/test_drive_about.json | 0
- .../test/test_data}/test_drive_app_list.json | 0
- .../test/test_data}/test_drive_change.json | 0
- .../test/test_data}/test_drive_change_list.json | 0
- .../test/test_data}/test_drive_child_list.json | 0
- .../test_data}/test_drive_child_reference.json | 0
- .../test/test_data}/test_drive_file.json | 0
- .../test/test_data}/test_drive_file_list.json | 0
- .../test/test_data}/test_drive_parent_list.json | 0
- .../test_data}/test_drive_parent_reference.json | 0
- .../test/test_data}/test_drive_permission.json | 0
- .../test_data}/test_drive_permission_list.json | 0
- .../test/test_data}/test_drive_revision.json | 0
- .../test/test_data}/test_drive_revision_list.json | 0
- .../test/test_data}/test_freebusy.json | 0
- .../test/test_data}/test_freebusy_parameters.json | 0
- .../test/test_data}/test_management_accounts.json | 0
- .../test/test_data}/test_management_goals.json | 0
- .../test/test_data}/test_management_profiles.json | 0
- .../test/test_data}/test_management_segments.json | 0
- .../test_data}/test_management_webproperties.json | 0
- .../test_data}/test_pagespeedonline_result.json | 0
- .../test/test_data}/test_parse_acl_feed.xml | 0
- .../test/test_data}/test_parse_archive_entry.xml | 0
- .../test_data}/test_parse_calendar_event_entry.xml | 0
- .../test/test_data}/test_parse_changes_feed.xml | 0
- .../test/test_data}/test_parse_documents_entry.xml | 0
- .../test/test_data}/test_parse_documents_feed.xml | 0
- .../test/test_data}/test_parse_revisions_feed.xml | 0
- .../test_data}/test_parse_user_metadata_entry.xml | 0
- .../test/test_data}/test_plus_activity.json | 0
- .../test/test_data}/test_plus_activity_feed.json | 0
- .../test/test_data}/test_plus_comment.json | 0
- .../test/test_data}/test_plus_comment_feed.json | 0
- .../test/test_data}/test_plus_people_feed.json | 0
- .../test/test_data}/test_plus_person.json | 0
- .../test/test_data}/test_plus_rest_service.json | 0
- .../test/test_data}/test_request_error.json | 0
- .../test/test_data}/test_search_results.json | 0
- .../test_data}/test_siteVerification_token.json | 0
- .../test_siteVerification_webresource.json | 0
- .../test_siteVerification_webresource_list.json | 0
- {test_data => src/test/test_data}/test_task.json | 0
- .../test/test_data}/test_task_list.json | 0
- .../test/test_data}/test_task_lists.json | 0
- {test_data => src/test/test_data}/test_tasks.json | 0
- .../test/test_data}/test_tasks_rest_service.json | 0
- .../test/test_data}/test_tokeninfo.json | 0
- .../test/test_data}/test_urlshortener_url.json | 0
- .../test_data}/test_urlshortener_url_history.json | 0
- .../test/test_data}/test_userinfo.json | 0
- tools/jbuild | 9 +
- 126 files changed, 81 insertions(+), 9835 deletions(-)
- delete mode 100644 _oasis
- delete mode 100644 _tags
- create mode 100644 examples/auth/jbuild
- create mode 100644 gapi-ocaml.descr
- create mode 100644 gapi-ocaml.opam
- delete mode 100644 myocamlbuild.ml
- delete mode 100644 opam/descr
- delete mode 100644 opam/findlib
- delete mode 100644 opam/opam
- delete mode 100644 setup.ml
- delete mode 100644 src/gapi-ocaml.odocl
- create mode 100644 src/gapi/jbuild
- create mode 100644 src/gdata/jbuild
- create mode 100644 src/test/jbuild
- rename {test_data => src/test/test_data}/.gitignore (100%)
- rename {test_data => src/test/test_data}/acl_feed.xml (100%)
- rename {test_data => src/test/test_data}/all_calendars.xml (100%)
- rename {test_data => src/test/test_data}/calendar_entry.xml (100%)
- rename {test_data => src/test/test_data}/calendar_entry_with_extensions.xml (100%)
- rename {test_data => src/test/test_data}/event_batch_request.xml (100%)
- rename {test_data => src/test/test_data}/event_entry.xml (100%)
- rename {test_data => src/test/test_data}/event_feed.xml (100%)
- rename {test_data => src/test/test_data}/new_event_entry.xml (100%)
- rename {test_data => src/test/test_data}/recurrence.xml (100%)
- rename {test_data => src/test/test_data}/settings.xml (100%)
- rename {test_data => src/test/test_data}/test.pdf (100%)
- rename {test_data => src/test/test_data}/test_acl_entry_to_data_model.xml (100%)
- rename {test_data => src/test/test_data}/test_adsense_accounts.json (100%)
- rename {test_data => src/test/test_data}/test_adsense_adclients.json (100%)
- rename {test_data => src/test/test_data}/test_adsense_adunits.json (100%)
- rename {test_data => src/test/test_data}/test_adsense_customchannels.json (100%)
- rename {test_data => src/test/test_data}/test_adsense_report.json (100%)
- rename {test_data => src/test/test_data}/test_adsense_urlchannels.json (100%)
- rename {test_data => src/test/test_data}/test_analytics_data.json (100%)
- rename {test_data => src/test/test_data}/test_bigquery_dataset.json (100%)
- rename {test_data => src/test/test_data}/test_bigquery_dataset_list.json (100%)
- rename {test_data => src/test/test_data}/test_bigquery_getqueryresults.json (100%)
- rename {test_data => src/test/test_data}/test_bigquery_job.json (100%)
- rename {test_data => src/test/test_data}/test_bigquery_job_list.json (100%)
- rename {test_data => src/test/test_data}/test_bigquery_project_list.json (100%)
- rename {test_data => src/test/test_data}/test_bigquery_queryrequest.json (100%)
- rename {test_data => src/test/test_data}/test_bigquery_queryresult.json (100%)
- rename {test_data => src/test/test_data}/test_bigquery_table.json (100%)
- rename {test_data => src/test/test_data}/test_bigquery_table_list.json (100%)
- rename {test_data => src/test/test_data}/test_bigquery_tabledata_list.json (100%)
- rename {test_data => src/test/test_data}/test_blogger_blog.json (100%)
- rename {test_data => src/test/test_data}/test_blogger_blog_list.json (100%)
- rename {test_data => src/test/test_data}/test_blogger_comment.json (100%)
- rename {test_data => src/test/test_data}/test_blogger_comment_list.json (100%)
- rename {test_data => src/test/test_data}/test_blogger_page.json (100%)
- rename {test_data => src/test/test_data}/test_blogger_page_list.json (100%)
- rename {test_data => src/test/test_data}/test_blogger_post.json (100%)
- rename {test_data => src/test/test_data}/test_blogger_post_list.json (100%)
- rename {test_data => src/test/test_data}/test_blogger_user.json (100%)
- rename {test_data => src/test/test_data}/test_calendar_acl.json (100%)
- rename {test_data => src/test/test_data}/test_calendar_colors.json (100%)
- rename {test_data => src/test/test_data}/test_calendar_entry_to_data_model.xml (100%)
- rename {test_data => src/test/test_data}/test_calendar_event_list.json (100%)
- rename {test_data => src/test/test_data}/test_calendar_event_resource.json (100%)
- rename {test_data => src/test/test_data}/test_calendar_list.json (100%)
- rename {test_data => src/test/test_data}/test_calendar_rest_service.json (100%)
- rename {test_data => src/test/test_data}/test_calendar_settings.json (100%)
- rename {test_data => src/test/test_data}/test_calendars.json (100%)
- rename {test_data => src/test/test_data}/test_directory_list.json (100%)
- rename {test_data => src/test/test_data}/test_discovery_rest_service.json (100%)
- rename {test_data => src/test/test_data}/test_documents_acl_feed.xml (100%)
- rename {test_data => src/test/test_data}/test_documents_archive_entry.xml (100%)
- rename {test_data => src/test/test_data}/test_documents_changes_feed.xml (100%)
- rename {test_data => src/test/test_data}/test_documents_entry.xml (100%)
- rename {test_data => src/test/test_data}/test_documents_feed.xml (100%)
- rename {test_data => src/test/test_data}/test_documents_revisions_feed.xml (100%)
- rename {test_data => src/test/test_data}/test_documents_user_metadata.xml (100%)
- rename {test_data => src/test/test_data}/test_drive_about.json (100%)
- rename {test_data => src/test/test_data}/test_drive_app_list.json (100%)
- rename {test_data => src/test/test_data}/test_drive_change.json (100%)
- rename {test_data => src/test/test_data}/test_drive_change_list.json (100%)
- rename {test_data => src/test/test_data}/test_drive_child_list.json (100%)
- rename {test_data => src/test/test_data}/test_drive_child_reference.json (100%)
- rename {test_data => src/test/test_data}/test_drive_file.json (100%)
- rename {test_data => src/test/test_data}/test_drive_file_list.json (100%)
- rename {test_data => src/test/test_data}/test_drive_parent_list.json (100%)
- rename {test_data => src/test/test_data}/test_drive_parent_reference.json (100%)
- rename {test_data => src/test/test_data}/test_drive_permission.json (100%)
- rename {test_data => src/test/test_data}/test_drive_permission_list.json (100%)
- rename {test_data => src/test/test_data}/test_drive_revision.json (100%)
- rename {test_data => src/test/test_data}/test_drive_revision_list.json (100%)
- rename {test_data => src/test/test_data}/test_freebusy.json (100%)
- rename {test_data => src/test/test_data}/test_freebusy_parameters.json (100%)
- rename {test_data => src/test/test_data}/test_management_accounts.json (100%)
- rename {test_data => src/test/test_data}/test_management_goals.json (100%)
- rename {test_data => src/test/test_data}/test_management_profiles.json (100%)
- rename {test_data => src/test/test_data}/test_management_segments.json (100%)
- rename {test_data => src/test/test_data}/test_management_webproperties.json (100%)
- rename {test_data => src/test/test_data}/test_pagespeedonline_result.json (100%)
- rename {test_data => src/test/test_data}/test_parse_acl_feed.xml (100%)
- rename {test_data => src/test/test_data}/test_parse_archive_entry.xml (100%)
- rename {test_data => src/test/test_data}/test_parse_calendar_event_entry.xml (100%)
- rename {test_data => src/test/test_data}/test_parse_changes_feed.xml (100%)
- rename {test_data => src/test/test_data}/test_parse_documents_entry.xml (100%)
- rename {test_data => src/test/test_data}/test_parse_documents_feed.xml (100%)
- rename {test_data => src/test/test_data}/test_parse_revisions_feed.xml (100%)
- rename {test_data => src/test/test_data}/test_parse_user_metadata_entry.xml (100%)
- rename {test_data => src/test/test_data}/test_plus_activity.json (100%)
- rename {test_data => src/test/test_data}/test_plus_activity_feed.json (100%)
- rename {test_data => src/test/test_data}/test_plus_comment.json (100%)
- rename {test_data => src/test/test_data}/test_plus_comment_feed.json (100%)
- rename {test_data => src/test/test_data}/test_plus_people_feed.json (100%)
- rename {test_data => src/test/test_data}/test_plus_person.json (100%)
- rename {test_data => src/test/test_data}/test_plus_rest_service.json (100%)
- rename {test_data => src/test/test_data}/test_request_error.json (100%)
- rename {test_data => src/test/test_data}/test_search_results.json (100%)
- rename {test_data => src/test/test_data}/test_siteVerification_token.json (100%)
- rename {test_data => src/test/test_data}/test_siteVerification_webresource.json (100%)
- rename {test_data => src/test/test_data}/test_siteVerification_webresource_list.json (100%)
- rename {test_data => src/test/test_data}/test_task.json (100%)
- rename {test_data => src/test/test_data}/test_task_list.json (100%)
- rename {test_data => src/test/test_data}/test_task_lists.json (100%)
- rename {test_data => src/test/test_data}/test_tasks.json (100%)
- rename {test_data => src/test/test_data}/test_tasks_rest_service.json (100%)
- rename {test_data => src/test/test_data}/test_tokeninfo.json (100%)
- rename {test_data => src/test/test_data}/test_urlshortener_url.json (100%)
- rename {test_data => src/test/test_data}/test_urlshortener_url_history.json (100%)
- rename {test_data => src/test/test_data}/test_userinfo.json (100%)
- create mode 100644 tools/jbuild
-
-diff --git a/.gitignore b/.gitignore
-index 2b0014b4..3edf6fe7 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -2,10 +2,5 @@
- *.bak
-
- _build
--*.byte
--*.native
--
--*.docdir
--setup.data
--setup.log
--
-+*.install
-+.merlin
-\ No newline at end of file
-diff --git a/_oasis b/_oasis
-deleted file mode 100644
-index efd9190f..00000000
---- a/_oasis
-+++ /dev/null
-@@ -1,187 +0,0 @@
--OASISFormat: 0.4
--OCamlVersion: >= 4.02.3
--Name: gapi-ocaml
--Version: 0.3.5
--LicenseFile: LICENSE
--License: MIT
--BuildType: ocamlbuild (0.4)
--Authors: Alessandro Strada
--Maintainers: Alessandro Strada <alessandro.strada at gmail.com>
--Copyrights: (C) 2011-2016 Alessandro Strada
--Homepage: https://github.com/astrada/gapi-ocaml
--Plugins: META (0.4)
--BuildTools: ocamlbuild
--
--Synopsis: A simple OCaml client for Google Services.
--
--Description: gapi-ocaml is a simple, unofficial, OCaml client for
-- Google Services. The library supports ClientLogin, OAuth 1.0a, and
-- OAuth 2.0 authentication. Supported RESTful APIs: Calendar APIs v3,
-- Google+ API v1, Tasks API v1, APIs Discovery Service v1, URL Shortener
-- API v1, OAuth2 API v2, Custom Search API v1, Google Analytics API v3,
-- Page Speed Online API v1, Blogger API v2, Site Verification API v1,
-- AdSense Management API v1.4, BigQuery API v2, Drive API v2, Drive API v3,
-- Gmail API v1. Google Data Protocol APIs (GData): Google Documents List API
-- v3.
--
--# Flags
--Flag all
-- Description: Build all
-- Default: false
--
--# Flags
--Flag generator
-- Description: Build service generator
-- Default$: flag(all)
--
--# Flags
--Flag examples
-- Description: Build examples
-- Default$: flag(all)
--
--# Libraries
--Library "gapi-ocaml"
-- Path: src/gapi
-- Modules:
-- GapiUtils,
-- GapiCore,
-- GapiCurl,
-- GapiPipe,
-- GapiConfig,
-- GapiConversation,
-- GapiAuthResponse,
-- GapiClientLogin,
-- GapiOAuth1,
-- GapiOAuth2,
-- GapiAuth,
-- GapiRequest,
-- GapiMonad,
-- GapiError,
-- GapiService,
-- GapiDate,
-- GapiJson,
-- GapiLens,
-- GapiMediaResource,
-- GapiCalendarV3Model,
-- GapiCalendarV3Service,
-- GapiPlusV1Model,
-- GapiPlusV1Service,
-- GapiTasksV1Model,
-- GapiTasksV1Service,
-- GapiDiscoveryV1Model,
-- GapiDiscoveryV1Service,
-- GapiUrlshortenerV1Model,
-- GapiUrlshortenerV1Service,
-- GapiOauth2V2Model,
-- GapiOauth2V2Service,
-- GapiCustomsearchV1Model,
-- GapiCustomsearchV1Service,
-- GapiAnalyticsV3Model,
-- GapiAnalyticsV3Service,
-- GapiPagespeedonlineV1Model,
-- GapiPagespeedonlineV1Service,
-- GapiBloggerV2Model,
-- GapiBloggerV2Service,
-- GapiSiteVerificationV1Model,
-- GapiSiteVerificationV1Service,
-- GapiAdsenseV1_1Model,
-- GapiAdsenseV1_1Service,
-- GapiAdsenseV1_4Model,
-- GapiAdsenseV1_4Service,
-- GapiBigqueryV2Model,
-- GapiBigqueryV2Service,
-- GapiDriveV2Model,
-- GapiDriveV2Service,
-- GapiDriveV3Model,
-- GapiDriveV3Service,
-- GapiGmailV1Model,
-- GapiGmailV1Service
-- BuildDepends: extlib, netstring (>= 4.1.4), curl, str, cryptokit, yojson
-- XMETADescription: Google APIs client library
--
--Library gdata
-- Path: src/gdata
-- Modules:
-- GdataUtils,
-- GdataCore,
-- GdataBatch,
-- GdataAtom,
-- GdataExtensions,
-- GdataComments,
-- GdataService,
-- GdataACL,
-- GdataACLService,
-- GdataDocumentsV3Model,
-- GdataDocumentsV3Service
-- BuildDepends: gapi-ocaml, xmlm
-- FindlibParent: gapi-ocaml
-- XMETADescription: Google Data Protocol (GData) client library
--
--# Documentation
--Document "gapi-ocaml"
-- Title: API reference for Google APIs client library
-- Type: ocamlbuild (0.3)
-- InstallDir: $htmldir/html
-- Install: false
-- DataFiles: doc/style.css
-- BuildTools+: ocamldoc
-- XOCamlbuildPath: src/
-- XOCamlbuildLibraries: gapi-ocaml, gapi-ocaml.gdata
--
--# Executables
--Executable "serviceGenerator"
-- Build$: flag(generator) || flag(all)
-- Path: tools
-- Install: false
-- MainIs: serviceGenerator.ml
-- BuildDepends: gapi-ocaml, monad-custom
--
--# Examples
--Executable "oauth2Flow"
-- Build$: flag(examples) || flag(all)
-- Path: examples/auth
-- Install: false
-- MainIs: oauth2Flow.ml
-- BuildDepends: gapi-ocaml.gdata, nethttpd (>= 3.5.1)
--
--Executable "oauth1Flow"
-- Build$: flag(examples) || flag(all)
-- Path: examples/auth
-- Install: false
-- MainIs: oauth1Flow.ml
-- BuildDepends: gapi-ocaml, nethttpd (>= 3.5.1)
--
--Executable "clientLoginFlow"
-- Build$: flag(examples) || flag(all)
-- Path: examples/auth
-- Install: false
-- MainIs: clientLoginFlow.ml
-- BuildDepends: gapi-ocaml, nethttpd (>= 3.5.1)
--
--# Tests
--Executable "refreshOAuth2Token"
-- Build$: flag(tests) || flag(all)
-- Path: src/test
-- Install: false
-- MainIs: refreshOAuth2Token.ml
-- BuildDepends: gapi-ocaml, oUnit
--
--Executable "test_suite"
-- Build$: flag(tests) || flag(all)
-- Path: src/test
-- Install: false
-- MainIs: testSuite.ml
-- BuildDepends: oUnit, gapi-ocaml.gdata, monad-custom
--
--Test core
-- Run$: flag(tests) || flag(all)
-- Command: $test_suite
-- TestTools: test_suite
--
--# VCS
--SourceRepository head
-- Type: git
-- Location: https://github.com/astrada/gapi-ocaml.git
-- Browser: https://github.com/astrada/gapi-ocaml
-- Branch: master
--
-diff --git a/_tags b/_tags
-deleted file mode 100644
-index 00d4b16d..00000000
---- a/_tags
-+++ /dev/null
-@@ -1,136 +0,0 @@
--<tools/*.ml>: syntax_camlp4o
--"src/test/testMonadic.ml": syntax_camlp4o
--"tools/serviceGenerator.byte": debug
--# Disable warning 23 (Useless record "with" clause) for generated modules
--<src/gapi/gapi*Model.ml>: warn(-x)
--# Disable warning 3 (Deprecated feature), and 58 (Missing cmx file) for
--# compatibility with old compilers
--<src/gapi/*.ml>: warn(-d-58)
--<src/gdata/*.ml>: warn(-d-58)
--<tools/*.ml>: warn(-d)
--# Disable warning 52 (Fragile costant pattern) for tests
--<src/test/testDocumentsV3Service.ml>: warn(-52)
--
--# OASIS_START
--# DO NOT EDIT (digest: 0e6ebac24f87b5de56171c0568a0ecf9)
--# Ignore VCS directories, you can use the same kind of rule outside
--# OASIS_START/STOP if you want to exclude directories that contains
--# useless stuff for the build process
--true: annot, bin_annot
--<**/.svn>: -traverse
--<**/.svn>: not_hygienic
--".bzr": -traverse
--".bzr": not_hygienic
--".hg": -traverse
--".hg": not_hygienic
--".git": -traverse
--".git": not_hygienic
--"_darcs": -traverse
--"_darcs": not_hygienic
--# Library gapi-ocaml
--"src/gapi/gapi-ocaml.cmxs": use_gapi-ocaml
--<src/gapi/*.ml{,i,y}>: package(cryptokit)
--<src/gapi/*.ml{,i,y}>: package(curl)
--<src/gapi/*.ml{,i,y}>: package(extlib)
--<src/gapi/*.ml{,i,y}>: package(netstring)
--<src/gapi/*.ml{,i,y}>: package(str)
--<src/gapi/*.ml{,i,y}>: package(yojson)
--# Library gdata
--"src/gdata/gdata.cmxs": use_gdata
--<src/gdata/*.ml{,i,y}>: package(cryptokit)
--<src/gdata/*.ml{,i,y}>: package(curl)
--<src/gdata/*.ml{,i,y}>: package(extlib)
--<src/gdata/*.ml{,i,y}>: package(netstring)
--<src/gdata/*.ml{,i,y}>: package(str)
--<src/gdata/*.ml{,i,y}>: package(xmlm)
--<src/gdata/*.ml{,i,y}>: package(yojson)
--<src/gdata/*.ml{,i,y}>: use_gapi-ocaml
--# Executable serviceGenerator
--"tools/serviceGenerator.byte": package(cryptokit)
--"tools/serviceGenerator.byte": package(curl)
--"tools/serviceGenerator.byte": package(extlib)
--"tools/serviceGenerator.byte": package(monad-custom)
--"tools/serviceGenerator.byte": package(netstring)
--"tools/serviceGenerator.byte": package(str)
--"tools/serviceGenerator.byte": package(yojson)
--"tools/serviceGenerator.byte": use_gapi-ocaml
--<tools/*.ml{,i,y}>: package(cryptokit)
--<tools/*.ml{,i,y}>: package(curl)
--<tools/*.ml{,i,y}>: package(extlib)
--<tools/*.ml{,i,y}>: package(monad-custom)
--<tools/*.ml{,i,y}>: package(netstring)
--<tools/*.ml{,i,y}>: package(str)
--<tools/*.ml{,i,y}>: package(yojson)
--<tools/*.ml{,i,y}>: use_gapi-ocaml
--# Executable oauth2Flow
--"examples/auth/oauth2Flow.byte": package(cryptokit)
--"examples/auth/oauth2Flow.byte": package(curl)
--"examples/auth/oauth2Flow.byte": package(extlib)
--"examples/auth/oauth2Flow.byte": package(nethttpd)
--"examples/auth/oauth2Flow.byte": package(netstring)
--"examples/auth/oauth2Flow.byte": package(str)
--"examples/auth/oauth2Flow.byte": package(xmlm)
--"examples/auth/oauth2Flow.byte": package(yojson)
--"examples/auth/oauth2Flow.byte": use_gapi-ocaml
--"examples/auth/oauth2Flow.byte": use_gdata
--<examples/auth/*.ml{,i,y}>: package(xmlm)
--<examples/auth/*.ml{,i,y}>: use_gdata
--# Executable oauth1Flow
--"examples/auth/oauth1Flow.byte": package(cryptokit)
--"examples/auth/oauth1Flow.byte": package(curl)
--"examples/auth/oauth1Flow.byte": package(extlib)
--"examples/auth/oauth1Flow.byte": package(nethttpd)
--"examples/auth/oauth1Flow.byte": package(netstring)
--"examples/auth/oauth1Flow.byte": package(str)
--"examples/auth/oauth1Flow.byte": package(yojson)
--"examples/auth/oauth1Flow.byte": use_gapi-ocaml
--# Executable clientLoginFlow
--"examples/auth/clientLoginFlow.byte": package(cryptokit)
--"examples/auth/clientLoginFlow.byte": package(curl)
--"examples/auth/clientLoginFlow.byte": package(extlib)
--"examples/auth/clientLoginFlow.byte": package(nethttpd)
--"examples/auth/clientLoginFlow.byte": package(netstring)
--"examples/auth/clientLoginFlow.byte": package(str)
--"examples/auth/clientLoginFlow.byte": package(yojson)
--"examples/auth/clientLoginFlow.byte": use_gapi-ocaml
--<examples/auth/*.ml{,i,y}>: package(cryptokit)
--<examples/auth/*.ml{,i,y}>: package(curl)
--<examples/auth/*.ml{,i,y}>: package(extlib)
--<examples/auth/*.ml{,i,y}>: package(nethttpd)
--<examples/auth/*.ml{,i,y}>: package(netstring)
--<examples/auth/*.ml{,i,y}>: package(str)
--<examples/auth/*.ml{,i,y}>: package(yojson)
--<examples/auth/*.ml{,i,y}>: use_gapi-ocaml
--# Executable refreshOAuth2Token
--"src/test/refreshOAuth2Token.byte": package(cryptokit)
--"src/test/refreshOAuth2Token.byte": package(curl)
--"src/test/refreshOAuth2Token.byte": package(extlib)
--"src/test/refreshOAuth2Token.byte": package(netstring)
--"src/test/refreshOAuth2Token.byte": package(oUnit)
--"src/test/refreshOAuth2Token.byte": package(str)
--"src/test/refreshOAuth2Token.byte": package(yojson)
--"src/test/refreshOAuth2Token.byte": use_gapi-ocaml
--# Executable test_suite
--"src/test/testSuite.byte": package(cryptokit)
--"src/test/testSuite.byte": package(curl)
--"src/test/testSuite.byte": package(extlib)
--"src/test/testSuite.byte": package(monad-custom)
--"src/test/testSuite.byte": package(netstring)
--"src/test/testSuite.byte": package(oUnit)
--"src/test/testSuite.byte": package(str)
--"src/test/testSuite.byte": package(xmlm)
--"src/test/testSuite.byte": package(yojson)
--"src/test/testSuite.byte": use_gapi-ocaml
--"src/test/testSuite.byte": use_gdata
--<src/test/*.ml{,i,y}>: package(cryptokit)
--<src/test/*.ml{,i,y}>: package(curl)
--<src/test/*.ml{,i,y}>: package(extlib)
--<src/test/*.ml{,i,y}>: package(monad-custom)
--<src/test/*.ml{,i,y}>: package(netstring)
--<src/test/*.ml{,i,y}>: package(oUnit)
--<src/test/*.ml{,i,y}>: package(str)
--<src/test/*.ml{,i,y}>: package(xmlm)
--<src/test/*.ml{,i,y}>: package(yojson)
--<src/test/*.ml{,i,y}>: use_gapi-ocaml
--<src/test/*.ml{,i,y}>: use_gdata
--# OASIS_STOP
-diff --git a/myocamlbuild.ml b/myocamlbuild.ml
-deleted file mode 100644
-index 0a02225b..00000000
---- a/myocamlbuild.ml
-+++ /dev/null
-@@ -1,902 +0,0 @@
--(* OASIS_START *)
--(* DO NOT EDIT (digest: 841fe3206a3bded1f34d8e80c1037a1d) *)
--module OASISGettext = struct
--(* # 22 "src/oasis/OASISGettext.ml" *)
--
--
-- let ns_ str = str
-- let s_ str = str
-- let f_ (str: ('a, 'b, 'c, 'd) format4) = str
--
--
-- let fn_ fmt1 fmt2 n =
-- if n = 1 then
-- fmt1^^""
-- else
-- fmt2^^""
--
--
-- let init = []
--end
--
--module OASISString = struct
--(* # 22 "src/oasis/OASISString.ml" *)
--
--
-- (** Various string utilities.
--
-- Mostly inspired by extlib and batteries ExtString and BatString libraries.
--
-- @author Sylvain Le Gall
-- *)
--
--
-- let nsplitf str f =
-- if str = "" then
-- []
-- else
-- let buf = Buffer.create 13 in
-- let lst = ref [] in
-- let push () =
-- lst := Buffer.contents buf :: !lst;
-- Buffer.clear buf
-- in
-- let str_len = String.length str in
-- for i = 0 to str_len - 1 do
-- if f str.[i] then
-- push ()
-- else
-- Buffer.add_char buf str.[i]
-- done;
-- push ();
-- List.rev !lst
--
--
-- (** [nsplit c s] Split the string [s] at char [c]. It doesn't include the
-- separator.
-- *)
-- let nsplit str c =
-- nsplitf str ((=) c)
--
--
-- let find ~what ?(offset=0) str =
-- let what_idx = ref 0 in
-- let str_idx = ref offset in
-- while !str_idx < String.length str &&
-- !what_idx < String.length what do
-- if str.[!str_idx] = what.[!what_idx] then
-- incr what_idx
-- else
-- what_idx := 0;
-- incr str_idx
-- done;
-- if !what_idx <> String.length what then
-- raise Not_found
-- else
-- !str_idx - !what_idx
--
--
-- let sub_start str len =
-- let str_len = String.length str in
-- if len >= str_len then
-- ""
-- else
-- String.sub str len (str_len - len)
--
--
-- let sub_end ?(offset=0) str len =
-- let str_len = String.length str in
-- if len >= str_len then
-- ""
-- else
-- String.sub str 0 (str_len - len)
--
--
-- let starts_with ~what ?(offset=0) str =
-- let what_idx = ref 0 in
-- let str_idx = ref offset in
-- let ok = ref true in
-- while !ok &&
-- !str_idx < String.length str &&
-- !what_idx < String.length what do
-- if str.[!str_idx] = what.[!what_idx] then
-- incr what_idx
-- else
-- ok := false;
-- incr str_idx
-- done;
-- !what_idx = String.length what
--
--
-- let strip_starts_with ~what str =
-- if starts_with ~what str then
-- sub_start str (String.length what)
-- else
-- raise Not_found
--
--
-- let ends_with ~what ?(offset=0) str =
-- let what_idx = ref ((String.length what) - 1) in
-- let str_idx = ref ((String.length str) - 1) in
-- let ok = ref true in
-- while !ok &&
-- offset <= !str_idx &&
-- 0 <= !what_idx do
-- if str.[!str_idx] = what.[!what_idx] then
-- decr what_idx
-- else
-- ok := false;
-- decr str_idx
-- done;
-- !what_idx = -1
--
--
-- let strip_ends_with ~what str =
-- if ends_with ~what str then
-- sub_end str (String.length what)
-- else
-- raise Not_found
--
--
-- let replace_chars f s =
-- let buf = Buffer.create (String.length s) in
-- String.iter (fun c -> Buffer.add_char buf (f c)) s;
-- Buffer.contents buf
--
-- let lowercase_ascii =
-- replace_chars
-- (fun c ->
-- if (c >= 'A' && c <= 'Z') then
-- Char.chr (Char.code c + 32)
-- else
-- c)
--
-- let uncapitalize_ascii s =
-- if s <> "" then
-- (lowercase_ascii (String.sub s 0 1)) ^ (String.sub s 1 ((String.length s) - 1))
-- else
-- s
--
-- let uppercase_ascii =
-- replace_chars
-- (fun c ->
-- if (c >= 'a' && c <= 'z') then
-- Char.chr (Char.code c - 32)
-- else
-- c)
--
-- let capitalize_ascii s =
-- if s <> "" then
-- (uppercase_ascii (String.sub s 0 1)) ^ (String.sub s 1 ((String.length s) - 1))
-- else
-- s
--
--end
--
--module OASISUtils = struct
--(* # 22 "src/oasis/OASISUtils.ml" *)
--
--
-- open OASISGettext
--
--
-- module MapExt =
-- struct
-- module type S =
-- sig
-- include Map.S
-- val add_list: 'a t -> (key * 'a) list -> 'a t
-- val of_list: (key * 'a) list -> 'a t
-- val to_list: 'a t -> (key * 'a) list
-- end
--
-- module Make (Ord: Map.OrderedType) =
-- struct
-- include Map.Make(Ord)
--
-- let rec add_list t =
-- function
-- | (k, v) :: tl -> add_list (add k v t) tl
-- | [] -> t
--
-- let of_list lst = add_list empty lst
--
-- let to_list t = fold (fun k v acc -> (k, v) :: acc) t []
-- end
-- end
--
--
-- module MapString = MapExt.Make(String)
--
--
-- module SetExt =
-- struct
-- module type S =
-- sig
-- include Set.S
-- val add_list: t -> elt list -> t
-- val of_list: elt list -> t
-- val to_list: t -> elt list
-- end
--
-- module Make (Ord: Set.OrderedType) =
-- struct
-- include Set.Make(Ord)
--
-- let rec add_list t =
-- function
-- | e :: tl -> add_list (add e t) tl
-- | [] -> t
--
-- let of_list lst = add_list empty lst
--
-- let to_list = elements
-- end
-- end
--
--
-- module SetString = SetExt.Make(String)
--
--
-- let compare_csl s1 s2 =
-- String.compare (OASISString.lowercase_ascii s1) (OASISString.lowercase_ascii s2)
--
--
-- module HashStringCsl =
-- Hashtbl.Make
-- (struct
-- type t = string
-- let equal s1 s2 = (compare_csl s1 s2) = 0
-- let hash s = Hashtbl.hash (OASISString.lowercase_ascii s)
-- end)
--
-- module SetStringCsl =
-- SetExt.Make
-- (struct
-- type t = string
-- let compare = compare_csl
-- end)
--
--
-- let varname_of_string ?(hyphen='_') s =
-- if String.length s = 0 then
-- begin
-- invalid_arg "varname_of_string"
-- end
-- else
-- begin
-- let buf =
-- OASISString.replace_chars
-- (fun c ->
-- if ('a' <= c && c <= 'z')
-- ||
-- ('A' <= c && c <= 'Z')
-- ||
-- ('0' <= c && c <= '9') then
-- c
-- else
-- hyphen)
-- s;
-- in
-- let buf =
-- (* Start with a _ if digit *)
-- if '0' <= s.[0] && s.[0] <= '9' then
-- "_"^buf
-- else
-- buf
-- in
-- OASISString.lowercase_ascii buf
-- end
--
--
-- let varname_concat ?(hyphen='_') p s =
-- let what = String.make 1 hyphen in
-- let p =
-- try
-- OASISString.strip_ends_with ~what p
-- with Not_found ->
-- p
-- in
-- let s =
-- try
-- OASISString.strip_starts_with ~what s
-- with Not_found ->
-- s
-- in
-- p^what^s
--
--
-- let is_varname str =
-- str = varname_of_string str
--
--
-- let failwithf fmt = Printf.ksprintf failwith fmt
--
--
-- let rec file_location ?pos1 ?pos2 ?lexbuf () =
-- match pos1, pos2, lexbuf with
-- | Some p, None, _ | None, Some p, _ ->
-- file_location ~pos1:p ~pos2:p ?lexbuf ()
-- | Some p1, Some p2, _ ->
-- let open Lexing in
-- let fn, lineno = p1.pos_fname, p1.pos_lnum in
-- let c1 = p1.pos_cnum - p1.pos_bol in
-- let c2 = c1 + (p2.pos_cnum - p1.pos_cnum) in
-- Printf.sprintf (f_ "file %S, line %d, characters %d-%d") fn lineno c1 c2
-- | _, _, Some lexbuf ->
-- file_location
-- ~pos1:(Lexing.lexeme_start_p lexbuf)
-- ~pos2:(Lexing.lexeme_end_p lexbuf)
-- ()
-- | None, None, None ->
-- s_ "<position undefined>"
--
--
-- let failwithpf ?pos1 ?pos2 ?lexbuf fmt =
-- let loc = file_location ?pos1 ?pos2 ?lexbuf () in
-- Printf.ksprintf (fun s -> failwith (Printf.sprintf "%s: %s" loc s)) fmt
--
--
--end
--
--module OASISExpr = struct
--(* # 22 "src/oasis/OASISExpr.ml" *)
--
--
-- open OASISGettext
-- open OASISUtils
--
--
-- type test = string
-- type flag = string
--
--
-- type t =
-- | EBool of bool
-- | ENot of t
-- | EAnd of t * t
-- | EOr of t * t
-- | EFlag of flag
-- | ETest of test * string
--
--
-- type 'a choices = (t * 'a) list
--
--
-- let eval var_get t =
-- let rec eval' =
-- function
-- | EBool b ->
-- b
--
-- | ENot e ->
-- not (eval' e)
--
-- | EAnd (e1, e2) ->
-- (eval' e1) && (eval' e2)
--
-- | EOr (e1, e2) ->
-- (eval' e1) || (eval' e2)
--
-- | EFlag nm ->
-- let v =
-- var_get nm
-- in
-- assert(v = "true" || v = "false");
-- (v = "true")
--
-- | ETest (nm, vl) ->
-- let v =
-- var_get nm
-- in
-- (v = vl)
-- in
-- eval' t
--
--
-- let choose ?printer ?name var_get lst =
-- let rec choose_aux =
-- function
-- | (cond, vl) :: tl ->
-- if eval var_get cond then
-- vl
-- else
-- choose_aux tl
-- | [] ->
-- let str_lst =
-- if lst = [] then
-- s_ "<empty>"
-- else
-- String.concat
-- (s_ ", ")
-- (List.map
-- (fun (cond, vl) ->
-- match printer with
-- | Some p -> p vl
-- | None -> s_ "<no printer>")
-- lst)
-- in
-- match name with
-- | Some nm ->
-- failwith
-- (Printf.sprintf
-- (f_ "No result for the choice list '%s': %s")
-- nm str_lst)
-- | None ->
-- failwith
-- (Printf.sprintf
-- (f_ "No result for a choice list: %s")
-- str_lst)
-- in
-- choose_aux (List.rev lst)
--
--
--end
--
--
--# 437 "myocamlbuild.ml"
--module BaseEnvLight = struct
--(* # 22 "src/base/BaseEnvLight.ml" *)
--
--
-- module MapString = Map.Make(String)
--
--
-- type t = string MapString.t
--
--
-- let default_filename = Filename.concat (Sys.getcwd ()) "setup.data"
--
--
-- let load ?(allow_empty=false) ?(filename=default_filename) ?stream () =
-- let line = ref 1 in
-- let lexer st =
-- let st_line =
-- Stream.from
-- (fun _ ->
-- try
-- match Stream.next st with
-- | '\n' -> incr line; Some '\n'
-- | c -> Some c
-- with Stream.Failure -> None)
-- in
-- Genlex.make_lexer ["="] st_line
-- in
-- let rec read_file lxr mp =
-- match Stream.npeek 3 lxr with
-- | [Genlex.Ident nm; Genlex.Kwd "="; Genlex.String value] ->
-- Stream.junk lxr; Stream.junk lxr; Stream.junk lxr;
-- read_file lxr (MapString.add nm value mp)
-- | [] -> mp
-- | _ ->
-- failwith
-- (Printf.sprintf "Malformed data file '%s' line %d" filename !line)
-- in
-- match stream with
-- | Some st -> read_file (lexer st) MapString.empty
-- | None ->
-- if Sys.file_exists filename then begin
-- let chn = open_in_bin filename in
-- let st = Stream.of_channel chn in
-- try
-- let mp = read_file (lexer st) MapString.empty in
-- close_in chn; mp
-- with e ->
-- close_in chn; raise e
-- end else if allow_empty then begin
-- MapString.empty
-- end else begin
-- failwith
-- (Printf.sprintf
-- "Unable to load environment, the file '%s' doesn't exist."
-- filename)
-- end
--
-- let rec var_expand str env =
-- let buff = Buffer.create ((String.length str) * 2) in
-- Buffer.add_substitute
-- buff
-- (fun var ->
-- try
-- var_expand (MapString.find var env) env
-- with Not_found ->
-- failwith
-- (Printf.sprintf
-- "No variable %s defined when trying to expand %S."
-- var
-- str))
-- str;
-- Buffer.contents buff
--
--
-- let var_get name env = var_expand (MapString.find name env) env
-- let var_choose lst env = OASISExpr.choose (fun nm -> var_get nm env) lst
--end
--
--
--# 517 "myocamlbuild.ml"
--module MyOCamlbuildFindlib = struct
--(* # 22 "src/plugins/ocamlbuild/MyOCamlbuildFindlib.ml" *)
--
--
-- (** OCamlbuild extension, copied from
-- * https://ocaml.org/learn/tutorials/ocamlbuild/Using_ocamlfind_with_ocamlbuild.html
-- * by N. Pouillard and others
-- *
-- * Updated on 2016-06-02
-- *
-- * Modified by Sylvain Le Gall
-- *)
-- open Ocamlbuild_plugin
--
--
-- type conf = {no_automatic_syntax: bool}
--
--
-- let run_and_read = Ocamlbuild_pack.My_unix.run_and_read
--
--
-- let blank_sep_strings = Ocamlbuild_pack.Lexers.blank_sep_strings
--
--
-- let exec_from_conf exec =
-- let exec =
-- let env = BaseEnvLight.load ~allow_empty:true () in
-- try
-- BaseEnvLight.var_get exec env
-- with Not_found ->
-- Printf.eprintf "W: Cannot get variable %s\n" exec;
-- exec
-- in
-- let fix_win32 str =
-- if Sys.os_type = "Win32" then begin
-- let buff = Buffer.create (String.length str) in
-- (* Adapt for windowsi, ocamlbuild + win32 has a hard time to handle '\\'.
-- *)
-- String.iter
-- (fun c -> Buffer.add_char buff (if c = '\\' then '/' else c))
-- str;
-- Buffer.contents buff
-- end else begin
-- str
-- end
-- in
-- fix_win32 exec
--
--
-- let split s ch =
-- let buf = Buffer.create 13 in
-- let x = ref [] in
-- let flush () =
-- x := (Buffer.contents buf) :: !x;
-- Buffer.clear buf
-- in
-- String.iter
-- (fun c ->
-- if c = ch then
-- flush ()
-- else
-- Buffer.add_char buf c)
-- s;
-- flush ();
-- List.rev !x
--
--
-- let split_nl s = split s '\n'
--
--
-- let before_space s =
-- try
-- String.before s (String.index s ' ')
-- with Not_found -> s
--
-- (* ocamlfind command *)
-- let ocamlfind x = S[Sh (exec_from_conf "ocamlfind"); x]
--
-- (* This lists all supported packages. *)
-- let find_packages () =
-- List.map before_space (split_nl & run_and_read (exec_from_conf "ocamlfind" ^ " list"))
--
--
-- (* Mock to list available syntaxes. *)
-- let find_syntaxes () = ["camlp4o"; "camlp4r"]
--
--
-- let well_known_syntax = [
-- "camlp4.quotations.o";
-- "camlp4.quotations.r";
-- "camlp4.exceptiontracer";
-- "camlp4.extend";
-- "camlp4.foldgenerator";
-- "camlp4.listcomprehension";
-- "camlp4.locationstripper";
-- "camlp4.macro";
-- "camlp4.mapgenerator";
-- "camlp4.metagenerator";
-- "camlp4.profiler";
-- "camlp4.tracer"
-- ]
--
--
-- let dispatch conf =
-- function
-- | After_options ->
-- (* By using Before_options one let command line options have an higher
-- * priority on the contrary using After_options will guarantee to have
-- * the higher priority override default commands by ocamlfind ones *)
-- Options.ocamlc := ocamlfind & A"ocamlc";
-- Options.ocamlopt := ocamlfind & A"ocamlopt";
-- Options.ocamldep := ocamlfind & A"ocamldep";
-- Options.ocamldoc := ocamlfind & A"ocamldoc";
-- Options.ocamlmktop := ocamlfind & A"ocamlmktop";
-- Options.ocamlmklib := ocamlfind & A"ocamlmklib"
--
-- | After_rules ->
--
-- (* Avoid warnings for unused tag *)
-- flag ["tests"] N;
--
-- (* When one link an OCaml library/binary/package, one should use
-- * -linkpkg *)
-- flag ["ocaml"; "link"; "program"] & A"-linkpkg";
--
-- (* For each ocamlfind package one inject the -package option when
-- * compiling, computing dependencies, generating documentation and
-- * linking. *)
-- List.iter
-- begin fun pkg ->
-- let base_args = [A"-package"; A pkg] in
-- (* TODO: consider how to really choose camlp4o or camlp4r. *)
-- let syn_args = [A"-syntax"; A "camlp4o"] in
-- let (args, pargs) =
-- (* Heuristic to identify syntax extensions: whether they end in
-- ".syntax"; some might not.
-- *)
-- if not (conf.no_automatic_syntax) &&
-- (Filename.check_suffix pkg "syntax" ||
-- List.mem pkg well_known_syntax) then
-- (syn_args @ base_args, syn_args)
-- else
-- (base_args, [])
-- in
-- flag ["ocaml"; "compile"; "pkg_"^pkg] & S args;
-- flag ["ocaml"; "ocamldep"; "pkg_"^pkg] & S args;
-- flag ["ocaml"; "doc"; "pkg_"^pkg] & S args;
-- flag ["ocaml"; "link"; "pkg_"^pkg] & S base_args;
-- flag ["ocaml"; "infer_interface"; "pkg_"^pkg] & S args;
--
-- (* TODO: Check if this is allowed for OCaml < 3.12.1 *)
-- flag ["ocaml"; "compile"; "package("^pkg^")"] & S pargs;
-- flag ["ocaml"; "ocamldep"; "package("^pkg^")"] & S pargs;
-- flag ["ocaml"; "doc"; "package("^pkg^")"] & S pargs;
-- flag ["ocaml"; "infer_interface"; "package("^pkg^")"] & S pargs;
-- end
-- (find_packages ());
--
-- (* Like -package but for extensions syntax. Morover -syntax is useless
-- * when linking. *)
-- List.iter begin fun syntax ->
-- flag ["ocaml"; "compile"; "syntax_"^syntax] & S[A"-syntax"; A syntax];
-- flag ["ocaml"; "ocamldep"; "syntax_"^syntax] & S[A"-syntax"; A syntax];
-- flag ["ocaml"; "doc"; "syntax_"^syntax] & S[A"-syntax"; A syntax];
-- flag ["ocaml"; "infer_interface"; "syntax_"^syntax] &
-- S[A"-syntax"; A syntax];
-- end (find_syntaxes ());
--
-- (* The default "thread" tag is not compatible with ocamlfind.
-- * Indeed, the default rules add the "threads.cma" or "threads.cmxa"
-- * options when using this tag. When using the "-linkpkg" option with
-- * ocamlfind, this module will then be added twice on the command line.
-- *
-- * To solve this, one approach is to add the "-thread" option when using
-- * the "threads" package using the previous plugin.
-- *)
-- flag ["ocaml"; "pkg_threads"; "compile"] (S[A "-thread"]);
-- flag ["ocaml"; "pkg_threads"; "doc"] (S[A "-I"; A "+threads"]);
-- flag ["ocaml"; "pkg_threads"; "link"] (S[A "-thread"]);
-- flag ["ocaml"; "pkg_threads"; "infer_interface"] (S[A "-thread"]);
-- flag ["c"; "pkg_threads"; "compile"] (S[A "-thread"]);
-- flag ["ocaml"; "package(threads)"; "compile"] (S[A "-thread"]);
-- flag ["ocaml"; "package(threads)"; "doc"] (S[A "-I"; A "+threads"]);
-- flag ["ocaml"; "package(threads)"; "link"] (S[A "-thread"]);
-- flag ["ocaml"; "package(threads)"; "infer_interface"] (S[A "-thread"]);
-- flag ["c"; "package(threads)"; "compile"] (S[A "-thread"]);
--
-- | _ ->
-- ()
--end
--
--module MyOCamlbuildBase = struct
--(* # 22 "src/plugins/ocamlbuild/MyOCamlbuildBase.ml" *)
--
--
-- (** Base functions for writing myocamlbuild.ml
-- @author Sylvain Le Gall
-- *)
--
--
-- open Ocamlbuild_plugin
-- module OC = Ocamlbuild_pack.Ocaml_compiler
--
--
-- type dir = string
-- type file = string
-- type name = string
-- type tag = string
--
--
-- type t =
-- {
-- lib_ocaml: (name * dir list * string list) list;
-- lib_c: (name * dir * file list) list;
-- flags: (tag list * (spec OASISExpr.choices)) list;
-- (* Replace the 'dir: include' from _tags by a precise interdepends in
-- * directory.
-- *)
-- includes: (dir * dir list) list;
-- }
--
--
--(* # 110 "src/plugins/ocamlbuild/MyOCamlbuildBase.ml" *)
--
--
-- let env_filename = Pathname.basename BaseEnvLight.default_filename
--
--
-- let dispatch_combine lst =
-- fun e ->
-- List.iter
-- (fun dispatch -> dispatch e)
-- lst
--
--
-- let tag_libstubs nm =
-- "use_lib"^nm^"_stubs"
--
--
-- let nm_libstubs nm =
-- nm^"_stubs"
--
--
-- let dispatch t e =
-- let env = BaseEnvLight.load ~allow_empty:true () in
-- match e with
-- | Before_options ->
-- let no_trailing_dot s =
-- if String.length s >= 1 && s.[0] = '.' then
-- String.sub s 1 ((String.length s) - 1)
-- else
-- s
-- in
-- List.iter
-- (fun (opt, var) ->
-- try
-- opt := no_trailing_dot (BaseEnvLight.var_get var env)
-- with Not_found ->
-- Printf.eprintf "W: Cannot get variable %s\n" var)
-- [
-- Options.ext_obj, "ext_obj";
-- Options.ext_lib, "ext_lib";
-- Options.ext_dll, "ext_dll";
-- ]
--
-- | After_rules ->
-- (* Declare OCaml libraries *)
-- List.iter
-- (function
-- | nm, [], intf_modules ->
-- ocaml_lib nm;
-- let cmis =
-- List.map (fun m -> (OASISString.uncapitalize_ascii m) ^ ".cmi")
-- intf_modules in
-- dep ["ocaml"; "link"; "library"; "file:"^nm^".cma"] cmis
-- | nm, dir :: tl, intf_modules ->
-- ocaml_lib ~dir:dir (dir^"/"^nm);
-- List.iter
-- (fun dir ->
-- List.iter
-- (fun str ->
-- flag ["ocaml"; "use_"^nm; str] (S[A"-I"; P dir]))
-- ["compile"; "infer_interface"; "doc"])
-- tl;
-- let cmis =
-- List.map (fun m -> dir^"/"^(OASISString.uncapitalize_ascii m)^".cmi")
-- intf_modules in
-- dep ["ocaml"; "link"; "library"; "file:"^dir^"/"^nm^".cma"]
-- cmis)
-- t.lib_ocaml;
--
-- (* Declare directories dependencies, replace "include" in _tags. *)
-- List.iter
-- (fun (dir, include_dirs) ->
-- Pathname.define_context dir include_dirs)
-- t.includes;
--
-- (* Declare C libraries *)
-- List.iter
-- (fun (lib, dir, headers) ->
-- (* Handle C part of library *)
-- flag ["link"; "library"; "ocaml"; "byte"; tag_libstubs lib]
-- (S[A"-dllib"; A("-l"^(nm_libstubs lib)); A"-cclib";
-- A("-l"^(nm_libstubs lib))]);
--
-- flag ["link"; "library"; "ocaml"; "native"; tag_libstubs lib]
-- (S[A"-cclib"; A("-l"^(nm_libstubs lib))]);
--
-- if bool_of_string (BaseEnvLight.var_get "native_dynlink" env) then
-- flag ["link"; "program"; "ocaml"; "byte"; tag_libstubs lib]
-- (S[A"-dllib"; A("dll"^(nm_libstubs lib))]);
--
-- (* When ocaml link something that use the C library, then one
-- need that file to be up to date.
-- This holds both for programs and for libraries.
-- *)
-- dep ["link"; "ocaml"; tag_libstubs lib]
-- [dir/"lib"^(nm_libstubs lib)^"."^(!Options.ext_lib)];
--
-- dep ["compile"; "ocaml"; tag_libstubs lib]
-- [dir/"lib"^(nm_libstubs lib)^"."^(!Options.ext_lib)];
--
-- (* TODO: be more specific about what depends on headers *)
-- (* Depends on .h files *)
-- dep ["compile"; "c"]
-- headers;
--
-- (* Setup search path for lib *)
-- flag ["link"; "ocaml"; "use_"^lib]
-- (S[A"-I"; P(dir)]);
-- )
-- t.lib_c;
--
-- (* Add flags *)
-- List.iter
-- (fun (tags, cond_specs) ->
-- let spec = BaseEnvLight.var_choose cond_specs env in
-- let rec eval_specs =
-- function
-- | S lst -> S (List.map eval_specs lst)
-- | A str -> A (BaseEnvLight.var_expand str env)
-- | spec -> spec
-- in
-- flag tags & (eval_specs spec))
-- t.flags
-- | _ ->
-- ()
--
--
-- let dispatch_default conf t =
-- dispatch_combine
-- [
-- dispatch t;
-- MyOCamlbuildFindlib.dispatch conf;
-- ]
--
--
--end
--
--
--# 878 "myocamlbuild.ml"
--open Ocamlbuild_plugin;;
--let package_default =
-- {
-- MyOCamlbuildBase.lib_ocaml =
-- [("gapi-ocaml", ["src/gapi"], []); ("gdata", ["src/gdata"], [])];
-- lib_c = [];
-- flags = [];
-- includes =
-- [
-- ("tools", ["src/gapi"]);
-- ("src/test", ["src/gapi"; "src/gdata"]);
-- ("src/gdata", ["src/gapi"]);
-- ("examples/auth", ["src/gapi"; "src/gdata"])
-- ]
-- }
-- ;;
--
--let conf = {MyOCamlbuildFindlib.no_automatic_syntax = false}
--
--let dispatch_default = MyOCamlbuildBase.dispatch_default conf package_default;;
--
--# 901 "myocamlbuild.ml"
--(* OASIS_STOP *)
--Ocamlbuild_plugin.dispatch dispatch_default;;
-diff --git a/opam/descr b/opam/descr
-deleted file mode 100644
-index 9fab749d..00000000
---- a/opam/descr
-+++ /dev/null
-@@ -1,11 +0,0 @@
--A simple OCaml client for Google Services.
--gapi-ocaml is a simple, unofficial, OCaml client for Google Services.
--The library supports ClientLogin, OAuth 1.0a, and OAuth 2.0
--authentication. Supported RESTful APIs: Calendar APIs v3, Google+ API
--v1, Tasks API v1, APIs Discovery Service v1, URL Shortener API v1,
--OAuth2 API v2, Custom Search API v1, Google Analytics API v3, Page
--Speed Online API v1, Blogger API v2, Site Verification API v1, AdSense
--Management API v1.4, BigQuery API v2, Drive API v2, Drive API v3,
--Gmail API v1. Google Data Protocol APIs (GData): Google Documents List
--API v3.
--
-diff --git a/opam/findlib b/opam/findlib
-deleted file mode 100644
-index 2fb603eb..00000000
---- a/opam/findlib
-+++ /dev/null
-@@ -1 +0,0 @@
--gapi-ocaml
-diff --git a/opam/opam b/opam/opam
-deleted file mode 100644
-index b971722b..00000000
---- a/opam/opam
-+++ /dev/null
-@@ -1,36 +0,0 @@
--opam-version: "1.2"
--maintainer: "Alessandro Strada <alessandro.strada at gmail.com>"
--authors: [ "Alessandro Strada" ]
--license: "MIT"
--homepage: "https://github.com/astrada/gapi-ocaml"
--dev-repo: "https://github.com/astrada/gapi-ocaml.git"
--bug-reports: "https://github.com/astrada/gapi-ocaml/issues"
--build: [
-- ["ocaml" "setup.ml" "-configure" "--prefix" prefix]
-- ["ocaml" "setup.ml" "-build"]
--]
--install: ["ocaml" "setup.ml" "-install"]
--remove: [
-- ["ocamlfind" "remove" "gapi-ocaml"]
--]
--build-test: [
-- ["ocaml" "setup.ml" "-configure" "--enable-tests"]
-- ["ocaml" "setup.ml" "-build"]
-- ["ocaml" "setup.ml" "-test"]
--]
--build-doc: [ "ocaml" "setup.ml" "-doc" ]
--depends: [
-- "cryptokit"
-- ("extlib" | "extlib-compat")
-- "ocamlbuild" {build}
-- "ocamlfind" {build}
-- "ocamlnet" {>= "4.1.4"}
-- "ocurl"
-- "xmlm"
-- "yojson"
--]
--depopts: [
-- "ounit" {build & test}
-- "pa_monad_custom" {build}
--]
--available: [ ocaml-version >= "4.02.3" ]
-diff --git a/setup.ml b/setup.ml
-deleted file mode 100644
-index c9e89063..00000000
---- a/setup.ml
-+++ /dev/null
-@@ -1,8484 +0,0 @@
--(* setup.ml generated for the first time by OASIS v0.2.1~alpha1 *)
--
--(* OASIS_START *)
--(* DO NOT EDIT (digest: c0cec11d1d83752facce6588de6ab9c2) *)
--(*
-- Regenerated by OASIS v0.4.10
-- Visit http://oasis.forge.ocamlcore.org for more information and
-- documentation about functions used in this file.
--*)
--module OASISGettext = struct
--(* # 22 "src/oasis/OASISGettext.ml" *)
--
--
-- let ns_ str = str
-- let s_ str = str
-- let f_ (str: ('a, 'b, 'c, 'd) format4) = str
--
--
-- let fn_ fmt1 fmt2 n =
-- if n = 1 then
-- fmt1^^""
-- else
-- fmt2^^""
--
--
-- let init = []
--end
--
--module OASISString = struct
--(* # 22 "src/oasis/OASISString.ml" *)
--
--
-- (** Various string utilities.
--
-- Mostly inspired by extlib and batteries ExtString and BatString libraries.
--
-- @author Sylvain Le Gall
-- *)
--
--
-- let nsplitf str f =
-- if str = "" then
-- []
-- else
-- let buf = Buffer.create 13 in
-- let lst = ref [] in
-- let push () =
-- lst := Buffer.contents buf :: !lst;
-- Buffer.clear buf
-- in
-- let str_len = String.length str in
-- for i = 0 to str_len - 1 do
-- if f str.[i] then
-- push ()
-- else
-- Buffer.add_char buf str.[i]
-- done;
-- push ();
-- List.rev !lst
--
--
-- (** [nsplit c s] Split the string [s] at char [c]. It doesn't include the
-- separator.
-- *)
-- let nsplit str c =
-- nsplitf str ((=) c)
--
--
-- let find ~what ?(offset=0) str =
-- let what_idx = ref 0 in
-- let str_idx = ref offset in
-- while !str_idx < String.length str &&
-- !what_idx < String.length what do
-- if str.[!str_idx] = what.[!what_idx] then
-- incr what_idx
-- else
-- what_idx := 0;
-- incr str_idx
-- done;
-- if !what_idx <> String.length what then
-- raise Not_found
-- else
-- !str_idx - !what_idx
--
--
-- let sub_start str len =
-- let str_len = String.length str in
-- if len >= str_len then
-- ""
-- else
-- String.sub str len (str_len - len)
--
--
-- let sub_end ?(offset=0) str len =
-- let str_len = String.length str in
-- if len >= str_len then
-- ""
-- else
-- String.sub str 0 (str_len - len)
--
--
-- let starts_with ~what ?(offset=0) str =
-- let what_idx = ref 0 in
-- let str_idx = ref offset in
-- let ok = ref true in
-- while !ok &&
-- !str_idx < String.length str &&
-- !what_idx < String.length what do
-- if str.[!str_idx] = what.[!what_idx] then
-- incr what_idx
-- else
-- ok := false;
-- incr str_idx
-- done;
-- !what_idx = String.length what
--
--
-- let strip_starts_with ~what str =
-- if starts_with ~what str then
-- sub_start str (String.length what)
-- else
-- raise Not_found
--
--
-- let ends_with ~what ?(offset=0) str =
-- let what_idx = ref ((String.length what) - 1) in
-- let str_idx = ref ((String.length str) - 1) in
-- let ok = ref true in
-- while !ok &&
-- offset <= !str_idx &&
-- 0 <= !what_idx do
-- if str.[!str_idx] = what.[!what_idx] then
-- decr what_idx
-- else
-- ok := false;
-- decr str_idx
-- done;
-- !what_idx = -1
--
--
-- let strip_ends_with ~what str =
-- if ends_with ~what str then
-- sub_end str (String.length what)
-- else
-- raise Not_found
--
--
-- let replace_chars f s =
-- let buf = Buffer.create (String.length s) in
-- String.iter (fun c -> Buffer.add_char buf (f c)) s;
-- Buffer.contents buf
--
-- let lowercase_ascii =
-- replace_chars
-- (fun c ->
-- if (c >= 'A' && c <= 'Z') then
-- Char.chr (Char.code c + 32)
-- else
-- c)
--
-- let uncapitalize_ascii s =
-- if s <> "" then
-- (lowercase_ascii (String.sub s 0 1)) ^ (String.sub s 1 ((String.length s) - 1))
-- else
-- s
--
-- let uppercase_ascii =
-- replace_chars
-- (fun c ->
-- if (c >= 'a' && c <= 'z') then
-- Char.chr (Char.code c - 32)
-- else
-- c)
--
-- let capitalize_ascii s =
-- if s <> "" then
-- (uppercase_ascii (String.sub s 0 1)) ^ (String.sub s 1 ((String.length s) - 1))
-- else
-- s
--
--end
--
--module OASISUtils = struct
--(* # 22 "src/oasis/OASISUtils.ml" *)
--
--
-- open OASISGettext
--
--
-- module MapExt =
-- struct
-- module type S =
-- sig
-- include Map.S
-- val add_list: 'a t -> (key * 'a) list -> 'a t
-- val of_list: (key * 'a) list -> 'a t
-- val to_list: 'a t -> (key * 'a) list
-- end
--
-- module Make (Ord: Map.OrderedType) =
-- struct
-- include Map.Make(Ord)
--
-- let rec add_list t =
-- function
-- | (k, v) :: tl -> add_list (add k v t) tl
-- | [] -> t
--
-- let of_list lst = add_list empty lst
--
-- let to_list t = fold (fun k v acc -> (k, v) :: acc) t []
-- end
-- end
--
--
-- module MapString = MapExt.Make(String)
--
--
-- module SetExt =
-- struct
-- module type S =
-- sig
-- include Set.S
-- val add_list: t -> elt list -> t
-- val of_list: elt list -> t
-- val to_list: t -> elt list
-- end
--
-- module Make (Ord: Set.OrderedType) =
-- struct
-- include Set.Make(Ord)
--
-- let rec add_list t =
-- function
-- | e :: tl -> add_list (add e t) tl
-- | [] -> t
--
-- let of_list lst = add_list empty lst
--
-- let to_list = elements
-- end
-- end
--
--
-- module SetString = SetExt.Make(String)
--
--
-- let compare_csl s1 s2 =
-- String.compare (OASISString.lowercase_ascii s1) (OASISString.lowercase_ascii s2)
--
--
-- module HashStringCsl =
-- Hashtbl.Make
-- (struct
-- type t = string
-- let equal s1 s2 = (compare_csl s1 s2) = 0
-- let hash s = Hashtbl.hash (OASISString.lowercase_ascii s)
-- end)
--
-- module SetStringCsl =
-- SetExt.Make
-- (struct
-- type t = string
-- let compare = compare_csl
-- end)
--
--
-- let varname_of_string ?(hyphen='_') s =
-- if String.length s = 0 then
-- begin
-- invalid_arg "varname_of_string"
-- end
-- else
-- begin
-- let buf =
-- OASISString.replace_chars
-- (fun c ->
-- if ('a' <= c && c <= 'z')
-- ||
-- ('A' <= c && c <= 'Z')
-- ||
-- ('0' <= c && c <= '9') then
-- c
-- else
-- hyphen)
-- s;
-- in
-- let buf =
-- (* Start with a _ if digit *)
-- if '0' <= s.[0] && s.[0] <= '9' then
-- "_"^buf
-- else
-- buf
-- in
-- OASISString.lowercase_ascii buf
-- end
--
--
-- let varname_concat ?(hyphen='_') p s =
-- let what = String.make 1 hyphen in
-- let p =
-- try
-- OASISString.strip_ends_with ~what p
-- with Not_found ->
-- p
-- in
-- let s =
-- try
-- OASISString.strip_starts_with ~what s
-- with Not_found ->
-- s
-- in
-- p^what^s
--
--
-- let is_varname str =
-- str = varname_of_string str
--
--
-- let failwithf fmt = Printf.ksprintf failwith fmt
--
--
-- let rec file_location ?pos1 ?pos2 ?lexbuf () =
-- match pos1, pos2, lexbuf with
-- | Some p, None, _ | None, Some p, _ ->
-- file_location ~pos1:p ~pos2:p ?lexbuf ()
-- | Some p1, Some p2, _ ->
-- let open Lexing in
-- let fn, lineno = p1.pos_fname, p1.pos_lnum in
-- let c1 = p1.pos_cnum - p1.pos_bol in
-- let c2 = c1 + (p2.pos_cnum - p1.pos_cnum) in
-- Printf.sprintf (f_ "file %S, line %d, characters %d-%d") fn lineno c1 c2
-- | _, _, Some lexbuf ->
-- file_location
-- ~pos1:(Lexing.lexeme_start_p lexbuf)
-- ~pos2:(Lexing.lexeme_end_p lexbuf)
-- ()
-- | None, None, None ->
-- s_ "<position undefined>"
--
--
-- let failwithpf ?pos1 ?pos2 ?lexbuf fmt =
-- let loc = file_location ?pos1 ?pos2 ?lexbuf () in
-- Printf.ksprintf (fun s -> failwith (Printf.sprintf "%s: %s" loc s)) fmt
--
--
--end
--
--module OASISUnixPath = struct
--(* # 22 "src/oasis/OASISUnixPath.ml" *)
--
--
-- type unix_filename = string
-- type unix_dirname = string
--
--
-- type host_filename = string
-- type host_dirname = string
--
--
-- let current_dir_name = "."
--
--
-- let parent_dir_name = ".."
--
--
-- let is_current_dir fn =
-- fn = current_dir_name || fn = ""
--
--
-- let concat f1 f2 =
-- if is_current_dir f1 then
-- f2
-- else
-- let f1' =
-- try OASISString.strip_ends_with ~what:"/" f1 with Not_found -> f1
-- in
-- f1'^"/"^f2
--
--
-- let make =
-- function
-- | hd :: tl ->
-- List.fold_left
-- (fun f p -> concat f p)
-- hd
-- tl
-- | [] ->
-- invalid_arg "OASISUnixPath.make"
--
--
-- let dirname f =
-- try
-- String.sub f 0 (String.rindex f '/')
-- with Not_found ->
-- current_dir_name
--
--
-- let basename f =
-- try
-- let pos_start =
-- (String.rindex f '/') + 1
-- in
-- String.sub f pos_start ((String.length f) - pos_start)
-- with Not_found ->
-- f
--
--
-- let chop_extension f =
-- try
-- let last_dot =
-- String.rindex f '.'
-- in
-- let sub =
-- String.sub f 0 last_dot
-- in
-- try
-- let last_slash =
-- String.rindex f '/'
-- in
-- if last_slash < last_dot then
-- sub
-- else
-- f
-- with Not_found ->
-- sub
--
-- with Not_found ->
-- f
--
--
-- let capitalize_file f =
-- let dir = dirname f in
-- let base = basename f in
-- concat dir (OASISString.capitalize_ascii base)
--
--
-- let uncapitalize_file f =
-- let dir = dirname f in
-- let base = basename f in
-- concat dir (OASISString.uncapitalize_ascii base)
--
--
--end
--
--module OASISHostPath = struct
--(* # 22 "src/oasis/OASISHostPath.ml" *)
--
--
-- open Filename
-- open OASISGettext
--
--
-- module Unix = OASISUnixPath
--
--
-- let make =
-- function
-- | [] ->
-- invalid_arg "OASISHostPath.make"
-- | hd :: tl ->
-- List.fold_left Filename.concat hd tl
--
--
-- let of_unix ufn =
-- match Sys.os_type with
-- | "Unix" | "Cygwin" -> ufn
-- | "Win32" ->
-- make
-- (List.map
-- (fun p ->
-- if p = Unix.current_dir_name then
-- current_dir_name
-- else if p = Unix.parent_dir_name then
-- parent_dir_name
-- else
-- p)
-- (OASISString.nsplit ufn '/'))
-- | os_type ->
-- OASISUtils.failwithf
-- (f_ "Don't know the path format of os_type %S when translating unix \
-- filename. %S")
-- os_type ufn
--
--
--end
--
--module OASISFileSystem = struct
--(* # 22 "src/oasis/OASISFileSystem.ml" *)
--
-- (** File System functions
--
-- @author Sylvain Le Gall
-- *)
--
-- type 'a filename = string
--
-- class type closer =
-- object
-- method close: unit
-- end
--
-- class type reader =
-- object
-- inherit closer
-- method input: Buffer.t -> int -> unit
-- end
--
-- class type writer =
-- object
-- inherit closer
-- method output: Buffer.t -> unit
-- end
--
-- class type ['a] fs =
-- object
-- method string_of_filename: 'a filename -> string
-- method open_out: ?mode:(open_flag list) -> ?perm:int -> 'a filename -> writer
-- method open_in: ?mode:(open_flag list) -> ?perm:int -> 'a filename -> reader
-- method file_exists: 'a filename -> bool
-- method remove: 'a filename -> unit
-- end
--
--
-- module Mode =
-- struct
-- let default_in = [Open_rdonly]
-- let default_out = [Open_wronly; Open_creat; Open_trunc]
--
-- let text_in = Open_text :: default_in
-- let text_out = Open_text :: default_out
--
-- let binary_in = Open_binary :: default_in
-- let binary_out = Open_binary :: default_out
-- end
--
-- let std_length = 4096 (* Standard buffer/read length. *)
-- let binary_out = Mode.binary_out
-- let binary_in = Mode.binary_in
--
-- let of_unix_filename ufn = (ufn: 'a filename)
-- let to_unix_filename fn = (fn: string)
--
--
-- let defer_close o f =
-- try
-- let r = f o in o#close; r
-- with e ->
-- o#close; raise e
--
--
-- let stream_of_reader rdr =
-- let buf = Buffer.create std_length in
-- let pos = ref 0 in
-- let eof = ref false in
-- let rec next idx =
-- let bpos = idx - !pos in
-- if !eof then begin
-- None
-- end else if bpos < Buffer.length buf then begin
-- Some (Buffer.nth buf bpos)
-- end else begin
-- pos := !pos + Buffer.length buf;
-- Buffer.clear buf;
-- begin
-- try
-- rdr#input buf std_length;
-- with End_of_file ->
-- if Buffer.length buf = 0 then
-- eof := true
-- end;
-- next idx
-- end
-- in
-- Stream.from next
--
--
-- let read_all buf rdr =
-- try
-- while true do
-- rdr#input buf std_length
-- done
-- with End_of_file ->
-- ()
--
-- class ['a] host_fs rootdir : ['a] fs =
-- object (self)
-- method private host_filename fn = Filename.concat rootdir fn
-- method string_of_filename = self#host_filename
--
-- method open_out ?(mode=Mode.text_out) ?(perm=0o666) fn =
-- let chn = open_out_gen mode perm (self#host_filename fn) in
-- object
-- method close = close_out chn
-- method output buf = Buffer.output_buffer chn buf
-- end
--
-- method open_in ?(mode=Mode.text_in) ?(perm=0o666) fn =
-- (* TODO: use Buffer.add_channel when minimal version of OCaml will
-- * be >= 4.03.0 (previous version was discarding last chars).
-- *)
-- let chn = open_in_gen mode perm (self#host_filename fn) in
-- let strm = Stream.of_channel chn in
-- object
-- method close = close_in chn
-- method input buf len =
-- let read = ref 0 in
-- try
-- for _i = 0 to len do
-- Buffer.add_char buf (Stream.next strm);
-- incr read
-- done
-- with Stream.Failure ->
-- if !read = 0 then
-- raise End_of_file
-- end
--
-- method file_exists fn = Sys.file_exists (self#host_filename fn)
-- method remove fn = Sys.remove (self#host_filename fn)
-- end
--
--end
--
--module OASISContext = struct
--(* # 22 "src/oasis/OASISContext.ml" *)
--
--
-- open OASISGettext
--
--
-- type level =
-- [ `Debug
-- | `Info
-- | `Warning
-- | `Error]
--
--
-- type source
-- type source_filename = source OASISFileSystem.filename
--
--
-- let in_srcdir ufn = OASISFileSystem.of_unix_filename ufn
--
--
-- type t =
-- {
-- (* TODO: replace this by a proplist. *)
-- quiet: bool;
-- info: bool;
-- debug: bool;
-- ignore_plugins: bool;
-- ignore_unknown_fields: bool;
-- printf: level -> string -> unit;
-- srcfs: source OASISFileSystem.fs;
-- load_oasis_plugin: string -> bool;
-- }
--
--
-- let printf lvl str =
-- let beg =
-- match lvl with
-- | `Error -> s_ "E: "
-- | `Warning -> s_ "W: "
-- | `Info -> s_ "I: "
-- | `Debug -> s_ "D: "
-- in
-- prerr_endline (beg^str)
--
--
-- let default =
-- ref
-- {
-- quiet = false;
-- info = false;
-- debug = false;
-- ignore_plugins = false;
-- ignore_unknown_fields = false;
-- printf = printf;
-- srcfs = new OASISFileSystem.host_fs(Sys.getcwd ());
-- load_oasis_plugin = (fun _ -> false);
-- }
--
--
-- let quiet =
-- {!default with quiet = true}
--
--
-- let fspecs () =
-- (* TODO: don't act on default. *)
-- let ignore_plugins = ref false in
-- ["-quiet",
-- Arg.Unit (fun () -> default := {!default with quiet = true}),
-- s_ " Run quietly";
--
-- "-info",
-- Arg.Unit (fun () -> default := {!default with info = true}),
-- s_ " Display information message";
--
--
-- "-debug",
-- Arg.Unit (fun () -> default := {!default with debug = true}),
-- s_ " Output debug message";
--
-- "-ignore-plugins",
-- Arg.Set ignore_plugins,
-- s_ " Ignore plugin's field.";
--
-- "-C",
-- Arg.String
-- (fun str ->
-- Sys.chdir str;
-- default := {!default with srcfs = new OASISFileSystem.host_fs str}),
-- s_ "dir Change directory before running (affects setup.{data,log})."],
-- fun () -> {!default with ignore_plugins = !ignore_plugins}
--end
--
--module PropList = struct
--(* # 22 "src/oasis/PropList.ml" *)
--
--
-- open OASISGettext
--
--
-- type name = string
--
--
-- exception Not_set of name * string option
-- exception No_printer of name
-- exception Unknown_field of name * name
--
--
-- let () =
-- Printexc.register_printer
-- (function
-- | Not_set (nm, Some rsn) ->
-- Some
-- (Printf.sprintf (f_ "Field '%s' is not set: %s") nm rsn)
-- | Not_set (nm, None) ->
-- Some
-- (Printf.sprintf (f_ "Field '%s' is not set") nm)
-- | No_printer nm ->
-- Some
-- (Printf.sprintf (f_ "No default printer for value %s") nm)
-- | Unknown_field (nm, schm) ->
-- Some
-- (Printf.sprintf
-- (f_ "Field %s is not defined in schema %s") nm schm)
-- | _ ->
-- None)
--
--
-- module Data =
-- struct
-- type t =
-- (name, unit -> unit) Hashtbl.t
--
-- let create () =
-- Hashtbl.create 13
--
-- let clear t =
-- Hashtbl.clear t
--
--
--(* # 77 "src/oasis/PropList.ml" *)
-- end
--
--
-- module Schema =
-- struct
-- type ('ctxt, 'extra) value =
-- {
-- get: Data.t -> string;
-- set: Data.t -> ?context:'ctxt -> string -> unit;
-- help: (unit -> string) option;
-- extra: 'extra;
-- }
--
-- type ('ctxt, 'extra) t =
-- {
-- name: name;
-- fields: (name, ('ctxt, 'extra) value) Hashtbl.t;
-- order: name Queue.t;
-- name_norm: string -> string;
-- }
--
-- let create ?(case_insensitive=false) nm =
-- {
-- name = nm;
-- fields = Hashtbl.create 13;
-- order = Queue.create ();
-- name_norm =
-- (if case_insensitive then
-- OASISString.lowercase_ascii
-- else
-- fun s -> s);
-- }
--
-- let add t nm set get extra help =
-- let key =
-- t.name_norm nm
-- in
--
-- if Hashtbl.mem t.fields key then
-- failwith
-- (Printf.sprintf
-- (f_ "Field '%s' is already defined in schema '%s'")
-- nm t.name);
-- Hashtbl.add
-- t.fields
-- key
-- {
-- set = set;
-- get = get;
-- help = help;
-- extra = extra;
-- };
-- Queue.add nm t.order
--
-- let mem t nm =
-- Hashtbl.mem t.fields nm
--
-- let find t nm =
-- try
-- Hashtbl.find t.fields (t.name_norm nm)
-- with Not_found ->
-- raise (Unknown_field (nm, t.name))
--
-- let get t data nm =
-- (find t nm).get data
--
-- let set t data nm ?context x =
-- (find t nm).set
-- data
-- ?context
-- x
--
-- let fold f acc t =
-- Queue.fold
-- (fun acc k ->
-- let v =
-- find t k
-- in
-- f acc k v.extra v.help)
-- acc
-- t.order
--
-- let iter f t =
-- fold
-- (fun () -> f)
-- ()
-- t
--
-- let name t =
-- t.name
-- end
--
--
-- module Field =
-- struct
-- type ('ctxt, 'value, 'extra) t =
-- {
-- set: Data.t -> ?context:'ctxt -> 'value -> unit;
-- get: Data.t -> 'value;
-- sets: Data.t -> ?context:'ctxt -> string -> unit;
-- gets: Data.t -> string;
-- help: (unit -> string) option;
-- extra: 'extra;
-- }
--
-- let new_id =
-- let last_id =
-- ref 0
-- in
-- fun () -> incr last_id; !last_id
--
-- let create ?schema ?name ?parse ?print ?default ?update ?help extra =
-- (* Default value container *)
-- let v =
-- ref None
-- in
--
-- (* If name is not given, create unique one *)
-- let nm =
-- match name with
-- | Some s -> s
-- | None -> Printf.sprintf "_anon_%d" (new_id ())
-- in
--
-- (* Last chance to get a value: the default *)
-- let default () =
-- match default with
-- | Some d -> d
-- | None -> raise (Not_set (nm, Some (s_ "no default value")))
-- in
--
-- (* Get data *)
-- let get data =
-- (* Get value *)
-- try
-- (Hashtbl.find data nm) ();
-- match !v with
-- | Some x -> x
-- | None -> default ()
-- with Not_found ->
-- default ()
-- in
--
-- (* Set data *)
-- let set data ?context x =
-- let x =
-- match update with
-- | Some f ->
-- begin
-- try
-- f ?context (get data) x
-- with Not_set _ ->
-- x
-- end
-- | None ->
-- x
-- in
-- Hashtbl.replace
-- data
-- nm
-- (fun () -> v := Some x)
-- in
--
-- (* Parse string value, if possible *)
-- let parse =
-- match parse with
-- | Some f ->
-- f
-- | None ->
-- fun ?context s ->
-- failwith
-- (Printf.sprintf
-- (f_ "Cannot parse field '%s' when setting value %S")
-- nm
-- s)
-- in
--
-- (* Set data, from string *)
-- let sets data ?context s =
-- set ?context data (parse ?context s)
-- in
--
-- (* Output value as string, if possible *)
-- let print =
-- match print with
-- | Some f ->
-- f
-- | None ->
-- fun _ -> raise (No_printer nm)
-- in
--
-- (* Get data, as a string *)
-- let gets data =
-- print (get data)
-- in
--
-- begin
-- match schema with
-- | Some t ->
-- Schema.add t nm sets gets extra help
-- | None ->
-- ()
-- end;
--
-- {
-- set = set;
-- get = get;
-- sets = sets;
-- gets = gets;
-- help = help;
-- extra = extra;
-- }
--
-- let fset data t ?context x =
-- t.set data ?context x
--
-- let fget data t =
-- t.get data
--
-- let fsets data t ?context s =
-- t.sets data ?context s
--
-- let fgets data t =
-- t.gets data
-- end
--
--
-- module FieldRO =
-- struct
-- let create ?schema ?name ?parse ?print ?default ?update ?help extra =
-- let fld =
-- Field.create ?schema ?name ?parse ?print ?default ?update ?help extra
-- in
-- fun data -> Field.fget data fld
-- end
--end
--
--module OASISMessage = struct
--(* # 22 "src/oasis/OASISMessage.ml" *)
--
--
-- open OASISGettext
-- open OASISContext
--
--
-- let generic_message ~ctxt lvl fmt =
-- let cond =
-- if ctxt.quiet then
-- false
-- else
-- match lvl with
-- | `Debug -> ctxt.debug
-- | `Info -> ctxt.info
-- | _ -> true
-- in
-- Printf.ksprintf
-- (fun str ->
-- if cond then
-- begin
-- ctxt.printf lvl str
-- end)
-- fmt
--
--
-- let debug ~ctxt fmt =
-- generic_message ~ctxt `Debug fmt
--
--
-- let info ~ctxt fmt =
-- generic_message ~ctxt `Info fmt
--
--
-- let warning ~ctxt fmt =
-- generic_message ~ctxt `Warning fmt
--
--
-- let error ~ctxt fmt =
-- generic_message ~ctxt `Error fmt
--
--end
--
--module OASISVersion = struct
--(* # 22 "src/oasis/OASISVersion.ml" *)
--
--
-- open OASISGettext
--
--
-- type t = string
--
--
-- type comparator =
-- | VGreater of t
-- | VGreaterEqual of t
-- | VEqual of t
-- | VLesser of t
-- | VLesserEqual of t
-- | VOr of comparator * comparator
-- | VAnd of comparator * comparator
--
--
-- (* Range of allowed characters *)
-- let is_digit c = '0' <= c && c <= '9'
-- let is_alpha c = ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')
-- let is_special = function | '.' | '+' | '-' | '~' -> true | _ -> false
--
--
-- let rec version_compare v1 v2 =
-- if v1 <> "" || v2 <> "" then
-- begin
-- (* Compare ascii string, using special meaning for version
-- * related char
-- *)
-- let val_ascii c =
-- if c = '~' then -1
-- else if is_digit c then 0
-- else if c = '\000' then 0
-- else if is_alpha c then Char.code c
-- else (Char.code c) + 256
-- in
--
-- let len1 = String.length v1 in
-- let len2 = String.length v2 in
--
-- let p = ref 0 in
--
-- (** Compare ascii part *)
-- let compare_vascii () =
-- let cmp = ref 0 in
-- while !cmp = 0 &&
-- !p < len1 && !p < len2 &&
-- not (is_digit v1.[!p] && is_digit v2.[!p]) do
-- cmp := (val_ascii v1.[!p]) - (val_ascii v2.[!p]);
-- incr p
-- done;
-- if !cmp = 0 && !p < len1 && !p = len2 then
-- val_ascii v1.[!p]
-- else if !cmp = 0 && !p = len1 && !p < len2 then
-- - (val_ascii v2.[!p])
-- else
-- !cmp
-- in
--
-- (** Compare digit part *)
-- let compare_digit () =
-- let extract_int v p =
-- let start_p = !p in
-- while !p < String.length v && is_digit v.[!p] do
-- incr p
-- done;
-- let substr =
-- String.sub v !p ((String.length v) - !p)
-- in
-- let res =
-- match String.sub v start_p (!p - start_p) with
-- | "" -> 0
-- | s -> int_of_string s
-- in
-- res, substr
-- in
-- let i1, tl1 = extract_int v1 (ref !p) in
-- let i2, tl2 = extract_int v2 (ref !p) in
-- i1 - i2, tl1, tl2
-- in
--
-- match compare_vascii () with
-- | 0 ->
-- begin
-- match compare_digit () with
-- | 0, tl1, tl2 ->
-- if tl1 <> "" && is_digit tl1.[0] then
-- 1
-- else if tl2 <> "" && is_digit tl2.[0] then
-- -1
-- else
-- version_compare tl1 tl2
-- | n, _, _ ->
-- n
-- end
-- | n ->
-- n
-- end
-- else begin
-- 0
-- end
--
--
-- let version_of_string str = str
--
--
-- let string_of_version t = t
--
--
-- let chop t =
-- try
-- let pos =
-- String.rindex t '.'
-- in
-- String.sub t 0 pos
-- with Not_found ->
-- t
--
--
-- let rec comparator_apply v op =
-- match op with
-- | VGreater cv ->
-- (version_compare v cv) > 0
-- | VGreaterEqual cv ->
-- (version_compare v cv) >= 0
-- | VLesser cv ->
-- (version_compare v cv) < 0
-- | VLesserEqual cv ->
-- (version_compare v cv) <= 0
-- | VEqual cv ->
-- (version_compare v cv) = 0
-- | VOr (op1, op2) ->
-- (comparator_apply v op1) || (comparator_apply v op2)
-- | VAnd (op1, op2) ->
-- (comparator_apply v op1) && (comparator_apply v op2)
--
--
-- let rec string_of_comparator =
-- function
-- | VGreater v -> "> "^(string_of_version v)
-- | VEqual v -> "= "^(string_of_version v)
-- | VLesser v -> "< "^(string_of_version v)
-- | VGreaterEqual v -> ">= "^(string_of_version v)
-- | VLesserEqual v -> "<= "^(string_of_version v)
-- | VOr (c1, c2) ->
-- (string_of_comparator c1)^" || "^(string_of_comparator c2)
-- | VAnd (c1, c2) ->
-- (string_of_comparator c1)^" && "^(string_of_comparator c2)
--
--
-- let rec varname_of_comparator =
-- let concat p v =
-- OASISUtils.varname_concat
-- p
-- (OASISUtils.varname_of_string
-- (string_of_version v))
-- in
-- function
-- | VGreater v -> concat "gt" v
-- | VLesser v -> concat "lt" v
-- | VEqual v -> concat "eq" v
-- | VGreaterEqual v -> concat "ge" v
-- | VLesserEqual v -> concat "le" v
-- | VOr (c1, c2) ->
-- (varname_of_comparator c1)^"_or_"^(varname_of_comparator c2)
-- | VAnd (c1, c2) ->
-- (varname_of_comparator c1)^"_and_"^(varname_of_comparator c2)
--
--
--end
--
--module OASISLicense = struct
--(* # 22 "src/oasis/OASISLicense.ml" *)
--
--
-- (** License for _oasis fields
-- @author Sylvain Le Gall
-- *)
--
--
-- type license = string
-- type license_exception = string
--
--
-- type license_version =
-- | Version of OASISVersion.t
-- | VersionOrLater of OASISVersion.t
-- | NoVersion
--
--
-- type license_dep_5_unit =
-- {
-- license: license;
-- excption: license_exception option;
-- version: license_version;
-- }
--
--
-- type license_dep_5 =
-- | DEP5Unit of license_dep_5_unit
-- | DEP5Or of license_dep_5 list
-- | DEP5And of license_dep_5 list
--
--
-- type t =
-- | DEP5License of license_dep_5
-- | OtherLicense of string (* URL *)
--
--
--end
--
--module OASISExpr = struct
--(* # 22 "src/oasis/OASISExpr.ml" *)
--
--
-- open OASISGettext
-- open OASISUtils
--
--
-- type test = string
-- type flag = string
--
--
-- type t =
-- | EBool of bool
-- | ENot of t
-- | EAnd of t * t
-- | EOr of t * t
-- | EFlag of flag
-- | ETest of test * string
--
--
-- type 'a choices = (t * 'a) list
--
--
-- let eval var_get t =
-- let rec eval' =
-- function
-- | EBool b ->
-- b
--
-- | ENot e ->
-- not (eval' e)
--
-- | EAnd (e1, e2) ->
-- (eval' e1) && (eval' e2)
--
-- | EOr (e1, e2) ->
-- (eval' e1) || (eval' e2)
--
-- | EFlag nm ->
-- let v =
-- var_get nm
-- in
-- assert(v = "true" || v = "false");
-- (v = "true")
--
-- | ETest (nm, vl) ->
-- let v =
-- var_get nm
-- in
-- (v = vl)
-- in
-- eval' t
--
--
-- let choose ?printer ?name var_get lst =
-- let rec choose_aux =
-- function
-- | (cond, vl) :: tl ->
-- if eval var_get cond then
-- vl
-- else
-- choose_aux tl
-- | [] ->
-- let str_lst =
-- if lst = [] then
-- s_ "<empty>"
-- else
-- String.concat
-- (s_ ", ")
-- (List.map
-- (fun (cond, vl) ->
-- match printer with
-- | Some p -> p vl
-- | None -> s_ "<no printer>")
-- lst)
-- in
-- match name with
-- | Some nm ->
-- failwith
-- (Printf.sprintf
-- (f_ "No result for the choice list '%s': %s")
-- nm str_lst)
-- | None ->
-- failwith
-- (Printf.sprintf
-- (f_ "No result for a choice list: %s")
-- str_lst)
-- in
-- choose_aux (List.rev lst)
--
--
--end
--
--module OASISText = struct
--(* # 22 "src/oasis/OASISText.ml" *)
--
-- type elt =
-- | Para of string
-- | Verbatim of string
-- | BlankLine
--
-- type t = elt list
--
--end
--
--module OASISSourcePatterns = struct
--(* # 22 "src/oasis/OASISSourcePatterns.ml" *)
--
-- open OASISUtils
-- open OASISGettext
--
-- module Templater =
-- struct
-- (* TODO: use this module in BaseEnv.var_expand and BaseFileAB, at least. *)
-- type t =
-- {
-- atoms: atom list;
-- origin: string
-- }
-- and atom =
-- | Text of string
-- | Expr of expr
-- and expr =
-- | Ident of string
-- | String of string
-- | Call of string * expr
--
--
-- type env =
-- {
-- variables: string MapString.t;
-- functions: (string -> string) MapString.t;
-- }
--
--
-- let eval env t =
-- let rec eval_expr env =
-- function
-- | String str -> str
-- | Ident nm ->
-- begin
-- try
-- MapString.find nm env.variables
-- with Not_found ->
-- (* TODO: add error location within the string. *)
-- failwithf
-- (f_ "Unable to find variable %S in source pattern %S")
-- nm t.origin
-- end
--
-- | Call (fn, expr) ->
-- begin
-- try
-- (MapString.find fn env.functions) (eval_expr env expr)
-- with Not_found ->
-- (* TODO: add error location within the string. *)
-- failwithf
-- (f_ "Unable to find function %S in source pattern %S")
-- fn t.origin
-- end
-- in
-- String.concat ""
-- (List.map
-- (function
-- | Text str -> str
-- | Expr expr -> eval_expr env expr)
-- t.atoms)
--
--
-- let parse env s =
-- let lxr = Genlex.make_lexer [] in
-- let parse_expr s =
-- let st = lxr (Stream.of_string s) in
-- match Stream.npeek 3 st with
-- | [Genlex.Ident fn; Genlex.Ident nm] -> Call(fn, Ident nm)
-- | [Genlex.Ident fn; Genlex.String str] -> Call(fn, String str)
-- | [Genlex.String str] -> String str
-- | [Genlex.Ident nm] -> Ident nm
-- (* TODO: add error location within the string. *)
-- | _ -> failwithf (f_ "Unable to parse expression %S") s
-- in
-- let parse s =
-- let lst_exprs = ref [] in
-- let ss =
-- let buff = Buffer.create (String.length s) in
-- Buffer.add_substitute
-- buff
-- (fun s -> lst_exprs := (parse_expr s) :: !lst_exprs; "\000")
-- s;
-- Buffer.contents buff
-- in
-- let rec join =
-- function
-- | hd1 :: tl1, hd2 :: tl2 -> Text hd1 :: Expr hd2 :: join (tl1, tl2)
-- | [], tl -> List.map (fun e -> Expr e) tl
-- | tl, [] -> List.map (fun e -> Text e) tl
-- in
-- join (OASISString.nsplit ss '\000', List.rev (!lst_exprs))
-- in
-- let t = {atoms = parse s; origin = s} in
-- (* We rely on a simple evaluation for checking variables/functions.
-- It works because there is no if/loop statement.
-- *)
-- let _s : string = eval env t in
-- t
--
--(* # 144 "src/oasis/OASISSourcePatterns.ml" *)
-- end
--
--
-- type t = Templater.t
--
--
-- let env ~modul () =
-- {
-- Templater.
-- variables = MapString.of_list ["module", modul];
-- functions = MapString.of_list
-- [
-- "capitalize_file", OASISUnixPath.capitalize_file;
-- "uncapitalize_file", OASISUnixPath.uncapitalize_file;
-- ];
-- }
--
-- let all_possible_files lst ~path ~modul =
-- let eval = Templater.eval (env ~modul ()) in
-- List.fold_left
-- (fun acc pat -> OASISUnixPath.concat path (eval pat) :: acc)
-- [] lst
--
--
-- let to_string t = t.Templater.origin
--
--
--end
--
--module OASISTypes = struct
--(* # 22 "src/oasis/OASISTypes.ml" *)
--
--
-- type name = string
-- type package_name = string
-- type url = string
-- type unix_dirname = string
-- type unix_filename = string (* TODO: replace everywhere. *)
-- type host_dirname = string (* TODO: replace everywhere. *)
-- type host_filename = string (* TODO: replace everywhere. *)
-- type prog = string
-- type arg = string
-- type args = string list
-- type command_line = (prog * arg list)
--
--
-- type findlib_name = string
-- type findlib_full = string
--
--
-- type compiled_object =
-- | Byte
-- | Native
-- | Best
--
--
-- type dependency =
-- | FindlibPackage of findlib_full * OASISVersion.comparator option
-- | InternalLibrary of name
--
--
-- type tool =
-- | ExternalTool of name
-- | InternalExecutable of name
--
--
-- type vcs =
-- | Darcs
-- | Git
-- | Svn
-- | Cvs
-- | Hg
-- | Bzr
-- | Arch
-- | Monotone
-- | OtherVCS of url
--
--
-- type plugin_kind =
-- [ `Configure
-- | `Build
-- | `Doc
-- | `Test
-- | `Install
-- | `Extra
-- ]
--
--
-- type plugin_data_purpose =
-- [ `Configure
-- | `Build
-- | `Install
-- | `Clean
-- | `Distclean
-- | `Install
-- | `Uninstall
-- | `Test
-- | `Doc
-- | `Extra
-- | `Other of string
-- ]
--
--
-- type 'a plugin = 'a * name * OASISVersion.t option
--
--
-- type all_plugin = plugin_kind plugin
--
--
-- type plugin_data = (all_plugin * plugin_data_purpose * (unit -> unit)) list
--
--
-- type 'a conditional = 'a OASISExpr.choices
--
--
-- type custom =
-- {
-- pre_command: (command_line option) conditional;
-- post_command: (command_line option) conditional;
-- }
--
--
-- type common_section =
-- {
-- cs_name: name;
-- cs_data: PropList.Data.t;
-- cs_plugin_data: plugin_data;
-- }
--
--
-- type build_section =
-- {
-- bs_build: bool conditional;
-- bs_install: bool conditional;
-- bs_path: unix_dirname;
-- bs_compiled_object: compiled_object;
-- bs_build_depends: dependency list;
-- bs_build_tools: tool list;
-- bs_interface_patterns: OASISSourcePatterns.t list;
-- bs_implementation_patterns: OASISSourcePatterns.t list;
-- bs_c_sources: unix_filename list;
-- bs_data_files: (unix_filename * unix_filename option) list;
-- bs_findlib_extra_files: unix_filename list;
-- bs_ccopt: args conditional;
-- bs_cclib: args conditional;
-- bs_dlllib: args conditional;
-- bs_dllpath: args conditional;
-- bs_byteopt: args conditional;
-- bs_nativeopt: args conditional;
-- }
--
--
-- type library =
-- {
-- lib_modules: string list;
-- lib_pack: bool;
-- lib_internal_modules: string list;
-- lib_findlib_parent: findlib_name option;
-- lib_findlib_name: findlib_name option;
-- lib_findlib_directory: unix_dirname option;
-- lib_findlib_containers: findlib_name list;
-- }
--
--
-- type object_ =
-- {
-- obj_modules: string list;
-- obj_findlib_fullname: findlib_name list option;
-- obj_findlib_directory: unix_dirname option;
-- }
--
--
-- type executable =
-- {
-- exec_custom: bool;
-- exec_main_is: unix_filename;
-- }
--
--
-- type flag =
-- {
-- flag_description: string option;
-- flag_default: bool conditional;
-- }
--
--
-- type source_repository =
-- {
-- src_repo_type: vcs;
-- src_repo_location: url;
-- src_repo_browser: url option;
-- src_repo_module: string option;
-- src_repo_branch: string option;
-- src_repo_tag: string option;
-- src_repo_subdir: unix_filename option;
-- }
--
--
-- type test =
-- {
-- test_type: [`Test] plugin;
-- test_command: command_line conditional;
-- test_custom: custom;
-- test_working_directory: unix_filename option;
-- test_run: bool conditional;
-- test_tools: tool list;
-- }
--
--
-- type doc_format =
-- | HTML of unix_filename (* TODO: source filename. *)
-- | DocText
-- | PDF
-- | PostScript
-- | Info of unix_filename (* TODO: source filename. *)
-- | DVI
-- | OtherDoc
--
--
-- type doc =
-- {
-- doc_type: [`Doc] plugin;
-- doc_custom: custom;
-- doc_build: bool conditional;
-- doc_install: bool conditional;
-- doc_install_dir: unix_filename; (* TODO: dest filename ?. *)
-- doc_title: string;
-- doc_authors: string list;
-- doc_abstract: string option;
-- doc_format: doc_format;
-- (* TODO: src filename. *)
-- doc_data_files: (unix_filename * unix_filename option) list;
-- doc_build_tools: tool list;
-- }
--
--
-- type section =
-- | Library of common_section * build_section * library
-- | Object of common_section * build_section * object_
-- | Executable of common_section * build_section * executable
-- | Flag of common_section * flag
-- | SrcRepo of common_section * source_repository
-- | Test of common_section * test
-- | Doc of common_section * doc
--
--
-- type section_kind =
-- [ `Library | `Object | `Executable | `Flag | `SrcRepo | `Test | `Doc ]
--
--
-- type package =
-- {
-- oasis_version: OASISVersion.t;
-- ocaml_version: OASISVersion.comparator option;
-- findlib_version: OASISVersion.comparator option;
-- alpha_features: string list;
-- beta_features: string list;
-- name: package_name;
-- version: OASISVersion.t;
-- license: OASISLicense.t;
-- license_file: unix_filename option; (* TODO: source filename. *)
-- copyrights: string list;
-- maintainers: string list;
-- authors: string list;
-- homepage: url option;
-- bugreports: url option;
-- synopsis: string;
-- description: OASISText.t option;
-- tags: string list;
-- categories: url list;
--
-- conf_type: [`Configure] plugin;
-- conf_custom: custom;
--
-- build_type: [`Build] plugin;
-- build_custom: custom;
--
-- install_type: [`Install] plugin;
-- install_custom: custom;
-- uninstall_custom: custom;
--
-- clean_custom: custom;
-- distclean_custom: custom;
--
-- files_ab: unix_filename list; (* TODO: source filename. *)
-- sections: section list;
-- plugins: [`Extra] plugin list;
-- disable_oasis_section: unix_filename list; (* TODO: source filename. *)
-- schema_data: PropList.Data.t;
-- plugin_data: plugin_data;
-- }
--
--
--end
--
--module OASISFeatures = struct
--(* # 22 "src/oasis/OASISFeatures.ml" *)
--
-- open OASISTypes
-- open OASISUtils
-- open OASISGettext
-- open OASISVersion
--
-- module MapPlugin =
-- Map.Make
-- (struct
-- type t = plugin_kind * name
-- let compare = Pervasives.compare
-- end)
--
-- module Data =
-- struct
-- type t =
-- {
-- oasis_version: OASISVersion.t;
-- plugin_versions: OASISVersion.t option MapPlugin.t;
-- alpha_features: string list;
-- beta_features: string list;
-- }
--
-- let create oasis_version alpha_features beta_features =
-- {
-- oasis_version = oasis_version;
-- plugin_versions = MapPlugin.empty;
-- alpha_features = alpha_features;
-- beta_features = beta_features
-- }
--
-- let of_package pkg =
-- create
-- pkg.OASISTypes.oasis_version
-- pkg.OASISTypes.alpha_features
-- pkg.OASISTypes.beta_features
--
-- let add_plugin (plugin_kind, plugin_name, plugin_version) t =
-- {t with
-- plugin_versions = MapPlugin.add
-- (plugin_kind, plugin_name)
-- plugin_version
-- t.plugin_versions}
--
-- let plugin_version plugin_kind plugin_name t =
-- MapPlugin.find (plugin_kind, plugin_name) t.plugin_versions
--
-- let to_string t =
-- Printf.sprintf
-- "oasis_version: %s; alpha_features: %s; beta_features: %s; \
-- plugins_version: %s"
-- (OASISVersion.string_of_version (t:t).oasis_version)
-- (String.concat ", " t.alpha_features)
-- (String.concat ", " t.beta_features)
-- (String.concat ", "
-- (MapPlugin.fold
-- (fun (_, plg) ver_opt acc ->
-- (plg^
-- (match ver_opt with
-- | Some v ->
-- " "^(OASISVersion.string_of_version v)
-- | None -> ""))
-- :: acc)
-- t.plugin_versions []))
-- end
--
-- type origin =
-- | Field of string * string
-- | Section of string
-- | NoOrigin
--
-- type stage = Alpha | Beta
--
--
-- let string_of_stage =
-- function
-- | Alpha -> "alpha"
-- | Beta -> "beta"
--
--
-- let field_of_stage =
-- function
-- | Alpha -> "AlphaFeatures"
-- | Beta -> "BetaFeatures"
--
-- type publication = InDev of stage | SinceVersion of OASISVersion.t
--
-- type t =
-- {
-- name: string;
-- plugin: all_plugin option;
-- publication: publication;
-- description: unit -> string;
-- }
--
-- (* TODO: mutex protect this. *)
-- let all_features = Hashtbl.create 13
--
--
-- let since_version ver_str = SinceVersion (version_of_string ver_str)
-- let alpha = InDev Alpha
-- let beta = InDev Beta
--
--
-- let to_string t =
-- Printf.sprintf
-- "feature: %s; plugin: %s; publication: %s"
-- (t:t).name
-- (match t.plugin with
-- | None -> "<none>"
-- | Some (_, nm, _) -> nm)
-- (match t.publication with
-- | InDev stage -> string_of_stage stage
-- | SinceVersion ver -> ">= "^(OASISVersion.string_of_version ver))
--
-- let data_check t data origin =
-- let no_message = "no message" in
--
-- let check_feature features stage =
-- let has_feature = List.mem (t:t).name features in
-- if not has_feature then
-- match (origin:origin) with
-- | Field (fld, where) ->
-- Some
-- (Printf.sprintf
-- (f_ "Field %s in %s is only available when feature %s \
-- is in field %s.")
-- fld where t.name (field_of_stage stage))
-- | Section sct ->
-- Some
-- (Printf.sprintf
-- (f_ "Section %s is only available when features %s \
-- is in field %s.")
-- sct t.name (field_of_stage stage))
-- | NoOrigin ->
-- Some no_message
-- else
-- None
-- in
--
-- let version_is_good ~min_version version fmt =
-- let version_is_good =
-- OASISVersion.comparator_apply
-- version (OASISVersion.VGreaterEqual min_version)
-- in
-- Printf.ksprintf
-- (fun str -> if version_is_good then None else Some str)
-- fmt
-- in
--
-- match origin, t.plugin, t.publication with
-- | _, _, InDev Alpha -> check_feature data.Data.alpha_features Alpha
-- | _, _, InDev Beta -> check_feature data.Data.beta_features Beta
-- | Field(fld, where), None, SinceVersion min_version ->
-- version_is_good ~min_version data.Data.oasis_version
-- (f_ "Field %s in %s is only valid since OASIS v%s, update \
-- OASISFormat field from '%s' to '%s' after checking \
-- OASIS changelog.")
-- fld where (string_of_version min_version)
-- (string_of_version data.Data.oasis_version)
-- (string_of_version min_version)
--
-- | Field(fld, where), Some(plugin_knd, plugin_name, _),
-- SinceVersion min_version ->
-- begin
-- try
-- let plugin_version_current =
-- try
-- match Data.plugin_version plugin_knd plugin_name data with
-- | Some ver -> ver
-- | None ->
-- failwithf
-- (f_ "Field %s in %s is only valid for the OASIS \
-- plugin %s since v%s, but no plugin version is \
-- defined in the _oasis file, change '%s' to \
-- '%s (%s)' in your _oasis file.")
-- fld where plugin_name (string_of_version min_version)
-- plugin_name
-- plugin_name (string_of_version min_version)
-- with Not_found ->
-- failwithf
-- (f_ "Field %s in %s is only valid when the OASIS plugin %s \
-- is defined.")
-- fld where plugin_name
-- in
-- version_is_good ~min_version plugin_version_current
-- (f_ "Field %s in %s is only valid for the OASIS plugin %s \
-- since v%s, update your plugin from '%s (%s)' to \
-- '%s (%s)' after checking the plugin's changelog.")
-- fld where plugin_name (string_of_version min_version)
-- plugin_name (string_of_version plugin_version_current)
-- plugin_name (string_of_version min_version)
-- with Failure msg ->
-- Some msg
-- end
--
-- | Section sct, None, SinceVersion min_version ->
-- version_is_good ~min_version data.Data.oasis_version
-- (f_ "Section %s is only valid for since OASIS v%s, update \
-- OASISFormat field from '%s' to '%s' after checking OASIS \
-- changelog.")
-- sct (string_of_version min_version)
-- (string_of_version data.Data.oasis_version)
-- (string_of_version min_version)
--
-- | Section sct, Some(plugin_knd, plugin_name, _),
-- SinceVersion min_version ->
-- begin
-- try
-- let plugin_version_current =
-- try
-- match Data.plugin_version plugin_knd plugin_name data with
-- | Some ver -> ver
-- | None ->
-- failwithf
-- (f_ "Section %s is only valid for the OASIS \
-- plugin %s since v%s, but no plugin version is \
-- defined in the _oasis file, change '%s' to \
-- '%s (%s)' in your _oasis file.")
-- sct plugin_name (string_of_version min_version)
-- plugin_name
-- plugin_name (string_of_version min_version)
-- with Not_found ->
-- failwithf
-- (f_ "Section %s is only valid when the OASIS plugin %s \
-- is defined.")
-- sct plugin_name
-- in
-- version_is_good ~min_version plugin_version_current
-- (f_ "Section %s is only valid for the OASIS plugin %s \
-- since v%s, update your plugin from '%s (%s)' to \
-- '%s (%s)' after checking the plugin's changelog.")
-- sct plugin_name (string_of_version min_version)
-- plugin_name (string_of_version plugin_version_current)
-- plugin_name (string_of_version min_version)
-- with Failure msg ->
-- Some msg
-- end
--
-- | NoOrigin, None, SinceVersion min_version ->
-- version_is_good ~min_version data.Data.oasis_version "%s" no_message
--
-- | NoOrigin, Some(plugin_knd, plugin_name, _), SinceVersion min_version ->
-- begin
-- try
-- let plugin_version_current =
-- match Data.plugin_version plugin_knd plugin_name data with
-- | Some ver -> ver
-- | None -> raise Not_found
-- in
-- version_is_good ~min_version plugin_version_current
-- "%s" no_message
-- with Not_found ->
-- Some no_message
-- end
--
--
-- let data_assert t data origin =
-- match data_check t data origin with
-- | None -> ()
-- | Some str -> failwith str
--
--
-- let data_test t data =
-- match data_check t data NoOrigin with
-- | None -> true
-- | Some _ -> false
--
--
-- let package_test t pkg =
-- data_test t (Data.of_package pkg)
--
--
-- let create ?plugin name publication description =
-- let () =
-- if Hashtbl.mem all_features name then
-- failwithf "Feature '%s' is already declared." name
-- in
-- let t =
-- {
-- name = name;
-- plugin = plugin;
-- publication = publication;
-- description = description;
-- }
-- in
-- Hashtbl.add all_features name t;
-- t
--
--
-- let get_stage name =
-- try
-- (Hashtbl.find all_features name).publication
-- with Not_found ->
-- failwithf (f_ "Feature %s doesn't exist.") name
--
--
-- let list () =
-- Hashtbl.fold (fun _ v acc -> v :: acc) all_features []
--
-- (*
-- * Real flags.
-- *)
--
--
-- let features =
-- create "features_fields"
-- (since_version "0.4")
-- (fun () ->
-- s_ "Enable to experiment not yet official features.")
--
--
-- let flag_docs =
-- create "flag_docs"
-- (since_version "0.3")
-- (fun () ->
-- s_ "Make building docs require '-docs' flag at configure.")
--
--
-- let flag_tests =
-- create "flag_tests"
-- (since_version "0.3")
-- (fun () ->
-- s_ "Make running tests require '-tests' flag at configure.")
--
--
-- let pack =
-- create "pack"
-- (since_version "0.3")
-- (fun () ->
-- s_ "Allow to create packed library.")
--
--
-- let section_object =
-- create "section_object" beta
-- (fun () ->
-- s_ "Implement an object section.")
--
--
-- let dynrun_for_release =
-- create "dynrun_for_release" alpha
-- (fun () ->
-- s_ "Make '-setup-update dynamic' suitable for releasing project.")
--
--
-- let compiled_setup_ml =
-- create "compiled_setup_ml" alpha
-- (fun () ->
-- s_ "Compile the setup.ml and speed-up actions done with it.")
--
-- let disable_oasis_section =
-- create "disable_oasis_section" alpha
-- (fun () ->
-- s_ "Allow the OASIS section comments and digests to be omitted in \
-- generated files.")
--
-- let no_automatic_syntax =
-- create "no_automatic_syntax" alpha
-- (fun () ->
-- s_ "Disable the automatic inclusion of -syntax camlp4o for packages \
-- that matches the internal heuristic (if a dependency ends with \
-- a .syntax or is a well known syntax).")
--
-- let findlib_directory =
-- create "findlib_directory" beta
-- (fun () ->
-- s_ "Allow to install findlib libraries in sub-directories of the target \
-- findlib directory.")
--
-- let findlib_extra_files =
-- create "findlib_extra_files" beta
-- (fun () ->
-- s_ "Allow to install extra files for findlib libraries.")
--
-- let source_patterns =
-- create "source_patterns" alpha
-- (fun () ->
-- s_ "Customize mapping between module name and source file.")
--end
--
--module OASISSection = struct
--(* # 22 "src/oasis/OASISSection.ml" *)
--
--
-- open OASISTypes
--
--
-- let section_kind_common =
-- function
-- | Library (cs, _, _) ->
-- `Library, cs
-- | Object (cs, _, _) ->
-- `Object, cs
-- | Executable (cs, _, _) ->
-- `Executable, cs
-- | Flag (cs, _) ->
-- `Flag, cs
-- | SrcRepo (cs, _) ->
-- `SrcRepo, cs
-- | Test (cs, _) ->
-- `Test, cs
-- | Doc (cs, _) ->
-- `Doc, cs
--
--
-- let section_common sct =
-- snd (section_kind_common sct)
--
--
-- let section_common_set cs =
-- function
-- | Library (_, bs, lib) -> Library (cs, bs, lib)
-- | Object (_, bs, obj) -> Object (cs, bs, obj)
-- | Executable (_, bs, exec) -> Executable (cs, bs, exec)
-- | Flag (_, flg) -> Flag (cs, flg)
-- | SrcRepo (_, src_repo) -> SrcRepo (cs, src_repo)
-- | Test (_, tst) -> Test (cs, tst)
-- | Doc (_, doc) -> Doc (cs, doc)
--
--
-- (** Key used to identify section
-- *)
-- let section_id sct =
-- let k, cs =
-- section_kind_common sct
-- in
-- k, cs.cs_name
--
--
-- let string_of_section_kind =
-- function
-- | `Library -> "library"
-- | `Object -> "object"
-- | `Executable -> "executable"
-- | `Flag -> "flag"
-- | `SrcRepo -> "src repository"
-- | `Test -> "test"
-- | `Doc -> "doc"
--
--
-- let string_of_section sct =
-- let k, nm = section_id sct in
-- (string_of_section_kind k)^" "^nm
--
--
-- let section_find id scts =
-- List.find
-- (fun sct -> id = section_id sct)
-- scts
--
--
-- module CSection =
-- struct
-- type t = section
--
-- let id = section_id
--
-- let compare t1 t2 =
-- compare (id t1) (id t2)
--
-- let equal t1 t2 =
-- (id t1) = (id t2)
--
-- let hash t =
-- Hashtbl.hash (id t)
-- end
--
--
-- module MapSection = Map.Make(CSection)
-- module SetSection = Set.Make(CSection)
--
--
--end
--
--module OASISBuildSection = struct
--(* # 22 "src/oasis/OASISBuildSection.ml" *)
--
-- open OASISTypes
--
-- (* Look for a module file, considering capitalization or not. *)
-- let find_module source_file_exists bs modul =
-- let possible_lst =
-- OASISSourcePatterns.all_possible_files
-- (bs.bs_interface_patterns @ bs.bs_implementation_patterns)
-- ~path:bs.bs_path
-- ~modul
-- in
-- match List.filter source_file_exists possible_lst with
-- | (fn :: _) as fn_lst -> `Sources (OASISUnixPath.chop_extension fn, fn_lst)
-- | [] ->
-- let open OASISUtils in
-- let _, rev_lst =
-- List.fold_left
-- (fun (set, acc) fn ->
-- let base_fn = OASISUnixPath.chop_extension fn in
-- if SetString.mem base_fn set then
-- set, acc
-- else
-- SetString.add base_fn set, base_fn :: acc)
-- (SetString.empty, []) possible_lst
-- in
-- `No_sources (List.rev rev_lst)
--
--
--end
--
--module OASISExecutable = struct
--(* # 22 "src/oasis/OASISExecutable.ml" *)
--
--
-- open OASISTypes
--
--
-- let unix_exec_is (cs, bs, exec) is_native ext_dll suffix_program =
<Skipped 6278 lines>
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/ocaml-gapi-ocaml.git/commitdiff/5b797f51820fd0d719aae9d71863685d436e5ce9
More information about the pld-cvs-commit
mailing list