From b91914660f5b9651c8fc3d6573d890ffe5971107 Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Sun, 20 May 2018 21:19:04 -0600 Subject: [PATCH] Update to 0.9.8 Drop parallel make for now Use libtirpc Switch to Xorg dummy driver for tests, fail build on test failure Add patch to fix ppc64 altivec vector usage Add patches to fix various warnings --- .gitignore | 1 + gdl-alias.patch | 54 ++++++++ gdl-array.patch | 52 -------- gdl-catch.patch | 122 ++++++++++++++++++ gdl-gcc6.patch | 20 --- gdl-return.patch | 288 ++++++++++++++++++++++++++++++++++++++++++ gdl-saverestore.patch | 11 ++ gdl-sign.patch | 63 +++++++++ gdl-std.patch | 11 ++ gdl-uninit.patch | 12 ++ gdl-vector.patch | 25 ++++ gdl-warnings.patch | 30 +++++ gdl.spec | 112 +++++++++++----- sources | 2 +- xorg.conf | 135 ++++++++++++++++++++ 15 files changed, 835 insertions(+), 103 deletions(-) create mode 100644 gdl-alias.patch delete mode 100644 gdl-array.patch create mode 100644 gdl-catch.patch delete mode 100644 gdl-gcc6.patch create mode 100644 gdl-return.patch create mode 100644 gdl-saverestore.patch create mode 100644 gdl-sign.patch create mode 100644 gdl-std.patch create mode 100644 gdl-uninit.patch create mode 100644 gdl-vector.patch create mode 100644 gdl-warnings.patch create mode 100644 xorg.conf diff --git a/.gitignore b/.gitignore index d77399d..b6391d0 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ gdl-0.9rc4.tar.gz /gdl-0.9.6.tar.gz /gdl-0.9.6v2.tgz /gdl-0.9.7.tgz +/gdl-0.9.8.tgz diff --git a/gdl-alias.patch b/gdl-alias.patch new file mode 100644 index 0000000..39db1c1 --- /dev/null +++ b/gdl-alias.patch @@ -0,0 +1,54 @@ +diff -up gdl-0.9.8/src/basic_pro_jmg.cpp.alias gdl-0.9.8/src/basic_pro_jmg.cpp +--- gdl-0.9.8/src/basic_pro_jmg.cpp.alias 2018-04-11 19:20:07.670748377 -0600 ++++ gdl-0.9.8/src/basic_pro_jmg.cpp 2018-04-12 09:01:16.578294989 -0600 +@@ -23,6 +23,7 @@ + + #include "envt.hpp" + #include "dinterpreter.hpp" ++#include "prognode.hpp" + #include "basic_pro_jmg.hpp" + + #define MAXNDLL 40 +@@ -38,8 +39,8 @@ namespace lib { + + using namespace std; + +- void (*dynPro[MAXNDLL/2])( EnvT* e); +- BaseGDL*(*dynFun[MAXNDLL/2])( EnvT* e); ++ LibPro dynPro[MAXNDLL/2]; ++ LibFun dynFun[MAXNDLL/2]; + + void point_lun( EnvT* e) + { +@@ -141,11 +142,11 @@ namespace lib { + + #if defined(_WIN32) && !defined(__CYGWIN__) + if (funcType == 0) { +- (void* &) dynPro[count_pro] = +- (void *) GetProcAddress(module[count], entryName.c_str()); ++ dynPro[count_pro] = ++ (LibPro) GetProcAddress(module[count], entryName.c_str()); + } else if (funcType == 1) { +- (BaseGDL* &) dynFun[count_fun] = +- (BaseGDL*) GetProcAddress(module[count], entryName.c_str()); ++ dynFun[count_fun] = ++ (LibFun) GetProcAddress(module[count], entryName.c_str()); + } else { + printf("Improper function type: %d\n", funcType); + FreeLibrary(module[count]); +@@ -153,11 +154,11 @@ namespace lib { + } + #else + if (funcType == 0) { +- (void* &) dynPro[count_pro] = +- (void *) dlsym(module[count], entryName.c_str()); ++ dynPro[count_pro] = ++ (LibPro) dlsym(module[count], entryName.c_str()); + } else if (funcType == 1) { +- (BaseGDL* &) dynFun[count_fun] = +- (BaseGDL*) dlsym(module[count], entryName.c_str()); ++ dynFun[count_fun] = ++ (LibFun) dlsym(module[count], entryName.c_str()); + } else { + printf("Improper function type: %d\n", funcType); + dlclose(module[count]); diff --git a/gdl-array.patch b/gdl-array.patch deleted file mode 100644 index 3b425db..0000000 --- a/gdl-array.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 965eb0af7a532740637c96ac31f7fc5d022d1953 Mon Sep 17 00:00:00 2001 -From: Gilles Duvert -Date: Tue, 24 Jan 2017 10:05:41 +0000 -Subject: [PATCH] reverted to previous version since correction of bug#709 was - making a mess with array dimensions. - ---- - src/accessdesc.hpp | 3 ++- - src/dimension.hpp | 16 +++++++++------- - 2 files changed, 11 insertions(+), 8 deletions(-) - -diff --git a/src/accessdesc.hpp b/src/accessdesc.hpp -index 0309d11..b4d78a9 100644 ---- a/src/accessdesc.hpp -+++ b/src/accessdesc.hpp -@@ -317,7 +317,8 @@ class DotAccessDescT - // dim >> topDim; - dim >> ix[d]->GetDim(); - } -- dim.Purge(); -+// Was added to solve bug 709 but may have side effects. -+// dim.Purge(); - } - - private: -diff --git a/src/dimension.hpp b/src/dimension.hpp -index 6469648..1345ff5 100644 ---- a/src/dimension.hpp -+++ b/src/dimension.hpp -@@ -378,13 +378,15 @@ class dimension - // throw away unused ranks (ie. ranks == 1) - void Purge() - { -- //old version: produce bug #709 --// for(; rank>1 && dim[rank-1] <= 1; --rank); -- int m=rank-1; -- for (; m>0; --m) if (dim[m]<=1) { -- for (int j=m; j1 && dim[rank-1] <= 1; --rank); -+// However those following lines are too strict: test=fltarr(1, 1, 114) & help,test -+// gives: TEST FLOAT = Array[1, 114] instead of good answer TEST FLOAT = Array[1, 1, 114] -+// int m=rank-1; -+// for (; m>0; --m) if (dim[m]<=1) { -+// for (int j=m; jResizeForLoops( nForLoopsIn); + +@@ -6456,7 +6456,7 @@ template sta + try { + oStruct = e->GetObjHeap( objRef); + } +- catch ( GDLInterpreter::HeapException ) ++ catch ( GDLInterpreter::HeapException& ) + { // non valid object + if( count) + e->SetKW( countIx, new DLongGDL( 0)); +diff -up gdl-0.9.8/src/dinterpreter.cpp.catch gdl-0.9.8/src/dinterpreter.cpp +--- gdl-0.9.8/src/dinterpreter.cpp.catch 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/dinterpreter.cpp 2018-03-26 16:53:15.635298830 -0600 +@@ -143,7 +143,7 @@ DStructGDL* GDLInterpreter::ObjectStruct + try { + oStructGDL= GetObjHeap( o); + } +- catch ( HeapException) ++ catch ( HeapException&) + { + throw GDLException( mp, "Object not valid: "+Name(self)); + } +@@ -578,12 +578,12 @@ bool GDLInterpreter::CompileFile(const s + return false; + } + } +- catch( GDLException e) ++ catch( GDLException& e) + { + ReportCompileError( e, f); + return false; + } +- catch( ANTLRException e) ++ catch( ANTLRException& e) + { + cerr << "Lexer/Parser exception: " << e.getMessage() << endl; + return false; +@@ -612,13 +612,13 @@ bool GDLInterpreter::CompileFile(const s + + if( treeParser.ActiveProCompiled()) RetAll(); + } +- catch( GDLException e) ++ catch( GDLException& e) + { + ReportCompileError( e, f); + if( treeParser.ActiveProCompiled()) RetAll(); + return false; + } +- catch( ANTLRException e) ++ catch( ANTLRException& e) + { + cerr << "Compiler exception: " << e.getMessage() << endl; + if( treeParser.ActiveProCompiled()) RetAll(); +@@ -705,7 +705,7 @@ DInterpreter::CommandCode DInterpreter:: + // default is more verbose + CompileFile( argstr); //, origstr); + } +- catch( RetAllException) ++ catch( RetAllException&) + { + // delay the RetAllException until finished + retAll = true; +@@ -771,7 +771,7 @@ DInterpreter::CommandCode DInterpreter:: + // default is more verbose + CompileFile( argstr); //, origstr); + } +- catch( RetAllException) ++ catch( RetAllException&) + { + // delay the RetAllException until finished + retAll = true; +diff -up gdl-0.9.8/src/getfmtast.cpp.catch gdl-0.9.8/src/getfmtast.cpp +--- gdl-0.9.8/src/getfmtast.cpp.catch 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/getfmtast.cpp 2018-03-26 16:54:32.793899215 -0600 +@@ -68,15 +68,15 @@ RefFMTNode GetFMTAST( DString fmtString) + cout << endl; + #endif + } +- catch( GDLException ex) ++ catch( GDLException& ex) + { + throw GDLException("Format: "+ex.getMessage()); + } +- catch( antlr::ANTLRException ex) ++ catch( antlr::ANTLRException& ex) + { + throw GDLException("Format parser: "+ex.getMessage()); + } +- catch( exception ex) ++ catch( exception& ex) + { + throw GDLException("Format exception: "+string(ex.what())); + } diff --git a/gdl-gcc6.patch b/gdl-gcc6.patch deleted file mode 100644 index 67610f1..0000000 --- a/gdl-gcc6.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -up gdl-0.9.6/src/specializations.hpp.gcc6 gdl-0.9.6/src/specializations.hpp ---- gdl-0.9.6/src/specializations.hpp.gcc6 2015-08-24 15:26:47.000000000 -0600 -+++ gdl-0.9.6/src/specializations.hpp 2016-03-03 16:30:46.694379312 -0700 -@@ -534,16 +534,6 @@ void Data_::MinMax( DLong* mi - - // default_io.cpp - template<> --std::istream& operator>>(std::istream& i, Data_& data_); --template<> --std::istream& operator>>(std::istream& i, Data_& data_); --template<> --std::istream& operator>>(std::istream& i, Data_& data_); --template<> --std::istream& operator>>(std::istream& i, Data_& data_); --template<> --std::istream& operator>>(std::istream& is, Data_& data_); --template<> - std::ostream& Data_::ToStream(std::ostream& o, SizeT w, SizeT* actPosPtr); - template<> - std::ostream& Data_::ToStream(std::ostream& o, SizeT w, SizeT* actPosPtr); diff --git a/gdl-return.patch b/gdl-return.patch new file mode 100644 index 0000000..f506877 --- /dev/null +++ b/gdl-return.patch @@ -0,0 +1,288 @@ +diff -up gdl-0.9.8/src/basic_fun.cpp.return gdl-0.9.8/src/basic_fun.cpp +--- gdl-0.9.8/src/basic_fun.cpp.return 2018-04-11 16:33:39.117920749 -0600 ++++ gdl-0.9.8/src/basic_fun.cpp 2018-04-11 16:33:39.124920716 -0600 +@@ -4420,6 +4420,7 @@ BaseGDL* where_fun(EnvT* e) { + } + } + } ++ return NULL; // should not reach + } + // uses MergeSort + // 2 parts in the code: without "width" or with "width" (limited to 1D and 2D) +@@ -6249,6 +6250,7 @@ template sta + } + + } else e->Throw("Operand must be integer:" + e->GetParString(0)); ++ return NULL; // should not reach + } + + BaseGDL* shift_fun( EnvT* e) { +@@ -6544,6 +6546,7 @@ template sta + } + return res; + } else e->Throw("Object reference type required in this context: " + e->GetParString(0)); ++ return NULL; // should not reach + } + + BaseGDL* n_tags( EnvT* e) +@@ -8328,6 +8331,7 @@ template sta + } + } + e->Throw("Expecting string or byte array as a first parameter"); ++ return NULL; // should not reach + } + + BaseGDL* get_drive_list(EnvT* e) +@@ -8442,6 +8446,7 @@ template sta + return res; + + } ++ return NULL; // should not reach + } + + // note: changes here MUST be reflected in scope_varfetch_reference() as well +diff -up gdl-0.9.8/src/basic_pro_jmg.cpp.return gdl-0.9.8/src/basic_pro_jmg.cpp +--- gdl-0.9.8/src/basic_pro_jmg.cpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/basic_pro_jmg.cpp 2018-04-11 19:20:07.670748377 -0600 +@@ -589,6 +589,7 @@ namespace lib { + break; + } + assert( false); ++ return NULL; // Silence warning + } + + +diff -up gdl-0.9.8/src/graphicsdevice.hpp.return gdl-0.9.8/src/graphicsdevice.hpp +--- gdl-0.9.8/src/graphicsdevice.hpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/graphicsdevice.hpp 2018-04-11 19:21:25.832376682 -0600 +@@ -220,8 +220,8 @@ public: + virtual void MaxXYSize(DLong *xsize, DLong *ysize) { + *xsize=1200, *ysize=800; return;} + virtual DLong GetDecomposed() { return -1;} +- virtual BaseGDL* GetFontnames() { ThrowGDLException("DEVICE: Keyword GET_FONTNAMES not allowed for call to: DEVICE" );}//{return NULL;} +- virtual DLong GetFontnum() { ThrowGDLException("DEVICE: Keyword GET_FONTNUM not allowed for call to: DEVICE" );}//{return -1;} ++ virtual BaseGDL* GetFontnames() { ThrowGDLException("DEVICE: Keyword GET_FONTNAMES not allowed for call to: DEVICE" ); return NULL;} ++ virtual DLong GetFontnum() { ThrowGDLException("DEVICE: Keyword GET_FONTNUM not allowed for call to: DEVICE" ); return -1;} + virtual bool SetFont(DString f) {static int warning_sent=1; if (warning_sent) {Warning("SET_FONT not active for this device (FIXME)."); warning_sent=0;} return true;} + virtual DString GetCurrentFont() {return NULL;} + virtual DLong GetGraphicsFunction() { return -1;} +@@ -360,8 +360,8 @@ public: + bool UnsetFocus(); + bool Decomposed(bool value); + DLong GetDecomposed(); +- BaseGDL* GetFontnames(){ ThrowGDLException("DEVICE: Keyword GET_FONTNAMES not allowed for call to: DEVICE" );}//{return NULL;} +- DLong GetFontnum(){ ThrowGDLException("DEVICE: Keyword GET_FONTNUM not allowed for call to: DEVICE" );}//{return -1;} ++ BaseGDL* GetFontnames(){ ThrowGDLException("DEVICE: Keyword GET_FONTNAMES not allowed for call to: DEVICE" ); return NULL;} ++ DLong GetFontnum(){ ThrowGDLException("DEVICE: Keyword GET_FONTNUM not allowed for call to: DEVICE" ); return -1;} + bool SetFont(DString f) {fontname=f; return true;} + DString GetCurrentFont() {return fontname;} + bool SetBackingStore(int value); +diff -up gdl-0.9.8/src/gzstream.hpp.return gdl-0.9.8/src/gzstream.hpp +--- gdl-0.9.8/src/gzstream.hpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/gzstream.hpp 2018-04-11 16:33:39.125920711 -0600 +@@ -75,9 +75,9 @@ public: + std::streampos pubseekoff(std::streamoff off, std::ios_base::seekdir way, std::ios_base::openmode which=std::ios_base::in|std::ios_base::out); + //hacks for not being lost with input gzipped streams + std::streampos getPosition(){return position;} +- std::streampos setPosition(long pos){position=pos;} +- std::streampos incrementPosition(long pos=1){position+=pos;} +- std::streampos decrementPosition(long pos=1){position-=pos;} ++ void setPosition(long pos){position=pos;} ++ void incrementPosition(long pos=1){position+=pos;} ++ void decrementPosition(long pos=1){position-=pos;} + }; + + class gzstreambase : virtual public std::ios { +diff -up gdl-0.9.8/src/hdf_fun.cpp.return gdl-0.9.8/src/hdf_fun.cpp +--- gdl-0.9.8/src/hdf_fun.cpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/hdf_fun.cpp 2018-04-11 19:22:44.477002324 -0600 +@@ -106,6 +106,7 @@ namespace lib { + return new DLongGDL( Vattach(hdf_id, vg_ref, "r")); + else if (e->KeywordSet( writeIx )) + return new DLongGDL( Vattach(hdf_id, vg_ref, "w")); ++ return NULL; + } + + +diff -up gdl-0.9.8/src/hdf_pro.cpp.return gdl-0.9.8/src/hdf_pro.cpp +--- gdl-0.9.8/src/hdf_pro.cpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/hdf_pro.cpp 2018-04-11 16:33:39.126920706 -0600 +@@ -34,7 +34,7 @@ namespace lib { + using namespace std; + + template< typename T> +- BaseGDL* hdf_sd_getdata_template( EnvT* e, dimension dim, int32 sds_id, ++ void hdf_sd_getdata_template( EnvT* e, dimension dim, int32 sds_id, + int32 start[], int32 edges[], int32 stride[], + DLongGDL* strideKW) + { +@@ -622,7 +622,7 @@ namespace lib { + } + + template< typename T> +- BaseGDL* hdf_sd_getdscl_template(EnvT* e, DLong dim_size, int32 dim_id) ++ void hdf_sd_getdscl_template(EnvT* e, DLong dim_size, int32 dim_id) + { + T* data = new T(dimension(dim_size), BaseGDL::NOZERO); + SDgetdimscale(dim_id, data->DataAddr()); +diff -up gdl-0.9.8/src/list.cpp.return gdl-0.9.8/src/list.cpp +--- gdl-0.9.8/src/list.cpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/list.cpp 2018-04-11 19:24:14.900571515 -0600 +@@ -149,6 +149,7 @@ + { + ThrowFromInternalUDSub( e, "SELF object ID <"+i2s(selfID)+"> not found."); + } ++ return NULL; + } + + void LIST__ToStream( DStructGDL* oStructGDL, std::ostream& o, SizeT w, SizeT* actPosPtr) +diff -up gdl-0.9.8/src/magick_cl.cpp.return gdl-0.9.8/src/magick_cl.cpp +--- gdl-0.9.8/src/magick_cl.cpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/magick_cl.cpp 2018-04-11 19:27:37.564602966 -0600 +@@ -125,6 +125,7 @@ namespace lib { + } catch (Exception &error_) { + e->Throw(error_.what()); + } ++ return NULL; + } + + BaseGDL * magick_ping(EnvT* e) { +@@ -332,6 +333,7 @@ namespace lib { + } catch (Exception &error_) { + e->Throw(error_.what()); + } ++ return NULL; + } + + //CLOSE, magic_id +@@ -411,6 +413,7 @@ namespace lib { + } catch (Exception &error_) { + e->Throw(error_.what()); + } ++ return NULL; + } + + //MAGICK_READCOLORMAPRGB, mid, red, green, blue +@@ -572,6 +575,7 @@ namespace lib { + } catch (Exception &error_) { + e->Throw(error_.what()); + } ++ return NULL; + } + + // MAGICK_WRITE, mid, gdlImageArray, rgb=rgb +@@ -706,6 +710,7 @@ namespace lib { + } catch (Exception &error_) { + e->Throw(error_.what()); + } ++ return NULL; + } + + //magickNumber=MAGICK_MAGICK(mid [, "imageType"]) +@@ -727,6 +732,7 @@ namespace lib { + } catch (Exception &error_) { + e->Throw(error_.what()); + } ++ return NULL; + } + + //nrows=MAGICK_ROWS(mid) +@@ -740,6 +746,7 @@ namespace lib { + } catch (Exception &error_) { + e->Throw(error_.what()); + } ++ return NULL; + } + + //ncols=MAGICK_COLUMNS(mid) +@@ -753,6 +760,7 @@ namespace lib { + } catch (Exception &error_) { + e->Throw(error_.what()); + } ++ return NULL; + } + //bool=MAGICK_INDEXEDCOLOR(mid) + BaseGDL* magick_IndexedColor(EnvT* e) { +@@ -769,7 +777,7 @@ namespace lib { + } catch (Exception &error_) { + e->Throw(error_.what()); + } +- ++ return NULL; + } + + //MAGICK_QUALITY, mid, quality +diff -up gdl-0.9.8/src/math_fun_jmg.cpp.return gdl-0.9.8/src/math_fun_jmg.cpp +--- gdl-0.9.8/src/math_fun_jmg.cpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/math_fun_jmg.cpp 2018-04-11 19:29:36.258031486 -0600 +@@ -288,6 +288,7 @@ extern "C" { + return res; + } + assert( false); ++ return NULL; + } + }; + +diff -up gdl-0.9.8/src/math_fun_ng.cpp.return gdl-0.9.8/src/math_fun_ng.cpp +--- gdl-0.9.8/src/math_fun_ng.cpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/math_fun_ng.cpp 2018-04-11 19:30:57.610639792 -0600 +@@ -371,6 +371,7 @@ namespace lib { + return Yout; + } + assert( false); ++ return NULL; + }// RK4_fun + + }//namespace +diff -up gdl-0.9.8/src/plotting_convert_coord.cpp.return gdl-0.9.8/src/plotting_convert_coord.cpp +--- gdl-0.9.8/src/plotting_convert_coord.cpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/plotting_convert_coord.cpp 2018-04-11 20:42:10.177037332 -0600 +@@ -368,6 +368,7 @@ namespace lib { + delete res; + return res1; + } ++ return NULL; // Should not reach + } + + //THE FOLLOWING ARE POSSIBLY THE WORST WAY TO DO THE JOB. At least they are to be used *only* +diff -up gdl-0.9.8/src/pythongdl.cpp.return gdl-0.9.8/src/pythongdl.cpp +--- gdl-0.9.8/src/pythongdl.cpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/pythongdl.cpp 2018-04-11 16:33:39.127920702 -0600 +@@ -272,6 +272,7 @@ int GDLEventHandlerPy() + GDLEventHandler(); + if( oldInputHook != NULL) + (*oldInputHook)(); ++ return 0; + } + + // Execute a GDL subroutine +diff -up gdl-0.9.8/src/triangulation.cpp.return gdl-0.9.8/src/triangulation.cpp +--- gdl-0.9.8/src/triangulation.cpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/triangulation.cpp 2018-04-11 20:43:03.965777173 -0600 +@@ -1108,6 +1108,7 @@ namespace lib { + BaseGDL* qgrid3_fun ( EnvT* e) + { + e->Throw("Please Write this function in GDL."); ++ return NULL; + } + #endif + } +diff -up gdl-0.9.8/src/widget.cpp.return gdl-0.9.8/src/widget.cpp +--- gdl-0.9.8/src/widget.cpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/widget.cpp 2018-04-11 20:45:36.447036861 -0600 +@@ -45,6 +45,7 @@ wxRealPoint GetRequestedUnitConversionFa + if (the_units==0) return wxRealPoint(1,1); + if (the_units==1) return wxRealPoint(sx*25.4,sy*25.4); + if (the_units==2) return wxRealPoint(sx*10.0,sy*10.0); ++ return wxRealPoint(0,0); // Should not reach + } + + void GDLWidget::ChangeUnitConversionFactor( EnvT* e) +@@ -2231,6 +2232,7 @@ endwait: + } + } while (infinity); + #endif ++ return NULL; // Should not reach + } + + void widget_control( EnvT* e ) { diff --git a/gdl-saverestore.patch b/gdl-saverestore.patch new file mode 100644 index 0000000..ffaff91 --- /dev/null +++ b/gdl-saverestore.patch @@ -0,0 +1,11 @@ +diff -up gdl-0.9.8/src/saverestore.cpp.return gdl-0.9.8/src/saverestore.cpp +--- gdl-0.9.8/src/saverestore.cpp.return 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/saverestore.cpp 2018-04-11 16:33:39.129920693 -0600 +@@ -164,6 +164,7 @@ namespace lib { + + uint32_t writeEnd(XDR *xdrs) { + uint32_t cur=writeNewRecordHeader(xdrs, 6); ++ return cur; + } + + int getVersion(XDR* xdrs) { diff --git a/gdl-sign.patch b/gdl-sign.patch new file mode 100644 index 0000000..2f459eb --- /dev/null +++ b/gdl-sign.patch @@ -0,0 +1,63 @@ +diff -up gdl-0.9.8/src/dinterpreter.cpp.sign gdl-0.9.8/src/dinterpreter.cpp +--- gdl-0.9.8/src/dinterpreter.cpp.sign 2018-04-14 20:29:23.612484457 -0600 ++++ gdl-0.9.8/src/dinterpreter.cpp 2018-04-14 20:29:23.628484629 -0600 +@@ -666,7 +666,7 @@ DInterpreter::CommandCode DInterpreter:: + DInterpreter::CommandCode DInterpreter::CmdCompile( const string& command) + { + string cmdstr = command; +- int sppos = cmdstr.find(" ",0); ++ size_t sppos = cmdstr.find(" ",0); + if (sppos == string::npos) + { + cout << "Interactive COMPILE not implemented yet." << endl; +@@ -676,7 +676,7 @@ DInterpreter::CommandCode DInterpreter:: + bool retAll = false; // Remember if Retall is needed + + // Parse each file name +- int pos = sppos + 1; ++ size_t pos = sppos + 1; + while (pos < command.length()) + { + sppos = command.find(" ",pos); +@@ -737,7 +737,7 @@ DInterpreter::CommandCode DInterpreter:: + bool retAll = false; // Remember if Retall is needed + + // Parse each file name +- int pos = sppos + 1; ++ size_t pos = sppos + 1; + while (pos < command.length()) + { + sppos = command.find(" ",pos); +@@ -799,7 +799,7 @@ DInterpreter::CommandCode DInterpreter:: + { + string cmdstr = command; + string args; +- int sppos = cmdstr.find(" ",0); ++ size_t sppos = cmdstr.find(" ",0); + if (sppos != string::npos) { + args = cmdstr.substr(sppos+1); + cmdstr = cmdstr.substr(0, sppos); +diff -up gdl-0.9.8/src/GDLLexer.cpp.sign gdl-0.9.8/src/GDLLexer.cpp +--- gdl-0.9.8/src/GDLLexer.cpp.sign 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/GDLLexer.cpp 2018-04-14 20:30:05.656936102 -0600 +@@ -434,7 +434,7 @@ void GDLLexer::mINCLUDE(bool _createToke + std::string name = f->getText(); + + // find comments on the same line +- long pos = name.find_first_of(';', 0); ++ size_t pos = name.find_first_of(';', 0); + if( pos != std::string::npos) // remove them + name = name.substr(0, pos); + +diff -up gdl-0.9.8/src/GDLParser.cpp.sign gdl-0.9.8/src/GDLParser.cpp +--- gdl-0.9.8/src/GDLParser.cpp.sign 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/GDLParser.cpp 2018-04-14 20:29:23.630484650 -0600 +@@ -6773,7 +6773,7 @@ void GDLParser::arrayindex_list() { + antlr::ASTPair currentAST; + RefDNode arrayindex_list_AST = RefDNode(antlr::nullAST); + +- int rank = 1; ++ SizeT rank = 1; + + + if ((LA(1) == LSQUARE)) { diff --git a/gdl-std.patch b/gdl-std.patch new file mode 100644 index 0000000..d60ec37 --- /dev/null +++ b/gdl-std.patch @@ -0,0 +1,11 @@ +diff -up gdl-0.9.8/src/basic_fun.cpp.std gdl-0.9.8/src/basic_fun.cpp +--- gdl-0.9.8/src/basic_fun.cpp.std 2018-04-11 09:17:16.200257202 -0600 ++++ gdl-0.9.8/src/basic_fun.cpp 2018-04-11 09:20:12.854448333 -0600 +@@ -111,6 +111,7 @@ namespace lib { + std::vector command_line_args; + + // using namespace std; ++ using std::isinf; + using std::isnan; + using namespace antlr; + diff --git a/gdl-uninit.patch b/gdl-uninit.patch new file mode 100644 index 0000000..002ec09 --- /dev/null +++ b/gdl-uninit.patch @@ -0,0 +1,12 @@ +diff -up gdl-0.9.8/src/GDLInterpreter.cpp.uninit gdl-0.9.8/src/GDLInterpreter.cpp +--- gdl-0.9.8/src/GDLInterpreter.cpp.uninit 2018-04-11 16:33:42.112906758 -0600 ++++ gdl-0.9.8/src/GDLInterpreter.cpp 2018-04-11 22:14:29.401901171 -0600 +@@ -2905,7 +2905,7 @@ void GDLInterpreter::tag_array_expr(Prog + BaseGDL* GDLInterpreter::r_dot_indexable_expr(ProgNodeP _t, + DotAccessDescT* aD + ) { +- BaseGDL* res; ++ BaseGDL* res = NULL; + ProgNodeP r_dot_indexable_expr_AST_in = (_t == ProgNodeP(ASTNULL)) ? ProgNodeP(antlr::nullAST) : _t; + + switch ( _t->getType()) { diff --git a/gdl-vector.patch b/gdl-vector.patch new file mode 100644 index 0000000..a183dd9 --- /dev/null +++ b/gdl-vector.patch @@ -0,0 +1,25 @@ +diff -up gdl-0.9.8/src/medianfilter.cpp.vector gdl-0.9.8/src/medianfilter.cpp +--- gdl-0.9.8/src/medianfilter.cpp.vector 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/medianfilter.cpp 2018-05-20 15:19:38.072948145 -0600 +@@ -673,8 +673,8 @@ static inline void histogram_add( const + #elif defined(__ALTIVEC__) + static inline void histogram_add( const uint16_t x[16], uint16_t y[16] ) + { +- *(vector unsigned short*) &y[0] = vec_add( *(vector unsigned short*) &y[0], *(vector unsigned short*) &x[0] ); +- *(vector unsigned short*) &y[8] = vec_add( *(vector unsigned short*) &y[8], *(vector unsigned short*) &x[8] ); ++ *(__vector unsigned short*) &y[0] = vec_add( *(__vector unsigned short*) &y[0], *(__vector unsigned short*) &x[0] ); ++ *(__vector unsigned short*) &y[8] = vec_add( *(__vector unsigned short*) &y[8], *(__vector unsigned short*) &x[8] ); + } + #else + static inline void histogram_add( const uint16_t x[16], uint16_t y[16] ) +@@ -707,8 +707,8 @@ static inline void histogram_sub( const + #elif defined(__ALTIVEC__) + static inline void histogram_sub( const uint16_t x[16], uint16_t y[16] ) + { +- *(vector unsigned short*) &y[0] = vec_sub( *(vector unsigned short*) &y[0], *(vector unsigned short*) &x[0] ); +- *(vector unsigned short*) &y[8] = vec_sub( *(vector unsigned short*) &y[8], *(vector unsigned short*) &x[8] ); ++ *(__vector unsigned short*) &y[0] = vec_sub( *(__vector unsigned short*) &y[0], *(__vector unsigned short*) &x[0] ); ++ *(__vector unsigned short*) &y[8] = vec_sub( *(__vector unsigned short*) &y[8], *(__vector unsigned short*) &x[8] ); + } + #else + static inline void histogram_sub( const uint16_t x[16], uint16_t y[16] ) diff --git a/gdl-warnings.patch b/gdl-warnings.patch new file mode 100644 index 0000000..1ffab49 --- /dev/null +++ b/gdl-warnings.patch @@ -0,0 +1,30 @@ +diff -up gdl-0.9.8/src/gdlc.g.warnings gdl-0.9.8/src/gdlc.g +--- gdl-0.9.8/src/gdlc.g.warnings 2018-03-26 03:57:27.000000000 -0600 ++++ gdl-0.9.8/src/gdlc.g 2018-04-14 21:04:41.196663086 -0600 +@@ -1217,7 +1217,7 @@ numeric_constant!// + + arrayindex_list + { +- int rank = 1; ++ SizeT rank = 1; + } + : LSQUARE! arrayindex ({++rank <= MAXRANK}? COMMA! arrayindex)* RSQUARE! + | { IsRelaxed()}? LBRACE! arrayindex +@@ -1948,7 +1948,7 @@ tokens { + { + // Stuff for include files (@filename) + private: +- std::auto_ptr inputFile; // stores ifsteam* and deletes ++ std::unique_ptr inputFile; // stores ifsteam* and deletes + // it when it is deleted itself + + antlr::TokenStreamSelector* selector; +@@ -2071,7 +2071,7 @@ INCLUDE! + std::string name = f->getText(); + + // find comments on the same line +- long pos = name.find_first_of(';', 0); ++ size_t pos = name.find_first_of(';', 0); + if( pos != std::string::npos) // remove them + name = name.substr(0, pos); + diff --git a/gdl.spec b/gdl.spec index a1b70b9..ddecb61 100644 --- a/gdl.spec +++ b/gdl.spec @@ -1,6 +1,6 @@ Name: gdl -Version: 0.9.7 -Release: 11%{?dist} +Version: 0.9.8 +Release: 1%{?dist} Summary: GNU Data Language Group: Applications/Engineering @@ -10,16 +10,30 @@ Source0: http://downloads.sourceforge.net/gnudatalanguage/%{name}-%{versi Source1: gdl.csh Source2: gdl.sh Source3: makecvstarball +Source4: xorg.conf # Build with system antlr library. Request for upstream change here: # https://sourceforge.net/tracker/index.php?func=detail&aid=2685215&group_id=97659&atid=618686 Patch1: gdl-antlr.patch -# Fix problem with arra generation -Patch2: gdl-array.patch -# Fix build with gcc 6 -# https://sourceforge.net/p/gnudatalanguage/bugs/686/ -# https://sourceforge.net/p/gnudatalanguage/bugs/688/ -Patch4: gdl-gcc6.patch - +# Catch by reference +# https://github.com/gnudatalanguage/gdl/pull/5 +Patch2: gdl-catch.patch +# https://github.com/gnudatalanguage/gdl/pull/142 +Patch3: gdl-std.patch +# Silence some (harmless) warnings about return values +Patch4: gdl-return.patch +# https://github.com/gnudatalanguage/gdl/pull/274 +Patch5: gdl-sign.patch +# https://github.com/gnudatalanguage/gdl/pull/275 +Patch6: gdl-uninit.patch +# Fix -Wstrict-aliasing warning +# https://github.com/gnudatalanguage/gdl/pull/162 +Patch7: gdl-alias.patch +# https://github.com/gnudatalanguage/gdl/pull/276 +Patch8: gdl-warnings.patch +# +Patch9: gdl-vector.patch +# Fix test_save_restore segfault with gcc 8 +Patch10: gdl-saverestore.patch #RHEL5 doesn't have the needed antlr version/headers, has old plplot %if 0%{?rhel} == 5 @@ -49,6 +63,7 @@ BuildRequires: grib_api-static %endif %endif BuildRequires: eigen3-static +BuildRequires: libtirpc-devel #TODO - Build with mpi support #BuildRequires: mpich2-devel BuildRequires: pslib-devel @@ -61,7 +76,7 @@ BuildRequires: udunits2-devel BuildRequires: wxGTK-devel BuildRequires: cmake # For tests -BuildRequires: xorg-x11-server-Xvfb +BuildRequires: xorg-x11-drv-dummy BuildRequires: metacity # Needed to pull in drivers Requires: plplot @@ -110,8 +125,17 @@ Provides: %{name}-runtime = %{version}-%{release} %setup -q -n %{name}-%{version} rm -rf src/antlr %patch1 -p1 -b .antlr -%patch2 -p1 -b .array -%patch4 -p1 -b .gcc6 +%patch2 -p1 -b .catch +%patch3 -p1 -b .std +%patch4 -p1 -b .return +%patch5 -p1 -b .sign +%patch6 -p1 -b .uninit +%patch7 -p1 -b .alias +%patch8 -p1 -b .warnings +%patch9 -p1 -b .vector +%patch10 -p1 -b .saverestore +# Stray link +rm src/gdl pushd src for f in *.g @@ -140,12 +164,12 @@ mkdir build build-python #Build the standalone executable pushd build %{cmake} %{cmake_opts} .. -make %{?_smp_mflags} +make #{?_smp_mflags} popd #Build the python module pushd build-python %{cmake} %{cmake_opts} -DPYTHON_MODULE=ON .. -make %{?_smp_mflags} +make #{?_smp_mflags} popd @@ -168,37 +192,57 @@ install -m 0644 %SOURCE2 $RPM_BUILD_ROOT/%{_sysconfdir}/profile.d %check cd build -# test_bug_3275334 and window_background appear to need to read from display -# test_bug_3147146 failure -# https://sourceforge.net/p/gnudatalanguage/bugs/619/ -# test_bug_3285659 failure -# https://sourceforge.net/p/gnudatalanguage/bugs/387/ -# test_routine_names failure -# https://sourceforge.net/p/gnudatalanguage/bugs/647/ -# test_zip - https://sourceforge.net/p/gnudatalanguage/bugs/632/ -cat > xrun.sh <<'EOF' +cp %SOURCE4 . +if [ -x /usr/libexec/Xorg ]; then + Xorg=/usr/libexec/Xorg +elif [ -x /usr/libexec/Xorg.bin ]; then + Xorg=/usr/libexec/Xorg.bin +else + Xorg=/usr/bin/Xorg +fi +$Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./xorg.log -config ./xorg.conf -configdir . :99 & +export DISPLAY=:99 + metacity & sleep 2 -failing_tests='test_(bug_3275334|sem|window_background)' -%ifarch aarch64 ppc +# fft_leak - https://github.com/gnudatalanguage/gdl/issues/147 +# file_delete - https://github.com/gnudatalanguage/gdl/issues/148 +# fix - https://github.com/gnudatalanguage/gdl/issues/149 +# formats - https://github.com/gnudatalanguage/gdl/issues/144 +# n_tags - https://github.com/gnudatalanguage/gdl/issues/150 +# obj_isa - https://github.com/gnudatalanguage/gdl/issues/151 +# parse_url - https://github.com/gnudatalanguage/gdl/issues/153 +# resolve_routine - https://github.com/gnudatalanguage/gdl/issues/146 +# rounding - https://github.com/gnudatalanguage/gdl/issues/154 +# total - https://github.com/gnudatalanguage/gdl/issues/155 +failing_tests='test_(fft_leak|file_delete|finite|fix|formats|idlneturl|make_dll|n_tags|obj_isa|parse_url|resolve_routine|rounding|total)' +%ifarch aarch64 ppc %{power64} # test_fix fails currently on arm # https://sourceforge.net/p/gnudatalanguage/bugs/622/ # https://bugzilla.redhat.com/show_bug.cgi?id=990749 failing_tests="$failing_tests|test_fix" %endif +%ifarch aarch64 +failing_tests="$failing_tests|test_(l64|xdr)" +%endif %ifarch %{arm} # These fail on 32-bit: test_formats test_xdr -failing_tests="$failing_tests|test_(fix|formats|xdr)" +failing_tests="$failing_tests|test_(fix|formats)" %endif %ifarch %{ix86} # These fail on 32-bit: test_formats test_xdr -failing_tests="$failing_tests|test_(formats|xdr)" +failing_tests="$failing_tests|test_(formats|l64|sem|xdr)" +%endif +%ifarch s390x +eailing_tests="$failing_tests|test_(save_restore|window_background)" %endif make check ARGS="-V -E '$failing_tests'" +%ifnarch s390x +# test_save_restore hangs on s390x make check ARGS="-V -R '$failing_tests'" || : -EOF -chmod +x xrun.sh -xvfb-run ./xrun.sh +%endif +kill %1 || : +cat xorg.log %files @@ -216,6 +260,14 @@ xvfb-run ./xrun.sh %changelog +* Sun May 20 2018 Orion Poplawski - 0.9.8-1 +- Update to 0.9.8 +- Drop parallel make for now +- Use libtirpc +- Switch to Xorg dummy driver for tests, fail build on test failure +- Add patch to fix ppc64 altivec vector usage +- Add patches to fix various warnings + * Thu Mar 01 2018 Iryna Shcherbina - 0.9.7-11 - Update Python 2 dependency declarations to new packaging standards (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) diff --git a/sources b/sources index 275bfae..f616f2e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gdl-0.9.7.tgz) = 1fef5ccccb31bdb39b5f855ba030fd7bed6b3deacf9aefce7f5afcd7ca48f5d25dfe20d32eb1d1fd25a533f69cabc341d1146e2f8e41f6c986163a9b84fda03b +SHA512 (gdl-0.9.8.tgz) = df7728b6e79a8e812ed022f7fb60d23ad331337d15a77c94d1666a5a1ab63e14c1607520a752ceff999eb65bbde12fa9fffd8d82806455b1c0651cb5f2d92a10 diff --git a/xorg.conf b/xorg.conf new file mode 100644 index 0000000..39bc48a --- /dev/null +++ b/xorg.conf @@ -0,0 +1,135 @@ +# This xorg configuration file is meant to be used +# to start a dummy X11 server for graphical testing. + +Section "ServerFlags" + Option "DontVTSwitch" "true" + Option "AllowMouseOpenFail" "true" + Option "PciForceNone" "true" + Option "AutoEnableDevices" "false" + Option "AutoAddDevices" "false" +EndSection + +Section "InputDevice" + Identifier "dummy_mouse" + Option "CorePointer" "true" + Driver "void" +EndSection + +Section "InputDevice" + Identifier "dummy_keyboard" + Option "CoreKeyboard" "true" + Driver "void" +EndSection + +Section "Device" + Identifier "dummy_videocard" + Driver "dummy" + Option "ConstantDPI" "true" + #VideoRam 4096000 + #VideoRam 256000 + VideoRam 192000 +EndSection + +Section "Monitor" + Identifier "dummy_monitor" + HorizSync 5.0 - 1000.0 + VertRefresh 5.0 - 200.0 + #This can be used to get a specific DPI, but only for the default resolution: + #DisplaySize 508 317 + #NOTE: the highest modes will not work without increasing the VideoRam + # for the dummy video card. + Modeline "32768x32768" 15226.50 32768 35800 39488 46208 32768 32771 32781 32953 + Modeline "32768x16384" 7516.25 32768 35544 39192 45616 16384 16387 16397 16478 + Modeline "16384x8192" 2101.93 16384 16416 24400 24432 8192 8390 8403 8602 + Modeline "8192x4096" 424.46 8192 8224 9832 9864 4096 4195 4202 4301 + Modeline "5496x1200" 199.13 5496 5528 6280 6312 1200 1228 1233 1261 + Modeline "5280x1080" 169.96 5280 5312 5952 5984 1080 1105 1110 1135 + Modeline "5280x1200" 191.40 5280 5312 6032 6064 1200 1228 1233 1261 + Modeline "5120x3200" 199.75 5120 5152 5904 5936 3200 3277 3283 3361 + Modeline "4800x1200" 64.42 4800 4832 5072 5104 1200 1229 1231 1261 + Modeline "3840x2880" 133.43 3840 3872 4376 4408 2880 2950 2955 3025 + Modeline "3840x2560" 116.93 3840 3872 4312 4344 2560 2622 2627 2689 + Modeline "3840x2048" 91.45 3840 3872 4216 4248 2048 2097 2101 2151 + Modeline "3840x1080" 100.38 3840 3848 4216 4592 1080 1081 1084 1093 + Modeline "3600x1200" 106.06 3600 3632 3984 4368 1200 1201 1204 1214 + Modeline "3288x1080" 39.76 3288 3320 3464 3496 1080 1106 1108 1135 + Modeline "2048x2048" 49.47 2048 2080 2264 2296 2048 2097 2101 2151 + Modeline "2048x1536" 80.06 2048 2104 2312 2576 1536 1537 1540 1554 + Modeline "2560x1600" 47.12 2560 2592 2768 2800 1600 1639 1642 1681 + Modeline "2560x1440" 42.12 2560 2592 2752 2784 1440 1475 1478 1513 + Modeline "1920x1440" 69.47 1920 1960 2152 2384 1440 1441 1444 1457 + Modeline "1920x1200" 26.28 1920 1952 2048 2080 1200 1229 1231 1261 + Modeline "1920x1080" 23.53 1920 1952 2040 2072 1080 1106 1108 1135 + Modeline "1680x1050" 20.08 1680 1712 1784 1816 1050 1075 1077 1103 + Modeline "1600x1200" 22.04 1600 1632 1712 1744 1200 1229 1231 1261 + Modeline "1600x900" 33.92 1600 1632 1760 1792 900 921 924 946 + Modeline "1440x900" 30.66 1440 1472 1584 1616 900 921 924 946 + ModeLine "1366x768" 72.00 1366 1414 1446 1494 768 771 777 803 + Modeline "1280x1024" 31.50 1280 1312 1424 1456 1024 1048 1052 1076 + Modeline "1280x800" 24.15 1280 1312 1400 1432 800 819 822 841 + Modeline "1280x768" 23.11 1280 1312 1392 1424 768 786 789 807 + Modeline "1360x768" 24.49 1360 1392 1480 1512 768 786 789 807 + Modeline "1024x768" 18.71 1024 1056 1120 1152 768 786 789 807 + Modeline "768x1024" 19.50 768 800 872 904 1024 1048 1052 1076 + + + #common resolutions for android devices (both orientations): + Modeline "800x1280" 25.89 800 832 928 960 1280 1310 1315 1345 + Modeline "1280x800" 24.15 1280 1312 1400 1432 800 819 822 841 + Modeline "720x1280" 30.22 720 752 864 896 1280 1309 1315 1345 + Modeline "1280x720" 27.41 1280 1312 1416 1448 720 737 740 757 + Modeline "768x1024" 24.93 768 800 888 920 1024 1047 1052 1076 + Modeline "1024x768" 23.77 1024 1056 1144 1176 768 785 789 807 + Modeline "600x1024" 19.90 600 632 704 736 1024 1047 1052 1076 + Modeline "1024x600" 18.26 1024 1056 1120 1152 600 614 617 631 + Modeline "536x960" 16.74 536 568 624 656 960 982 986 1009 + Modeline "960x536" 15.23 960 992 1048 1080 536 548 551 563 + Modeline "600x800" 15.17 600 632 688 720 800 818 822 841 + Modeline "800x600" 14.50 800 832 880 912 600 614 617 631 + Modeline "480x854" 13.34 480 512 560 592 854 873 877 897 + Modeline "848x480" 12.09 848 880 920 952 480 491 493 505 + Modeline "480x800" 12.43 480 512 552 584 800 818 822 841 + Modeline "800x480" 11.46 800 832 872 904 480 491 493 505 + #resolutions for android devices (both orientations) + #minus the status bar + #38px status bar (and width rounded up) + Modeline "800x1242" 25.03 800 832 920 952 1242 1271 1275 1305 + Modeline "1280x762" 22.93 1280 1312 1392 1424 762 780 783 801 + Modeline "720x1242" 29.20 720 752 856 888 1242 1271 1276 1305 + Modeline "1280x682" 25.85 1280 1312 1408 1440 682 698 701 717 + Modeline "768x986" 23.90 768 800 888 920 986 1009 1013 1036 + Modeline "1024x730" 22.50 1024 1056 1136 1168 730 747 750 767 + Modeline "600x986" 19.07 600 632 704 736 986 1009 1013 1036 + Modeline "1024x562" 17.03 1024 1056 1120 1152 562 575 578 591 + Modeline "536x922" 16.01 536 568 624 656 922 943 947 969 + Modeline "960x498" 14.09 960 992 1040 1072 498 509 511 523 + Modeline "600x762" 14.39 600 632 680 712 762 779 783 801 + Modeline "800x562" 13.52 800 832 880 912 562 575 578 591 + Modeline "480x810" 12.59 480 512 552 584 810 828 832 851 + Modeline "848x442" 11.09 848 880 920 952 442 452 454 465 + Modeline "480x762" 11.79 480 512 552 584 762 779 783 801 +EndSection + +Section "Screen" + Identifier "dummy_screen" + Device "dummy_videocard" + Monitor "dummy_monitor" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 24 + #Modes "32768x32768" "32768x16384" "16384x8192" "8192x4096" "5120x3200" "3840x2880" "3840x2560" "3840x2048" "2048x2048" "2560x1600" "1920x1440" "1920x1200" "1920x1080" "1600x1200" "1680x1050" "1600x900" "1400x1050" "1440x900" "1280x1024" "1366x768" "1280x800" "1024x768" "1024x600" "800x600" "320x200" + Modes "5120x3200" "3840x2880" "3840x2560" "3840x2048" "2048x2048" "2560x1600" "1920x1440" "1920x1200" "1920x1080" "1600x1200" "1680x1050" "1600x900" "1400x1050" "1440x900" "1280x1024" "1366x768" "1280x800" "1024x768" "1024x600" "800x600" "320x200" + #Virtual 32000 32000 + #Virtual 16384 8192 + Virtual 8192 4096 + #Virtual 5120 3200 + EndSubSection +EndSection + +Section "ServerLayout" + Identifier "dummy_layout" + Screen "dummy_screen" + InputDevice "dummy_mouse" + InputDevice "dummy_keyboard" +EndSection