[sane-devel] sane-backend 1.0.27 USB broken on Mac with Homebrew

Olaf Meeuwissen paddy-hack at member.fsf.org
Sat Aug 12 05:32:01 UTC 2017

Hi Thomas,

schmo-fu writes:

> Okay, here i go again ...
> i can confirm, that it is not a permission problem. It's just that there
> are no files, where they should be.
> The scanner is recognized by sane-find-scanner now. But scanimage -L
> doesn't find it, because the sane-backends .conf files are supposed to
> be at:
> /usr/local/Cellar/sane-backends/1.0.27_1/etc/sane.d/
> but there is no etc/ (and there also is no doc/; both are present under
> 1.0.25_1; (»officially« there should also be a tools/, but this isn't
> present neither in 25 nor in 27).
> Looking at
> https://gist.github.com/anonymous/5e324f6e1c7c8b9ea4172a72e0352255
> [[see note]]
> the make-log shows, that the backends are all build with
> "-DPATH_SANE_CONFIG_DIR=usr/local/Cellar/sane-backends/1.0.27_2/etc/sane.d"
> which seems alright.
> Maybe they get deleted later? I don't know enough about this process, to
> know where to look for answers.

[ ... looking through the log ... ]

They don't get deleted later.  The files to be installed don't get
created to begin with.  This is arguably a bug in the sane-backends
build system but you can easily work around it by running a `make`
before doing a `make install`.

It looks like the homebrew stuff assumes that `make install` will be
smart enough to also trigger builds for everything that needs to be
installed.  A bit overly optimistic, if you ask me ;-)

Below is the Makefile.am snippet that installs the configuration files.
The first line after the @list, checks for a readable configuration but
because all these files are generated they don't exist unless you run a
`make install` first.

          @# Libtool has a bug where it will sometimes symlink the last
          @# installed library in $(sanelibdir) to $(sanelibdir)/libsane.*.
          @# Having two libsane's can cause issues so get rid of it.
          -rm -f $(DESTDIR)$(sanelibdir)/libsane.*
          test -z "$(configdir)" || $(MKDIR_P) "$(DESTDIR)$(configdir)"
          test -z "$(configdir)/dll.d" || $(MKDIR_P) "$(DESTDIR)$(configdir)/dll.d"
          @list="$(BACKEND_CONFS_ENABLED) saned.conf dll.conf"; for cfg in $$list; do \
            if test ! -r $${cfg}; then continue; fi; \
            if test -f $(DESTDIR)$(configdir)/$${cfg}; then \
            echo NOT overwriting $${cfg} in $(configdir)...; \
            else \
            echo installing $${cfg} in $(configdir)/$${cfg}...; \
            $(INSTALL_DATA) $${cfg} $(DESTDIR)$(configdir)/$${cfg} \
            || exit 1; \
            fi; \

I pushed a fix for this in 519ff57.

Hope this helps,
Olaf Meeuwissen, LPIC-2            FSF Associate Member since 2004-01-27
 GnuPG key: F84A2DD9/B3C0 2F47 EA19 64F4 9F13  F43E B8A4 A88A F84A 2DD9
 Support Free Software                        https://my.fsf.org/donate
 Join the Free Software Foundation              https://my.fsf.org/join

More information about the sane-devel mailing list