From 359ef529cddf6af936502131d5676c4a711386dd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20R=C4=99korajski?= Date: Sun, 27 Dec 2015 11:19:13 +0100 Subject: [PATCH] - added gcc 5 fixes from Debian - rel 5 --- 3DLDF.spec | 10 +- upstream-cleanup-permissive_cxx_code.patch | 300 +++++++++++++++++++++ upstream-gcc-init_priority.patch | 80 ++++++ upstream-sys-std_numeric_limits.patch | 34 +++ upstream-w2help2man.patch | 101 +++++++ 5 files changed, 524 insertions(+), 1 deletion(-) create mode 100644 upstream-cleanup-permissive_cxx_code.patch create mode 100644 upstream-gcc-init_priority.patch create mode 100644 upstream-sys-std_numeric_limits.patch create mode 100644 upstream-w2help2man.patch diff --git a/3DLDF.spec b/3DLDF.spec index 3993ed8..6449dea 100644 --- a/3DLDF.spec +++ b/3DLDF.spec @@ -2,12 +2,16 @@ Summary: Three-dimensional drawing with MetaPost output Summary(pl.UTF-8): Tworzenie trójwymiarowej grafiki z wyjściem w formacie MetaPost Name: 3DLDF Version: 2.0.3 -Release: 4 +Release: 5 License: GPL v2+ Group: Applications/Graphics Source0: http://ftp.gnu.org/gnu/3dldf/%{name}-%{version}.tar.gz # Source0-md5: 5e669f4efd3d576d42308ba61619a63f Patch0: %{name}-info.patch +Patch1: upstream-cleanup-permissive_cxx_code.patch +Patch2: upstream-gcc-init_priority.patch +Patch3: upstream-sys-std_numeric_limits.patch +Patch4: upstream-w2help2man.patch URL: http://www.gnu.org/software/3dldf/ # ps2pdf BuildRequires: ghostscript @@ -33,6 +37,10 @@ w TeXu. %prep %setup -q %patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 %build # only 3dlfb binary uses libs, symbols are messed - no sense in building shared libs diff --git a/upstream-cleanup-permissive_cxx_code.patch b/upstream-cleanup-permissive_cxx_code.patch new file mode 100644 index 0000000..2fd697d --- /dev/null +++ b/upstream-cleanup-permissive_cxx_code.patch @@ -0,0 +1,300 @@ +Description: permissive code cleanup + Clarify C++ permissive code as detected by gcc-5; closes RC bug #777763. +Origin: debian +Forwarded: https://savannah.gnu.org/bugs/?44314 +Author: Jerome Benoit +Last-Update: 2015-06-26 + +--- a/src/pspglb.web ++++ b/src/pspglb.web +@@ -5075,12 +5075,7 @@ + void* + polyhedron_path_intersection_func(Polyhedron* p, + Path* q, +- void* parameter = 0); +- +-template +-int +-show_func(C* c, string text = "", void* parameter = 0); +- ++ void* parameter = 0); + + void* + plane_intersection_func(void* v, void* w, void* parameter = 0); +--- a/src/io.web ++++ b/src/io.web +@@ -4937,22 +4937,22 @@ + template + friend + void* +- Scan_Parse::get_point_func(real r, C* c, void* parameter = 0); ++ Scan_Parse::get_point_func(real r, C* c, void* parameter); + + template + friend + void* +- Scan_Parse::get_center_func(C* c, void* parameter = 0); ++ Scan_Parse::get_center_func(C* c, void* parameter); + + template + friend + void* +- Scan_Parse::get_focus_func(C* c, const unsigned short s = 0, void* parameter = 0); ++ Scan_Parse::get_focus_func(C* c, const unsigned short s, void* parameter); + + template + friend + void* +- Scan_Parse::get_vertex_func(C* c, const unsigned short s = 0, void* parameter = 0); ++ Scan_Parse::get_vertex_func(C* c, const unsigned short s, void* parameter); + + + @q **** (4) Functions for |Focuses|.@> +@@ -5009,8 +5009,8 @@ + friend + string* + Scan_Parse::sub_binary_number_string_func(C c, +- bool oversize_switch = false, +- Scanner_Node scanner_node = 0); ++ bool oversize_switch, ++ Scanner_Node scanner_node); + + + @q **** (4) @> +@@ -5035,7 +5035,7 @@ + int + Scan_Parse::shape_decl_func(Scanner_Node, + int, +- C* dummy = 0); ++ C*); + + template + friend +@@ -5164,7 +5164,7 @@ + template + friend + void* +-Scan_Parse::normal_func(C* c, Scanner_Node scanner_node = 0); ++Scan_Parse::normal_func(C* c, Scanner_Node scanner_node); + + + @q **** (4)@> +@@ -5226,7 +5226,7 @@ + Scan_Parse::vector_type_decl(Scanner_Node scanner_node, + int vector_type_num, + int array_type_num, +- C* dummy = 0); ++ C* dummy); + + + template +@@ -5237,7 +5237,7 @@ + int vector_type_num, + int array_type_num, + C* object, +- bool copy_object = true); ++ bool copy_object); + + template + friend +@@ -5245,7 +5245,7 @@ + Scan_Parse::vector_type_assign(Scanner_Node scanner_node, + Id_Map_Entry_Node entry, + const Pointer_Vector* object_vector, +- C* dummy = 0); ++ C* dummy); + friend + int + Scan_Parse::conditional(Scanner_Node scanner_node, +@@ -5367,7 +5367,7 @@ + template + friend + int +- Scan_Parse::reverse_func(void* v, void* parameter, C* c = 0); ++ Scan_Parse::reverse_func(void* v, void* parameter, C* c); + + + friend +@@ -5447,7 +5447,7 @@ + template + friend + void* +-standardize_func(C* c, void* v = 0); ++standardize_func(C* c, void* v); + + friend + void* +@@ -5610,11 +5610,11 @@ + int increment_value, + const unsigned short conic_section_type, + C* c, +- void* parameter = 0, +- bool test_points = true, +- bool rectify_points = true, +- real tolerance = -1, +- bool ignore_extra_points = true); ++ void* parameter, ++ bool test_points, ++ bool rectify_points, ++ real tolerance, ++ bool ignore_extra_points); + + friend + void* +@@ -5677,23 +5677,23 @@ + template + friend + int +-Scan_Parse::cull_func(void* v, +- const unsigned short comparison = 0, +- Scanner_Node scanner_node = 0, +- real tolerance = -1, +- C* c = 0); ++Scan_Parse::cull_func(void* v, ++ const unsigned short comparison, ++ Scanner_Node scanner_node, ++ real tolerance, ++ C* c); + + template + friend + int + Scan_Parse::rectify_func(void* v, +- Scanner_Node scanner_node = 0, +- bool do_test = true, +- bool do_cull = true, +- bool do_transform = true, +- real tolerance = -1, +- Transform* t = 0, +- C* c = 0); ++ Scanner_Node scanner_node, ++ bool do_test, ++ bool do_cull, ++ bool do_transform, ++ real tolerance, ++ Transform* t, ++ C* c); + + @q ***** (5) |cuboid| expressions.@> + @*4 {\bf cuboid} expressions. +@@ -5709,12 +5709,12 @@ + template + friend + void* +-Scan_Parse::in_cuboid_func(C* c, void* parameter = 0); ++Scan_Parse::in_cuboid_func(C* c, void* parameter); + + template + friend + void* +-Scan_Parse::out_cuboid_func(C* c, void* parameter = 0); ++Scan_Parse::out_cuboid_func(C* c, void* parameter); + + @q ***** (5) Functions for |Polyhedra|.@> + @*4 Functions for {\bf Polyhedra}. +@@ -6033,7 +6033,7 @@ + template + friend + void* +-Scan_Parse::is_whatever_func(C* c, void* parameter = 0); ++Scan_Parse::is_whatever_func(C* c, void* parameter); + + + friend +@@ -6047,10 +6047,10 @@ + template + friend + void* +-Scan_Parse::intersection_points_func(C* c, +- D* d, +- void* parameter = 0, +- E* e = 0); ++Scan_Parse::intersection_points_func(C* c, ++ D* d, ++ void* parameter, ++ E* e); + friend + Pointer_Vector* + Scan_Parse::convert(Bool_Point_Quadruple* bpq, +@@ -6061,22 +6061,22 @@ + template + friend + void* +-Scan_Parse::ellipse_like_intersection_func(C* c, D* d, void* parameter = 0); ++Scan_Parse::ellipse_like_intersection_func(C* c, D* d, void* parameter); + + template + friend + void* +-Scan_Parse::ellipse_like_plane_intersection_func(C* c, void* w, void* parameter = 0); ++Scan_Parse::ellipse_like_plane_intersection_func(C* c, void* w, void* parameter); + + template + friend + void* +-Scan_Parse::conic_section_intersection_func(C* c, D* d, void* parameter = 0); ++Scan_Parse::conic_section_intersection_func(C* c, D* d, void* parameter); + + template + friend + void* +-Scan_Parse::polygon_like_intersection_func(C* c, D* d, void* parameter = 0); ++Scan_Parse::polygon_like_intersection_func(C* c, D* d, void* parameter); + + + template +@@ -6084,7 +6084,7 @@ + void* + Scan_Parse::ellipsoid_like_plane_intersection_func(C* c, + Plane* p, +- void* parameter = 0); ++ void* parameter); + friend + void* + Scan_Parse::sphere_line_intersection_func(Sphere* s, +@@ -6100,12 +6100,12 @@ + template + friend + void* +-Scan_Parse::plane_cast_func(C* c, void* parameter = 0); ++Scan_Parse::plane_cast_func(C* c, void* parameter); + + template + friend + void* +-Scan_Parse::plane_assignment_func(void* entry, C* c, void* parameter = 0); ++Scan_Parse::plane_assignment_func(void* entry, C* c, void* parameter); + + friend + int +@@ -6114,7 +6114,7 @@ + template + friend + int +-Scan_Parse::show_func(C* c, string text = "", void* parameter = 0); ++Scan_Parse::show_func(C* c, string text, void* parameter); + + friend + void* +--- a/src/scanprse.web ++++ b/src/scanprse.web +@@ -6245,7 +6245,7 @@ + Scan_Parse::vector_type_decl(Scanner_Node scanner_node, + int vector_type_num, + int array_type_num, +- C* dummy = 0) ++ C* dummy) + { + + +@@ -8147,8 +8147,8 @@ + Scan_Parse::cull_func(void* v, + const unsigned short comparison, + Scanner_Node scanner_node, +- real tolerance = -1, +- C* c = 0) ++ real tolerance, ++ C* c) + { + + @q ***** (5) Preliminaries.@> diff --git a/upstream-gcc-init_priority.patch b/upstream-gcc-init_priority.patch new file mode 100644 index 0000000..7f3db3f --- /dev/null +++ b/upstream-gcc-init_priority.patch @@ -0,0 +1,80 @@ +Description: random pre-main initialization: prioritize + Clarify C++ pre-main initialization with the help of the gcc specific + attribute init_priority; closes RC bug #759696. +Origin: debian +Author: Jerome Benoit +Last-Update: 2015-11-23 + +--- a/src/points.web ++++ b/src/points.web +@@ -704,18 +704,16 @@ + + @= + +-extern const Point INVALID_POINT(INVALID_REAL, INVALID_REAL, INVALID_REAL); +-extern const Point ORIGIN(0, 0, 0); +-extern const Point_Pair INVALID_POINT_PAIR(INVALID_POINT, INVALID_POINT); ++extern const Point __attribute__((init_priority(500))) INVALID_POINT(INVALID_REAL, INVALID_REAL, INVALID_REAL); ++extern const Point __attribute__((init_priority(500))) ORIGIN(0, 0, 0); ++extern const Point_Pair __attribute__((init_priority(1000))) INVALID_POINT_PAIR(INVALID_POINT, INVALID_POINT); + +-extern const Bool_Point INVALID_BOOL_POINT(false, INVALID_POINT); +-extern const Bool_Point_Pair INVALID_BOOL_POINT_PAIR(INVALID_BOOL_POINT, +- INVALID_BOOL_POINT); ++extern const Bool_Point __attribute__((init_priority(1000))) INVALID_BOOL_POINT(false, INVALID_POINT); ++extern const Bool_Point_Pair __attribute__((init_priority(2000))) INVALID_BOOL_POINT_PAIR(INVALID_BOOL_POINT, INVALID_BOOL_POINT); + + +-extern const Bool_Real_Point INVALID_BOOL_REAL_POINT(false, INVALID_REAL, +- INVALID_POINT); +-extern const Bool_Point_Quadruple ++extern const Bool_Real_Point __attribute__((init_priority(1000))) INVALID_BOOL_REAL_POINT(false, INVALID_REAL, INVALID_POINT); ++extern const Bool_Point_Quadruple __attribute__((init_priority(2000))) + INVALID_BOOL_POINT_QUADRUPLE(INVALID_BOOL_POINT, + INVALID_BOOL_POINT, + INVALID_BOOL_POINT, +--- a/src/lines.web ++++ b/src/lines.web +@@ -1032,7 +1032,7 @@ + @q * Global constants for Line.@> + @ Global constants for {\bf Line}. + @<|Line| global constants@>= +-extern const Line INVALID_LINE(INVALID_POINT, INVALID_POINT); ++extern const Line __attribute__((init_priority(1000))) INVALID_LINE(INVALID_POINT, INVALID_POINT); + + @ + @= +--- a/src/planes.web ++++ b/src/planes.web +@@ -1617,8 +1617,7 @@ + @q * (1) Global constants for Plane.@> + @* Global constants for {\bf Plane}. + @<|Plane| global constants@>= +-extern const Plane INVALID_PLANE(INVALID_POINT, +- INVALID_POINT); ++extern const Plane __attribute__((init_priority(1000))) INVALID_PLANE(INVALID_POINT, INVALID_POINT); + + @ + @= +--- a/src/complex.web ++++ b/src/complex.web +@@ -143,7 +143,7 @@ + + @= + +-extern const Complex INVALID_COMPLEX(INVALID_REAL, INVALID_REAL); ++extern const Complex __attribute__((init_priority(500))) INVALID_COMPLEX(INVALID_REAL, INVALID_REAL); + + @q *** (3)@> + @ +--- a/src/transfor.web ++++ b/src/transfor.web +@@ -1517,7 +1517,7 @@ + @q * Global constants. @> + @ Global constants. + @= +-extern const Transform INVALID_TRANSFORM(INVALID_REAL); ++extern const Transform __attribute__((init_priority(500))) INVALID_TRANSFORM(INVALID_REAL); + extern const Transform IDENTITY_TRANSFORM; + + @ diff --git a/upstream-sys-std_numeric_limits.patch b/upstream-sys-std_numeric_limits.patch new file mode 100644 index 0000000..25b9445 --- /dev/null +++ b/upstream-sys-std_numeric_limits.patch @@ -0,0 +1,34 @@ +Description: system: set second-largest-FP from std::numeric_limits + System::get_second_largest <(float|double)> is as transportable as + reinterpret_cast , that is, NOT. As suggested in gsltmplt.web , + it is replaced with std::numeric_limits<(float|double)>::max() . +Origin: debian +Author: Jerome Benoit +Last-Update: 2015-11-23 + +--- a/src/main.web ++++ b/src/main.web +@@ -1032,10 +1032,20 @@ + @; + + if (ldf_real_float) +- MAX_REAL = System::get_second_largest(FLT_MAX, false); ++ MAX_REAL = ++#if 0 ++ System::get_second_largest(FLT_MAX, false); ++#else ++ std::numeric_limits::max(); ++#endif + else if (ldf_real_double) +- MAX_REAL = System::get_second_largest(DBL_MAX, false); +- ++ MAX_REAL = ++#if 0 ++ System::get_second_largest(DBL_MAX, false); ++#else ++ std::numeric_limits::max(); ++#endif ++ + MAX_REAL_SQRT = sqrt(MAX_REAL); + + cerr.setf(ios::fixed, ios::floatfield); diff --git a/upstream-w2help2man.patch b/upstream-w2help2man.patch new file mode 100644 index 0000000..d1e674e --- /dev/null +++ b/upstream-w2help2man.patch @@ -0,0 +1,101 @@ +Description: re-format the help option + Attempt to re-format the help option of the 3dldf + interpreter wrt to GNU traditions. +Origin: debian +Author: Jerome Benoit +Last-Update: 2014-05-22 + +--- a/src/main.web ++++ b/src/main.web +@@ -450,53 +450,44 @@ + + else if (option_index == HELP_INDEX) + { +- cerr_mutex.lock(); +- cerr << "GNU 3DLDF Version " << VERSION_3DLDF << ". " +- << COPYRIGHT_3DLDF << endl +- << endl +- << "Valid options for GNU 3DLDF are:" << endl +- << endl +- << "--bison-trace: Prints information generated by Bison " +- << endl << " " +- << "for tracing which parser rules are reduced " +- << endl << " " +- << "and the state of the Bison stack." << endl +- << endl +- << "--help: Prints this message and exits " +- << "with return value 0." << endl +- << endl +- << "--multithread-input: Enables the use of multiple " +- << "threads for input." +- << endl +- << endl +- << "--multithread-output: Enables the use of multiple " +- << "threads for output." +- << endl +- << endl +- << "--multithread-include: Enables the use of multiple " +- << "threads for input" << endl +- << " files included in other input files." +- << endl +- << endl +- << "--quiet: Suppresses some output to standard " +- << "output" +- << endl +- << " and standard error when `3dldf' is run." +- << endl << endl +- << "--silent: Suppresses almost all output " +- << "to standard output" << endl +- << " and standard error when " +- << "`3dldf' is run." +- << endl << endl +- << "--verbose: Causes status information to be " +- << "printed to standard output" << endl +- << " when `3dldf' is run." +- << endl << endl +- << "--version: Prints the version number of " +- << "GNU 3DLDF" << endl +- << " to standard output and exits with " +- << "return value 0." +- << endl << endl; ++ cerr_mutex.lock(); ++ cerr ++ << "Usage: 3ldf [OPTION]... 3DLDFNAME[.ldf]" ++ << endl << endl ++ << "This is GNU 3DLDF Version " << VERSION_3DLDF << ". " ++ << endl ++ << COPYRIGHT_3DLDF << "." ++ << endl << endl ++ << "Valid options for GNU 3DLDF are:" ++ << endl << endl ++ << " --bison-trace Prints information generated by Bison " ++ << "for tracing which parser rules are reduced " ++ << "and the state of the Bison stack" ++ << endl << endl ++ << " --multithread-input Enables the use of multiple threads for input" ++ << endl << endl ++ << " --multithread-output Enables the use of multiple threads for output" ++ << endl << endl ++ << " --multithread-include Enables the use of multiple threads for input" ++ << "files included in other input files" ++ << endl << endl ++ << " --quiet Suppresses some output to standard output" ++ << "and standard error when `3dldf' is running" ++ << endl << endl ++ << " --silent Suppresses almost all output to standard output" ++ << "and standard error when `3dldf' is running" ++ << endl << endl ++ << " --verbose Causes status information to be " ++ << "printed to standard output when `3dldf' is running" ++ << endl << endl ++ << " --help Prints this message and exits with return value 0" ++ << endl << endl ++ << " --version Prints the version number of GNU 3DLDF " ++ << "to standard output and exits with return value 0" ++ << endl << endl ++ << "Report bugs to <" << PACKAGE_BUGREPORT << ">." ++ << endl ++ ; + + + #if DEBUG_COMPILE -- 2.43.0