Support reading host schemas when built as flatpak
https://bugzilla.redhat.com/show_bug.cgi?id=1727551 https://github.com/flathub/ca.desrt.dconf-editor/issues/3
This commit is contained in:
		
							parent
							
								
									91191189b8
								
							
						
					
					
						commit
						c8bb8c385d
					
				| @ -10,6 +10,7 @@ Summary:        Configuration editor for dconf | |||||||
| License:        GPLv3+ and CC0 | License:        GPLv3+ and CC0 | ||||||
| URL:            https://wiki.gnome.org/Projects/dconf | URL:            https://wiki.gnome.org/Projects/dconf | ||||||
| Source0:        https://download.gnome.org/sources/dconf-editor/3.36/dconf-editor-%{version}.tar.xz | Source0:        https://download.gnome.org/sources/dconf-editor/3.36/dconf-editor-%{version}.tar.xz | ||||||
|  | Source1:        https://raw.githubusercontent.com/flathub/ca.desrt.dconf-editor/master/start-dconf-editor.sh | ||||||
| 
 | 
 | ||||||
| BuildRequires:  /usr/bin/appstream-util | BuildRequires:  /usr/bin/appstream-util | ||||||
| BuildRequires:  desktop-file-utils | BuildRequires:  desktop-file-utils | ||||||
| @ -42,6 +43,10 @@ Graphical tool for editing the dconf configuration database. | |||||||
| %install | %install | ||||||
| %meson_install | %meson_install | ||||||
| 
 | 
 | ||||||
|  | %if 0%{?flatpak} | ||||||
|  | install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/start-dconf-editor | ||||||
|  | %endif | ||||||
|  | 
 | ||||||
| %find_lang dconf-editor | %find_lang dconf-editor | ||||||
| 
 | 
 | ||||||
| %check | %check | ||||||
| @ -51,6 +56,9 @@ desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/ca.desrt.dconf-edi | |||||||
| %files -f dconf-editor.lang | %files -f dconf-editor.lang | ||||||
| %license COPYING | %license COPYING | ||||||
| %{_bindir}/dconf-editor | %{_bindir}/dconf-editor | ||||||
|  | %if 0%{?flatpak} | ||||||
|  | %{_bindir}/start-dconf-editor | ||||||
|  | %endif | ||||||
| %{_datadir}/applications/ca.desrt.dconf-editor.desktop | %{_datadir}/applications/ca.desrt.dconf-editor.desktop | ||||||
| %{_datadir}/bash-completion/ | %{_datadir}/bash-completion/ | ||||||
| %{_datadir}/dbus-1/services/ca.desrt.dconf-editor.service | %{_datadir}/dbus-1/services/ca.desrt.dconf-editor.service | ||||||
|  | |||||||
							
								
								
									
										25
									
								
								start-dconf-editor.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								start-dconf-editor.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | #!/usr/bin/bash | ||||||
|  | 
 | ||||||
|  | IFS=: read -ra host_data_dirs < <(flatpak-spawn --host sh -c 'echo $XDG_DATA_DIRS') | ||||||
|  | 
 | ||||||
|  | # To avoid potentially muddying up $XDG_DATA_DIRS too much, we link the schema paths | ||||||
|  | # into a temporary directory. | ||||||
|  | bridge_dir=$XDG_RUNTIME_DIR/dconf-bridge | ||||||
|  | mkdir -p "$bridge_dir" | ||||||
|  | 
 | ||||||
|  | for dir in "${host_data_dirs[@]}"; do | ||||||
|  |   if [[ "$dir" == /usr/* ]]; then | ||||||
|  |     dir=/run/host/"$dir" | ||||||
|  |   fi | ||||||
|  | 
 | ||||||
|  |   schemas="$dir/glib-2.0/schemas" | ||||||
|  |   if [[ -d "$schemas" ]]; then | ||||||
|  |     bridged=$(mktemp -d XXXXXXXXXX -p "$bridge_dir") | ||||||
|  |     mkdir -p "$bridged"/glib-2.0 | ||||||
|  |     ln -s "$schemas" "$bridged"/glib-2.0 | ||||||
|  |     XDG_DATA_DIRS=$XDG_DATA_DIRS:"$bridged" | ||||||
|  |   fi | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | export XDG_DATA_DIRS | ||||||
|  | exec dconf-editor "$@" | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user