Add test case for tizen riscv.
authorwanchao-xu <wanchao.xu@samsung.com>
Thu, 7 Dec 2023 00:22:22 +0000 (08:22 +0800)
committerwanchao-xu <wanchao.xu@samsung.com>
Thu, 7 Dec 2023 00:22:22 +0000 (08:22 +0800)
Change-Id: I2f9a51635f97bfe22704b6b252a01ba2df602ad8
Signed-off-by: wanchao-xu <wanchao.xu@samsung.com>
15 files changed:
cases/build/test_build_binary_from_file_riscv.case [new file with mode: 0755]
cases/build/test_build_buildroot_riscv.case [new file with mode: 0755]
cases/build/test_build_clean-once_riscv.case [new file with mode: 0755]
cases/build/test_build_exclude_riscv.case [new file with mode: 0755]
cases/build/test_build_incremental_dir_riscv.case [new file with mode: 0755]
cases/build/test_build_incremental_riscv.case [new file with mode: 0755]
cases/build/test_build_incremental_spec_riscv.case [new file with mode: 0755]
cases/build/test_build_keep-packs_riscv.case [new file with mode: 0755]
cases/build/test_build_no-configure_riscv.case [new file with mode: 0755]
cases/build/test_build_noinit_riscv.case [new file with mode: 0755]
cases/build/test_build_overwrite_riscv.case [new file with mode: 0755]
cases/build/test_build_threads_riscv.case [new file with mode: 0755]
fixtures/conf/base.cfg
fixtures/conf/riscv.conf [new file with mode: 0755]
fixtures/tools/assert

