Please fix executable permissions on header files
The following files have executable permission bits set, which causes warnings for me when packaging Boost for Fedora (and is just wrong, because they're not executables): $ find boost_1_65_1/boost -name '*.hpp' -perm /111 boost_1_65_1/boost/numeric/conversion/detail/old_numeric_cast.hpp boost_1_65_1/boost/python/converter/arg_to_python.hpp boost_1_65_1/boost/python/converter/context_result_converter.hpp boost_1_65_1/boost/python/converter/pytype_function.hpp boost_1_65_1/boost/python/converter/return_from_python.hpp boost_1_65_1/boost/python/detail/convertible.hpp boost_1_65_1/boost/python/detail/copy_ctor_mutates_rhs.hpp boost_1_65_1/boost/python/detail/def_helper_fwd.hpp boost_1_65_1/boost/python/detail/is_shared_ptr.hpp boost_1_65_1/boost/python/detail/is_wrapper.hpp boost_1_65_1/boost/python/detail/nullary_function_adaptor.hpp boost_1_65_1/boost/python/detail/prefix.hpp boost_1_65_1/boost/python/detail/python_type.hpp boost_1_65_1/boost/python/detail/sfinae.hpp boost_1_65_1/boost/python/detail/unwind_type.hpp boost_1_65_1/boost/python/detail/unwrap_type_id.hpp boost_1_65_1/boost/python/detail/unwrap_wrapper.hpp boost_1_65_1/boost/python/detail/value_arg.hpp boost_1_65_1/boost/python/object/function_doc_signature.hpp boost_1_65_1/boost/python/object/inheritance_query.hpp boost_1_65_1/boost/python/object/stl_iterator_core.hpp boost_1_65_1/boost/python/arg_from_python.hpp boost_1_65_1/boost/python/base_type_traits.hpp boost_1_65_1/boost/python/borrowed.hpp boost_1_65_1/boost/python/cast.hpp boost_1_65_1/boost/python/def_visitor.hpp boost_1_65_1/boost/python/docstring_options.hpp boost_1_65_1/boost/python/handle_fwd.hpp boost_1_65_1/boost/python/object.hpp boost_1_65_1/boost/python/object_protocol_core.hpp boost_1_65_1/boost/python/raw_function.hpp boost_1_65_1/boost/python/refcount.hpp boost_1_65_1/boost/python/self.hpp boost_1_65_1/boost/python/stl_iterator.hpp boost_1_65_1/boost/python/wrapper.hpp boost_1_65_1/boost/interprocess/detail/managed_memory_impl.hpp boost_1_65_1/boost/interprocess/detail/managed_multi_shared_memory.hpp boost_1_65_1/boost/interprocess/detail/managed_open_or_create_impl.hpp boost_1_65_1/boost/interprocess/detail/shared_dir_helpers.hpp boost_1_65_1/boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp boost_1_65_1/boost/parameter/aux_/preprocessor/flatten.hpp boost_1_65_1/boost/parameter/aux_/preprocessor/for_each.hpp boost_1_65_1/boost/parameter/aux_/python/invoker_iterate.hpp boost_1_65_1/boost/parameter/aux_/overloads.hpp boost_1_65_1/boost/parameter/aux_/parameter_requirements.hpp boost_1_65_1/boost/parameter/aux_/result_of0.hpp boost_1_65_1/boost/parameter/aux_/tag.hpp boost_1_65_1/boost/parameter/aux_/template_keyword.hpp boost_1_65_1/boost/parameter/aux_/void.hpp boost_1_65_1/boost/parameter/aux_/yesno.hpp boost_1_65_1/boost/parameter/match.hpp boost_1_65_1/boost/parameter/parameters.hpp boost_1_65_1/boost/parameter/python.hpp boost_1_65_1/boost/parameter.hpp boost_1_65_1/boost/ptr_container/detail/default_deleter.hpp boost_1_65_1/boost/ptr_container/detail/is_convertible.hpp boost_1_65_1/boost/ptr_container/detail/move.hpp boost_1_65_1/boost/ptr_container/detail/scoped_deleter.hpp boost_1_65_1/boost/ptr_container/detail/throw_exception.hpp boost_1_65_1/boost/ptr_container/detail/void_ptr_iterator.hpp boost_1_65_1/boost/ptr_container/exception.hpp boost_1_65_1/boost/ptr_container/nullable.hpp boost_1_65_1/boost/thread/concurrent_queues/queue_base.hpp boost_1_65_1/boost/thread/experimental/parallel/v2/task_region.hpp boost_1_65_1/boost/thread/v2/shared_mutex.hpp boost_1_65_1/boost/iostreams/detail/adapter/device_adapter.hpp boost_1_65_1/boost/iostreams/detail/adapter/filter_adapter.hpp boost_1_65_1/boost/iostreams/detail/adapter/non_blocking_adapter.hpp boost_1_65_1/boost/iostreams/detail/broken_overload_resolution/forward.hpp boost_1_65_1/boost/iostreams/detail/config/enable_warnings.hpp boost_1_65_1/boost/iostreams/detail/config/limits.hpp boost_1_65_1/boost/iostreams/detail/config/windows_posix.hpp boost_1_65_1/boost/iostreams/detail/absolute_path.hpp boost_1_65_1/boost/iostreams/detail/bool_trait_def.hpp boost_1_65_1/boost/iostreams/detail/counted_array.hpp boost_1_65_1/boost/iostreams/detail/template_params.hpp boost_1_65_1/boost/iostreams/restrict.hpp boost_1_65_1/boost/msm/mpl_graph/mpl_graph.hpp boost_1_65_1/boost/typeof/dmc/typeof_impl.hpp boost_1_65_1/boost/typeof/std/bitset.hpp boost_1_65_1/boost/typeof/std/complex.hpp boost_1_65_1/boost/typeof/std/deque.hpp boost_1_65_1/boost/typeof/std/fstream.hpp boost_1_65_1/boost/typeof/std/functional.hpp boost_1_65_1/boost/typeof/std/iostream.hpp boost_1_65_1/boost/typeof/std/istream.hpp boost_1_65_1/boost/typeof/std/iterator.hpp boost_1_65_1/boost/typeof/std/list.hpp boost_1_65_1/boost/typeof/std/locale.hpp boost_1_65_1/boost/typeof/std/map.hpp boost_1_65_1/boost/typeof/std/memory.hpp boost_1_65_1/boost/typeof/std/ostream.hpp boost_1_65_1/boost/typeof/std/queue.hpp boost_1_65_1/boost/typeof/std/set.hpp boost_1_65_1/boost/typeof/std/sstream.hpp boost_1_65_1/boost/typeof/std/stack.hpp boost_1_65_1/boost/typeof/std/streambuf.hpp boost_1_65_1/boost/typeof/std/string.hpp boost_1_65_1/boost/typeof/std/utility.hpp boost_1_65_1/boost/typeof/std/valarray.hpp boost_1_65_1/boost/typeof/std/vector.hpp boost_1_65_1/boost/typeof/encode_decode.hpp boost_1_65_1/boost/typeof/encode_decode_params.hpp boost_1_65_1/boost/typeof/incr_registration_group.hpp boost_1_65_1/boost/typeof/int_encoding.hpp boost_1_65_1/boost/typeof/integral_template_param.hpp boost_1_65_1/boost/typeof/modifiers.hpp boost_1_65_1/boost/typeof/pointers_data_members.hpp boost_1_65_1/boost/typeof/register_mem_functions.hpp boost_1_65_1/boost/typeof/template_encoding.hpp boost_1_65_1/boost/typeof/template_template_param.hpp boost_1_65_1/boost/typeof/type_encoding.hpp boost_1_65_1/boost/typeof/type_template_param.hpp boost_1_65_1/boost/typeof/typeof_impl.hpp boost_1_65_1/boost/typeof/vector.hpp boost_1_65_1/boost/typeof/vector100.hpp boost_1_65_1/boost/typeof/vector150.hpp boost_1_65_1/boost/typeof/vector200.hpp boost_1_65_1/boost/typeof/vector50.hpp
On 9/25/2017 8:58 AM, Jonathan Wakely via Boost wrote:
The following files have executable permission bits set, which causes warnings for me when packaging Boost for Fedora (and is just wrong, because they're not executables):
$ find boost_1_65_1/boost -name '*.hpp' -perm /111 boost_1_65_1/boost/numeric/conversion/detail/old_numeric_cast.hpp boost_1_65_1/boost/python/converter/arg_to_python.hpp boost_1_65_1/boost/python/converter/context_result_converter.hpp boost_1_65_1/boost/python/converter/pytype_function.hpp boost_1_65_1/boost/python/converter/return_from_python.hpp boost_1_65_1/boost/python/detail/convertible.hpp boost_1_65_1/boost/python/detail/copy_ctor_mutates_rhs.hpp boost_1_65_1/boost/python/detail/def_helper_fwd.hpp boost_1_65_1/boost/python/detail/is_shared_ptr.hpp boost_1_65_1/boost/python/detail/is_wrapper.hpp boost_1_65_1/boost/python/detail/nullary_function_adaptor.hpp boost_1_65_1/boost/python/detail/prefix.hpp boost_1_65_1/boost/python/detail/python_type.hpp boost_1_65_1/boost/python/detail/sfinae.hpp boost_1_65_1/boost/python/detail/unwind_type.hpp boost_1_65_1/boost/python/detail/unwrap_type_id.hpp boost_1_65_1/boost/python/detail/unwrap_wrapper.hpp boost_1_65_1/boost/python/detail/value_arg.hpp boost_1_65_1/boost/python/object/function_doc_signature.hpp boost_1_65_1/boost/python/object/inheritance_query.hpp boost_1_65_1/boost/python/object/stl_iterator_core.hpp boost_1_65_1/boost/python/arg_from_python.hpp boost_1_65_1/boost/python/base_type_traits.hpp boost_1_65_1/boost/python/borrowed.hpp boost_1_65_1/boost/python/cast.hpp boost_1_65_1/boost/python/def_visitor.hpp boost_1_65_1/boost/python/docstring_options.hpp boost_1_65_1/boost/python/handle_fwd.hpp boost_1_65_1/boost/python/object.hpp boost_1_65_1/boost/python/object_protocol_core.hpp boost_1_65_1/boost/python/raw_function.hpp boost_1_65_1/boost/python/refcount.hpp boost_1_65_1/boost/python/self.hpp boost_1_65_1/boost/python/stl_iterator.hpp boost_1_65_1/boost/python/wrapper.hpp boost_1_65_1/boost/interprocess/detail/managed_memory_impl.hpp boost_1_65_1/boost/interprocess/detail/managed_multi_shared_memory.hpp boost_1_65_1/boost/interprocess/detail/managed_open_or_create_impl.hpp boost_1_65_1/boost/interprocess/detail/shared_dir_helpers.hpp boost_1_65_1/boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp boost_1_65_1/boost/parameter/aux_/preprocessor/flatten.hpp boost_1_65_1/boost/parameter/aux_/preprocessor/for_each.hpp boost_1_65_1/boost/parameter/aux_/python/invoker_iterate.hpp boost_1_65_1/boost/parameter/aux_/overloads.hpp boost_1_65_1/boost/parameter/aux_/parameter_requirements.hpp boost_1_65_1/boost/parameter/aux_/result_of0.hpp boost_1_65_1/boost/parameter/aux_/tag.hpp boost_1_65_1/boost/parameter/aux_/template_keyword.hpp boost_1_65_1/boost/parameter/aux_/void.hpp boost_1_65_1/boost/parameter/aux_/yesno.hpp boost_1_65_1/boost/parameter/match.hpp boost_1_65_1/boost/parameter/parameters.hpp boost_1_65_1/boost/parameter/python.hpp boost_1_65_1/boost/parameter.hpp boost_1_65_1/boost/ptr_container/detail/default_deleter.hpp boost_1_65_1/boost/ptr_container/detail/is_convertible.hpp boost_1_65_1/boost/ptr_container/detail/move.hpp boost_1_65_1/boost/ptr_container/detail/scoped_deleter.hpp boost_1_65_1/boost/ptr_container/detail/throw_exception.hpp boost_1_65_1/boost/ptr_container/detail/void_ptr_iterator.hpp boost_1_65_1/boost/ptr_container/exception.hpp boost_1_65_1/boost/ptr_container/nullable.hpp boost_1_65_1/boost/thread/concurrent_queues/queue_base.hpp boost_1_65_1/boost/thread/experimental/parallel/v2/task_region.hpp boost_1_65_1/boost/thread/v2/shared_mutex.hpp boost_1_65_1/boost/iostreams/detail/adapter/device_adapter.hpp boost_1_65_1/boost/iostreams/detail/adapter/filter_adapter.hpp boost_1_65_1/boost/iostreams/detail/adapter/non_blocking_adapter.hpp boost_1_65_1/boost/iostreams/detail/broken_overload_resolution/forward.hpp boost_1_65_1/boost/iostreams/detail/config/enable_warnings.hpp boost_1_65_1/boost/iostreams/detail/config/limits.hpp boost_1_65_1/boost/iostreams/detail/config/windows_posix.hpp boost_1_65_1/boost/iostreams/detail/absolute_path.hpp boost_1_65_1/boost/iostreams/detail/bool_trait_def.hpp boost_1_65_1/boost/iostreams/detail/counted_array.hpp boost_1_65_1/boost/iostreams/detail/template_params.hpp boost_1_65_1/boost/iostreams/restrict.hpp boost_1_65_1/boost/msm/mpl_graph/mpl_graph.hpp boost_1_65_1/boost/typeof/dmc/typeof_impl.hpp boost_1_65_1/boost/typeof/std/bitset.hpp boost_1_65_1/boost/typeof/std/complex.hpp boost_1_65_1/boost/typeof/std/deque.hpp boost_1_65_1/boost/typeof/std/fstream.hpp boost_1_65_1/boost/typeof/std/functional.hpp boost_1_65_1/boost/typeof/std/iostream.hpp boost_1_65_1/boost/typeof/std/istream.hpp boost_1_65_1/boost/typeof/std/iterator.hpp boost_1_65_1/boost/typeof/std/list.hpp boost_1_65_1/boost/typeof/std/locale.hpp boost_1_65_1/boost/typeof/std/map.hpp boost_1_65_1/boost/typeof/std/memory.hpp boost_1_65_1/boost/typeof/std/ostream.hpp boost_1_65_1/boost/typeof/std/queue.hpp boost_1_65_1/boost/typeof/std/set.hpp boost_1_65_1/boost/typeof/std/sstream.hpp boost_1_65_1/boost/typeof/std/stack.hpp boost_1_65_1/boost/typeof/std/streambuf.hpp boost_1_65_1/boost/typeof/std/string.hpp boost_1_65_1/boost/typeof/std/utility.hpp boost_1_65_1/boost/typeof/std/valarray.hpp boost_1_65_1/boost/typeof/std/vector.hpp boost_1_65_1/boost/typeof/encode_decode.hpp boost_1_65_1/boost/typeof/encode_decode_params.hpp boost_1_65_1/boost/typeof/incr_registration_group.hpp boost_1_65_1/boost/typeof/int_encoding.hpp boost_1_65_1/boost/typeof/integral_template_param.hpp boost_1_65_1/boost/typeof/modifiers.hpp boost_1_65_1/boost/typeof/pointers_data_members.hpp boost_1_65_1/boost/typeof/register_mem_functions.hpp boost_1_65_1/boost/typeof/template_encoding.hpp boost_1_65_1/boost/typeof/template_template_param.hpp boost_1_65_1/boost/typeof/type_encoding.hpp boost_1_65_1/boost/typeof/type_template_param.hpp boost_1_65_1/boost/typeof/typeof_impl.hpp boost_1_65_1/boost/typeof/vector.hpp boost_1_65_1/boost/typeof/vector100.hpp boost_1_65_1/boost/typeof/vector150.hpp boost_1_65_1/boost/typeof/vector200.hpp boost_1_65_1/boost/typeof/vector50.hpp
I have already submitted PRs for these files, and iostreams and parameters should be currently fixed in 'develop'.
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
On 25 September 2017 at 14:20, Jonathan Wakely via Boost < boost@lists.boost.org> wrote:
On 25 September 2017 at 14:08, Edward Diener via Boost < boost@lists.boost.org> wrote:
I have already submitted PRs for these files, and iostreams and
parameters
should be currently fixed in 'develop'.
Since this was not isolated to a single library, I assume this is quite easily done by mistake with common workflows. Perhaps we ought to consider having an automated test for .hpp (and other) files not being executable somewhere as a quality gate before subsequent releases? Neil
On 9/25/2017 9:32 AM, Neil Groves via Boost wrote:
On 25 September 2017 at 14:20, Jonathan Wakely via Boost < boost@lists.boost.org> wrote:
On 25 September 2017 at 14:08, Edward Diener via Boost < boost@lists.boost.org> wrote:
I have already submitted PRs for these files, and iostreams and
parameters
should be currently fixed in 'develop'.
Since this was not isolated to a single library, I assume this is quite easily done by mistake with common workflows. Perhaps we ought to consider having an automated test for .hpp (and other) files not being executable somewhere as a quality gate before subsequent releases?
A better solution would be a Git server hook which would prevent files being pushed as executable unless the file matched known executable file types. Of course determining what constitutes executable file types might not be very easy. I believe a git hook at the Boost superproject level would apply to all submodules recursively, but I am not absolutely sure that this is true.
Neil
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
On 25 September 2017 at 14:52, Edward Diener via Boost
A better solution would be a Git server hook which would prevent files being pushed as executable unless the file matched known executable file types.
I don't think we can add server hooks to github.
Of course determining what constitutes executable file types might not be very easy. I believe a git hook at the Boost superproject level would apply to all submodules recursively, but I am not absolutely sure that this is true.
I don't think so, although someone with more experience might know better? I could perhaps check in the commitbot, but I don't really want it to reject changes. There's no good feedback mechanism, and it would increase the amount of state it would need to manage. It might also lead to issues if two modules are updated, but the commitbot only accepts one. Could perhaps add something to the '__boost_check_library__' tests, which is at 'status/boost_check_library.py'.
On Mon, Sep 25, 2017 at 12:35 PM, Daniel James via Boost < boost@lists.boost.org> wrote:
On 25 September 2017 at 14:52, Edward Diener via Boost
wrote: A better solution would be a Git server hook which would prevent files
being
pushed as executable unless the file matched known executable file types.
I don't think we can add server hooks to github.
Of course determining what constitutes executable file types might not be very easy. I believe a git hook at the Boost superproject level would apply to all submodules recursively, but I am not absolutely sure that this is true.
I don't think so, although someone with more experience might know better?
I could perhaps check in the commitbot, but I don't really want it to reject changes. There's no good feedback mechanism, and it would increase the amount of state it would need to manage. It might also lead to issues if two modules are updated, but the commitbot only accepts one.
Could perhaps add something to the '__boost_check_library__' tests, which is at 'status/boost_check_library.py'.
Perhaps bjam could include a check for it so that it fails locally before push and also in CI. This would be a good place to put other checks like boost license conformance. - Jim
On 25 September 2017 at 14:32, Neil Groves via Boost
Since this was not isolated to a single library, I assume this is quite easily done by mistake with common workflows. Perhaps we ought to consider having an automated test for .hpp (and other) files not being executable somewhere as a quality gate before subsequent releases?
It looks like it dates back to subversion, so I think it's unlikely to happen now.
participants (5)
-
Daniel James
-
Edward Diener
-
James E. King, III
-
Jonathan Wakely
-
Neil Groves