The package rpms/coin-or-OS.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/coin-or-OS.git/commit/?id=139962c....
Change:
-%ifnarch armv7hl
Thanks.
Full change:
============
commit 139962c1eb929441016ae70e913e4faeb23e0900
Author: sagitter <sagitter(a)fedoraproject.org>
Date: Mon Apr 22 14:53:06 2019 +0200
Release 2.10.2
diff --git a/.gitignore b/.gitignore
index 279a648..5a2ed43 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
/OS-2.9.3.tgz
/OS-2.10.1.tgz
+/OS-2.10.2.tgz
diff --git a/coin-or-OS-bool-null.patch b/coin-or-OS-bool-null.patch
deleted file mode 100644
index 85b4eab..0000000
--- a/coin-or-OS-bool-null.patch
+++ /dev/null
@@ -1,336 +0,0 @@
-diff -up OS-2.10.1/src/OSCommonInterfaces/OSMatrix.cpp.orig
OS-2.10.1/src/OSCommonInterfaces/OSMatrix.cpp
---- OS-2.10.1/src/OSCommonInterfaces/OSMatrix.cpp.orig 2016-03-17 12:26:50.735880890
-0300
-+++ OS-2.10.1/src/OSCommonInterfaces/OSMatrix.cpp 2016-03-17 12:27:01.395881298 -0300
-@@ -2297,7 +2297,7 @@ ExpandedMatrixBlocks* MatrixType::getBlo
-
- if (!processBlocks(rowPartition, rowPartitionSize,
- colPartition, colPartitionSize, false, symmetry))
-- return false;
-+ return NULL;
- return ExpandedMatrixByBlocks.back();
- }// end of MatrixType::getBlocks
-
-diff -up OS-2.10.1/src/OSParsers/OSParseosil.y.orig
OS-2.10.1/src/OSParsers/OSParseosil.y
---- OS-2.10.1/src/OSParsers/OSParseosil.y.orig 2016-03-17 12:26:57.922881165 -0300
-+++ OS-2.10.1/src/OSParsers/OSParseosil.y 2016-03-17 12:31:37.978891889 -0300
-@@ -131,9 +131,9 @@ char *parseBase64( const char **p, int *
-
- #define ISDIGIT(_c) ((_c) >= '0' && (_c) <= '9')
-
--#define GETATTRIBUTETEXT \
-+#define GETATTRIBUTETEXT(TYPE) \
- for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ; \
-- if( *ch != '=') { osilerror_wrapper( ch, osillineno, "found an attribute
not defined"); return false;} \
-+ if( *ch != '=') { osilerror_wrapper( ch, osillineno, "found an attribute
not defined"); return (TYPE)0;} \
- ch++; \
- for(; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ; \
- if(*ch == '\"'){ \
-@@ -149,7 +149,7 @@ char *parseBase64( const char **p, int *
- *p = ch; \
- for( ; *ch != '\''; ch++); \
- } \
-- else { osilerror_wrapper( ch, osillineno,"missing quote on attribute");
return false;} \
-+ else { osilerror_wrapper( ch, osillineno,"missing quote on attribute");
return (TYPE)0;} \
- }\
- numChar = ch - *p; \
- attText = new char[numChar + 1]; \
-@@ -6446,7 +6446,7 @@ bool parseVariables( const char **p, OS
- while(*c_numberOfVariables++ == *ch) ch++;
- if( (ch - *p) != 17) { osilerror_wrapper( ch,osillineno,"incorrect
numberOfVariables attribute in <variables tag>"); return false;}
- // buf_index should be pointing to the first character after numberOfVariables
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- ch++;
- numberOfVariables = atoimod1( osillineno, attText, attTextEnd);
- delete [] attText;
-@@ -6496,7 +6496,7 @@ bool parseVariables( const char **p, OS
- name -= 5;
- if(varnameattON == true) { osilerror_wrapper(
ch,osillineno,"too many variable name attributes"); return false;}
- varnameattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
-
osinstance->instanceData->variables->var[varcount]->name=attText;
- delete [] attText;
- break;
-@@ -6507,7 +6507,7 @@ bool parseVariables( const char **p, OS
- type -= 5;
- if(vartypeattON == true) { osilerror_wrapper(
ch,osillineno,"too many variable type attributes"); return false;}
- vartypeattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- vt = returnVarType(attText[0]);
- if( vt == 0 ) { osilerror_wrapper( ch,osillineno,"variable
type not recognized"); return false;}
- osinstance->instanceData->variables->var[varcount]->type
= attText[0];
-@@ -6518,7 +6518,7 @@ bool parseVariables( const char **p, OS
- if(*ch++ != 'b') { osilerror_wrapper(
ch,osillineno,"error in variables lower bound attribute"); return false;}
- if(varlbattON == true) { osilerror_wrapper( ch,osillineno,"too
many variable lb attributes"); return false;}
- varlbattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- osinstance->instanceData->variables->var[varcount]->lb =
atofmod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -6527,7 +6527,7 @@ bool parseVariables( const char **p, OS
- if(*ch++ != 'b') { osilerror_wrapper(
ch,osillineno,"error in variables upper bound attribute"); return false;}
- if(varubattON == true) { osilerror_wrapper( ch,osillineno,"too
many variable ub attributes"); return false;}
- varubattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- osinstance->instanceData->variables->var[varcount]->ub =
atofmod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -6538,7 +6538,7 @@ bool parseVariables( const char **p, OS
- mult -= 5;
- if(varmultattON == true) { osilerror_wrapper(
ch,osillineno,"too many variable mult attributes"); return false;}
- varmultattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- varmult = atoimod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -6742,7 +6742,7 @@ bool parseObjectives( const char **p, OS
- *p = ch;
- while( *c_numberOfObjectives++ == *ch) ch++;
- if( (ch - *p) != 18) { osilerror_wrapper( ch,osillineno,"incorrect
numberOfObjectives attribute in <objectives> tag"); return false;}
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- numberOfObjectives = atoimod1( osillineno, attText, attTextEnd);
- delete [] attText;
- ch++;
-@@ -6797,7 +6797,7 @@ bool parseObjectives( const char **p, OS
- else{
- if(objnumberOfObjCoefattON == true) { osilerror_wrapper(
ch,osillineno,"too many obj numberOfObjCoef attributes"); return false;}
- objnumberOfObjCoefattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
-
osinstance->instanceData->objectives->obj[objcount]->numberOfObjCoef=atoimod1(
osillineno,attText, attTextEnd);
-
if(osinstance->instanceData->objectives->obj[objcount]->numberOfObjCoef > 0
&& osinstance->instanceData->variables->numberOfVariables == 0){
osilerror_wrapper( ch,osillineno,"we have zero variables, but have objective function
coefficients"); return false;}
-
osinstance->instanceData->objectives->obj[objcount]->coef = new
ObjCoef*[osinstance->instanceData->objectives->obj[
objcount]->numberOfObjCoef];
-@@ -6813,7 +6813,7 @@ bool parseObjectives( const char **p, OS
- else{
- if(objnameattON == true) { osilerror_wrapper(
ch,osillineno,"too many obj name attributes"); return false;}
- objnameattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
-
osinstance->instanceData->objectives->obj[objcount]->name=attText;
- delete [] attText;
- }
-@@ -6827,7 +6827,7 @@ bool parseObjectives( const char **p, OS
- else{
- if(objconstantattON == true) { osilerror_wrapper(
ch,osillineno,"too many obj constant attributes"); return false;}
- objconstantattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
-
osinstance->instanceData->objectives->obj[objcount]->constant=atofmod1(
osillineno,attText, attTextEnd);
- delete [] attText;
- }
-@@ -6840,7 +6840,7 @@ bool parseObjectives( const char **p, OS
- else{
- if(objweightattON == true) { osilerror_wrapper(
ch,osillineno,"too many obj weight attributes"); return false;}
- objweightattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
-
osinstance->instanceData->objectives->obj[objcount]->weight=atofmod1(
osillineno,attText, attTextEnd);
- delete [] attText;
- }
-@@ -6854,7 +6854,7 @@ bool parseObjectives( const char **p, OS
- else{
- if(objmaxOrMinattON == true) { osilerror_wrapper(
ch,osillineno,"too many obj maxOrMin attributes"); return false;}
- objmaxOrMinattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- if( (strcmp("max", attText) != 0 ) &&
(strcmp("min", attText) != 0 ) ){osilerror_wrapper( ch,osillineno,"maxOrMin
attribute in objective must be a max or min"); return false;}
-
osinstance->instanceData->objectives->obj[objcount]->maxOrMin = attText;
- delete [] attText;
-@@ -6868,7 +6868,7 @@ bool parseObjectives( const char **p, OS
- else{
- if(objmultattON == true) { osilerror_wrapper(
ch,osillineno,"too many obj mult attributes"); return false;}
- objmultattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- objmult = atoimod1( osillineno,attText, attTextEnd);
- delete [] attText;
- }
-@@ -7059,7 +7059,7 @@ bool parseConstraints( const char **p, O
- while( *c_numberOfConstraints++ == *ch) ch++;
- if( (ch - *p) != 19) { osilerror_wrapper( ch,osillineno,"incorrect
numberOfConstraints attribute in <constraints> tag"); return false;}
- // ch should be pointing to the first character after numberOfConstraints
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- ch++;
- numberOfConstraints = atoimod1( osillineno, attText, attTextEnd);
- delete [] attText;
-@@ -7103,7 +7103,7 @@ bool parseConstraints( const char **p, O
- if(connameattON == true) { osilerror_wrapper( ch,osillineno,"too
many con name attributes"); return false;}
- name -= 5;
- connameattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
-
osinstance->instanceData->constraints->con[concount]->name=attText;
- delete [] attText;
- break;
-@@ -7114,7 +7114,7 @@ bool parseConstraints( const char **p, O
- if(conconstantattON == true) { osilerror_wrapper(
ch,osillineno,"too many con constant attributes"); return false;}
- constant -= 9;
- conconstantattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
-
osinstance->instanceData->constraints->con[concount]->constant=atofmod1(
osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -7123,7 +7123,7 @@ bool parseConstraints( const char **p, O
- if(*ch++ != 'b') { osilerror_wrapper(
ch,osillineno,"error in constraint lb attribute"); return false;}
- if(conlbattON == true) { osilerror_wrapper( ch,osillineno,"too
many con lb attributes"); return false;}
- conlbattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- osinstance->instanceData->constraints->con[concount]->lb =
atofmod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -7132,7 +7132,7 @@ bool parseConstraints( const char **p, O
- if(*ch++ != 'b') { osilerror_wrapper( ch,osillineno,"error
in constraint ub attribute"); return false;}
- if(conubattON == true) { osilerror_wrapper( ch,osillineno,"too
many con ub attributes"); return false;}
- conubattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- osinstance->instanceData->constraints->con[concount]->ub =
atofmod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -7143,7 +7143,7 @@ bool parseConstraints( const char **p, O
- if(conmultattON == true) { osilerror_wrapper( ch,osillineno,"too
many con mult attributes"); return false;}
- mult -= 5;
- conmultattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- conmult = atoimod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -7311,7 +7311,7 @@ bool parseLinearConstraintCoefficients(
- while( *c_numberOfValues++ == *ch) ch++;
- if( (ch - *p) != 14) { osilerror_wrapper( ch,osillineno,"incorrect
numberOfValues attribute in <linearConstraintCoefficients> tag"); return
false;}
- // ch should be pointing to the first character after numberOfValues
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- ch++;
- numberOfValues = atoimod1( osillineno, attText, attTextEnd);
- if(numberOfValues > 0 &&
osinstance->instanceData->variables->numberOfVariables == 0){ osilerror_wrapper(
ch,osillineno,"we have zero variables, but A matrix coefficients"); return
false;}
-@@ -7462,7 +7462,7 @@ bool parseStart(const char **p, OSInstan
- if(elincrattON == true) { osilerror_wrapper(
ch,osillineno,"too many el incr attributes"); return false;}
- incr -= 5;
- elincrattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- elincr = atoimod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -7473,7 +7473,7 @@ bool parseStart(const char **p, OSInstan
- if(elmultattON == true) { osilerror_wrapper(
ch,osillineno,"too many el mult attributes"); return false;}
- mult -= 5;
- elmultattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- elmult = atoimod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -7669,7 +7669,7 @@ bool parseRowIdx( const char **p, OSInst
- if(elincrattON == true) { osilerror_wrapper(
ch,osillineno,"too many el incr attributes"); return false;}
- incr -= 5;
- elincrattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- elincr = atoimod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -7680,7 +7680,7 @@ bool parseRowIdx( const char **p, OSInst
- if(elmultattON == true) { osilerror_wrapper(
ch,osillineno,"too many el mult attributes"); return false;}
- mult -= 5;
- elmultattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- elmult = atoimod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -7871,7 +7871,7 @@ bool parseColIdx( const char **p, OSInst
- if(elincrattON == true) { osilerror_wrapper(
ch,osillineno,"too many el incr attributes"); return false;}
- incr -= 5;
- elincrattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- elincr = atoimod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -7882,7 +7882,7 @@ bool parseColIdx( const char **p, OSInst
- if(elmultattON == true) { osilerror_wrapper(
ch,osillineno,"too many el mult attributes"); return false;}
- mult -= 5;
- elmultattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- elmult = atoimod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -8075,7 +8075,7 @@ bool parseValue( const char **p, OSInsta
- if(elincrattON == true) { osilerror_wrapper(
ch,osillineno,"too many el incr attributes"); return false;}
- incr -= 5;
- elincrattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- elincr = atofmod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -8086,7 +8086,7 @@ bool parseValue( const char **p, OSInsta
- if(elmultattON == true) { osilerror_wrapper(
ch,osillineno,"too many el mult attributes"); return false;}
- mult -= 5;
- elmultattON = true;
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- elmult = atoimod1( osillineno,attText, attTextEnd);
- delete [] attText;
- break;
-@@ -8204,7 +8204,7 @@ bool parseObjCoef( const char **p, int o
- if( (ch - *p) != 3) { osilerror_wrapper( ch,osillineno,"incorrect idx
attribute in objective function <idx> tag"); return false;}
- c_idx -= 4;
- // ch should be pointing to the first character after idx attribute
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(bool);
- osinstance->instanceData->objectives->obj[objcount]->coef[
k]->idx = atoimod1( osillineno, attText, attTextEnd);
- delete [] attText;
- ch++;
-@@ -8257,9 +8257,9 @@ char *parseBase64(const char **p, int *d
- // eat the white space
- for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
- for(i = 0; sizeOf[i] == *ch; i++, ch++);
-- if(i != 6) { osilerror_wrapper( ch,osillineno,"incorrect sizeOf attribute in
<base64BinaryData> element"); return false;}
-+ if(i != 6) { osilerror_wrapper( ch,osillineno,"incorrect sizeOf attribute in
<base64BinaryData> element"); return NULL;}
- // ch should be pointing to the first character after sizeOf
-- GETATTRIBUTETEXT;
-+ GETATTRIBUTETEXT(char*);
- ch++;
- *dataSize = atoimod1( osillineno, attText, attTextEnd);
- delete [] attText;
-@@ -8267,7 +8267,7 @@ char *parseBase64(const char **p, int *d
- // eat the white space
- for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
- // better have an > sign or not valid
-- if(*ch != '>' ) { osilerror_wrapper(
ch,osillineno,"<base64BinaryData> element does not have a proper closing
>"); return false;}
-+ if(*ch != '>' ) { osilerror_wrapper(
ch,osillineno,"<base64BinaryData> element does not have a proper closing
>"); return NULL;}
- ch++;
- // we are now pointing start of the data
- const char *b64textstart = ch;
-@@ -8276,7 +8276,7 @@ char *parseBase64(const char **p, int *d
- const char *b64textend = ch;
- // we should be pointing to </base64BinaryData>
- for(i = 0; endBase64BinaryData[i] == *ch; i++, ch++);
-- if(i != 18) { osilerror_wrapper( ch,osillineno," problem with
<base64BinaryData> element"); return false;}
-+ if(i != 18) { osilerror_wrapper( ch,osillineno," problem with
<base64BinaryData> element"); return NULL;}
- int b64len = b64textend - b64textstart;
- b64string = new char[ b64len + 1];
- for(ki = 0; ki < b64len; ki++) b64string[ki] = b64textstart[ ki];
-@@ -8284,7 +8284,7 @@ char *parseBase64(const char **p, int *d
- // burn the white space
- for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
- // better have an > sign or not valid
-- if(*ch != '>' ) { osilerror_wrapper(
ch,osillineno,"</base64BinaryData> element does not have a proper closing
>"); return false;}
-+ if(*ch != '>' ) { osilerror_wrapper(
ch,osillineno,"</base64BinaryData> element does not have a proper closing
>"); return NULL;}
- ch++;
- for( ; ISWHITESPACE( *ch) || isnewline( *ch, osillineno); ch++ ) ;
- *p = ch;
diff --git a/coin-or-OS.spec b/coin-or-OS.spec
index 62a6da6..cbc3903 100644
--- a/coin-or-OS.spec
+++ b/coin-or-OS.spec
@@ -5,9 +5,9 @@
Name: coin-or-%{module}
Summary: Optimization Services
-Version: 2.10.1
-Release: 19%{?dist}
-License: EPL
+Version: 2.10.2
+Release: 1%{?dist}
+License: EPL-1.0
URL:
http://projects.coin-or.org/%{module}
Source0:
http://www.coin-or.org/download/pkgsource/%{module}/%{module}-%{version}.tgz
BuildRequires: atlas-devel
@@ -50,7 +50,7 @@ BuildRequires: openmpi-devel
BuildRequires: scalapack-openmpi-devel
BuildRequires: openssh-clients
%endif
-BuildRequires: pkgconfig
+BuildRequires: pkgconf-pkg-config
BuildRequires: readline-devel
BuildRequires: zlib-devel
@@ -63,9 +63,6 @@ Patch1: %{name}-svnversion.patch
# Correct build when regenerating parsers
Patch2: %{name}-flex-bison.patch
-# Return NULL not false from function returing a pointer
-Patch3: %{name}-bool-null.patch
-
%description
The objective of Optimization Services (OS) is to provide a set of standards
for representing optimization instances, results, solver options, and
@@ -76,7 +73,7 @@
http://www.optimizationservices.org/ for more information.
%package devel
Summary: Development files for %{name}
-Requires: coin-or-CoinUtils-devel
+Requires: coin-or-CoinUtils-devel%{?_isa}
Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel
@@ -111,46 +108,35 @@ make -j1 all doxydoc
%install
%make_install
rm -f %{buildroot}%{_libdir}/*.la
-rm -f %{buildroot}%{_docdir}/%{name}/LICENSE
-cp -a doxydoc/html %{buildroot}%{_docdir}/%{name}
+rm -rf %{buildroot}%{_docdir}/%{name}
-# Test 12: Bonmin solver on bonminEx1.osil
-# fails on fedora > 25 arch armv7hl
-%if %{?fedora} > 25
-%check
-%if %{with_mpi}
-%_openmpi_load
-%endif
-%ifnarch armv7hl
-LD_LIBRARY_PATH=%{buildroot}%{_libdir} make test
-%endif
-%else
%check
%if %{with_mpi}
%_openmpi_load
%endif
LD_LIBRARY_PATH=%{buildroot}%{_libdir} make test
-%endif
%ldconfig_scriptlets
%files
%license LICENSE
-%{_docdir}/%{name}/
-%exclude %{_docdir}/%{name}/html
+%doc README AUTHORS
%{_bindir}/OSAmplClient
%{_bindir}/OSSolverService
%{_libdir}/*.so.*
-%files devel
+%files devel
%{_includedir}/coin/*
%{_libdir}/*.so
%{_libdir}/pkgconfig/*
-%files doc
-%{_docdir}/%{name}/html/
+%files doc
+%doc doxydoc/html
%changelog
+* Tue Apr 09 2019 Antonio Trande <sagitter(a)fedoraproject.org> - 2.10.2-1
+- Release 2.10.2
+
* Thu Jan 31 2019 Fedora Release Engineering <releng(a)fedoraproject.org> -
2.10.1-19
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
diff --git a/sources b/sources
index 96a5eec..214e85e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (OS-2.10.1.tgz) =
8778543a180b28f2b6f69e31525dd424003ceec3bf6150066a33598964cdda97a804261462a89ef699b93a599e52bb8a0f8717b0c050782ba1296ad2376fe391
+SHA512 (OS-2.10.2.tgz) =
ccd316a326d53870b7ab78188408656210b774076fc93e1c8b8d41dd071df5310c144f07d138026120943c698115339f0633063521591ebd1b1fd739d4197444