diff --git a/cases/build/test_build_binary_from_file_riscv.case b/cases/build/test_build_binary_from_file_riscv.case
new file mode 100755 (executable)
index 0000000..d8f86df
--- /dev/null
@@ -0,0 +1,44 @@
+<testcase>
+  <summary>test binary-from-file feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/capi-system-power.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/riscv.conf" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ${GBS_LOCAL_REPOS}
+
+sudo /bin/rm -rf $GBS_ROOT_RISCV_0
+
+./create_proj fake.spec
+
+./create_proj -C power capi-system-power.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+touch bin-list
+
+echo fake >> bin-list
+
+echo xorg-x11-filesystem >> bin-list
+
+cat bin-list
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --binary-from-file=bin-list -P tizen_riscv64 -A riscv64 -D riscv.conf 2>&1 | tee log
+
+AssertCleanWith fake power xorg-x11-filesystem
+
+AssertRPMsRWithout power
+
+AssertRPMsRWith xorg-x11-filesystem fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_buildroot_riscv.case b/cases/build/test_build_buildroot_riscv.case
new file mode 100755 (executable)
index 0000000..2c11e07
--- /dev/null
@@ -0,0 +1,26 @@
+<testcase>
+  <summary>test buildroot feature</summary>
+  <tracking>
+    <ticket>60</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/buildroot/local/repos
+
+sudo /bin/rm -rf ~/buildroot/local/BUILD-ROOTS/scratch.riscv64.0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build --buildroot=~/buildroot -P tizen_riscv64 -A riscv64 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/buildroot/local/repos -name "*fake*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_clean-once_riscv.case b/cases/build/test_build_clean-once_riscv.case
new file mode 100755 (executable)
index 0000000..1a337d8
--- /dev/null
@@ -0,0 +1,34 @@
+<testcase>
+  <summary>test clean-once feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/riscv.conf" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf ${GBS_LOCAL_REPOS}
+
+sudo /bin/rm -rf $GBS_ROOT_RISCV_0
+
+./create_proj fake.spec
+
+gbs -c base.cfg build -P tizen_riscv64 -A riscv64 -D riscv.conf fake
+
+sudo /bin/touch ~/GBS-ROOT/local/BUILD-ROOTS/scratch.riscv64.0/test.txt
+
+gbs -c base.cfg build --clean-once -P tizen_riscv64 -A riscv64 -D riscv.conf --overwrite 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+#buildroot is cleaned, so test.txt doesn't exist
+[ ! -f ~/GBS-ROOT/local/BUILD-ROOTS/scratch.riscv64.0/test.txt ]
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_exclude_riscv.case b/cases/build/test_build_exclude_riscv.case
new file mode 100755 (executable)
index 0000000..6e054b5
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+  <summary>test exclude feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/capi-system-power.spec" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/riscv.conf" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.riscv64.0
+
+./create_proj fake.spec
+
+./create_proj -C power capi-system-power.spec
+
+./create_proj xorg-x11-filesystem.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --exclude=power,fake -P tizen_riscv64 -A riscv64 -D riscv.conf 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd power && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd xorg-x11-filesystem && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -z "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+test -z "`find ~/GBS-ROOT/local/repos -name "*power*.rpm"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_dir_riscv.case b/cases/build/test_build_incremental_dir_riscv.case
new file mode 100755 (executable)
index 0000000..187f68b
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>test incremental feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/riscv.conf" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --clean -P tizen_riscv64 -A riscv64 -D riscv.conf
+
+gbs -c base.cfg build --incremental -P tizen_riscv64 -A riscv64 -D riscv.conf 2>&1 | tee log
+
+#check build log key word
+test -z "`grep "mount:.*scratch" log`"
+
+test -n "`grep "rpmbuild.*-bs" log`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos/ -name "*sw-tools*rpm"`"
+
+#check generated rpm whether is rpmlib(ShortCircuited) or not
+find ~/GBS-ROOT/local/repos/ -name "*rpm" |xargs -i rpm -qpR {} |grep "rpmlib(ShortCircuited)"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_riscv.case b/cases/build/test_build_incremental_riscv.case
new file mode 100755 (executable)
index 0000000..af6e8f2
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+  <summary>test incremental feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/riscv.conf" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --clean -P tizen_riscv64 -A riscv64 -D riscv.conf sw-tools
+
+gbs -c base.cfg build --incremental -P tizen_riscv64 -A riscv64 -D riscv.conf sw-tools 2>&1 | tee log
+
+#check build log key word
+test -z "`grep "mount:.*scratch" log`"
+
+test -n "`grep "rpmbuild.*-bs" log`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos/ -name "*sw-tools*rpm"`"
+
+#check generated rpm whether is rpmlib(ShortCircuited) or not
+find ~/GBS-ROOT/local/repos/ -name "*rpm" |xargs -i rpm -qpR {} |grep "rpmlib(ShortCircuited)"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_incremental_spec_riscv.case b/cases/build/test_build_incremental_spec_riscv.case
new file mode 100755 (executable)
index 0000000..105fec4
--- /dev/null
@@ -0,0 +1,42 @@
+<testcase>
+  <summary>test incremental feature with spec option</summary>
+  <tracking>
+    <ticket>69</ticket>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/fake-dev.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/riscv.conf" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.riscv64.*
+
+./create_proj fake.spec fake-dev.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --clean --spec=fake-dev.spec fake -P tizen_riscv64 -A riscv64 -D riscv.conf 2>&1 | tee log
+
+#check build log key word
+test -z "`grep "init_buildsystem.*fake.spec" log`"
+
+test -n "`grep "init_buildsystem.*fake-dev.spec" log`"
+
+gbs -c base.cfg build --incremental --spec=fake-dev.spec fake -P tizen_riscv64 -A riscv64 -D riscv.conf 2>&1 | tee log2
+
+test -z "`grep "mount:.*scratch" log2`"
+
+test -n "`grep "rpmbuild.*-b[c|p]" log2`"
+
+#check rpm generated whether or not
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake-dev*rpm"`"
+
+#check generated rpm whether is rpmlib(ShortCircuited) or not
+find ~/GBS-ROOT/local/repos/ -name "*rpm" |xargs -i rpm -qpR {} |grep "rpmlib(ShortCircuited)"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_keep-packs_riscv.case b/cases/build/test_build_keep-packs_riscv.case
new file mode 100755 (executable)
index 0000000..2f84c0e
--- /dev/null
@@ -0,0 +1,47 @@
+<testcase>
+  <summary>test keep-packs feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/xorg-x11-filesystem.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/riscv.conf" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.riscv64.0
+
+./create_proj xorg-x11-filesystem.spec
+
+./create_proj sw-tools.spec
+
+gbs -c base.cfg build sw-tools -P tizen_riscv64 -A riscv64 -D riscv.conf 2>&1 | tee log
+
+count1="`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.riscv64.0 rpm -qa | wc -l`"
+
+gbs -c base.cfg build xorg-x11-filesystem --keep-packs -P tizen_riscv64 -A riscv64 -D riscv.conf 2>&1 | tee log
+
+count2="`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.riscv64.0 rpm -qa | wc -l`"
+
+test "$count1" == "$count2"
+
+test -z "`grep "deleting.*" log`"
+
+test -n "`grep "init_buildsystem.*keep-packs" log`"
+
+cd xorg-x11-filesystem && test -n "`git status | grep -E "working tree|directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*xorg-x11-filesystem*.rpm"`"
+
+gbs -c base.cfg build xorg-x11-filesystem -P tizen_riscv64 -A riscv64 -D riscv.conf --overwrite 2>&1 | tee log
+
+count3="`sudo chroot ~/GBS-ROOT/local/BUILD-ROOTS/scratch.riscv64.0 rpm -qa | wc -l`"
+
+test "$count2" \> "$count3"
+
+test -n "`grep "deleting.*" log`"
+
+test -z "`grep "init_buildsystem.*keep-packs" log`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_no-configure_riscv.case b/cases/build/test_build_no-configure_riscv.case
new file mode 100755 (executable)
index 0000000..e96751f
--- /dev/null
@@ -0,0 +1,47 @@
+<testcase>
+  <summary>test no-configure feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="tools/assert" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/riscv.conf" />
+  </fixtures>
+  <steps><![CDATA[
+. assert
+
+sudo /bin/rm -rf $GBS_LOCAL_REPOS
+
+perl -i -pne 's/(%setup.*)/$1\n%build\n%configure/' fake.spec
+
+./create_proj fake.spec
+
+cd fake
+
+echo "#!/bin/sh" >configure
+
+echo "echo 'command in configure'" >>configure
+
+chmod +x configure
+
+git add configure
+
+git commit -m 'add configure'
+
+cd ..
+
+gbs -c base.cfg build -P tizen_riscv64 -A riscv64 -D riscv.conf fake
+git config --global --add safe.directory $PWD/fake
+gbs -c base.cfg build --incremental -P tizen_riscv64 -A riscv64 -D riscv.conf fake 2>&1| tee log
+
+#configure has been executed
+grep "command in configure" log
+
+gbs -c base.cfg build --no-configure --incremental -P tizen_riscv64 -A riscv64 -D riscv.conf fake 2>&1| tee log2
+
+#configure has not been executed if --no-configure
+( ! grep "command in configure" log2 )
+
+AssertRPMsRWith fake
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_noinit_riscv.case b/cases/build/test_build_noinit_riscv.case
new file mode 100755 (executable)
index 0000000..1874815
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+  <summary>test noinit feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/riscv.conf" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+./create_proj sw-tools.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --clean -P tizen_riscv64 -A riscv64 -D riscv.conf 2>&1 | tee log
+
+gbs -c base.cfg build --noinit -P tizen_riscv64 -A riscv64 -D riscv.conf 2>&1 | tee log
+
+test -z "`grep "generate repositories" log`"
+
+cd sw-tools && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_overwrite_riscv.case b/cases/build/test_build_overwrite_riscv.case
new file mode 100755 (executable)
index 0000000..619d2a2
--- /dev/null
@@ -0,0 +1,37 @@
+<testcase>
+  <summary>test overwrite feature</summary>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/riscv.conf" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.riscv64.0
+
+./create_proj fake.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build -P tizen_riscv64 -A riscv64 -D riscv.conf 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+test -z "`grep "skip.*fake" log`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+time1=`ls -l --full-time ~/GBS-ROOT/local/repos/tizen_riscv64/riscv64/RPMS | grep fake | awk '{ print $7 }'`
+
+gbs -c base.cfg build --overwrite -P tizen_riscv64 -A riscv64 -D riscv.conf 2>&1 | tee log
+
+time2=`ls -l --full-time ~/GBS-ROOT/local/repos/tizen_riscv64/riscv64/RPMS | grep fake | awk '{ print $7 }'`
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test "$time1" != "$time2"
+]]></steps>
+</testcase>
diff --git a/cases/build/test_build_threads_riscv.case b/cases/build/test_build_threads_riscv.case
new file mode 100755 (executable)
index 0000000..8ba7abe
--- /dev/null
@@ -0,0 +1,49 @@
+<testcase>
+  <summary>test threads feature</summary>
+  <tracking>
+    <change>8427</change>
+  </tracking>
+  <fixtures>
+    <copy src="tools/create_proj" />
+    <copy src="specs/fake.spec" />
+    <copy src="specs/tizen-release.spec" />
+    <copy src="specs/sw-tools.spec" />
+    <copy src="conf/base.cfg" />
+    <copy src="conf/riscv.conf" />
+  </fixtures>
+  <steps><![CDATA[
+sudo /bin/rm -rf ~/GBS-ROOT/local/repos
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/cache
+
+sudo /bin/rm -rf ~/GBS-ROOT/local/BUILD-ROOTS/scratch.riscv64.*
+
+./create_proj fake.spec
+
+./create_proj tizen-release.spec
+
+./create_proj sw-tools.spec
+
+#broken register
+sudo sh -c "echo -1 >/proc/sys/fs/binfmt_misc/status"
+
+gbs -c base.cfg build --threads=4 -P tizen_riscv64 -A riscv64 -D riscv.conf --debug 2>&1 | tee log
+
+test -z "`grep "mount:.*scratch" log`"
+
+cd fake && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd tizen-release && test -n "`git status | grep "working directory clean"`" && cd ..
+
+cd sw-tools && test -n "`git status | grep "working directory clean"`" && cd ..
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*fake*.rpm"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*tizen-release*.rpm"`"
+
+test -n "`find ~/GBS-ROOT/local/repos -name "*sw-tools*.rpm"`"
+]]></steps>
+  <teardown><![CDATA[
+find ~/GBS-ROOT/local/repos/tizen/armv7l/logs/fail -name "log.txt" -exec cat {} \;
+]]></teardown>
+</testcase>
index 2318936ed18c86794241c7126fc15690e1e73465..51275c7c6b15ab96db988f818e73b3b6595c2c51 100644 (file)
@@ -65,3 +65,12 @@ repos = repo.tizen_without_conf
 [repo.tizen_without_conf]
 #there is no builddata under latest directory
 url = http://localhost:8881/without_conf_gbs/
+
+[profile.tizen_riscv64]
+repos = repo.tizen_riscv64_base, repo.tizen_riscv64_unified
+
+[repo.tizen_riscv64_base]
+url = http://download.tizen.org/releases/milestone/TIZEN/Tizen/Tizen-Base-RISCV/latest/repos/standard/packages/
+
+[repo.tizen_riscv64_unified]
+url = http://download.tizen.org/releases/milestone/TIZEN/Tizen/Tizen-Unified-RISCV/latest/repos/standard/packages/
diff --git a/fixtures/conf/riscv.conf b/fixtures/conf/riscv.conf
new file mode 100755 (executable)
index 0000000..9a2e2d1
--- /dev/null
@@ -0,0 +1,979 @@
+%define _project Tizen-Unified-RISCV
+
+Macros:
+%vendor Tizen
+%_project Tizen-Unified-RISCV
+:Macros
+
+%define _project Tizen-Unified-RISCV
+
+Macros:
+%vendor Tizen
+%_project Tizen-Unified-RISCV
+:Macros
+
+%define _project Tizen-Unified-RISCV
+
+Macros:
+%vendor Tizen
+%_project Tizen-Unified-RISCV
+:Macros
+
+%define _project Tizen-Unified-RISCV
+
+### from Tizen:Base
+%define _repository standard
+
+Macros:
+%vendor obs://private/Tizen:Base
+%_project Tizen-Unified-RISCV
+
+
+%_project Tizen-Unified-RISCV
+
+### from Tizen:Base
+
+%_repository standard
+:Macros
+
+################################################################################
+# OBS Project config for Tizen:Base
+#
+# RE contacts:
+#
+#
+# vim: set syntax=spec:
+################################################################################
+
+Patterntype: rpm-md comps
+Release: <CI_CNT>.<B_CNT>
+Support: build
+Support: build-compare build-mkbaselibs
+# Support: rpmlint-mini rpmlint-tizen
+
+############################# conflicts resolution #############################
+
+Prefer: util-linux
+Prefer: mono-wcf
+Prefer: monodoc
+Prefer: mono-extras
+Prefer: mono-web
+Prefer: mono-data
+Prefer: mono-mvc
+Prefer: mono-winforms
+Prefer: mono-data-sqlite
+
+# Set a preference for ambiguous libs to use *-64bit libs
+#     *-64bit libs on 32bit build environment are required for .Net build (e.g., coreclr, corefx)
+#     But when building 64bit target, they could make 'have choice' error with original libs in 64bit repository.
+#     e.g., libstdc++ and libstdc++-64bit provides same libs. It's ambiguous to choose appropriate one.
+#     Owner : Jiyoung Yun (jy910.yun@samsung.com)
+#     libopenssl11 : Dongsun Lee (ds73.lee@samsung.com)
+Prefer: libgcc libstdc++ libunwind libuuid zlib libopenssl libopenssl11
+Prefer: lldb
+
+############################# base definition ###############################
+
+# %release_name and %tizen_full_version are used in platform/upstream/tizen-release
+
+Macros:
+%release_name Tizen8.0/Unified
+
+%tizen_version_major 8
+%tizen_version_minor 0
+%tizen_version_patch 0
+
+%tizen_version %{tizen_version_major}.%{tizen_version_minor}
+%tizen_full_version %{tizen_version}.%{tizen_version_patch}
+%tizen %tizen_version
+%vendor tizen
+%_vendor tizen
+%_with_tizen 1
+
+#### %__spec_check_pre exit 0
+#### %run_check_section 0
+
+%opensuse_bs 1
+%_default_patch_fuzz   2
+
+%_binary_payload w5T.xzdio
+:Macros
+
+
+############################# build config #####################################
+
+########## targets ##########
+
+%ifarch i586
+Target: i686-tizen-linux
+%endif
+
+%ifarch armv7hl
+Target: armv7hl-tizen-linux
+%endif
+
+%ifarch armv7l
+Target: armv7l-tizen-linux
+%endif
+
+%ifarch aarch64
+Target: aarch64-tizen-linux
+%endif
+
+%ifarch riscv64
+Target: riscv64-tizen-linux
+%endif
+
+########## cross build ##########
+
+%define build_hostarch x86_64
+Macros:
+%build_hostarch x86_64
+:Macros
+
+%ifarch riscv64 %arm armv7l armv7hl aarch64
+Hostarch: x86_64
+# cross build support for the build hosts
+Preinstall: qemu-linux-user-%{build_hostarch}-cross
+Runscripts: qemu-linux-user-%{build_hostarch}-cross
+Keep: qemu-linux-user-%{build_hostarch}-cross
+Macros:
+%qemu_user_space_build 1
+:Macros
+%endif
+
+%ifarch armv7l
+Preinstall: qemu-accel-%{build_hostarch}-armv7l
+Runscripts: qemu-accel-%{build_hostarch}-armv7l
+Preinstall: libmount libblkid libuuid
+%endif
+
+%ifarch armv7hl
+Preinstall: qemu-accel-%{build_hostarch}-armv7hl
+Runscripts: qemu-accel-%{build_hostarch}-armv7hl
+Preinstall: libmount libblkid libuuid
+%endif
+
+%ifarch aarch64
+Preinstall: qemu-accel-%{build_hostarch}-aarch64
+Runscripts: qemu-accel-%{build_hostarch}-aarch64
+Preinstall: libmount libblkid libuuid
+%endif # aarch64
+
+%ifarch riscv64
+Preinstall: qemu-accel-%{build_hostarch}-riscv64
+Runscripts: qemu-accel-%{build_hostarch}-riscv64
+Preinstall: libmount libblkid libuuid
+%endif # riscv64
+
+Substitute: python-accel-armv7l-cross-arm python-accel-%{build_hostarch}-armv7l
+Substitute: python-accel-armv7hl-cross-arm python-accel-%{build_hostarch}-armv7hl
+Substitute: python-accel-aarch64-cross-aarch64 python-accel-%{build_hostarch}-aarch64
+Substitute: python-accel-riscv64-cross-riscv64 python-accel-%{build_hostarch}-riscv64
+
+Substitute: clang-accel-armv7l-cross-arm clang-accel-%{build_hostarch}-armv7l
+Substitute: clang-accel-armv7hl-cross-arm clang-accel-%{build_hostarch}-armv7hl
+Substitute: clang-accel-aarch64-cross-aarch64 clang-accel-%{build_hostarch}-aarch64
+Substitute: clang-accel-riscv64-cross-riscv64 clang-accel-%{build_hostarch}-riscv64
+
+########## exports for different architectures ##########
+
+ExportFilter: \.armv7l\.rpm$ armv7l
+ExportFilter: \.armv7hl\.rpm$ armv7hl
+ExportFilter: \.aarch64\.rpm$ aarch64
+ExportFilter: \.i586\.rpm$ i586
+ExportFilter: \.x86_64\.rpm$ x86_64
+ExportFilter: \.riscv64\.rpm$ riscv64
+
+########## buildroot config ##########
+
+Preinstall: setup filesystem
+RunScripts: setup
+
+Preinstall: bash bzip2 coreutils diffutils grep rpm
+Preinstall: glibc libacl libattr
+Preinstall: libcap
+Preinstall: libgcc
+Preinstall: libpopt sed tar zlib
+Preinstall: libncurses libreadline
+Preinstall: libelf libbz2
+Preinstall: liblzma
+Preinstall: nss nspr libfreebl3 libsoftokn3
+Preinstall: libmagic
+Preinstall: liblua
+Preinstall: smack libsmack libxml2 libmagic  libmagic-data
+Preinstall: libsqlite
+#Preinstall: rpm-security-plugin
+Preinstall: util-linux util-linux-su
+Preinstall: libzstd1
+
+VMinstall: perl libmount libblkid libext2fs libuuid  grep libpcre util-linux libsmartcols procps-ng
+
+Required: binutils gcc glibc rpm-build libtool
+Required: gcc-c++
+
+Support: glibc-locale
+Support: perl
+Support: hostname
+Support: cpio findutils
+Support: file findutils zlib bzip2
+Support: gzip hostname net-tools
+Support: make  patch sed  gawk tar grep coreutils pkg-config
+Support: m4  tzdata
+Support: util-linux
+Support: less
+Support: which  elfutils
+Support: update-alternatives
+Support: libstdc++-devel
+Support: cpp
+Support: libatomic
+Support: libgomp
+Support: libitm
+
+Keep: libstdc++-devel
+Keep: cpp gcc libstdc++
+Keep: pam
+Keep: binutils cpp  libmagic-data file findutils gawk gcc  gcc-c++
+Keep: gdbm gzip libada libunwind  glibc-devel libpcre xz-lzma-compat
+Keep: make  gmp libcap groff cpio
+Keep: patch rpm-build  nss nspr elfutils python grep libgcc gcc-c++
+Keep: kernel-headers  perl-libs perl
+Keep: pkgconfig glib2 tizen-rpm-config
+Keep: libmpc libmpfr libppl libgmp libppl_c
+Keep: libcloog libppl libgmpxx
+Keep: nss-softokn-freebl libmagic libmagic-data
+Keep: setup
+Keep: update-alternatives
+Keep: cpp
+Keep: gcc-c++
+Keep: libatomic
+Keep: libgomp
+Keep: libitm
+
+Substitute: gettext gettext-tools
+
+%ifarch x86_64
+Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit
+Substitute: libgcc_s1-32bit libgcc-32bit
+%else
+Substitute: glibc-devel-32bit
+%endif
+
+########## compilation flags ##########
+%define __global_cflags -O2 -g2 -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong -Wformat-security -fmessage-length=0 -frecord-gcc-switches -Wl,-z,relro,--as-needed
+
+Optflags: armv7l %{__global_cflags} --param=ssp-buffer-size=4 -march=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=softfp -mthumb -Wp,-D__SOFTFP__ -Wl,-O1 -Wl,--hash-style=gnu -Wa,-mimplicit-it=thumb -D_FILE_OFFSET_BITS=64
+Optflags: armv7hl %{__global_cflags} --param=ssp-buffer-size=4 -march=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=hard -mthumb -Wl,-O1 -Wl,--hash-style=gnu -Wa,-mimplicit-it=thumb -D_FILE_OFFSET_BITS=64
+Optflags: aarch64 %{__global_cflags} -feliminate-unused-debug-types -Wformat -march=armv8-a+fp+simd+crc+crypto -mtune=cortex-a57.cortex-a53
+Optflags: i686 %{__global_cflags} -feliminate-unused-debug-types --param=ssp-buffer-size=4 -fdiagnostics-color=never -m32 -march=i686 -mtune=i686 -msse4.2 -mfpmath=sse -fasynchronous-unwind-tables -fno-omit-frame-pointer -mstackrealign -Wl,-z,noseparate-code
+Optflags: x86_64 %{__global_cflags} -feliminate-unused-debug-types --param=ssp-buffer-size=4 -fdiagnostics-color=never -m64 -march=nehalem -msse4.2 -mfpmath=sse -fasynchronous-unwind-tables -fno-omit-frame-pointer
+Optflags: riscv64 %{__global_cflags} -feliminate-unused-debug-types -Wformat -mabi=lp64d -march=rv64gc
+### from Tizen-Base-RISCV
+%define _repository standard
+
+Macros:
+
+
+%_project Tizen-Unified-RISCV
+
+### from Tizen-Base-RISCV
+
+%_repository standard
+:Macros
+
+################################################################################
+# OBS Project config for Tizen:Base
+#
+# RE contacts:
+#
+#
+# vim: set syntax=spec:
+################################################################################
+
+Patterntype: rpm-md comps
+Release: <CI_CNT>.<B_CNT>
+Support: build
+Support: build-compare build-mkbaselibs
+# Support: rpmlint-mini rpmlint-tizen
+
+# new cycle handling (gbs version >= 0.25.29)
+BuildFlags: genmetaalgo:1
+
+############################# conflicts resolution #############################
+
+Prefer: util-linux
+Prefer: mono-wcf
+Prefer: monodoc
+Prefer: mono-extras
+Prefer: mono-web
+Prefer: mono-data
+Prefer: mono-mvc
+Prefer: mono-winforms
+Prefer: mono-data-sqlite
+
+# Set a preference for ambiguous libs to use *-64bit libs
+#     *-64bit libs on 32bit build environment are required for .Net build (e.g., coreclr, corefx)
+#     But when building 64bit target, they could make 'have choice' error with original libs in 64bit repository.
+#     e.g., libstdc++ and libstdc++-64bit provides same libs. It's ambiguous to choose appropriate one.
+#     Owner : Jiyoung Yun (jy910.yun@samsung.com)
+#     libopenssl11 : Dongsun Lee (ds73.lee@samsung.com)
+Prefer: libgcc libstdc++ libunwind libuuid zlib libopenssl libopenssl11
+Prefer: lldb
+
+############################# base definition ###############################
+
+# %release_name and %tizen_full_version are used in platform/upstream/tizen-release
+
+Macros:
+%release_name Tizen8.0/Unified
+
+%tizen_version_major 8
+%tizen_version_minor 0
+%tizen_version_patch 0
+
+%tizen_version %{tizen_version_major}.%{tizen_version_minor}
+%tizen_full_version %{tizen_version}.%{tizen_version_patch}
+%tizen %tizen_version
+%vendor tizen
+%_vendor tizen
+%_with_tizen 1
+
+%opensuse_bs 1
+%_default_patch_fuzz   2
+
+%_binary_payload w5T.xzdio
+:Macros
+
+#### %%__spec_check_pre exit 0
+#### %%run_check_section 0
+
+# skip %%check section
+Macros:
+# skip package list
+%_skip_check_packages autogen bison boost expat findutils flex fribidi glibc \\\
+gmp gn golang grep libgc libgcrypt libogg libsigc++ libvorbis libxml2 libzio \\\
+m4 nspr openssl openssl1.1 perl-Devel-Symdump perl-gettext perl-Pod-Coverage \\\
+perl-Test-Pod perl-Test-Pod-Coverage perl-TimeDate procps-ng python3-mako \\\
+python3-mock python3-ply python-funcsigs python-mako python-mock python-ply \\\
+setup zlib openssl3 autoconf
+
+%__spec_check_pre \
+for name in %_skip_check_packages \
+do \
+    if [ "$name" = "%{name}" ]; then \
+        exit 0 \
+    fi \
+done \
+%{___build_pre} \
+%{nil}
+
+:Macros
+
+############################# build config #####################################
+
+########## targets ##########
+
+%ifarch i586
+Target: i686-tizen-linux
+%endif
+
+%ifarch armv7hl
+Target: armv7hl-tizen-linux
+%endif
+
+%ifarch armv7l
+Target: armv7l-tizen-linux
+%endif
+
+%ifarch aarch64
+Target: aarch64-tizen-linux
+%endif
+
+%ifarch riscv64
+Target: riscv64-tizen-linux
+%endif
+
+########## cross build ##########
+
+%define build_hostarch x86_64
+Macros:
+%build_hostarch x86_64
+:Macros
+
+%ifarch riscv64 %arm armv7l armv7hl aarch64
+Hostarch: x86_64
+# cross build support for the build hosts
+Preinstall: qemu-linux-user-%{build_hostarch}-cross
+Runscripts: qemu-linux-user-%{build_hostarch}-cross
+Keep: qemu-linux-user-%{build_hostarch}-cross
+Macros:
+%qemu_user_space_build 1
+:Macros
+%endif
+
+%ifarch armv7l
+Preinstall: qemu-accel-%{build_hostarch}-armv7l
+Runscripts: qemu-accel-%{build_hostarch}-armv7l
+Preinstall: libmount libblkid libuuid
+%endif
+
+%ifarch armv7hl
+Preinstall: qemu-accel-%{build_hostarch}-armv7hl
+Runscripts: qemu-accel-%{build_hostarch}-armv7hl
+Preinstall: libmount libblkid libuuid
+%endif
+
+%ifarch aarch64
+Preinstall: qemu-accel-%{build_hostarch}-aarch64
+Runscripts: qemu-accel-%{build_hostarch}-aarch64
+Preinstall: libmount libblkid libuuid
+%endif # aarch64
+
+%ifarch riscv64
+Preinstall: qemu-accel-%{build_hostarch}-riscv64
+Runscripts: qemu-accel-%{build_hostarch}-riscv64
+Preinstall: libmount libblkid libuuid
+%endif # riscv64
+
+Substitute: python-accel-armv7l-cross-arm python-accel-%{build_hostarch}-armv7l
+Substitute: python-accel-armv7hl-cross-arm python-accel-%{build_hostarch}-armv7hl
+Substitute: python-accel-aarch64-cross-aarch64 python-accel-%{build_hostarch}-aarch64
+Substitute: python-accel-riscv64-cross-riscv64 python-accel-%{build_hostarch}-riscv64
+
+Substitute: clang-accel-armv7l-cross-arm clang-accel-%{build_hostarch}-armv7l
+Substitute: clang-accel-armv7hl-cross-arm clang-accel-%{build_hostarch}-armv7hl
+Substitute: clang-accel-aarch64-cross-aarch64 clang-accel-%{build_hostarch}-aarch64
+Substitute: clang-accel-riscv64-cross-riscv64 clang-accel-%{build_hostarch}-riscv64
+
+########## exports for different architectures ##########
+
+ExportFilter: \.armv7l\.rpm$ armv7l
+ExportFilter: \.armv7hl\.rpm$ armv7hl
+ExportFilter: \.aarch64\.rpm$ aarch64
+ExportFilter: \.i586\.rpm$ i586
+ExportFilter: \.x86_64\.rpm$ x86_64
+ExportFilter: \.riscv64\.rpm$ riscv64
+
+########## buildroot config ##########
+
+Preinstall: setup filesystem
+RunScripts: setup
+
+Preinstall: bash bzip2 coreutils diffutils grep rpm
+Preinstall: glibc libacl libattr
+Preinstall: libcap
+Preinstall: libgcc
+Preinstall: libpopt sed tar zlib
+Preinstall: libncurses libreadline
+Preinstall: libelf libbz2
+Preinstall: liblzma
+Preinstall: nss nspr libfreebl3 libsoftokn3
+Preinstall: libmagic
+Preinstall: liblua
+Preinstall: smack libsmack libxml2 libmagic  libmagic-data
+Preinstall: libsqlite
+#Preinstall: rpm-security-plugin
+Preinstall: util-linux util-linux-su
+Preinstall: libzstd1
+
+VMinstall: perl libmount libblkid libext2fs libuuid  grep libpcre util-linux libsmartcols procps-ng
+
+Required: binutils gcc glibc rpm-build libtool
+Required: gcc-c++
+
+Support: glibc-locale
+Support: perl
+Support: hostname
+Support: cpio findutils
+Support: file findutils zlib bzip2
+Support: gzip hostname net-tools
+Support: make  patch sed  gawk tar grep coreutils pkg-config
+Support: m4  tzdata
+Support: util-linux
+Support: less
+Support: which  elfutils
+Support: update-alternatives
+Support: libstdc++-devel
+Support: cpp
+Support: libatomic
+Support: libgomp
+Support: libitm
+
+Keep: libstdc++-devel
+Keep: cpp gcc libstdc++
+Keep: pam
+Keep: binutils cpp  libmagic-data file findutils gawk gcc  gcc-c++
+Keep: gdbm gzip libada libunwind  glibc-devel libpcre xz-lzma-compat
+Keep: make  gmp libcap groff cpio
+Keep: patch rpm-build  nss nspr elfutils python grep libgcc gcc-c++
+Keep: kernel-headers  perl-libs perl
+Keep: pkgconfig glib2 tizen-rpm-config
+Keep: libmpc libmpfr libppl libgmp libppl_c
+Keep: libcloog libppl libgmpxx
+Keep: nss-softokn-freebl libmagic libmagic-data
+Keep: setup
+Keep: update-alternatives
+Keep: cpp
+Keep: gcc-c++
+Keep: libatomic
+Keep: libgomp
+Keep: libitm
+
+Substitute: gettext gettext-tools
+
+%ifarch x86_64
+Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit
+Substitute: libgcc_s1-32bit libgcc-32bit
+%else
+Substitute: glibc-devel-32bit
+%endif
+
+########## compilation flags ##########
+%define __global_cflags -O2 -g2 -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong -Wformat-security -fmessage-length=0 -frecord-gcc-switches -Wl,-z,relro,--as-needed
+
+Optflags: armv7l %{__global_cflags} --param=ssp-buffer-size=4 -march=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=softfp -mthumb -Wp,-D__SOFTFP__ -Wl,-O1 -Wl,--hash-style=gnu -Wa,-mimplicit-it=thumb -D_FILE_OFFSET_BITS=64
+Optflags: armv7hl %{__global_cflags} --param=ssp-buffer-size=4 -march=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=hard -mthumb -Wl,-O1 -Wl,--hash-style=gnu -Wa,-mimplicit-it=thumb -D_FILE_OFFSET_BITS=64
+Optflags: aarch64 %{__global_cflags} -feliminate-unused-debug-types -Wformat -march=armv8-a+fp+simd+crc+crypto -mtune=cortex-a57.cortex-a53
+Optflags: i686 %{__global_cflags} -feliminate-unused-debug-types --param=ssp-buffer-size=4 -fdiagnostics-color=never -m32 -march=i686 -mtune=i686 -msse4.2 -mfpmath=sse -fasynchronous-unwind-tables -fno-omit-frame-pointer -mstackrealign -Wl,-z,noseparate-code
+Optflags: x86_64 %{__global_cflags} -feliminate-unused-debug-types --param=ssp-buffer-size=4 -fdiagnostics-color=never -m64 -march=nehalem -msse4.2 -mfpmath=sse -fasynchronous-unwind-tables -fno-omit-frame-pointer
+Optflags: riscv64 %{__global_cflags} -feliminate-unused-debug-types -Wformat -mabi=lp64d -march=rv64gc
+
+
+### from Tizen-Base-RISCV
+%define _repository standard
+
+Macros:
+
+
+%_project Tizen-Unified-RISCV
+
+### from Tizen-Base-RISCV
+
+%_repository standard
+:Macros
+
+################################################################################
+# OBS Project config for Tizen:Base
+#
+# RE contacts:
+#
+#
+# vim: set syntax=spec:
+################################################################################
+
+Patterntype: rpm-md comps
+Release: <CI_CNT>.<B_CNT>
+Support: build
+Support: build-compare build-mkbaselibs
+# Support: rpmlint-mini rpmlint-tizen
+
+# new cycle handling (gbs version >= 0.25.29)
+BuildFlags: genmetaalgo:1
+
+############################# conflicts resolution #############################
+
+Prefer: util-linux
+Prefer: mono-wcf
+Prefer: monodoc
+Prefer: mono-extras
+Prefer: mono-web
+Prefer: mono-data
+Prefer: mono-mvc
+Prefer: mono-winforms
+Prefer: mono-data-sqlite
+
+# Set a preference for ambiguous libs to use *-64bit libs
+#     *-64bit libs on 32bit build environment are required for .Net build (e.g., coreclr, corefx)
+#     But when building 64bit target, they could make 'have choice' error with original libs in 64bit repository.
+#     e.g., libstdc++ and libstdc++-64bit provides same libs. It's ambiguous to choose appropriate one.
+#     Owner : Jiyoung Yun (jy910.yun@samsung.com)
+#     libopenssl11 : Dongsun Lee (ds73.lee@samsung.com)
+Prefer: libgcc libstdc++ libunwind libuuid zlib libopenssl libopenssl11
+Prefer: lldb
+
+############################# base definition ###############################
+
+# %release_name and %tizen_full_version are used in platform/upstream/tizen-release
+
+Macros:
+%release_name Tizen8.0/Unified
+
+%tizen_version_major 8
+%tizen_version_minor 0
+%tizen_version_patch 0
+
+%tizen_version %{tizen_version_major}.%{tizen_version_minor}
+%tizen_full_version %{tizen_version}.%{tizen_version_patch}
+%tizen %tizen_version
+%vendor tizen
+%_vendor tizen
+%_with_tizen 1
+
+%opensuse_bs 1
+%_default_patch_fuzz   2
+
+%_binary_payload w5T.xzdio
+:Macros
+
+#### %%__spec_check_pre exit 0
+#### %%run_check_section 0
+
+# skip %%check section
+Macros:
+# skip package list
+%_skip_check_packages autogen bison boost expat findutils flex fribidi glibc \\\
+gmp gn golang grep libgc libgcrypt libogg libsigc++ libvorbis libxml2 libzio \\\
+m4 nspr openssl openssl1.1 perl-Devel-Symdump perl-gettext perl-Pod-Coverage \\\
+perl-Test-Pod perl-Test-Pod-Coverage perl-TimeDate procps-ng python3-mako \\\
+python3-mock python3-ply python-funcsigs python-mako python-mock python-ply \\\
+setup zlib openssl3 autoconf
+
+%__spec_check_pre \
+for name in %_skip_check_packages \
+do \
+    if [ "$name" = "%{name}" ]; then \
+        exit 0 \
+    fi \
+done \
+%{___build_pre} \
+%{nil}
+
+:Macros
+
+############################# build config #####################################
+
+########## targets ##########
+
+%ifarch i586
+Target: i686-tizen-linux
+%endif
+
+%ifarch armv7hl
+Target: armv7hl-tizen-linux
+%endif
+
+%ifarch armv7l
+Target: armv7l-tizen-linux
+%endif
+
+%ifarch aarch64
+Target: aarch64-tizen-linux
+%endif
+
+%ifarch riscv64
+Target: riscv64-tizen-linux
+%endif
+
+########## cross build ##########
+
+%define build_hostarch x86_64
+Macros:
+%build_hostarch x86_64
+:Macros
+
+%ifarch riscv64 %arm armv7l armv7hl aarch64
+Hostarch: x86_64
+# cross build support for the build hosts
+Preinstall: qemu-linux-user-%{build_hostarch}-cross
+Runscripts: qemu-linux-user-%{build_hostarch}-cross
+Keep: qemu-linux-user-%{build_hostarch}-cross
+Macros:
+%qemu_user_space_build 1
+:Macros
+%endif
+
+%ifarch armv7l
+Preinstall: qemu-accel-%{build_hostarch}-armv7l
+Runscripts: qemu-accel-%{build_hostarch}-armv7l
+Preinstall: libmount libblkid libuuid
+%endif
+
+%ifarch armv7hl
+Preinstall: qemu-accel-%{build_hostarch}-armv7hl
+Runscripts: qemu-accel-%{build_hostarch}-armv7hl
+Preinstall: libmount libblkid libuuid
+%endif
+
+%ifarch aarch64
+Preinstall: qemu-accel-%{build_hostarch}-aarch64
+Runscripts: qemu-accel-%{build_hostarch}-aarch64
+Preinstall: libmount libblkid libuuid
+%endif # aarch64
+
+%ifarch riscv64
+Preinstall: qemu-accel-%{build_hostarch}-riscv64
+Runscripts: qemu-accel-%{build_hostarch}-riscv64
+Preinstall: libmount libblkid libuuid
+%endif # riscv64
+
+Substitute: python-accel-armv7l-cross-arm python-accel-%{build_hostarch}-armv7l
+Substitute: python-accel-armv7hl-cross-arm python-accel-%{build_hostarch}-armv7hl
+Substitute: python-accel-aarch64-cross-aarch64 python-accel-%{build_hostarch}-aarch64
+Substitute: python-accel-riscv64-cross-riscv64 python-accel-%{build_hostarch}-riscv64
+
+Substitute: clang-accel-armv7l-cross-arm clang-accel-%{build_hostarch}-armv7l
+Substitute: clang-accel-armv7hl-cross-arm clang-accel-%{build_hostarch}-armv7hl
+Substitute: clang-accel-aarch64-cross-aarch64 clang-accel-%{build_hostarch}-aarch64
+Substitute: clang-accel-riscv64-cross-riscv64 clang-accel-%{build_hostarch}-riscv64
+
+########## exports for different architectures ##########
+
+ExportFilter: \.armv7l\.rpm$ armv7l
+ExportFilter: \.armv7hl\.rpm$ armv7hl
+ExportFilter: \.aarch64\.rpm$ aarch64
+ExportFilter: \.i586\.rpm$ i586
+ExportFilter: \.x86_64\.rpm$ x86_64
+ExportFilter: \.riscv64\.rpm$ riscv64
+
+########## buildroot config ##########
+
+Preinstall: setup filesystem
+RunScripts: setup
+
+Preinstall: bash bzip2 coreutils diffutils grep rpm
+Preinstall: glibc libacl libattr
+Preinstall: libcap
+Preinstall: libgcc
+Preinstall: libpopt sed tar zlib
+Preinstall: libncurses libreadline
+Preinstall: libelf libbz2
+Preinstall: liblzma
+Preinstall: nss nspr libfreebl3 libsoftokn3
+Preinstall: libmagic
+Preinstall: liblua
+Preinstall: smack libsmack libxml2 libmagic  libmagic-data
+Preinstall: libsqlite
+#Preinstall: rpm-security-plugin
+Preinstall: util-linux util-linux-su
+Preinstall: libzstd1
+
+VMinstall: perl libmount libblkid libext2fs libuuid  grep libpcre util-linux libsmartcols procps-ng
+
+Required: binutils gcc glibc rpm-build libtool
+Required: gcc-c++
+
+Support: glibc-locale
+Support: perl
+Support: hostname
+Support: cpio findutils
+Support: file findutils zlib bzip2
+Support: gzip hostname net-tools
+Support: make  patch sed  gawk tar grep coreutils pkg-config
+Support: m4  tzdata
+Support: util-linux
+Support: less
+Support: which  elfutils
+Support: update-alternatives
+Support: libstdc++-devel
+Support: cpp
+Support: libatomic
+Support: libgomp
+Support: libitm
+
+Keep: libstdc++-devel
+Keep: cpp gcc libstdc++
+Keep: pam
+Keep: binutils cpp  libmagic-data file findutils gawk gcc  gcc-c++
+Keep: gdbm gzip libada libunwind  glibc-devel libpcre xz-lzma-compat
+Keep: make  gmp libcap groff cpio
+Keep: patch rpm-build  nss nspr elfutils python grep libgcc gcc-c++
+Keep: kernel-headers  perl-libs perl
+Keep: pkgconfig glib2 tizen-rpm-config
+Keep: libmpc libmpfr libppl libgmp libppl_c
+Keep: libcloog libppl libgmpxx
+Keep: nss-softokn-freebl libmagic libmagic-data
+Keep: setup
+Keep: update-alternatives
+Keep: cpp
+Keep: gcc-c++
+Keep: libatomic
+Keep: libgomp
+Keep: libitm
+
+Substitute: gettext gettext-tools
+
+%ifarch x86_64
+Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit
+Substitute: libgcc_s1-32bit libgcc-32bit
+%else
+Substitute: glibc-devel-32bit
+%endif
+
+########## compilation flags ##########
+%define __global_cflags -O2 -g2 -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong -Wformat-security -fmessage-length=0 -frecord-gcc-switches -Wl,-z,relro,--as-needed
+
+Optflags: armv7l %{__global_cflags} --param=ssp-buffer-size=4 -march=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=softfp -mthumb -Wp,-D__SOFTFP__ -Wl,-O1 -Wl,--hash-style=gnu -Wa,-mimplicit-it=thumb -D_FILE_OFFSET_BITS=64
+Optflags: armv7hl %{__global_cflags} --param=ssp-buffer-size=4 -march=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=hard -mthumb -Wl,-O1 -Wl,--hash-style=gnu -Wa,-mimplicit-it=thumb -D_FILE_OFFSET_BITS=64
+Optflags: aarch64 %{__global_cflags} -feliminate-unused-debug-types -Wformat -march=armv8-a+fp+simd+crc+crypto -mtune=cortex-a57.cortex-a53
+Optflags: i686 %{__global_cflags} -feliminate-unused-debug-types --param=ssp-buffer-size=4 -fdiagnostics-color=never -m32 -march=i686 -mtune=i686 -msse4.2 -mfpmath=sse -fasynchronous-unwind-tables -fno-omit-frame-pointer -mstackrealign -Wl,-z,noseparate-code
+Optflags: x86_64 %{__global_cflags} -feliminate-unused-debug-types --param=ssp-buffer-size=4 -fdiagnostics-color=never -m64 -march=nehalem -msse4.2 -mfpmath=sse -fasynchronous-unwind-tables -fno-omit-frame-pointer
+Optflags: riscv64 %{__global_cflags} -feliminate-unused-debug-types -Wformat -mabi=lp64d -march=rv64gc
+
+
+### from Tizen-Unified-RISCV
+%define _repository standard
+
+Macros:
+
+%distribution Tizen-Unified-RISCV / standard
+%_project Tizen-Unified-RISCV
+
+### from Tizen-Unified-RISCV
+
+%_repository standard
+:Macros
+
+################################################################################
+# OBS Project config for Tizen:Unified
+#
+# vim: set syntax=spec:
+################################################################################
+
+############################# conflicts resolution #############################
+
+FileProvides: /usr/sbin/groupadd shadow-utils
+Prefer: bluetooth-tools-no-firmware
+
+############################# profile definition ###############################
+
+%define _with_tizen 1
+
+# For classifying debug/release mode
+Macros:
+%tizen_build_devel_mode 1
+:Macros
+
+# %release_name and %tizen_full_version are used in platform/upstream/tizen-release
+
+Macros:
+%release_name Tizen8.0/Unified
+
+%tizen_version_major 8
+%tizen_version_minor 0
+%tizen_version_patch 0
+
+%tizen_version %{tizen_version_major}.%{tizen_version_minor}
+%tizen_full_version %{tizen_version}.%{tizen_version_patch}
+%tizen %tizen_version
+%vendor tizen
+%_vendor tizen
+%_with_tizen 1
+
+#### %__spec_check_pre exit 0
+#### %run_check_section 0
+%opensuse_bs 1
+%_default_patch_fuzz   2
+:Macros
+
+########## mesa activation / coregl ##########
+
+%define _with_mesa 1
+Macros:
+%_with_mesa 1
+:Macros
+
+Substitute: mesa-devel pkgconfig(glesv2)
+Substitute: pkgconfig(gles20)  pkgconfig(egl) pkgconfig(glesv2)
+Substitute: pkgconfig(gles11)  pkgconfig(egl) pkgconfig(glesv1) pkgconfig(gl)
+
+Prefer: coregl coregl-devel
+Prefer: libwayland-egl libwayland-egl-devel
+Prefer: vulkan-loader vulkan-loader-devel
+#libelementary.so (upstream, tizen-only ) so add below Prefer. Requested by EFL team.
+Prefer: elementary
+
+########## WAYLAND #########
+
+%define _with_wayland 1
+Macros:
+%_with_wayland 1
+:Macros
+
+########## RDP flag ##########
+
+# enable/disable RDP (remote desktop protocol) for wayland
+# flag: _with_rdp, used in repositories
+# Affects: weston, freerdp
+# Owner: Manuel <manuel.bachmann@open.eurogiciel.org>
+
+############################# target repositories #############################
+
+%if "%_repository" == "standard"
+
+Prefer: mesa libgbm
+Substitute: mesa-libGLESv2 coregl
+Substitute: mesa-libEGL coregl
+
+%define _with_rdp 1
+Macros:
+%_with_rdp 1
+:Macros
+
+%endif
+
+############################# emulator repositories ############################
+
+%if "%_repository" == "emulator"
+
+Prefer: libgbm
+Prefer: emulator-yagl emulator-yagl-devel
+
+%define _with_emulator 1
+Macros:
+%_with_emulator 1
+:Macros
+
+%endif
+
+############################# misc config flags ################################
+########## USAGE ##########
+#
+# IMPORTANT: please follow the following rules when playing with flags
+# ********************************************************************
+#
+# In spec file, call %bcond_with macro at the beginning and test with %with:
+# -------------------------
+# | %bcond_with myfeature
+# | [...]
+# | %if %{with myfeature}
+# | [...]
+# | %endif
+# | [...]
+# -------------------------
+#
+# To activate an option, use:
+# -------------------------
+# | %define _with_myfeature 1
+# | Macros:
+# | %_with_myfeature 1
+# | :Macros
+# -------------------------
+#
+# To disable an option, DON'T set the values to 0, as the option would still be defined
+# but simply comment the lines: this will undefine the option.
+# -------------------------
+# | #%define _with_myfeature 1
+# | #Macros:
+# | #%_with_myfeature 1
+# | #:Macros
+# -------------------------
+#
+# More information here:
+# https://en.opensuse.org/openSUSE:Build_Service_prjconf#.25bcond
+#
+
+########## flags ##########
+
+# Activate introspection
+# This is needed on GuPNP to build Rygel correctly in IVI
+# Impacts potentially packages that use gobject-introspection
+# Owner: Mikko <mikko.ylinen@intel.com>
+
+Macros:
+%_with_introspection 1
+:Macros
+
+############################# other config #####################################
+# derived from Tizen:Base
+################################################################################
+
index 054e3ded6423c3c1d9be8c812f2ada1b2f57ac7a..dff84d334aed8e65be059bdf9de0930007ff66e1 100644 (file)
@@ -2,10 +2,13 @@
 
 GBS_ROOT_I686_0=~/GBS-ROOT/local/BUILD-ROOTS/scratch.i586.0
 GBS_ROOT_ARMV7L_0=~/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0
+GBS_ROOT_RISCV_0=~/GBS-ROOT/local/BUILD-ROOTS/scratch.riscv64.0
 GBS_RPMS_I686=~/GBS-ROOT/local/repos/tizen/i586/RPMS
 GBS_SRPMS_I686=~/GBS-ROOT/local/repos/tizen/i586/SRPMS
 GBS_RPMS_ARMV7L=~/GBS-ROOT/local/repos/tizen/armv7l/RPMS
 GBS_SRPMS_ARMV7L=~/GBS-ROOT/local/repos/tizen/armv7l/SRPMS
+GBS_RPMS_RISCV=~/GBS-ROOT/local/repos/tizen_riscv64/riscv64/RPMS
+GBS_SRPMS_RISCV=~/GBS-ROOT/local/repos/tizen_riscv64/riscv64/SRPMS
 GBS_LOCAL_REPOS=~/GBS-ROOT/local/repos
 # define default value for GBS_REPOURL if it is null or not defined
 : ${GBS_REPOURL:='http://download.tizen.org/releases/milestone/tizen/base/latest/repos/standard/packages/'}
@@ -71,4 +74,19 @@ function AssertRootA0With()
     echo $*| xargs -n1| xargs -I{} sh -c "sudo chroot $GBS_ROOT_ARMV7L_0 rpm -q {}"
 }
 
+function AssertRPMsR()
+{
+    find . -maxdepth 1 -type d|sed -e "1d" -e "s|./||g"|xargs -i sh -c "ls ${GBS_RPMS_RISCV}| grep {}" && \
+    find . -maxdepth 1 -type d|sed -e "1d" -e "s|./||g"|xargs -i sh -c "ls ${GBS_SRPMS_RISCV}| grep {}"
+}
 
+function AssertRPMsRWith()
+{
+    echo $*|xargs -n1| xargs -I{} sh -c "ls ${GBS_RPMS_RISCV}| grep {}" && \
+    echo $*|xargs -n1| xargs -I{} sh -c "ls ${GBS_SRPMS_RISCV}| grep {}"
+}
+
+function AssertRPMsRWithout()
+{
+    ! AssertRPMsRWith $*
+}