Hello community,

here is the log from the commit of package legion for openSUSE:Factory checked 
in at 2017-06-30 18:42:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/legion (Old)
 and      /work/SRC/openSUSE:Factory/.legion.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "legion"

Fri Jun 30 18:42:52 2017 rev:5 rq:507148 version:17.05.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/legion/legion.changes    2017-06-15 
11:24:22.599070277 +0200
+++ /work/SRC/openSUSE:Factory/.legion.new/legion.changes       2017-06-30 
18:43:45.518345143 +0200
@@ -1,0 +2,7 @@
+Thu Jun 22 15:01:27 UTC 2017 - [email protected]
+
+- Fix support on big endian systems by adding:
+  * realm-detect-big-endian-systems-and-reverse-order-of-ID-fields.patch
+  * tutorial-fix-bad-type-size-causing-crash-on-big-endian-systems.patch
+
+-------------------------------------------------------------------

New:
----
  realm-detect-big-endian-systems-and-reverse-order-of-ID-fields.patch
  tutorial-fix-bad-type-size-causing-crash-on-big-endian-systems.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ legion.spec ++++++
--- /var/tmp/diff_new_pack.h837KP/_old  2017-06-30 18:43:46.090264699 +0200
+++ /var/tmp/diff_new_pack.h837KP/_new  2017-06-30 18:43:46.090264699 +0200
@@ -25,6 +25,8 @@
 Group:          Productivity/Networking/Other
 Url:            http://legion.stanford.edu/
 Source0:        
https://github.com/StanfordLegion/legion/archive/%{name}-%{version}.tar.gz#/%{name}-%{version}.tar.gz
+Patch0:         
realm-detect-big-endian-systems-and-reverse-order-of-ID-fields.patch
+Patch1:         
tutorial-fix-bad-type-size-causing-crash-on-big-endian-systems.patch
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
@@ -34,8 +36,6 @@
 BuildRequires:  hwloc-devel
 BuildRequires:  openmpi
 BuildRequires:  openmpi-devel
-# Bug opened upstream https://github.com/StanfordLegion/legion/issues/265
-ExcludeArch:    ppc64 s390x
 
 %description
 Legion is a data-centric parallel programming system for writing portable
@@ -82,6 +82,8 @@
 
 %prep
 %setup -q -n %{name}-%{name}-%{version}
+%patch0
+%patch1
 
 %build
 %{cmake} -DLegion_USE_HWLOC=ON \

++++++ realm-detect-big-endian-systems-and-reverse-order-of-ID-fields.patch 
++++++
diff --git runtime/realm/id.h runtime/realm/id.h
index b68bed1a..d645d89a 100644
--- runtime/realm/id.h
+++ runtime/realm/id.h
@@ -20,6 +20,16 @@
 
 #include <iostream>
 
