| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
On FreeBSD using the default GNU BFD linker, the use of --version-script
fails unless the symbols `__progname` and `environ` are included. This
change includes them in the symbol map, which should allow the build to
succeed on FreeBSD.
|
|
|
|
|
|
|
|
|
|
|
| |
`libdconf-common-hidden` is built to hide symbols not necessary
in the `gsettings` gio module that only needs to expose
`g_io_module_[load|query|unload]` symbols.
To achieve this a symbol map along with `version-script` linker flag
is used. Thanks to this only the necessary symbols are exposed,
building `libdconf-common-hidden` static library is not necessary
anymore and the existing dependencies can be used.
|
|
|
|
| |
This will allow it to be used for other binaries
|
|
|
|
|
|
|
|
|
|
|
| |
gcc-9 is including `mangle_path` in the symbols of
gsettings/libdconfsettings.so when building with support for gcov
(--coverage). This means that our ignored symbols had to be updated.
Update abicheck.sh so the test suite passes again. Also include a
comment to explain the above and how the test works.
Fixes: https://gitlab.gnome.org/GNOME/dconf/issues/60
|
|
|
|
|
|
|
| |
This enables structured logging for all parts of dconf, which will make
it easier to check for certain log messages in the unit tests.
Signed-off-by: Philip Withnall <withnall@endlessm.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The GSettings backend loadable module should not expose any symbol
except for the g_io_module_* ones. By using the internal dependency
objects, we end up using `link_whole` on libdconf-common and
libdconf-gdbus-thread, which means that we now inherit all the symbols
exposed by those static libraries.
We still want to use `link_whole` every time we depend on those static
libraries, but for the GSettings backend module we make an exception,
and use `link_with` with the build targets, instead of the internal
dependencies.
This fixes the `abicheck` test unit.
Reviewed-by: nobody
Signed-off-by: Emmanuele Bassi <ebassi@gnome.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The build currently, unintentionally, depends on side effects, namely:
that a variable defined in a meson.build file will be valid for any
other included meson.build file, until it gets re-defined.
We use the same `deps` variable in many places, and we end up depending
on the inclusion order when we get to the client library, which depends
on the gsettings backend defining the `deps` variable.
Reviewed-by: nobody
Signed-off-by: Emmanuele Bassi <ebassi@gnome.org>
|
|
|
|
|
|
| |
Having trailing commas in place means that if another source file or
parameter is added to the end of the list or function, there won't
be noise when adding the comma to the line above.
|
|
|
|
|
|
|
|
|
| |
The current meson build files make heavy use of meson's
`project_name` function. However this makes difficult for any
developer to find for given program/library/file names. The project
name is also never going to change.
Due to this reason these calls have been changed for `dconf` itself.
|
|
|
|
|
|
|
|
|
| |
meson is able to generate internal dependencies for handling built
libraries. These internal dependencies depend on other dependencies
as well, based on the includes exposed by their headers.
This have been fixed by using proper internal dependencies for these
libraries.
|
|
|
|
|
|
|
|
|
|
|
| |
dconf builts a number of internal static libraries which in some
cases are duplicated. This duplication comes from autotools that
used to built two libraries for each library, one with PIC enabled
and the other one without it.
This has been changed to build only one library for each library to
be built, except `libdconf-common-hidden` which hides some symbols
for the GIO module to be built.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
D-Bus' session bus services' paths and gio's module's paths are
hardcoded. However, these directories can be retrieved by checking
this information from their pkgconfig files.
This patch retrieves the paths for their correspondant pkgconfig
files and uses those paths as installation directories.
The options to set different directories for these options are not
necessary anymore, so they have been removed.
Finally, the post install script does not depend anymore on the
existence of `gio-querymodules` and is always executed.
|
|
|
|
| |
Signed-off-by: Philip Withnall <withnall@endlessm.com>
|
|
|
|
|
|
|
| |
`nm` possibly isn't the correct nm executable, especially when
cross-compiling. Allow overriding it using ${NM}
https://bugzilla.gnome.org/show_bug.cgi?id=781769
|
|
|
|
|
|
|
|
|
|
| |
meson does not allow to build source code inside the source code
tree, for this reason there is no need for .gitignore files to
ignore built files.
This patch removes .gitignore files which are no longer needed.
https://bugzilla.gnome.org/show_bug.cgi?id=784910
|
|
|
|
|
|
|
| |
To avoid the burden of maintaining multiple build systems, this
patch removes autotools support.
https://bugzilla.gnome.org/show_bug.cgi?id=784910
|
|
|
|
|
|
|
|
| |
meson is a build system focused on speed an ease of use, which
helps speeding up the software development. This patch adds meson
support along autotools.
https://bugzilla.gnome.org/show_bug.cgi?id=784910
|
|
|
|
|
|
|
|
|
|
| |
abicheck.sh script has been changed to check the libdconfsettings
library from GSETTINGS_LIB environment variable. This helps when
checking the library in different locations.
'shebang' has also been added.
https://bugzilla.gnome.org/show_bug.cgi?id=784910
|
|
|
|
|
|
|
|
| |
Add a flag that allows checking the default value without constructing a
read_through queue. Make use of this new flag to simplify code in a
couple of places.
https://bugzilla.gnome.org/show_bug.cgi?id=759128
|
|
|
|
|
|
|
| |
Delete the separate dconf_engine_read_user_value() and merge its
functionality into dconf_engine_read() by adding a flags field.
https://bugzilla.gnome.org/show_bug.cgi?id=759128
|
| |
|
|
|
|
|
| |
Wire through the writability notifications from the engine to the
correct signals on GSettingsBackend.
|
|
|
|
|
| |
Wire through WritabilityNotify signals from the engine. This has been
unimplemented for a very long time...
|
|
|
|
|
|
|
| |
Allow specifying a profile when calling dconf_engine_new(). This will
allow us to avoid setting/unsetting the DCONF_PROFILE environment in
testcases from contexts where other threads may be reading from the
environment.
|
|
|
|
| |
We ought to be including this from each .c file.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement g_settings_backend_read_user_value() in DConfSettingsBackend.
This will help us support g_settings_get_user_value() properly.
We add a new engine API to support this as well. It takes a
read_through queue, even though we don't bother using that from
DConfSettingsBackend.
https://bugzilla.gnome.org/show_bug.cgi?id=668233
|
| |
|
|
|
|
|
|
|
|
| |
We should not send empty changesets to the service so just ignore them
when we get them.
This now means that an empty 'dconf load' will not send any D-Bus
messages (and will not cause D-Bus activation).
|
|
|
|
|
|
|
|
| |
The existing code had a /* XXX */ for properly dealing with the case of
the user requesting the default value. We should probably implement
this...
https://bugzilla.gnome.org/show_bug.cgi?id=685316
|
|
|
|
|
|
|
|
|
| |
The GSettings backend still wants to use this and it does us no harm to
have it on the engine API (which is only visible internally).
Adjust the various consumers of the engine to the new API.
Thanks to Rui Matos for reminding me about this...
|
|
|
|
|
|
|
|
|
| |
Add dconf_engine_sync() that does the same thing as the code in the
GSettings backend used to do, in a cleaner way.
Update the GSettings backend to use the new call.
Add a new call to DConfClient wrapping the engine call as well.
|
|
|
|
| |
This is no longer needed with "fast" writes supported in the engine.
|
|
|
|
| |
Make sure no unexpected symbols are leaking out.
|
|
|
|
|
|
| |
Compile a version of libdconf-common.a with -fvisibility=hidden. This
is included in the GSettings backend to prevent leaking the dconf client
library symbols into the global namespace.
|
|
|
|
|
|
|
|
|
|
| |
Clean up the Makefiles and make them as similar as possible.
Move CFLAGS to a common point of definition and stop using -I so much.
Replace the 'dbus stub' with libdconf-mock.a in tests/. Fill in some
stubs for future mock code for shm and gvdb (just to get things
compiling for now).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the shm code from the engine and the service and put it in a
separate convenience library in shm/.
Remove the vestigial shmdir weirdness from the service (since shmdir is
now always relative to XDG_RUNTIME_DIR and has been for some time).
The purpose of this is so that dconf-engine can be properly unit-tested.
dconf-engine now has five points of contact with the world (excluding
the users of the engine themselves):
- the DCONF_PROFILE environment variable
- fopen() of profile files
- shm
- gvdb
- dbus
The environment variable is quite easily controlled. fopen() is
intercepted in the engine testcase with a interpose of the libc symbol.
With this commit now each of dbus, gvdb and shm are implemented in
separate utility modules that can be mocked from the testcases.
|
|
|
|
|
| |
The GSettings backend wasn't linking in libdconf-common, resulting in
missing symbol errors when loading the module.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Support receiving and properly exposing change notifications.
This required some changes to improve the thread-safety of destroying a
DConfEngine.
It is possible that a signal would be arriving (in the worker thread) at
the exact instant that a DConfEngine was being destroyed (from the
finalize of the DConfClient or DConfSettingsBackend). This could lead
to the object being accessed after it was finalized.
We can avoid this by using weak references and by being more careful
about when the DConfEngine is freed (by taking a ref to it in the signal
handler and releasing it when done).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit represents a rather complete rethinking of DConfEngine.
- the different kinds of sources are now properly abstracted. This
will make landing NFS support substantially easier.
- there is now substantially more internal documentation
- DConfEngineMessage is gone and replaced with ordinary function calls
to be implemented by the D-Bus glue code
- the GDBus glue has been factored out and is now shared between the
client library and GSettings
- the "outstanding" queue logic from the GSettings backend is now in
the engine
- all changes now go through a single API that accepts a (new)
DConfChangeset object. Currently this only supports the current
operations (ie: setting and resetting). In the future this object
will also support the directory operations required by GSettingsList
and will be the basis for the new approach to implementing the
'delayed' GSettingsBackend (which will be the method by which those
two concepts can co-exist).
The (internal) API of the engine changed substantially. This caused the
following:
- the libdconf client library has been rewritten in C. Most of the
complicated aspects of it (that made it more convenience to use
Vala) are now gone.
- during the rewrite of libdconf, the DConfClient API changed a bit to
look more like a proper GObject. It now makes GIO-style use of
thread-default main contexts and uses GObject signals for
notifications (instead of hand-rolled callbacks).
- the GSettings backend has been substantially simplified (the
"outstanding" logic is gone). No externally-visible changes.
- the dbus-1 backend has taken a copy of the old engine code for now
until it can be ported to the new engine and sufficiently tested.
No externally-visible changes.
- the dconf commandline tool and dconf-editor required minor changes
to adjust to the DConfClient API changes
There is a substantial amount of cleaning up and finishing of work to be
done. There are many stubs remaining. There are likely still a large
number of bugs.
|
|
|
|
|
|
|
| |
One -fPIC and one without.
This is done instead of pulling the various source files from other
Makefiles.
|
| |
|
|
|
|
|
|
| |
This was required to support the case where the dconf client was unable
to determine the cache directory for itself. Since we now use the XDG
runtime directory, this is redundant.
|
|
|
|
|
|
|
| |
When we have a failure to deliver requests to the dconf backend, give a
g_warning().
https://bugzilla.gnome.org/show_bug.cgi?id=641768
|
|
|
|
|
|
|
|
|
| |
We never consumed the value, and then we reused it, causing warnings
about uninitialised error variables. Just remove it altogether.
Caught by Matthias.
https://bugzilla.gnome.org/show_bug.cgi?id=655193
|
|
|
|
|
|
|
|
|
| |
Support lockdown on the client side for GSettings.
For performance reasons only lockdown of specific keys (not entire
subpaths) is supported at the moment. This may change in the future if
we can find a way to make large numbers of related GVDB lookups
sufficiently performant.
|
|
|
|
|
| |
When adding matches, if we can't connect to DBus, the code will
presently crash. This fixes that.
|
|
|
|
| |
We're being sloppy about symbol exports. Clean that up.
|
|
|
|
| |
Closes #640566.
|