Hello community,

here is the log from the commit of package calamares for openSUSE:Factory 
checked in at 2017-10-23 16:53:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/calamares (Old)
 and      /work/SRC/openSUSE:Factory/.calamares.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "calamares"

Mon Oct 23 16:53:28 2017 rev:2 rq:535909 version:3.1.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/calamares/calamares.changes      2017-10-13 
14:20:24.344837003 +0200
+++ /work/SRC/openSUSE:Factory/.calamares.new/calamares.changes 2017-10-23 
16:53:49.587183516 +0200
@@ -1,0 +2,7 @@
+Mon Oct 23 07:45:22 UTC 2017 - [email protected]
+
+- Update to Calamares 3.1.6:
+  - fixes two regressions introduced in 3.1.5
+  - improving timezone selection in northern locations.
+
+-------------------------------------------------------------------

Old:
----
  calamares-3.1.5.tar.gz

New:
----
  calamares-3.1.6.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ calamares.spec ++++++
--- /var/tmp/diff_new_pack.EKyGTc/_old  2017-10-23 16:53:50.995117606 +0200
+++ /var/tmp/diff_new_pack.EKyGTc/_new  2017-10-23 16:53:50.999117420 +0200
@@ -16,9 +16,10 @@
 
 %define _sover  3
 Name:           calamares
-Version:        3.1.5
+Version:        3.1.6
 Release:        0
 Summary:        Installer from a live CD/DVD/USB to disk
+Group:          System/Management
 License:        GPL-3.0
 Url:            http://calamares.io/
 Source0:        
https://github.com/%{name}/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.gz
@@ -119,6 +120,7 @@
 
 %package        webview
 Summary:        Calamares webview module
+Group:          System/Management
 Requires:       %{name}%{?_isa} = %{version}
 
 %description    webview
@@ -127,7 +129,7 @@
 
 %package branding-upstream
 Summary:        Branding for %{name}
-Group:          System/X11/Utilities
+Group:          System/Management
 # This theme is nor pure upstream, nor specific to openSUSE,
 # but is close to upstream
 Supplements:    packageand(%name:branding-upstream)

++++++ calamares-3.1.5.tar.gz -> calamares-3.1.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/calamares-3.1.5/CMakeLists.txt 
new/calamares-3.1.6/CMakeLists.txt
--- old/calamares-3.1.5/CMakeLists.txt  2017-09-25 17:13:33.000000000 +0200
+++ new/calamares-3.1.6/CMakeLists.txt  2017-10-13 21:45:37.000000000 +0200
@@ -50,7 +50,7 @@
 
     # Clang warnings: doing *everything* is counter-productive, since it warns
     # about things which we can't fix (e.g. C++98 incompatibilities, but
