Hi Andreas!
El 08/10/14 a les 21:06, Andreas Tille ha escrit:
Would you volunteer to check the current Git repository regarding the
clang issue? It's not ready yet but the state is good enough to look
into the clang build.
The current state of the package in Debian-Med's git repository has the
exact same issues as upstream HEAD (no more, no less). Therefore it
would be adequate to use the patching from my upstream pull request:
https://github.com/gmarcais/Jellyfish/pull/21
Btw. I think you're missing the tag "upstream/2.1.4" in order to make
git-buildpackage build it without complaints.
Sorry I can't be of any help there. I have no clue about ruby packaging.
Me neither but it's done and thanks to super fast ftpmaster yaggo is
just in unstable.
Cool, that was quick! :-)
For the record: The patch has been merged into upstream git
(https://github.com/gmarcais/Jellyfish/pull/21) and will therefore
be part of the next Release v2.1.5 - which could take a while to be
published.
Since I'm not that deep into Github: What would be the most
straightforward way to obtain these patches (and turn them into
quilt patches)?
You can just append a suffix ".patch" to the URLs of commits (e.g.
https://github.com/martin-steghoefer/Jellyfish/commit/780f2ec4.patch) or
complete pull requests (e.g.
https://github.com/gmarcais/Jellyfish/pull/21.patch), which will give
you a patch in git format. This is something that quilt already accepts,
although it is probably not "debianized" enough to put it into a package
like this (additional git-specific meta-data, wrong tagging format,
patch divided in several sections by commits). You can fix that by
letting quilt rewrite the patch with "dquilt refresh" (when it is the
top of the quilt stack) and then adding the Debian tagging.
I've done it for the pull request that is relevant here and attached it
to this message.
Cheers,
Martin
Description: Fix compilation using the "clang" compiler
This fixes 2 issues with the clang compilation:
1.) The length of the array defined locally in array::_get_val
cannot be detected to be constant by a standard C++ compiler.
GCC's g++ accepts the code anyway because of its ample support
for variable-length arrays (VLAs). Clang doesn't support VLAs
for non-POD (Plain Old Type) types. Starting from version 3.5,
however, it is able to detect the constant nature of the value
used (using non-standard language features, too) and therefore
doesn't need LVAs here. However, clang compilers before 3.5 as
well as compilers that support only pure C++ need this patching.
2.) The clang compiler warns about the "register" keyword being
deprecated in C++11. As the Jellyfish build system treats
warnings as errors, this breaks the build with clang. I suggest
to remove the keyword instead of silencing the warning because
most modern compilers (e.g. the recent versions of GCC, clang
and Visual Studio) ignore the keyword in their optimization
algorithms anyway.
Author: Martin Steghöfer <mar...@steghoefer.eu>
Forwarded: https://github.com/gmarcais/Jellyfish/pull/21
Bug-Debian: http://bugs.debian.org/749136
--- a/include/jellyfish/large_hash_array.hpp
+++ b/include/jellyfish/large_hash_array.hpp
@@ -444,7 +444,7 @@
bool get_key_id(const key_type& key, size_t* id, key_type& tmp_key, const word** w, const offset_t** o, const size_t oid) const {
// This static_assert makes clang++ happy
static_assert(std::is_pod<prefetch_info>::value, "prefetch_info must be a POD");
- prefetch_info info_ary[prefetch_buffer::capacity()];
+ prefetch_info info_ary[prefetch_buffer::capacityConstant];
prefetch_buffer buffer(info_ary);
warm_up_cache(buffer, oid);
--- a/include/jellyfish/simple_circular_buffer.hpp
+++ b/include/jellyfish/simple_circular_buffer.hpp
@@ -106,6 +106,7 @@
class pre_alloc : public base<T, pre_alloc<T, capa> > {
typedef base<T, pre_alloc<T, capa> > super;
public:
+ static const int capacityConstant = capa;
explicit pre_alloc(T* data) : super(data) { }
static int capacity() { return capa; }
};
--- a/include/jellyfish/rectangular_binary_matrix.hpp
+++ b/include/jellyfish/rectangular_binary_matrix.hpp
@@ -261,8 +261,8 @@
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wuninitialized"
#endif
- register xmm_t acc = acc ^ acc; // Set acc to 0
- register xmm_t load = load ^ load;
+ xmm_t acc = acc ^ acc; // Set acc to 0
+ xmm_t load = load ^ load;
#ifdef __clang__
#pragma clang diagnostic pop
#endif