diff --git a/pocl.changes b/pocl.changes index 3ed3349..9438576 100644 --- a/pocl.changes +++ b/pocl.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Oct 31 12:13:35 UTC 2018 - Bernhard Wiedemann + +- Add reproducible.patch to make build result independent of + build system CPU (boo#1110722) + ------------------------------------------------------------------- Tue Sep 25 10:30:51 UTC 2018 - Ondřej Súkup diff --git a/pocl.spec b/pocl.spec index ec5978c..5d6e138 100644 --- a/pocl.spec +++ b/pocl.spec @@ -30,6 +30,7 @@ Group: Development/Tools/Other URL: http://portablecl.org/ Source0: https://github.com/pocl/pocl/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz Source99: pocl-rpmlintrc +Patch0: reproducible.patch BuildRequires: clang < 8 BuildRequires: clang-devel < 8 BuildRequires: cmake @@ -94,6 +95,7 @@ This subpackage provides the development files needed for pocl. %prep %setup -q +%patch0 -p1 %build %define __builder ninja diff --git a/reproducible.patch b/reproducible.patch new file mode 100644 index 0000000..c1b81d5 --- /dev/null +++ b/reproducible.patch @@ -0,0 +1,80 @@ +https://bugzilla.opensuse.org/show_bug.cgi?id=1110722 +commit e99f4ca98bee7c59d8869a1b1d0aa764ffd5ec28 +Author: Michal Babej +Date: Thu Oct 11 13:16:43 2018 +0300 + + Fix PR #667 + +diff --git a/lib/CL/devices/basic/basic.c b/lib/CL/devices/basic/basic.c +index a64680f0..048f0008 100644 +--- a/lib/CL/devices/basic/basic.c ++++ b/lib/CL/devices/basic/basic.c +@@ -354,9 +354,6 @@ pocl_init_cpu_device_infos (cl_device_id dev) + dev->llvm_cpu = get_llvm_cpu_name (); + #endif + +- if(dev->llvm_cpu && (!strcmp(dev->llvm_cpu, "(unknown)"))) +- dev->llvm_cpu = OCL_KERNEL_TARGET_CPU; +- + #else /* No compiler, no CPU info */ + dev->llvm_cpu = NULL; + dev->llvm_target_triplet = ""; +diff --git a/lib/CL/pocl_llvm_build.cc b/lib/CL/pocl_llvm_build.cc +index fda6e3a2..7b7001f8 100644 +--- a/lib/CL/pocl_llvm_build.cc ++++ b/lib/CL/pocl_llvm_build.cc +@@ -839,16 +839,14 @@ static llvm::Module* getKernelLibrary(cl_device_id device) + kernellib += device->llvm_target_triplet; + if (is_host) { + kernellib += '-'; ++#ifdef KERNELLIB_HOST_DISTRO_VARIANTS ++ kernellib += getX86KernelLibName(); ++#else + kernellib_fallback = kernellib; + kernellib_fallback += OCL_KERNEL_TARGET_CPU; + kernellib_fallback += ".bc"; +-#ifdef KERNELLIB_HOST_DISTRO_VARIANTS +- if (triple.getArch() == Triple::x86_64 || +- triple.getArch() == Triple::x86) +- kernellib += getX86KernelLibName(); +- else ++ kernellib += device->llvm_cpu; + #endif +- kernellib += device->llvm_cpu; + } + kernellib += ".bc"; + +@@ -861,6 +859,7 @@ static llvm::Module* getKernelLibrary(cl_device_id device) + } + else + { ++#ifndef KERNELLIB_HOST_DISTRO_VARIANTS + if (is_host && pocl_exists(kernellib_fallback.c_str())) + { + POCL_MSG_WARN("Using fallback %s as the built-in lib.\n", +@@ -868,6 +867,7 @@ static llvm::Module* getKernelLibrary(cl_device_id device) + lib = parseModuleIR(kernellib_fallback.c_str()); + } + else ++#endif + POCL_ABORT("Kernel library file %s doesn't exist.\n", kernellib.c_str()); + } + assert (lib != NULL); +diff --git a/lib/CL/pocl_llvm_utils.cc b/lib/CL/pocl_llvm_utils.cc +index feb88424..163304fe 100644 +--- a/lib/CL/pocl_llvm_utils.cc ++++ b/lib/CL/pocl_llvm_utils.cc +@@ -134,11 +134,13 @@ get_llvm_cpu_name () + } + #endif + ++#ifndef KERNELLIB_HOST_DISTRO_VARIANTS + if (r.str() == "generic") { + POCL_MSG_WARN("LLVM does not recognize your cpu, trying to use " + OCL_KERNEL_TARGET_CPU " for -target-cpu\n"); + r = llvm::StringRef(OCL_KERNEL_TARGET_CPU); + } ++#endif + + assert(r.size() > 0); + char *cpu_name = (char *)malloc(r.size() + 1);