Merge branch 'improve-xdg'
This commit is contained in:
commit
652c0c22fe
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
#
|
#
|
||||||
# Copyright 2019 Adriaan de Groot <adridg@FreeBSD.org>
|
# Copyright 2019 Adriaan de Groot <groot@kde.org>
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions
|
# modification, are permitted provided that the following conditions
|
||||||
@ -56,7 +56,11 @@
|
|||||||
# The build process for AppImage proceeds in a directory build-AppImage
|
# The build process for AppImage proceeds in a directory build-AppImage
|
||||||
# that is created in the current directory.
|
# that is created in the current directory.
|
||||||
#
|
#
|
||||||
# TODO: Conda / Python support doesn't work yet.
|
# The resulting AppImage has XDG_* enabled, and appends the in-image
|
||||||
|
# directories to the current environment. You can set XDG_* in the
|
||||||
|
# current environment to use other configurations and data, e.g. the
|
||||||
|
# data in the current live environment. Or leave it unset, to try
|
||||||
|
# Calamares with only the configuration contained in the AppImage.
|
||||||
#
|
#
|
||||||
### END USAGE
|
### END USAGE
|
||||||
|
|
||||||
@ -207,10 +211,13 @@ mv "$IMAGE_DIR/usr/bin/calamares" "$IMAGE_DIR/usr/bin/calamares.bin"
|
|||||||
cat > "$IMAGE_DIR/usr/bin/calamares" <<"EOF"
|
cat > "$IMAGE_DIR/usr/bin/calamares" <<"EOF"
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
#
|
#
|
||||||
# Calamares proxy-script
|
# Calamares proxy-script. Runs Calamares with XDG support enabled,
|
||||||
export XDG_DATA_DIRS="$APPDIR/usr/share/calamares:"
|
# and in-image XDG dirs set up so that compiled-in configuration can be used.
|
||||||
export XDG_CONFIG_DIRS="$APPDIR/etc/calamares:$D/usr/share:"
|
test -n "${XDG_DATA_DIRS}" && XDG_DATA_DIRS="${XDG_DATA_DIRS}:"
|
||||||
export PYTHONPATH=$APPDIR/usr/lib:
|
test -n "${XDG_CONFIG_DIRS}" $$ XDG_CONFIG_DIRS="${XDG_CONFIG_DIRS}:"
|
||||||
|
export XDG_DATA_DIRS="${XDG_DATA_DIRS}${APPDIR}/usr/share/"
|
||||||
|
export XDG_CONFIG_DIRS="${XDG_CONFIG_DIRS}${APPDIR}/etc/:${APPDIR}/usr/share/"
|
||||||
|
export PYTHONPATH="${APPDIR}/usr/lib:"
|
||||||
cd "$APPDIR"
|
cd "$APPDIR"
|
||||||
exec "$APPDIR"/usr/bin/calamares.bin -X "$@"
|
exec "$APPDIR"/usr/bin/calamares.bin -X "$@"
|
||||||
EOF
|
EOF
|
||||||
|
@ -99,21 +99,32 @@ setAppDataDir( const QDir& dir )
|
|||||||
|
|
||||||
/* Split $ENV{@p name} on :, append to @p l, making sure each ends in / */
|
/* Split $ENV{@p name} on :, append to @p l, making sure each ends in / */
|
||||||
static void
|
static void
|
||||||
mungeEnvironment( QStringList& l, const char *name )
|
mungeEnvironment( QStringList& l, const char* name, const char* defaultDirs )
|
||||||
{
|
{
|
||||||
for ( auto s : QString( qgetenv( name ) ).split(':') )
|
static const QString calamaresSubdir = QStringLiteral( "calamares/" );
|
||||||
|
|
||||||
|
QStringList dirs = QString( qgetenv( name ) ).split( ':' );
|
||||||
|
if ( dirs.isEmpty() )
|
||||||
|
dirs = QString( defaultDirs ).split( ':' );
|
||||||
|
|
||||||
|
for ( auto s : dirs )
|
||||||
|
{
|
||||||
|
if ( s.isEmpty() )
|
||||||
|
continue;
|
||||||
if ( s.endsWith( '/' ) )
|
if ( s.endsWith( '/' ) )
|
||||||
l << s;
|
l << ( s + calamaresSubdir ) << s;
|
||||||
else
|
else
|
||||||
l << ( s + '/' );
|
l << ( s + '/' + calamaresSubdir ) << ( s + '/' );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
setXdgDirs()
|
setXdgDirs()
|
||||||
{
|
{
|
||||||
s_haveExtraDirs = true;
|
mungeEnvironment( s_extraConfigDirs, "XDG_CONFIG_DIRS", "/etc/xdg" );
|
||||||
mungeEnvironment( s_extraConfigDirs, "XDG_CONFIG_DIRS" );
|
mungeEnvironment( s_extraDataDirs, "XDG_DATA_DIRS", "/usr/local/share/:/usr/share/" );
|
||||||
mungeEnvironment( s_extraDataDirs, "XDG_DATA_DIRS" );
|
|
||||||
|
s_haveExtraDirs = !( s_extraConfigDirs.isEmpty() && s_extraDataDirs.isEmpty() );
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList
|
QStringList
|
||||||
|
Loading…
Reference in New Issue
Block a user