If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
It's trying to remove the library installed on the system, for some reason. However I noticed that this happens with trunk as well, so it's not a blocker for this merge request.
The most serious issue is with the D-Bus service file: if you build both the control center and the standalone app, the .service file uses the control center executable. This means that the debian packages generated will not work properly in an environment where the gnome control center is not installed.
I'm not sure on how to fix this. Maybe have the D-Bus service file use a small shell script to decide whether to exec the control center or the standalone app?
I ran
./autogen.sh --prefix=/tmp/test
and then make install failed:
=============== plugin- 1.0.la '/tmp/test/lib' t-plugin- 1.0.so. 0.0.0 /tmp/test/ lib/libaccount- plugin- 1.0.so. 0.0.0 plugin- 1.0.so. 0.0.0 libaccount- plugin- 1.0.so. 0 || { rm -f libaccount- plugin- 1.0.so. 0 && ln -s libaccount- plugin- 1.0.so. 0.0.0 libaccount- plugin- 1.0.so. 0; }; }) plugin- 1.0.so. 0.0.0 libaccount- plugin- 1.0.so || { rm -f libaccount- plugin- 1.0.so && ln -s libaccount- plugin- 1.0.so. 0.0.0 libaccount- plugin- 1.0.so; }; }) t-plugin- 1.0.lai /tmp/test/ lib/libaccount- plugin- 1.0.la home/mardy/ bin:/home/ mardy/bin: /usr/lib/ lightdm/ lightdm: /usr/local/ sbin:/usr/ local/bin: /usr/sbin: /usr/bin: /sbin:/ bin:/usr/ games:/ usr/local/ games:/ sbin" ldconfig -n /tmp/test/lib ------- ------- ------- ------- ------- ------- ------- ------- -------
/bin/mkdir -p '/tmp/test/lib'
/bin/bash ./libtool --mode=install /usr/bin/install -c libaccount-
libtool: install: /usr/bin/install -c .libs/libaccoun
libtool: install: (cd /tmp/test/lib && { ln -s -f libaccount-
libtool: install: (cd /tmp/test/lib && { ln -s -f libaccount-
libtool: install: /usr/bin/install -c .libs/libaccoun
libtool: finish: PATH="/
-------
Libraries have been installed in:
/tmp/test/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for ------- ------- ------- ------- ------- ------- ------- ------- ------- preferences '/tmp/test/bin' ls-preferences /tmp/test/ bin/credentials -preferences libexec/ update- accounts control- center- 1/panels' control- center- 1/panels' src/bzr/ accounts- sso/gnome- control- center/ standalone- preferences; /bin/bash /home/mardy/ src/bzr/ accounts- sso/gnome- control- center/ standalone- preferences/ libtool --silent --tag CC --mode=relink gcc -g -O2 -O0 -fprofile-arcs -ftest-coverage -export_dynamic -avoid-version -module -no-undefined -export- symbols- regex "^g_io_ module_ (load|unload) " -lgcov -o libcredentials.la -rpath /usr/lib/ control- center- 1/panels src/libcredenti als_la- cc-credentials- account- applications- model.lo src/libcredenti als_la- cc-credentials- account- details- page.lo src/libcredenti als_la- cc-credentials- accounts- model.lo src/libcredenti als_la- cc-credentials- accounts- page.lo src/libcredenti als_la- cc-credentials- applications- model.lo src/libcredenti als_la- cc-credentials- authorization- page.lo src/libcredenti als_la- cc-credentials- login-capture. lo src/libcredenti als_la- cc-credentials- preferences. lo src/libcredenti als_la- cc-credentials- providers- model.lo src/libcredenti als_la- cc-credentials- providers- page.lo src/libcredenti als_la- cc-webcredentia ls-indicator. lo src/libcredenti als_la- cc-credentials- panel.lo -laccounts-glib -lsignon-glib -lgnome- control- center -lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0 libaccount- plugin- 1.0.la ) tials.soT /usr/lib/ control- center- 1/panels/ libcredentials. so control- center- 1/panels/ libcredentials. so': Permission denied ccpanelsLTLIBRA RIES] Error 1 mardy/Data/ src/bzr/ accounts- sso/gnome- control- center/ standalone- preferences' mardy/Data/ src/bzr/ accounts- sso/gnome- control- center/ standalone- preferences'
more information, such as the ld(1) and ld.so(8) manual pages.
-------
/bin/mkdir -p '/tmp/test/bin'
/bin/bash ./libtool --mode=install /usr/bin/install -c credentials-
libtool: install: /usr/bin/install -c .libs/credentia
/bin/mkdir -p '/tmp/test/libexec'
/bin/bash ./libtool --mode=install /usr/bin/install -c update-accounts '/tmp/test/libexec'
libtool: install: /usr/bin/install -c update-accounts /tmp/test/
/bin/mkdir -p '/usr/lib/
/bin/bash ./libtool --mode=install /usr/bin/install -c libcredentials.la '/usr/lib/
libtool: install: warning: relinking `libcredentials.la'
libtool: install: (cd /home/mardy/
libtool: install: /usr/bin/install -c .libs/libcreden
/usr/bin/install: cannot remove `/usr/lib/
make[2]: *** [install-
make[2]: Leaving directory `/media/
make[1]: *** [install-am] Error 2
make[1]: Leaving directory `/media/
make: *** [install-recursive] Error 1
============
It's trying to remove the library installed on the system, for some reason. However I noticed that this happens with trunk as well, so it's not a blocker for this merge request.
The most serious issue is with the D-Bus service file: if you build both the control center and the standalone app, the .service file uses the control center executable. This means that the debian packages generated will not work properly in an environment where the gnome control center is not installed.
I'm not sure on how to fix this. Maybe have the D-Bus service file use a small shell script to decide whether to exec the control center or the standalone app?