%define opt %(test -x %{_bindir}/ocamlopt && echo 1 || echo 0) %define debug_package %{nil} # Prevent RPM from stripping the binaries, which breaks them: %define __strip /bin/true %define libdate 20080730 Name: haxe Version: 2.0 Release: 4%{?dist} Summary: Web programming language targeting Flash, Javascript, PHP Group: Development/Libraries License: GPLv2+ URL: http://haxe.org # Upstream does not provide source tarballs, but they do tag # releases in their CVS repository. These are instructions on # how to reproduce these source files. # # cvs -d :pserver:anonymous@cvs.motion-twin.com:/cvsroot login # (hit Return - there is no password) # cvs -d :pserver:anonymous@cvs.motion-twin.com:/cvsroot co -r v2-0 haxe # mv haxe haxe-2.0 # tar zcf haxe-2.0.tar.gz haxe-2.0 Source0: %{name}-%{version}.tar.gz # cvs -d :pserver:anonymous@cvs.motion-twin.com:/cvsroot co -D %{libdate} ocaml/{extc,swflib} # mv ocaml haxe-ocaml-libs-%{libdate} # tar zcf haxe-ocaml-libs-%{libdate}.tar.gz haxe-ocaml-libs-%{libdate} Source1: haxe-ocaml-libs-%{libdate}.tar.gz # cvs -d :pserver:anonymous@cvs.motion-twin.com:/cvsroot co -D %{libdate} neko # mv neko/libs/include/ocaml haxe-neko-libs-%{libdate} # tar zcf haxe-neko-libs-%{libdate}.tar.gz haxe-neko-libs-%{libdate} Source2: haxe-neko-libs-%{libdate}.tar.gz Patch0: haxe-file-locations-debian.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: ocaml >= 3.10.0 BuildRequires: ocaml-findlib-devel BuildRequires: ocaml-camlp4-devel BuildRequires: ocaml-extlib-devel BuildRequires: ocaml-xml-light-devel BuildRequires: zlib-devel Requires: nekovm >= 1.7.1 %define _use_internal_dependency_generator 0 %define __find_requires /usr/lib/rpm/ocaml-find-requires.sh %define __find_provides /usr/lib/rpm/ocaml-find-provides.sh %description haXe (pronounced as hex) is an open source programming language. While most of the other languages are bound to their own platform (Java to the JVM, C# to .Net, ActionScript to the Flash Player), haXe is a multiplatform language. It means that you can use haXe to target the following platforms: Javascript : You can compile a haXe program to a single .js file. You can access the typed browser DOM APIs with autocompletion support, and all the dependencies are resolved at compilation time. Flash : You can compile a haXe program to a .swf file. haXe can compile for Flash Players 6 to 9, with either "old" Flash<8 API or newest AS3/Flash9 API. haXe offers very good performance and language features to develop Flash content. NekoVM : You can compile a haXe program to NekoVM bytecode. This can be used for server-side programming such as dynamic webpages (using mod_neko for Apache) and also for commandline or desktop applications, since the NekoVM can be embedded and extended with some other DLL. PHP : You can compile a haXe program to .php files. This enable you to use a high level strictly-typed language such as haXe while keeping full compatibility with your existing server platform and libraries. The idea behind haXe is to let the developer choose the best platform to do a given job. In general, this is not easy to do because every new platform comes with its own programming language. What haXe provides to you is : - a standardized language with many good features - a standard library (including Date, Xml, Math...) that works the same on all platforms - platform-specific libraries : the full APIs for a given platform are accessible from haXe %prep %setup -q %patch0 -p1 tar zxf %{SOURCE1} tar zxf %{SOURCE2} %build # Upstream don't supply any reasonable build scripts, except for # Windoze! So we have to build everything by hand. pushd haxe-ocaml-libs-%{libdate}/extc ocamlc extc_stubs.c ocamlc -c extc.mli ocamlopt -c extc.ml ocamlmklib -o extc extc_stubs.o extc.cmx popd pushd haxe-ocaml-libs-%{libdate}/swflib ocamlfind ocamlopt -package extlib -a -o swfLib.cmxa \ -I ../extc \ as3.mli as3code.ml as3parse.ml as3hl.mli as3hlparse.ml \ swf.ml swfZip.ml actionScript.ml swfParser.ml popd ocamllex lexer.mll ocamlfind ocamlopt -package unix,extlib,xml-light \ -I haxe-ocaml-libs-%{libdate}/extc \ -I haxe-ocaml-libs-%{libdate}/swflib \ -I haxe-neko-libs-%{libdate} \ -pp camlp4o \ -linkpkg extc.cmxa swfLib.cmxa -o haxe \ ast.ml lexer.ml type.ml common.ml parser.ml \ typecore.ml genxml.ml typeload.ml codegen.ml \ typer.ml \ haxe-neko-libs-%{libdate}/nast.ml \ haxe-neko-libs-%{libdate}/binast.ml \ haxe-neko-libs-%{libdate}/nxml.ml \ genneko.ml genas3.ml genjs.ml genswf8.ml \ genswf9.ml genswf.ml genphp.ml main.ml \ -cclib -lz ./haxe std/tools/haxedoc/haxedoc.hxml ./haxe std/tools/haxelib/haxelib.hxml %install rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT%{_bindir} install -m 0755 haxe haxedoc haxelib $RPM_BUILD_ROOT%{_bindir} mkdir -p $RPM_BUILD_ROOT%{_datadir}/haxe find std -name CVS -type d | xargs rm -r find std -name .cvsignore -type f | xargs rm -r cp -r std/* $RPM_BUILD_ROOT%{_datadir}/haxe/ # Prevent prelink from stripping the bytecode from the binaries. mkdir -p $RPM_BUILD_ROOT/etc/prelink.conf.d echo '-b /usr/bin/haxe' > $RPM_BUILD_ROOT/etc/prelink.conf.d/haxe.conf %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) %doc doc/CHANGES.txt doc/LICENSE.txt %{_bindir}/haxe* %{_datadir}/haxe/ %config(noreplace) /etc/prelink.conf.d/haxe.conf %changelog * Tue Sep 2 2008 Richard W.M. Jones - 2.0-4 - Prevent prelink from stripping the binaries. - Missing BR zlib-devel. * Mon Sep 1 2008 Richard W.M. Jones - 2.0-2 - Better way to strip the binaries. * Sun Aug 31 2008 Richard W.M. Jones - 2.0-1 - Initial RPM release.