summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSlava Barinov <v.barinov@samsung.com>2020-04-01 16:23:56 +0300
committerSlava Barinov <v.barinov@samsung.com>2020-04-15 19:39:33 +0300
commit6b0810fe3da396c471f2f25d0f2e9b5cd6274318 (patch)
treef99697e108bf29bf287a0fae6a48449965f0852c
parentdb638e78087850accf8df2ad050d0ce7a610c7b2 (diff)
downloadqemu-accel-6b0810fe3da396c471f2f25d0f2e9b5cd6274318.tar.gz
qemu-accel-6b0810fe3da396c471f2f25d0f2e9b5cd6274318.tar.bz2
qemu-accel-6b0810fe3da396c471f2f25d0f2e9b5cd6274318.zip
Guile compilation requires compiling large volume of .scm source files which is very slow under qemu-arm/qemu-aarch64 Change-Id: Iffd8945f91b66d58809e92b932c4d2e1180f8f41
-rw-r--r--packaging/qemu-accel-aarch64.spec46
-rw-r--r--packaging/qemu-accel-armv7hl.spec46
-rw-r--r--packaging/qemu-accel-armv7l.spec46
-rw-r--r--packaging/qemu-accel.spec.in46
4 files changed, 172 insertions, 12 deletions
diff --git a/packaging/qemu-accel-aarch64.spec b/packaging/qemu-accel-aarch64.spec
index c60dda4..a183920 100644
--- a/packaging/qemu-accel-aarch64.spec
+++ b/packaging/qemu-accel-aarch64.spec
@@ -77,9 +77,39 @@ ExclusiveArch: x86_64 %{ix86}
BuildRequires: libgcc-32bit
BuildRequires: glibc-32bit
%define multilib 1
+%if 0%{?armv7l}
+# 32bit guile is required for armv7l and armv7hl builds
+BuildRequires: guile-32bit
+BuildConflicts: guile
%endif
-
-
+%if 0%{?armv7hl}
+# 32bit guile is required for armv7l and armv7hl builds
+BuildRequires: guile-32bit
+BuildConflicts: guile
+%endif
+%if 0%{?aarch64}
+# 64bit guile is used for aarch64
+BuildRequires: guile
+BuildConflicts: guile-32bit
+%endif
+%else # x86_64
+%if 0%{?aarch64}
+# 64bit guile is required for aarch64 build
+BuildRequires: guile-64bit
+BuildConflicts: guile
+%endif
+%if 0%{?armv7l}
+# 32bit guile is used for armv7l and armv7hl builds
+BuildRequires: guile
+BuildConflicts: guile-64bit
+%endif
+%if 0%{?armv7hl}
+# 32bit guile is used for armv7l and armv7hl builds
+BuildRequires: guile
+BuildConflicts: guile-64bit
+%endif
+%endif
+BuildRequires: guile-modules
%description
This package is used in %{cross} architecture builds using qemu to speed up builds
with native binaries.
@@ -175,7 +205,8 @@ for executable in $LD \
%{_bindir}/{find,xargs,readlink,ls,cpio} \
%{_rpmconfigdir}/debugedit \
%{_rpmconfigdir}/*deps \
- %{_libdir}/{libunwind*.so*,libuuid*.so*}
+ %{_libdir}/{libunwind*.so*,libuuid*.so*} \
+ %{_bindir}/guile
do
binaries="$binaries $executable"
done
@@ -446,6 +477,15 @@ echo "%{emul_path}${gcc_build_dir}/gcc/xg++" >> %{_sourcedir}/all-accel.list
ln -sf %{emul_path}%{_bindir}/cpp ${buildroot_emul_path}/usr/lib/cpp
echo '%{emul_path}/usr/lib/cpp' >> %{_sourcedir}/all-accel.list
+## guile acceleration
+# we need to accelerate guile build
+export GUILE_AUTO_COMPILE=0
+guile_version=$(guile --version | sed -ne '/^guile/s/.*)[[:space:]]\+//p')
+guile_build_dir=%{_builddir}/guile-${guile_version}/libguile
+mkdir -p ${buildroot_emul_path}${guile_build_dir}
+ln -sf %{emul_path}%{_bindir}/guile ${buildroot_emul_path}${guile_build_dir}/guile
+echo "%{emul_path}${guile_build_dir}/guile" >> %{_sourcedir}/all-accel.list
+
# generate baselibs.conf for current architecture to prevent rpm overwriting in download repo
echo %{cross}
cat > %{_sourcedir}/baselibs_prologue << EOF
diff --git a/packaging/qemu-accel-armv7hl.spec b/packaging/qemu-accel-armv7hl.spec
index 57f785c..5f711d0 100644
--- a/packaging/qemu-accel-armv7hl.spec
+++ b/packaging/qemu-accel-armv7hl.spec
@@ -77,9 +77,39 @@ ExclusiveArch: x86_64 %{ix86}
BuildRequires: libgcc-32bit
BuildRequires: glibc-32bit
%define multilib 1
+%if 0%{?armv7l}
+# 32bit guile is required for armv7l and armv7hl builds
+BuildRequires: guile-32bit
+BuildConflicts: guile
%endif
-
-
+%if 0%{?armv7hl}
+# 32bit guile is required for armv7l and armv7hl builds
+BuildRequires: guile-32bit
+BuildConflicts: guile
+%endif
+%if 0%{?aarch64}
+# 64bit guile is used for aarch64
+BuildRequires: guile
+BuildConflicts: guile-32bit
+%endif
+%else # x86_64
+%if 0%{?aarch64}
+# 64bit guile is required for aarch64 build
+BuildRequires: guile-64bit
+BuildConflicts: guile
+%endif
+%if 0%{?armv7l}
+# 32bit guile is used for armv7l and armv7hl builds
+BuildRequires: guile
+BuildConflicts: guile-64bit
+%endif
+%if 0%{?armv7hl}
+# 32bit guile is used for armv7l and armv7hl builds
+BuildRequires: guile
+BuildConflicts: guile-64bit
+%endif
+%endif
+BuildRequires: guile-modules
%description
This package is used in %{cross} architecture builds using qemu to speed up builds
with native binaries.
@@ -175,7 +205,8 @@ for executable in $LD \
%{_bindir}/{find,xargs,readlink,ls,cpio} \
%{_rpmconfigdir}/debugedit \
%{_rpmconfigdir}/*deps \
- %{_libdir}/{libunwind*.so*,libuuid*.so*}
+ %{_libdir}/{libunwind*.so*,libuuid*.so*} \
+ %{_bindir}/guile
do
binaries="$binaries $executable"
done
@@ -446,6 +477,15 @@ echo "%{emul_path}${gcc_build_dir}/gcc/xg++" >> %{_sourcedir}/all-accel.list
ln -sf %{emul_path}%{_bindir}/cpp ${buildroot_emul_path}/usr/lib/cpp
echo '%{emul_path}/usr/lib/cpp' >> %{_sourcedir}/all-accel.list
+## guile acceleration
+# we need to accelerate guile build
+export GUILE_AUTO_COMPILE=0
+guile_version=$(guile --version | sed -ne '/^guile/s/.*)[[:space:]]\+//p')
+guile_build_dir=%{_builddir}/guile-${guile_version}/libguile
+mkdir -p ${buildroot_emul_path}${guile_build_dir}
+ln -sf %{emul_path}%{_bindir}/guile ${buildroot_emul_path}${guile_build_dir}/guile
+echo "%{emul_path}${guile_build_dir}/guile" >> %{_sourcedir}/all-accel.list
+
# generate baselibs.conf for current architecture to prevent rpm overwriting in download repo
echo %{cross}
cat > %{_sourcedir}/baselibs_prologue << EOF
diff --git a/packaging/qemu-accel-armv7l.spec b/packaging/qemu-accel-armv7l.spec
index b8770cb..62ab2da 100644
--- a/packaging/qemu-accel-armv7l.spec
+++ b/packaging/qemu-accel-armv7l.spec
@@ -77,9 +77,39 @@ ExclusiveArch: x86_64 %{ix86}
BuildRequires: libgcc-32bit
BuildRequires: glibc-32bit
%define multilib 1
+%if 0%{?armv7l}
+# 32bit guile is required for armv7l and armv7hl builds
+BuildRequires: guile-32bit
+BuildConflicts: guile
%endif
-
-
+%if 0%{?armv7hl}
+# 32bit guile is required for armv7l and armv7hl builds
+BuildRequires: guile-32bit
+BuildConflicts: guile
+%endif
+%if 0%{?aarch64}
+# 64bit guile is used for aarch64
+BuildRequires: guile
+BuildConflicts: guile-32bit
+%endif
+%else # x86_64
+%if 0%{?aarch64}
+# 64bit guile is required for aarch64 build
+BuildRequires: guile-64bit
+BuildConflicts: guile
+%endif
+%if 0%{?armv7l}
+# 32bit guile is used for armv7l and armv7hl builds
+BuildRequires: guile
+BuildConflicts: guile-64bit
+%endif
+%if 0%{?armv7hl}
+# 32bit guile is used for armv7l and armv7hl builds
+BuildRequires: guile
+BuildConflicts: guile-64bit
+%endif
+%endif
+BuildRequires: guile-modules
%description
This package is used in %{cross} architecture builds using qemu to speed up builds
with native binaries.
@@ -175,7 +205,8 @@ for executable in $LD \
%{_bindir}/{find,xargs,readlink,ls,cpio} \
%{_rpmconfigdir}/debugedit \
%{_rpmconfigdir}/*deps \
- %{_libdir}/{libunwind*.so*,libuuid*.so*}
+ %{_libdir}/{libunwind*.so*,libuuid*.so*} \
+ %{_bindir}/guile
do
binaries="$binaries $executable"
done
@@ -446,6 +477,15 @@ echo "%{emul_path}${gcc_build_dir}/gcc/xg++" >> %{_sourcedir}/all-accel.list
ln -sf %{emul_path}%{_bindir}/cpp ${buildroot_emul_path}/usr/lib/cpp
echo '%{emul_path}/usr/lib/cpp' >> %{_sourcedir}/all-accel.list
+## guile acceleration
+# we need to accelerate guile build
+export GUILE_AUTO_COMPILE=0
+guile_version=$(guile --version | sed -ne '/^guile/s/.*)[[:space:]]\+//p')
+guile_build_dir=%{_builddir}/guile-${guile_version}/libguile
+mkdir -p ${buildroot_emul_path}${guile_build_dir}
+ln -sf %{emul_path}%{_bindir}/guile ${buildroot_emul_path}${guile_build_dir}/guile
+echo "%{emul_path}${guile_build_dir}/guile" >> %{_sourcedir}/all-accel.list
+
# generate baselibs.conf for current architecture to prevent rpm overwriting in download repo
echo %{cross}
cat > %{_sourcedir}/baselibs_prologue << EOF
diff --git a/packaging/qemu-accel.spec.in b/packaging/qemu-accel.spec.in
index 5037080..681396e 100644
--- a/packaging/qemu-accel.spec.in
+++ b/packaging/qemu-accel.spec.in
@@ -74,9 +74,39 @@ ExclusiveArch: x86_64 %{ix86}
BuildRequires: libgcc-32bit
BuildRequires: glibc-32bit
%define multilib 1
+%if 0%{?armv7l}
+# 32bit guile is required for armv7l and armv7hl builds
+BuildRequires: guile-32bit
+BuildConflicts: guile
%endif
-
-
+%if 0%{?armv7hl}
+# 32bit guile is required for armv7l and armv7hl builds
+BuildRequires: guile-32bit
+BuildConflicts: guile
+%endif
+%if 0%{?aarch64}
+# 64bit guile is used for aarch64
+BuildRequires: guile
+BuildConflicts: guile-32bit
+%endif
+%else # x86_64
+%if 0%{?aarch64}
+# 64bit guile is required for aarch64 build
+BuildRequires: guile-64bit
+BuildConflicts: guile
+%endif
+%if 0%{?armv7l}
+# 32bit guile is used for armv7l and armv7hl builds
+BuildRequires: guile
+BuildConflicts: guile-64bit
+%endif
+%if 0%{?armv7hl}
+# 32bit guile is used for armv7l and armv7hl builds
+BuildRequires: guile
+BuildConflicts: guile-64bit
+%endif
+%endif
+BuildRequires: guile-modules
%description
This package is used in %{cross} architecture builds using qemu to speed up builds
with native binaries.
@@ -172,7 +202,8 @@ for executable in $LD \
%{_bindir}/{find,xargs,readlink,ls,cpio} \
%{_rpmconfigdir}/debugedit \
%{_rpmconfigdir}/*deps \
- %{_libdir}/{libunwind*.so*,libuuid*.so*}
+ %{_libdir}/{libunwind*.so*,libuuid*.so*} \
+ %{_bindir}/guile
do
binaries="$binaries $executable"
done
@@ -443,6 +474,15 @@ echo "%{emul_path}${gcc_build_dir}/gcc/xg++" >> %{_sourcedir}/all-accel.list
ln -sf %{emul_path}%{_bindir}/cpp ${buildroot_emul_path}/usr/lib/cpp
echo '%{emul_path}/usr/lib/cpp' >> %{_sourcedir}/all-accel.list
+## guile acceleration
+# we need to accelerate guile build
+export GUILE_AUTO_COMPILE=0
+guile_version=$(guile --version | sed -ne '/^guile/s/.*)[[:space:]]\+//p')
+guile_build_dir=%{_builddir}/guile-${guile_version}/libguile
+mkdir -p ${buildroot_emul_path}${guile_build_dir}
+ln -sf %{emul_path}%{_bindir}/guile ${buildroot_emul_path}${guile_build_dir}/guile
+echo "%{emul_path}${guile_build_dir}/guile" >> %{_sourcedir}/all-accel.list
+
# generate baselibs.conf for current architecture to prevent rpm overwriting in download repo
echo %{cross}
cat > %{_sourcedir}/baselibs_prologue << EOF