+// we use bit-field structures below, and the order of them isn't guaranteed to
+//  match the system endianness (which itself has no standard way to be
+//  detected, so define our own REALM_REVERSE_ID_FIELDS which can be further
+//  tweaked as needed
+#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__)
+  #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+    #define REALM_REVERSE_ID_FIELDS
+  #endif
+#endif
+
 namespace Realm {
 
     class ID {
@@ -46,83 +56,154 @@ namespace Realm {
       static const unsigned MAX_NODE_ID = (1U << NODE_FIELD_WIDTH) - 2; // 
reserve all 1's for special cases
 
       struct FMT_Event {
+#ifdef REALM_REVERSE_ID_FIELDS
+       IDType type_tag : 1;
+       IDType creator_node : NODE_FIELD_WIDTH;
+       IDType gen_event_idx : 27;
+       IDType generation : 20;
+#else
        IDType generation : 20;
        IDType gen_event_idx : 27;
        IDType creator_node : NODE_FIELD_WIDTH;
        IDType type_tag : 1;
+#endif
        static const IDType TAG_VALUE = 1;
       };
 
       struct FMT_Barrier {
+#ifdef REALM_REVERSE_ID_FIELDS
+       IDType type_tag : 4;
+       IDType creator_node : 16;
+       IDType barrier_idx : 24;
+       IDType generation : 20;  // MUST MATCH FMT_Event::generation size
+#else
        IDType generation : 20;  // MUST MATCH FMT_Event::generation size
        IDType barrier_idx : 24;
        IDType creator_node : 16;
        IDType type_tag : 4;
+#endif
        static const IDType TAG_VALUE = 0x7;
       };
 
       struct FMT_Reservation {
+#ifdef REALM_REVERSE_ID_FIELDS
+       IDType type_tag : 8;
+       IDType creator_node : 16;
+       IDType unused : 8;
+       IDType rsrv_idx : 32;
+#else
        IDType rsrv_idx : 32;
        IDType unused : 8;
        IDType creator_node : 16;
        IDType type_tag : 8;
+#endif
        static const IDType TAG_VALUE = 0x1f;
       };
 
       struct FMT_Memory {
+#ifdef REALM_REVERSE_ID_FIELDS
+       IDType type_tag : 8;
+       IDType owner_node : 16;
+       IDType unused : 28;
+       IDType mem_idx : 12;
+#else
        IDType mem_idx : 12;
        IDType unused : 28;
        IDType owner_node : 16;
        IDType type_tag : 8;
+#endif
        static const IDType TAG_VALUE = 0x1e;
       };
 
       struct FMT_IB_Memory {
+#ifdef REALM_REVERSE_ID_FIELDS
+        IDType type_tag : 8;
+        IDType owner_node : 16;
+        IDType unused : 28;
+        IDType mem_idx : 12;
+#else
         IDType mem_idx : 12;
         IDType unused : 28;
         IDType owner_node : 16;
         IDType type_tag : 8;
+#endif
         static const IDType TAG_VALUE = 0x1a;
       };
 
       struct FMT_Instance {
+#ifdef REALM_REVERSE_ID_FIELDS
+       IDType type_tag : 4;
+       IDType owner_node : 16;
+       IDType creator_node : 16;
+       IDType mem_idx : 12;
+       IDType inst_idx : 16;
+#else
        IDType inst_idx : 16;
        IDType mem_idx : 12;
        IDType creator_node : 16;
        IDType owner_node : 16;
        IDType type_tag : 4;
+#endif
        static const IDType TAG_VALUE = 0x6;
       };
 
       struct FMT_Processor {
+#ifdef REALM_REVERSE_ID_FIELDS
+       IDType type_tag : 8;
+       IDType owner_node : 16;
+       IDType unused : 28;
+       IDType proc_idx : 12;
+#else
        IDType proc_idx : 12;
        IDType unused : 28;
        IDType owner_node : 16;
        IDType type_tag : 8;
+#endif
        static const IDType TAG_VALUE = 0x1d;
       };
 
       struct FMT_ProcGroup {
+#ifdef REALM_REVERSE_ID_FIELDS
+       IDType type_tag : 8;
+       IDType owner_node : 16;
+       IDType creator_node : 16;
+       IDType pgroup_idx : 24;
+#else
        IDType pgroup_idx : 24;
        IDType creator_node : 16;
        IDType owner_node : 16;
        IDType type_tag : 8;
+#endif
        static const IDType TAG_VALUE = 0x1c;
       };
 
       struct FMT_IdxSpace {
+#ifdef REALM_REVERSE_ID_FIELDS
+       IDType type_tag : 4;
+       IDType owner_node : 16;
+       IDType creator_node : 16;
+       IDType idxspace_idx : 28;
+#else
        IDType idxspace_idx : 28;
        IDType creator_node : 16;
        IDType owner_node : 16;
        IDType type_tag : 4;
+#endif
        static const IDType TAG_VALUE = 0x5;
       };
 
       struct FMT_Allocator {
+#ifdef REALM_REVERSE_ID_FIELDS
+       IDType type_tag : 8;
+       IDType owner_node : 16;
+       IDType creator_node : 16;
+       IDType allocator_idx : 24;
+#else
        IDType allocator_idx : 24;
        IDType creator_node : 16;
        IDType owner_node : 16;
        IDType type_tag : 8;
+#endif
        static const IDType TAG_VALUE = 0x1b;
       };
 
++++++ tutorial-fix-bad-type-size-causing-crash-on-big-endian-systems.patch 
++++++
diff --git tutorial/09_custom_mapper/custom_mapper.cc 
tutorial/09_custom_mapper/custom_mapper.cc
index 4d4adaea..3ceea606 100644
--- tutorial/09_custom_mapper/custom_mapper.cc
+++ tutorial/09_custom_mapper/custom_mapper.cc
@@ -709,7 +709,7 @@ void top_level_task(const Task *task,
   }
   int num_subregions =
     runtime->select_tunable_value(ctx, SUBREGION_TUNABLE,
-                                  PARTITIONING_MAPPER_ID).get_result<int>();
+                                  PARTITIONING_MAPPER_ID).get_result<size_t>();
 
   printf("Running daxpy for %d elements...\n", num_elements);
   printf("Partitioning data into %d sub-regions...\n", num_subregions);

Reply via email to