-    # Calaares is C++14).
+    # Calamares is C++14).
     foreach( CLANG_WARNINGS
         -Weverything
         -Wno-c++98-compat
@@ -88,6 +88,8 @@
     set( SUPPRESS_BOOST_WARNINGS "" )
 endif()
 
+# Use mark_thirdparty_code() to reduce warnings from the compiler
+# on code that we're not going to fix. Call this with a list of files.
 macro(mark_thirdparty_code)
     set_source_files_properties( ${ARGV}
         PROPERTIES
@@ -164,7 +166,7 @@
 ### Bump version here
 set( CALAMARES_VERSION_MAJOR 3 )
 set( CALAMARES_VERSION_MINOR 1 )
-set( CALAMARES_VERSION_PATCH 5 )
+set( CALAMARES_VERSION_PATCH 6 )
 set( CALAMARES_VERSION_RC 0 )
 
 set( CALAMARES_VERSION 
${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH}
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/calamares-3.1.5/CMakeModules/CalamaresAddModuleSubdirectory.cmake 
new/calamares-3.1.6/CMakeModules/CalamaresAddModuleSubdirectory.cmake
--- old/calamares-3.1.5/CMakeModules/CalamaresAddModuleSubdirectory.cmake       
2017-09-25 17:13:33.000000000 +0200
+++ new/calamares-3.1.6/CMakeModules/CalamaresAddModuleSubdirectory.cmake       
2017-10-13 21:45:37.000000000 +0200
@@ -6,9 +6,12 @@
 function( calamares_add_module_subdirectory )
     set( SUBDIRECTORY ${ARGV0} )
 
+    set( MODULE_CONFIG_FILES "" )
+
     # If this subdirectory has a CMakeLists.txt, we add_subdirectory it...
     if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" )
         add_subdirectory( ${SUBDIRECTORY} )
+        file( GLOB MODULE_CONFIG_FILES RELATIVE 
${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY} "${SUBDIRECTORY}/*.conf" )
     # ...otherwise, we look for a module.desc.
     elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/module.desc" )
         set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules )
@@ -39,7 +42,7 @@
 #            message( "   ${Green}FILES:${ColorReset} ${MODULE_FILES}" )
             message( "   ${Green}MODULE_DESTINATION:${ColorReset} 
${MODULE_DESTINATION}" )
             if( MODULE_CONFIG_FILES )
-                if (INSTALL_CONFIG)
+                if ( INSTALL_CONFIG )
                     message( "   ${Green}CONFIGURATION_FILES:${ColorReset} 
${MODULE_CONFIG_FILES} => ${MODULE_DATA_DESTINATION}" )
                 else()
                     message( "   ${Green}CONFIGURATION_FILES:${ColorReset} 
${MODULE_CONFIG_FILES} => [Skipping installation]" )
@@ -56,9 +59,23 @@
                 RENAME calamares-${SUBDIRECTORY}.mo
             )
         endif()
-
     else()
         message( "-- ${BoldYellow}Warning:${ColorReset} tried to add module 
subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no CMakeLists.txt 
or module.desc." )
         message( "" )
     endif()
+
+    # Check any config files for basic correctness
+    if ( BUILD_TESTING AND MODULE_CONFIG_FILES )
+        set( _count 0 )
+        foreach( _config_file ${MODULE_CONFIG_FILES} )
+            set( _count_str "-${_count}" )
+            if ( _count EQUAL 0 )
+                set( _count_str "" )
+            endif()
+            add_test(
+                NAME config-${SUBDIRECTORY}${_count_str}
+                COMMAND test_conf 
${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${_config_file} )
+            math( EXPR _count "${_count} + 1" )
+        endforeach()
+    endif()
 endfunction()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/calamares-3.1.5/src/modules/CMakeLists.txt 
new/calamares-3.1.6/src/modules/CMakeLists.txt
--- old/calamares-3.1.5/src/modules/CMakeLists.txt      2017-09-25 
17:13:33.000000000 +0200
+++ new/calamares-3.1.6/src/modules/CMakeLists.txt      2017-10-13 
21:45:37.000000000 +0200
@@ -1,5 +1,10 @@
 include( CMakeColors )
 
+if( BUILD_TESTING )
+    add_executable( test_conf test_conf.cpp )
+    target_link_libraries( test_conf ${YAMLCPP_LIBRARY} )
+endif()
+
 file( GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*" )
 string( REPLACE " " ";" SKIP_LIST "${SKIP_MODULES}" )
 foreach( SUBDIRECTORY ${SUBDIRECTORIES} )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/calamares-3.1.5/src/modules/finished/finished.conf 
new/calamares-3.1.6/src/modules/finished/finished.conf
--- old/calamares-3.1.5/src/modules/finished/finished.conf      2017-09-25 
17:13:33.000000000 +0200
+++ new/calamares-3.1.6/src/modules/finished/finished.conf      2017-10-13 
21:45:37.000000000 +0200
@@ -1,5 +1,5 @@
-Configuration for the "finished" page, which is usually shown only at
-the end of the installation (successful or not).
+# Configuration for the "finished" page, which is usually shown only at
+# the end of the installation (successful or not).
 ---
 # The finished page can hold a "restart system now" checkbox.
 # If this is false, no checkbox is show and the system is not restarted
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/calamares-3.1.5/src/modules/initramfscfg/main.py 
new/calamares-3.1.6/src/modules/initramfscfg/main.py
--- old/calamares-3.1.5/src/modules/initramfscfg/main.py        2017-09-25 
17:13:33.000000000 +0200
+++ new/calamares-3.1.6/src/modules/initramfscfg/main.py        2017-10-13 
21:45:37.000000000 +0200
@@ -24,6 +24,8 @@
 #   along with Calamares. If not, see <http://www.gnu.org/licenses/>.
 
 import libcalamares
+
+import inspect
 import os
 import shutil
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/calamares-3.1.5/src/modules/locale/timezonewidget/timezonewidget.cpp 
new/calamares-3.1.6/src/modules/locale/timezonewidget/timezonewidget.cpp
--- old/calamares-3.1.5/src/modules/locale/timezonewidget/timezonewidget.cpp    
2017-09-25 17:13:33.000000000 +0200
+++ new/calamares-3.1.6/src/modules/locale/timezonewidget/timezonewidget.cpp    
2017-10-13 21:45:37.000000000 +0200
@@ -1,6 +1,7 @@
 /* === This file is part of Calamares - <http://github.com/calamares> ===
  *
  *   Copyright 2014-2015, Teo Mrnjavac <[email protected]>
+ *   Copyright 2017, Adriaan de Groot <[email protected]>
  *
  *   Originally from the Manjaro Installation Framework
  *   by Roland Singer <[email protected]>
@@ -20,61 +21,70 @@
  *   along with Calamares. If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <cmath>
+
 #include "timezonewidget.h"
 
-TimeZoneWidget::TimeZoneWidget(QWidget* parent) :
-    QWidget(parent)
+constexpr double MATH_PI = 3.14159265;
+
+TimeZoneWidget::TimeZoneWidget( QWidget* parent ) :
+    QWidget( parent )
 {
-    setMouseTracking(false);
-    setCursor(Qt::PointingHandCursor);
+    setMouseTracking( false );
+    setCursor( Qt::PointingHandCursor );
 
     // Font
-    font.setPointSize(12);
-    font.setBold(false);
+    font.setPointSize( 12 );
+    font.setBold( false );
 
     // Images
-    background = QImage(":/images/bg.png").scaled(X_SIZE, Y_SIZE, 
Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
-    pin = QImage(":/images/pin.png");
+    background = QImage( ":/images/bg.png" ).scaled( X_SIZE, Y_SIZE, 
Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
+    pin = QImage( ":/images/pin.png" );
 
     // Set size
-    setMinimumSize(background.size());
-    setMaximumSize(background.size());
+    setMinimumSize( background.size() );
+    setMaximumSize( background.size() );
 
     // Zone images
-    QStringList zones = QString(ZONES).split(" ", QString::SkipEmptyParts);
-    for (int i = 0; i < zones.size(); ++i)
-        timeZoneImages.append(QImage(":/images/timezone_" + zones.at(i) + 
".png").scaled(X_SIZE, Y_SIZE, Qt::IgnoreAspectRatio, 
Qt::SmoothTransformation));
+    QStringList zones = QString( ZONES ).split( " ", QString::SkipEmptyParts );
+    for ( int i = 0; i < zones.size(); ++i )
+        timeZoneImages.append( QImage( ":/images/timezone_" + zones.at( i ) + 
".png" ).scaled( X_SIZE, Y_SIZE, Qt::IgnoreAspectRatio, 
Qt::SmoothTransformation ) );
 }
 
 
-void TimeZoneWidget::setCurrentLocation(QString region, QString zone) {
+void TimeZoneWidget::setCurrentLocation( QString region, QString zone )
+{
     QHash<QString, QList<LocaleGlobal::Location> > hash = 
LocaleGlobal::getLocations();
 
-    if (!hash.contains(region))
+    if ( !hash.contains( region ) )
         return;
 
-    QList<LocaleGlobal::Location> locations = hash.value(region);
-    for (int i = 0; i < locations.size(); ++i) {
-        if (locations.at(i).zone == zone) {
-            setCurrentLocation(locations.at(i));
+    QList<LocaleGlobal::Location> locations = hash.value( region );
+    for ( int i = 0; i < locations.size(); ++i )
+    {
+        if ( locations.at( i ).zone == zone )
+        {
+            setCurrentLocation( locations.at( i ) );
             break;
         }
     }
 }
 
 
-
-void TimeZoneWidget::setCurrentLocation(LocaleGlobal::Location location) {
+void TimeZoneWidget::setCurrentLocation( LocaleGlobal::Location location )
+{
     currentLocation = location;
 
     // Set zone
-    QPoint pos = getLocationPosition(currentLocation.longitude, 
currentLocation.latitude);
+    QPoint pos = getLocationPosition( currentLocation.longitude, 
currentLocation.latitude );
 
-    for (int i = 0; i < timeZoneImages.size(); ++i) {
+    for ( int i = 0; i < timeZoneImages.size(); ++i )
+    {
         QImage zone = timeZoneImages[i];
 
         // If not transparent set as current
-        if (zone.pixel(pos) != RGB_TRANSPARENT) {
+        if ( zone.pixel( pos ) != RGB_TRANSPARENT )
+        {
             currentZoneImage = zone;
             break;
         }
@@ -91,74 +101,87 @@
 //###
 
 
-QPoint TimeZoneWidget::getLocationPosition(double longitude, double latitude) {
+QPoint TimeZoneWidget::getLocationPosition( double longitude, double latitude )
+{
     const int width = this->width();
     const int height = this->height();
 
-    double x = (width / 2.0 + (width / 2.0) * longitude / 180.0) + 
MAP_X_OFFSET * width;
-    double y = (height / 2.0 - (height / 2.0) * latitude / 90.0) + 
MAP_Y_OFFSET * height;
+    double x = ( width / 2.0 + ( width / 2.0 ) * longitude / 180.0 ) + 
MAP_X_OFFSET * width;
+    double y = ( height / 2.0 - ( height / 2.0 ) * latitude / 90.0 ) + 
MAP_Y_OFFSET * height;
+
+    //Far north, the MAP_Y_OFFSET no longer holds, cancel the Y offset; it's 
noticeable
+    // from 62 degrees north, so scale those 28 degrees as if the world is 
flat south
+    // of there, and we have a funny "rounded" top of the world. In practice 
the locations
+    // of the different cities / regions looks ok -- at least Thule ends up in 
the right
+    // country, and Inuvik isn't in the ocean.
+    if ( latitude > 62.0 )
+        y -= sin( MATH_PI * ( latitude - 62.0 ) / 56.0 ) * MAP_Y_OFFSET * 
height;
+    // Antarctica isn't shown on the map, but you could try clicking there
+    if ( latitude < -60 )
+        y = height - 1;
 
-    if (x < 0)
+    if ( x < 0 )
         x = width+x;
-    if (x >= width)
+    if ( x >= width )
         x -= width;
-    if (y < 0)
+    if ( y < 0 )
         y = height+y;
-    if (y >= height)
+    if ( y >= height )
         y -= height;
 
-    return QPoint((int)x, (int)y);
+    return QPoint( ( int )x, ( int )y );
 }
 
 
-
-void TimeZoneWidget::paintEvent(QPaintEvent*) {
+void TimeZoneWidget::paintEvent( QPaintEvent* )
+{
     const int width = this->width();
     const int height = this->height();
-    QFontMetrics fontMetrics(font);
-    QPainter painter(this);
+    QFontMetrics fontMetrics( font );
+    QPainter painter( this );
 
-    painter.setRenderHint(QPainter::Antialiasing);
-    painter.setFont(font);
+    painter.setRenderHint( QPainter::Antialiasing );
+    painter.setFont( font );
 
     // Draw background
-    painter.drawImage(0, 0, background);
+    painter.drawImage( 0, 0, background );
 
     // Draw zone image
-    painter.drawImage(0, 0, currentZoneImage);
+    painter.drawImage( 0, 0, currentZoneImage );
 
     // Draw pin
-    QPoint point = getLocationPosition(currentLocation.longitude, 
currentLocation.latitude);
-    painter.drawImage(point.x() - pin.width()/2, point.y() - pin.height()/2, 
pin);
+    QPoint point = getLocationPosition( currentLocation.longitude, 
currentLocation.latitude );
+    painter.drawImage( point.x() - pin.width()/2, point.y() - pin.height()/2, 
pin );
 
     // Draw text and box
-    const int textWidth = 
fontMetrics.width(LocaleGlobal::Location::pretty(currentLocation.zone));
+    const int textWidth = fontMetrics.width( LocaleGlobal::Location::pretty( 
currentLocation.zone ) );
     const int textHeight = fontMetrics.height();
 
-    QRect rect = QRect(point.x() - textWidth/2 - 5, point.y() - textHeight - 
8, textWidth + 10, textHeight - 2);
+    QRect rect = QRect( point.x() - textWidth/2 - 5, point.y() - textHeight - 
8, textWidth + 10, textHeight - 2 );
 
-    if (rect.x() <= 5)
-        rect.moveLeft(5);
-    if (rect.right() >= width-5)
-        rect.moveRight(width - 5);
-    if (rect.y() <= 5)
-        rect.moveTop(5);
-    if (rect.y() >= height-5)
-        rect.moveBottom(height-5);
-
-    painter.setPen(QPen()); // no pen
-    painter.setBrush(QColor(40, 40, 40));
-    painter.drawRoundedRect(rect, 3, 3);
-    painter.setPen(Qt::white);
-    painter.drawText(rect.x() + 5, rect.bottom() - 4, 
LocaleGlobal::Location::pretty(currentLocation.zone));
+    if ( rect.x() <= 5 )
+        rect.moveLeft( 5 );
+    if ( rect.right() >= width-5 )
+        rect.moveRight( width - 5 );
+    if ( rect.y() <= 5 )
+        rect.moveTop( 5 );
+    if ( rect.y() >= height-5 )
+        rect.moveBottom( height-5 );
+
+    painter.setPen( QPen() ); // no pen
+    painter.setBrush( QColor( 40, 40, 40 ) );
+    painter.drawRoundedRect( rect, 3, 3 );
+    painter.setPen( Qt::white );
+    painter.drawText( rect.x() + 5, rect.bottom() - 4, 
LocaleGlobal::Location::pretty( currentLocation.zone ) );
 
     painter.end();
 }
 
 
 
-void TimeZoneWidget::mousePressEvent(QMouseEvent* event) {
-    if (event->button() != Qt::LeftButton)
+void TimeZoneWidget::mousePressEvent( QMouseEvent* event )
+{
+    if ( event->button() != Qt::LeftButton )
         return;
 
     // Set nearest location
@@ -167,14 +190,17 @@
     QHash<QString, QList<LocaleGlobal::Location> > hash = 
LocaleGlobal::getLocations();
     QHash<QString, QList<LocaleGlobal::Location> >::iterator iter = 
hash.begin();
 
-    while (iter != hash.end()) {
+    while ( iter != hash.end() )
+    {
         QList<LocaleGlobal::Location> locations = iter.value();
 
-        for (int i = 0; i < locations.size(); ++i) {
+        for ( int i = 0; i < locations.size(); ++i )
+        {
             LocaleGlobal::Location loc = locations[i];
-            QPoint locPos = getLocationPosition(loc.longitude, loc.latitude);
+            QPoint locPos = getLocationPosition( loc.longitude, loc.latitude );
 
-            if ((abs(mX - locPos.x()) + abs(mY - locPos.y())  <  abs(mX - nX) 
+ abs(mY - nY))) {
+            if ( ( abs( mX - locPos.x() ) + abs( mY - locPos.y() )  <  abs( mX 
- nX ) + abs( mY - nY ) ) )
+            {
                 currentLocation = loc;
                 nX = locPos.x();
                 nY = locPos.y();
@@ -185,8 +211,8 @@
     }
 
     // Set zone image and repaint widget
-    setCurrentLocation(currentLocation);
+    setCurrentLocation( currentLocation );
 
     // Emit signal
-    emit locationChanged(currentLocation);
+    emit locationChanged( currentLocation );
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/calamares-3.1.5/src/modules/locale/timezonewidget/timezonewidget.h 
new/calamares-3.1.6/src/modules/locale/timezonewidget/timezonewidget.h
--- old/calamares-3.1.5/src/modules/locale/timezonewidget/timezonewidget.h      
2017-09-25 17:13:33.000000000 +0200
+++ new/calamares-3.1.6/src/modules/locale/timezonewidget/timezonewidget.h      
2017-10-13 21:45:37.000000000 +0200
@@ -48,14 +48,17 @@
 {
     Q_OBJECT
 public:
-    explicit TimeZoneWidget(QWidget* parent = 0);
+    explicit TimeZoneWidget( QWidget* parent = 0 );
 
-    LocaleGlobal::Location getCurrentLocation() { return currentLocation; }
-    void setCurrentLocation(QString region, QString zone);
-    void setCurrentLocation(LocaleGlobal::Location location);
+    LocaleGlobal::Location getCurrentLocation()
+    {
+        return currentLocation;
+    }
+    void setCurrentLocation( QString region, QString zone );
+    void setCurrentLocation( LocaleGlobal::Location location );
 
 signals:
-    void locationChanged(LocaleGlobal::Location location);
+    void locationChanged( LocaleGlobal::Location location );
 
 private:
     QFont font;
@@ -63,10 +66,14 @@
     QList<QImage> timeZoneImages;
     LocaleGlobal::Location currentLocation;
 
-    QPoint getLocationPosition(double longitude, double latitude);
+    QPoint getLocationPosition( const LocaleGlobal::Location& l )
+    {
+        return getLocationPosition( l.longitude, l.latitude );
+    }
+    QPoint getLocationPosition( double longitude, double latitude );
 
-    void paintEvent(QPaintEvent* event);
-    void mousePressEvent(QMouseEvent* event);
+    void paintEvent( QPaintEvent* event );
+    void mousePressEvent( QMouseEvent* event );
 };
 
 #endif // TIMEZONEWIDGET_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/calamares-3.1.5/src/modules/test_conf.cpp 
new/calamares-3.1.6/src/modules/test_conf.cpp
--- old/calamares-3.1.5/src/modules/test_conf.cpp       1970-01-01 
01:00:00.000000000 +0100
+++ new/calamares-3.1.6/src/modules/test_conf.cpp       2017-10-13 
21:45:37.000000000 +0200
@@ -0,0 +1,66 @@
+/* === This file is part of Calamares - <http://github.com/calamares> ===
+ *
+ *   Copyright 2017, Adriaan de Groot <[email protected]>
+ *
+ *   Calamares is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   Calamares is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with Calamares. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * This is a test-application that just checks the YAML config-file
+ * shipped with each module for correctness -- well, for parseability.
+ */
+
+#include <iostream>
+#include <yaml-cpp/yaml.h>
+
+using std::cerr;
+
+int main(int argc, char** argv)
+{
+    if (argc != 2)
+    {
+        cerr << "Usage: test_conf <file.conf>\n";
+        return 1;
+    }
+
+    try
+    {
+        YAML::Node doc = YAML::LoadFile( argv[1] );
+
+        if ( doc.IsNull() )
+        {
+            // Special case: empty config files are valid,
+            // but aren't a map. For the example configs,
+            // this is still an error.
+            cerr << "WARNING:" << argv[1] << '\n';
+            cerr << "WARNING: empty YAML\n";
+            return 1;
+        }
+
+        if ( !doc.IsMap() )
+        {
+            cerr << "WARNING:" << argv[1] << '\n';
+            cerr << "WARNING: not-a-YAML-map\n";
+            return 1;
+        }
+    }
+    catch ( YAML::Exception& e )
+    {
+        cerr << "WARNING:" << argv[1]  << '\n';
+        cerr << "WARNING: YAML parser error " << e.what() << '\n';
+        return 1;
+    }
+
+    return 0;
+}


Reply via email to