1 |
# (ovitters) version 2.25.1: api 0.26; version 2.26.0: api 0.26 |
2 |
%define api %(echo %{version} | awk -F. '{print $1"."$2 + $2 % 2}') |
3 |
%define major 0 |
4 |
%define libname %mklibname %{name} %{api} %{major} |
5 |
%define devname %mklibname -d %{name} |
6 |
|
7 |
%define url_ver %(echo %{version}|cut -d. -f1,2) |
8 |
|
9 |
Summary: Compiler for the GObject type system |
10 |
Name: vala |
11 |
Version: 0.34.7 |
12 |
Release: %mkrel 1 |
13 |
Source0: https://download.gnome.org/sources/%{name}/%{url_ver}/%{name}-%{version}.tar.xz |
14 |
# Most files are LGPLv2.1+, curses.vapi is 2-clause BSD |
15 |
License: LGPLv2+ and BSD |
16 |
Group: Development/Other |
17 |
Url: https://wiki.gnome.org/Vala |
18 |
BuildRequires: pkgconfig(glib-2.0) >= 2.16.0 |
19 |
BuildRequires: pkgconfig(gmodule-2.0) >= 2.16.0 |
20 |
BuildRequires: pkgconfig(gobject-2.0) >= 2.16.0 |
21 |
BuildRequires: pkgconfig(gthread-2.0) >= 2.16.0 |
22 |
BuildRequires: xsltproc |
23 |
BuildRequires: flex |
24 |
BuildRequires: bison |
25 |
Requires: glib2-devel |
26 |
|
27 |
%description |
28 |
Vala is a new programming language that aims to bring modern |
29 |
programming language features to GNOME developers without imposing any |
30 |
additional runtime requirements and without using a different ABI |
31 |
compared to applications and libraries written in C. |
32 |
|
33 |
valac, the Vala compiler, is a self-hosting compiler that translates |
34 |
Vala source code into C source and header files. It uses the GObject |
35 |
type system to create classes and interfaces declared in the Vala |
36 |
source code. It's also planned to generate GIDL files when |
37 |
gobject-introspection is ready. |
38 |
|
39 |
The syntax of Vala is similar to C#, modified to better fit the GObject |
40 |
type system. Vala supports modern language features as the following: |
41 |
|
42 |
* Interfaces |
43 |
* Properties |
44 |
* Signals |
45 |
* Foreach |
46 |
* Lambda expressions |
47 |
* Type inference for local variables |
48 |
* Non-null types [PARTIAL] |
49 |
* Exception handling [PLANNED] |
50 |
* Assisted memory management |
51 |
|
52 |
* type modules (aka. Plugins) |
53 |
|
54 |
Vala is designed to allow access to existing C libraries, especially |
55 |
GObject-based libraries, without the need for runtime bindings. Each |
56 |
to be used library requires a Vala API file at compile-time, |
57 |
containing the class and method declarations in Vala syntax. Vala |
58 |
currently comes with experimental bindings for GLib and GTK+. It's |
59 |
planned to provide generated bindings for the full GNOME Platform at a |
60 |
later stage. |
61 |
|
62 |
Using classes and methods written in Vala from an application written |
63 |
in C is not difficult. The Vala library only has to install the |
64 |
generated header files and C applications may then access the |
65 |
GObject-based API of the Vala library as usual. It should also be |
66 |
easily possible to write a bindings generator for access to Vala |
67 |
libraries from applications written in e.g. C# as the Vala parser is written |
68 |
as a library, so that all compile-time information is available when |
69 |
generating a binding. |
70 |
|
71 |
%package -n %{libname} |
72 |
Group: System/Libraries |
73 |
Summary: Vala runtime library |
74 |
|
75 |
%description -n %{libname} |
76 |
This is the runtime library of the Vala programming language. |
77 |
|
78 |
%package -n %{devname} |
79 |
Group: Development/Other |
80 |
Summary: Vala development files |
81 |
Requires: %{libname} = %{version}-%{release} |
82 |
Requires: %{name} = %{version}-%{release} |
83 |
Requires: %{name}-tools = %{version}-%{release} |
84 |
Provides: lib%{name}-devel = %{version}-%{release} |
85 |
Provides: %{name}-devel = %{version}-%{release} |
86 |
|
87 |
%description -n %{devname} |
88 |
This is the development library of the Vala programming language. |
89 |
|
90 |
%package tools |
91 |
Summary: Tools for creating projects and bindings for %{name} |
92 |
Group: Development/Other |
93 |
Requires: %{name} = %{version}-%{release} |
94 |
Requires: gnome-common |
95 |
Requires: intltool |
96 |
Requires: libtool |
97 |
|
98 |
%description tools |
99 |
This package contains tools to generate Vala projects, as well as API bindings |
100 |
from existing C libraries, allowing access from Vala programs. |
101 |
|
102 |
%prep |
103 |
%setup -q |
104 |
%autopatch -p1 |
105 |
|
106 |
%build |
107 |
autoreconf -vfi |
108 |
%configure2_5x |
109 |
%make |
110 |
|
111 |
%install |
112 |
%makeinstall_std |
113 |
|
114 |
find %{buildroot} -name "*.la" -delete |
115 |
|
116 |
mkdir -p %{buildroot}%{_datadir}/vala/vapi |
117 |
|
118 |
%files -n %{libname} |
119 |
%_libdir/libvala-%{api}.so.%{major}* |
120 |
|
121 |
%files -n %{devname} |
122 |
%doc ChangeLog |
123 |
%{_libdir}/libvala-%{api}.so |
124 |
%{_includedir}/vala-%{api} |
125 |
%{_libdir}/pkgconfig/*.pc |
126 |
%{_datadir}/devhelp/books/vala-%{api} |
127 |
%{_datadir}/aclocal/*.m4 |
128 |
|
129 |
%files |
130 |
%doc AUTHORS MAINTAINERS NEWS README |
131 |
%{_bindir}/vala |
132 |
%{_bindir}/vala-%{api} |
133 |
%{_bindir}/valac |
134 |
%{_bindir}/valac-%{api} |
135 |
%{_datadir}/vala-%{api} |
136 |
%dir %{_datadir}/vala |
137 |
%dir %{_datadir}/vala/vapi |
138 |
%{_mandir}/man1/valac.1* |
139 |
%{_mandir}/man1/valac-%{api}.1* |
140 |
|
141 |
%files tools |
142 |
%{_bindir}/*gen* |
143 |
%{_bindir}/vapicheck |
144 |
%{_bindir}/vapicheck-%{api} |
145 |
%{_datadir}/vala/Makefile.vapigen |
146 |
%{_libdir}/vala-%{api} |
147 |
%{_mandir}/*/*gen* |