From af15b5923823a186c9deb258020e29fe3aad3fab Mon Sep 17 00:00:00 2001 From: Sam Kottler Date: Sat, 8 Mar 2014 14:13:31 +0600 Subject: [PATCH 1/2] Add bootstrap mode and add necessary conditionals for building rebar with a self-hosted rebar Rebar is built with rebar, which makes getting the initial bootstrap completed rather interesting. Additionally, erlang-rebar requires erlang-getopt, but erlang-rebar can't be built without erlang-getopt already available in the repo mock is using because of the patch which removes the vendored version. This commit adds a variable which uses the bundled getopt in order to bootstrap. --- erlang-rebar.spec | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/erlang-rebar.spec b/erlang-rebar.spec index e75bbcf..a9f00ae 100644 --- a/erlang-rebar.spec +++ b/erlang-rebar.spec @@ -4,6 +4,13 @@ %global git_tag ebb474b %global patchnumber 0 +# Set this to true when starting a rebuild of the whole erlang stack. There's +# a cyclical dependency between erlang-rebar and erlang-getopt so this package +# (rebar) needs to get built first in bootstrap mode. +%global need_bootstrap_set 0 + +%{!?need_bootstrap: %global need_bootstrap %{need_bootstrap_set}} + Name: erlang-%{realname} Version: 2.1.0 @@ -19,8 +26,13 @@ Source1: rebar.escript Patch1: rebar-0001-Don-t-load-templates-from-the-bundle.patch # Fedora/EPEL-specific Patch2: rebar-0002-Remove-bundled-mustache.patch + +# The bundled getopt is necessary to do the initial bootstrap since +# erlang-getopt requires erlang-rebar to build and vice versa. +%if 0%{?need_bootstrap} < 1 # Fedora/EPEL-specific Patch3: rebar-0003-Remove-bundled-getopt.patch +%endif # Backported from upstream Patch4: rebar-0004-Be-sure-to-filter-empty-sources-h-t-to-Tuncer-and-Jo.patch # Will be proposed for inclusion @@ -35,7 +47,13 @@ Patch8: rebar-0008-Remove-abnfc-compiler-support-n-a-in-Fedora-EPEL.patch Patch9: rebar-0009-Adjust-app-version.patch # Backported from upstream Patch10: rebar-0010-Fix-default-DTL-compilation-when-no-erlydtl_opts-are.patch + +%if 0%{?need_bootstrap} < 1 BuildRequires: erlang-rebar +%else +BuildRequires: erlang +%endif + # FIXME wip #Requires: erlang-abnfc%{?_isa} Requires: erlang-asn1%{?_isa} @@ -77,7 +95,9 @@ Erlang Build Tools. %setup -q -n %{upstream}-%{realname}-%{git_tag} %patch1 -p1 -b .dont_load_templates %patch2 -p1 -b .remove_bundled_mustache +%if 0%{?need_bootstrap} < 1 %patch3 -p1 -b .remove_bundled_getopt +%endif %patch4 -p1 -b .dont_try_building_so %patch5 -p1 -b .allow_discarding_ports %patch6 -p1 -b .use_locally_installed @@ -88,7 +108,12 @@ Erlang Build Tools. %build +%if 0%{?need_bootstrap} < 1 rebar compile -v +%else +./bootstrap +./rebar compile -v +%endif %install From 0648829759d4f018e1b2809a5038c4daf25dabc5 Mon Sep 17 00:00:00 2001 From: Sam Kottler Date: Sat, 8 Mar 2014 14:17:19 +0600 Subject: [PATCH 2/2] Bump the release for the bootstrap mode change --- erlang-rebar.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/erlang-rebar.spec b/erlang-rebar.spec index a9f00ae..6811df5 100644 --- a/erlang-rebar.spec +++ b/erlang-rebar.spec @@ -14,7 +14,7 @@ Name: erlang-%{realname} Version: 2.1.0 -Release: 0.6%{?dist} +Release: 0.7%{?dist} Summary: Erlang Build Tools Group: Development/Tools License: MIT @@ -137,6 +137,9 @@ cp -a priv %{buildroot}%{_libdir}/erlang/lib/%{realname}-%{version}/ %changelog +* Sat Mar 8 2014 Sam Kottler - 2.1.0-0.7 +- Add bootstrap variable and necessary conditionals for building without external getopt + * Sun Sep 01 2013 Peter Lemenkov - 2.1.0-0.5 - Added missing runtime requirements