parent
bda4e5682b
commit
70eeb2d1a0
@ -1,95 +0,0 @@
|
||||
Description: Add option to obey XDG dirs
|
||||
This is patch 1/2 adding XDG directory support.
|
||||
Author: Adriaan de Groot <groot@kde.org>
|
||||
Origin: upstream
|
||||
Bug: https://github.com/calamares/calamares/issues/941
|
||||
Applied-Upstream: commit:c489320
|
||||
Last-Update: 2018-11-15
|
||||
--- a/src/calamares/main.cpp
|
||||
+++ b/src/calamares/main.cpp
|
||||
@@ -44,6 +44,8 @@ handle_args( CalamaresApplication& a )
|
||||
"Verbose output for debugging purposes (0-8).", "level" );
|
||||
QCommandLineOption configOption( QStringList{ "c", "config"},
|
||||
"Configuration directory to use, for testing purposes.", "config" );
|
||||
+ QCommandLineOption xdgOption( QStringList{"X", "xdg-config"},
|
||||
+ "Use XDG_{CONFIG,DATA}_DIRS as well." );
|
||||
|
||||
QCommandLineParser parser;
|
||||
parser.setApplicationDescription( "Distribution-independent installer framework" );
|
||||
@@ -53,6 +55,7 @@ handle_args( CalamaresApplication& a )
|
||||
parser.addOption( debugOption );
|
||||
parser.addOption( debugLevelOption );
|
||||
parser.addOption( configOption );
|
||||
+ parser.addOption( xdgOption );
|
||||
|
||||
parser.process( a );
|
||||
|
||||
@@ -72,6 +75,8 @@ handle_args( CalamaresApplication& a )
|
||||
}
|
||||
if ( parser.isSet( configOption ) )
|
||||
CalamaresUtils::setAppDataDir( QDir( parser.value( configOption ) ) );
|
||||
+ if ( parser.isSet( xdgOption ) )
|
||||
+ CalamaresUtils::setXdgDirs();
|
||||
}
|
||||
|
||||
int
|
||||
--- a/src/libcalamares/utils/CalamaresUtils.cpp
|
||||
+++ b/src/libcalamares/utils/CalamaresUtils.cpp
|
||||
@@ -49,6 +49,9 @@ static QTranslator* s_brandingTranslator
|
||||
static QTranslator* s_translator = nullptr;
|
||||
static QString s_translatorLocaleName;
|
||||
|
||||
+static bool s_haveExtraDirs = false;
|
||||
+static QStringList s_extraConfigDirs;
|
||||
+static QStringList s_extraDataDirs;
|
||||
|
||||
static bool
|
||||
isWritableDir( const QDir& dir )
|
||||
@@ -94,6 +97,31 @@ setAppDataDir( const QDir& dir )
|
||||
s_isAppDataDirOverridden = true;
|
||||
}
|
||||
|
||||
+void
|
||||
+setXdgDirs()
|
||||
+{
|
||||
+ s_haveExtraDirs = true;
|
||||
+ s_extraConfigDirs.append( QString( qgetenv( "XDG_CONFIG_DIRS" ) ).split(':') );
|
||||
+ s_extraDataDirs.append( QString( qgetenv( "XDG_DATA_DIRS" ) ).split(':') );
|
||||
+}
|
||||
+
|
||||
+QStringList
|
||||
+extraConfigDirs()
|
||||
+{
|
||||
+ if ( s_haveExtraDirs )
|
||||
+ return s_extraConfigDirs;
|
||||
+ return QStringList();
|
||||
+}
|
||||
+
|
||||
+QStringList
|
||||
+extraDataDirs()
|
||||
+{
|
||||
+ if ( s_haveExtraDirs )
|
||||
+ return s_extraDataDirs;
|
||||
+ return QStringList();
|
||||
+}
|
||||
+
|
||||
+
|
||||
|
||||
bool
|
||||
isAppDataDirOverridden()
|
||||
--- a/src/libcalamares/utils/CalamaresUtils.h
|
||||
+++ b/src/libcalamares/utils/CalamaresUtils.h
|
||||
@@ -79,6 +79,13 @@ namespace CalamaresUtils
|
||||
|
||||
DLLEXPORT void setQmlModulesDir( const QDir& dir );
|
||||
|
||||
+ /** @brief Setup extra config and data dirs from the XDG variables.
|
||||
+ *
|
||||
+ */
|
||||
+ DLLEXPORT void setXdgDirs();
|
||||
+ DLLEXPORT QStringList extraConfigDirs();
|
||||
+ DLLEXPORT QStringList extraDataDirs();
|
||||
+
|
||||
/**
|
||||
* @brief removeDiacritics replaces letters with diacritics and ligatures with
|
||||
* alternative forms and digraphs.
|
@ -1,110 +0,0 @@
|
||||
Description: Use XDG_{DATA,CONFIG}_DIRS as appropriate
|
||||
This is patch 2/2 adding XDG directory support.
|
||||
Author: Adriaan de Groot <groot@kde.org>
|
||||
Origin: upstream
|
||||
Bug: https://github.com/calamares/calamares/issues/941
|
||||
Applied-Upstream: commit:3b8d283
|
||||
Last-Update: 2018-11-15
|
||||
--- a/src/calamares/CalamaresApplication.cpp
|
||||
+++ b/src/calamares/CalamaresApplication.cpp
|
||||
@@ -145,6 +145,9 @@ qmlDirCandidates( bool assumeBuilddir )
|
||||
{
|
||||
if ( assumeBuilddir )
|
||||
qmlDirs << QDir::current().absoluteFilePath( "src/qml" ); // In build-dir
|
||||
+ if ( CalamaresUtils::haveExtraDirs() )
|
||||
+ for ( auto s : CalamaresUtils::extraDataDirs() )
|
||||
+ qmlDirs << ( s + QML );
|
||||
qmlDirs << CalamaresUtils::appDataDir().absoluteFilePath( QML );
|
||||
}
|
||||
|
||||
@@ -164,6 +167,9 @@ settingsFileCandidates( bool assumeBuild
|
||||
{
|
||||
if ( assumeBuilddir )
|
||||
settingsPaths << QDir::current().absoluteFilePath( settings );
|
||||
+ if ( CalamaresUtils::haveExtraDirs() )
|
||||
+ for ( auto s : CalamaresUtils::extraConfigDirs() )
|
||||
+ settingsPaths << ( s + settings );
|
||||
settingsPaths << CMAKE_INSTALL_FULL_SYSCONFDIR "/calamares/settings.conf"; // String concat
|
||||
settingsPaths << CalamaresUtils::appDataDir().absoluteFilePath( settings );
|
||||
}
|
||||
@@ -182,6 +188,9 @@ brandingFileCandidates( bool assumeBuild
|
||||
{
|
||||
if ( assumeBuilddir )
|
||||
brandingPaths << ( QDir::currentPath() + QStringLiteral( "/src/" ) + brandingFilename );
|
||||
+ if ( CalamaresUtils::haveExtraDirs() )
|
||||
+ for ( auto s : CalamaresUtils::extraDataDirs() )
|
||||
+ brandingPaths << ( s + brandingFilename );
|
||||
brandingPaths << QDir( CMAKE_INSTALL_FULL_SYSCONFDIR "/calamares/" ).absoluteFilePath( brandingFilename );
|
||||
brandingPaths << CalamaresUtils::appDataDir().absoluteFilePath( brandingFilename);
|
||||
}
|
||||
--- a/src/libcalamares/utils/CalamaresUtils.cpp
|
||||
+++ b/src/libcalamares/utils/CalamaresUtils.cpp
|
||||
@@ -97,12 +97,23 @@ setAppDataDir( const QDir& dir )
|
||||
s_isAppDataDirOverridden = true;
|
||||
}
|
||||
|
||||
+/* Split $ENV{@p name} on :, append to @p l, making sure each ends in / */
|
||||
+static void
|
||||
+mungeEnvironment( QStringList& l, const char *name )
|
||||
+{
|
||||
+ for ( auto s : QString( qgetenv( name ) ).split(':') )
|
||||
+ if ( s.endsWith( '/' ) )
|
||||
+ l << s;
|
||||
+ else
|
||||
+ l << ( s + '/' );
|
||||
+}
|
||||
+
|
||||
void
|
||||
setXdgDirs()
|
||||
{
|
||||
s_haveExtraDirs = true;
|
||||
- s_extraConfigDirs.append( QString( qgetenv( "XDG_CONFIG_DIRS" ) ).split(':') );
|
||||
- s_extraDataDirs.append( QString( qgetenv( "XDG_DATA_DIRS" ) ).split(':') );
|
||||
+ mungeEnvironment( s_extraConfigDirs, "XDG_CONFIG_DIRS" );
|
||||
+ mungeEnvironment( s_extraDataDirs, "XDG_DATA_DIRS" );
|
||||
}
|
||||
|
||||
QStringList
|
||||
@@ -121,7 +132,11 @@ extraDataDirs()
|
||||
return QStringList();
|
||||
}
|
||||
|
||||
-
|
||||
+bool
|
||||
+haveExtraDirs()
|
||||
+{
|
||||
+ return s_haveExtraDirs && ( !s_extraConfigDirs.isEmpty() || !s_extraDataDirs.isEmpty() );
|
||||
+}
|
||||
|
||||
bool
|
||||
isAppDataDirOverridden()
|
||||
--- a/src/libcalamares/utils/CalamaresUtils.h
|
||||
+++ b/src/libcalamares/utils/CalamaresUtils.h
|
||||
@@ -80,10 +80,13 @@ namespace CalamaresUtils
|
||||
DLLEXPORT void setQmlModulesDir( const QDir& dir );
|
||||
|
||||
/** @brief Setup extra config and data dirs from the XDG variables.
|
||||
- *
|
||||
*/
|
||||
DLLEXPORT void setXdgDirs();
|
||||
+ /** @brief Are any extra directories configured? */
|
||||
+ DLLEXPORT bool haveExtraDirs();
|
||||
+ /** @brief XDG_CONFIG_DIRS, each guaranteed to end with / */
|
||||
DLLEXPORT QStringList extraConfigDirs();
|
||||
+ /** @brief XDG_DATA_DIRS, each guaranteed to end with / */
|
||||
DLLEXPORT QStringList extraDataDirs();
|
||||
|
||||
/**
|
||||
--- a/src/libcalamaresui/modulesystem/Module.cpp
|
||||
+++ b/src/libcalamaresui/modulesystem/Module.cpp
|
||||
@@ -148,6 +148,10 @@ moduleConfigurationCandidates( bool assu
|
||||
if ( assumeBuildDir )
|
||||
paths << QDir().absoluteFilePath(QString( "src/modules/%1/%2" ).arg( moduleName ).arg( configFileName ) );
|
||||
|
||||
+ if ( CalamaresUtils::haveExtraDirs() )
|
||||
+ for ( auto s : CalamaresUtils::extraConfigDirs() )
|
||||
+ paths << ( s + QString( "modules/%1" ).arg( configFileName ) );
|
||||
+
|
||||
paths << QString( "/etc/calamares/modules/%1" ).arg( configFileName );
|
||||
paths << CalamaresUtils::appDataDir().absoluteFilePath( QString( "modules/%1" ).arg( configFileName ) );
|
||||
}
|
Loading…
Reference in new issue