From d301eee847e7fd03c2fc0d1eb9c0bfcf35daef18 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrg=20Billeter?= Date: Fri, 18 Aug 2006 09:24:59 +0000 Subject: [PATCH] remove read/write tokens support package dependencies vapi/gdk-2.0.deps MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 2006-08-18 Jürg Billeter * vala/parser.y: remove read/write tokens * compiler/valacompiler.vala: support package dependencies * vapi/gdk-2.0.deps * vapi/gtk+-2.0.deps * vapi/Makefile.am: update svn path=/trunk/; revision=104 --- vala/ChangeLog | 8 ++++++++ vala/compiler/valacompiler.vala | 30 ++++++++++++++++++++++++++---- vala/vala/parser.y | 2 -- vala/vapi/Makefile.am | 2 ++ vala/vapi/gdk-2.0.deps | 2 ++ vala/vapi/gtk+-2.0.deps | 4 ++++ 6 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 vala/vapi/gdk-2.0.deps create mode 100644 vala/vapi/gtk+-2.0.deps diff --git a/vala/ChangeLog b/vala/ChangeLog index d1c7e01..add7f18 100644 --- a/vala/ChangeLog +++ b/vala/ChangeLog @@ -1,5 +1,13 @@ 2006-08-18 Jürg Billeter + * vala/parser.y: remove read/write tokens + * compiler/valacompiler.vala: support package dependencies + * vapi/gdk-2.0.deps + * vapi/gtk+-2.0.deps + * vapi/Makefile.am: update + +2006-08-18 Jürg Billeter + * vala/parser.y, vala/valastruct.vala: support base types for structs * vala/valainterfacewriter.vala: obey set keyword * vapi/glib-2.0.vala: add SignalInvocationHint, SignalEmissionHook, diff --git a/vala/compiler/valacompiler.vala b/vala/compiler/valacompiler.vala index 17562fb..632f735 100644 --- a/vala/compiler/valacompiler.vala +++ b/vala/compiler/valacompiler.vala @@ -30,7 +30,9 @@ class Vala.Compiler { static string library; static string[] packages; static bool disable_memory_management; - CodeContext context; + + private CodeContext context; + private List added_packages; const OptionEntry[] options = { { "vapidir", 0, 0, OptionArg.FILENAME_ARRAY, out vapi_directories, "Look for package bindings in DIRECTORY", "DIRECTORY..." }, @@ -58,19 +60,19 @@ class Vala.Compiler { if (vapi_directories != null) { foreach (string vapidir in vapi_directories) { - var filename = Path.build_filename (vapidir, basename, null); + var filename = Path.build_filename (vapidir, basename); if (File.test (filename, FileTest.EXISTS)) { return filename; } } } - var filename = Path.build_filename ("/usr/local/share/vala/vapi", basename, null); + var filename = Path.build_filename ("/usr/local/share/vala/vapi", basename); if (File.test (filename, FileTest.EXISTS)) { return filename; } - filename = Path.build_filename ("/usr/share/vala/vapi", basename, null); + filename = Path.build_filename ("/usr/share/vala/vapi", basename); if (File.test (filename, FileTest.EXISTS)) { return filename; } @@ -79,14 +81,34 @@ class Vala.Compiler { } private bool add_package (string! pkg) { + if (added_packages.find_custom (pkg, strcmp) != null) { + // ignore multiple occurences of the same package + return true; + } + var package_path = get_package_path (pkg); if (package_path == null) { return false; } + added_packages.append (pkg); + context.add_source_file (new SourceFile (context, package_path, true)); + var deps_filename = Path.build_filename (Path.get_dirname (package_path), "%s.deps".printf (pkg)); + if (File.test (deps_filename, FileTest.EXISTS)) { + string deps_content; + File.get_contents (deps_filename, out deps_content, null, null); + foreach (string dep in deps_content.split ("\n")) { + if (dep != "") { + if (!add_package (dep)) { + Report.error (null, "%s, dependency of %s, not found in specified Vala API directories".printf (dep, pkg)); + } + } + } + } + return true; } diff --git a/vala/vala/parser.y b/vala/vala/parser.y index 70e3add..f19f6e9 100644 --- a/vala/vala/parser.y +++ b/vala/vala/parser.y @@ -192,8 +192,6 @@ static void yyerror (YYLTYPE *locp, ValaParser *parser, const char *msg); %token VIRTUAL "virtual" %token WEAK "weak" %token WHILE "while" -%token READ "read" -%token WRITE "write" %token IDENTIFIER "identifier" %token INTEGER_LITERAL "integer" diff --git a/vala/vapi/Makefile.am b/vala/vapi/Makefile.am index d74266b..70d0aaa 100644 --- a/vala/vapi/Makefile.am +++ b/vala/vapi/Makefile.am @@ -9,7 +9,9 @@ dist_vapi_DATA = \ atk.vala \ cairo.vala \ glib-2.0.vala \ + gdk-2.0.deps \ gdk-2.0.vala \ + gtk+-2.0.deps \ gtk+-2.0.vala \ libxml-2.0.vala \ pango.vala \ diff --git a/vala/vapi/gdk-2.0.deps b/vala/vapi/gdk-2.0.deps new file mode 100644 index 0000000..909838c --- /dev/null +++ b/vala/vapi/gdk-2.0.deps @@ -0,0 +1,2 @@ +cairo +pango diff --git a/vala/vapi/gtk+-2.0.deps b/vala/vapi/gtk+-2.0.deps new file mode 100644 index 0000000..e02a9ef --- /dev/null +++ b/vala/vapi/gtk+-2.0.deps @@ -0,0 +1,4 @@ +atk +cairo +gdk-2.0 +pango -- 2.7.4