Build system on bristol-0.10.1

Help
2007-05-08
2013-05-23
  • Hi,

    Thank you for Bristol, it is really a great software.

    I have a problem with the new autoconf system. I don't want to have the data files in /usr/bristol but in /usr/share/bristol. I try to configure it with

    ./configure --prefix=/usr/share --exec-prefix=/usr

    The result was at I get the data files in /usr/share/bristol, the libs in /usr/lib, brighton and bristol was in /usr/bin- All that is fine. But startBristol was /usr/share/bin, not /usr/bin/startBristol.

    Another problem is at the paths inside /usr/share/bin seam to be broken. If I try to run it, I get:
    ./bin: line 30: /usr/share/bristol/bin/brighton: No such file or directory

    I made 2 symlinks in /usr/share/bristol/bin/ to /usr/bin/brighton and /usr/bin/bristol and the program is working fine.

    Is it a simple way to get it to work at configure time?

     
    • Nick Copeland
      Nick Copeland
      2007-05-08

      Hm, that is broken. I will work on changes to the autotool configuration files to separate out the binary and data directories. At the moment the files only use the --prefix and that is not quite what you are after.

      This should make the following upload 0.10.2 however that depends on timing.

       
    • The problem is at Bristol install its data files in /usr/bristol. I and other peoples are trying to do an ebuild to install bristol on gentoo (for the pro-audio overlay). The problem is at most linux distributions use /usr/share/bristol in such cases or eventually /opt/somewhere. According to gentoo policy, /opt is for binary packages and all other packages must be in /usr. That make files and versions management much easier.

      With most softwares, all that is needed is to configure with --prefix=/usr because they use /usr/bin, /usr/lib, /usr/share/<package_name>, /usr/share/man, etc. I think at the best move will be to fix Bristol to use /usr/share/bristol instead of /usr/bristol. So, it will be no need for other options as --prefix and it will also work with --prefix=/opt, the data files will be in /opt/share/bristol in that case. But the distributions I know that use /opt intensively are using it for packages as gnome or kde, not for standalone softwares as bristol.

      We tried to patch startBristol to use /usr/share/bristol but without success at that time.

       
    • I also see a problem with jack driver.

      /opt/bin/startBristol -b3 -jack -rate 48000
      /opt/bin/startBristol: line 208: [: too many arguments
      ldd: /opt/bristol/bin/bristol: No such file or directory
      Requested Jack drivers, not compiled into bristol

      But the following is working:
      /opt/bin/startBristol -b3 -audio jack -rate 48000

      'startBristol -v -h' say at it must wotk with -jack.

       
    • Nick Copeland
      Nick Copeland
      2007-05-09

      There are defaults for the bristol intallation that want to put everything in /usr/local.  This has been currently changed so that you can use --profix and --exec_prefix to be /usr/share and /usr to have binaries and libraries under /usr and data files in /usr/share, this is intended to work in the next release. I am not convinced that these should be the default just for one distribution - if the demands of gentoo are general I will make them defaults but will have to look into that.

      Regarding Jack support - the error message you see is due to the fact that jack is not compiled with bristol. Did you look at the pkg-config options for bristol? If pkg-config does not give the necessary Jack libraries and headers then it will not be compiled with bristol.

      Kind regards,

      Nick.

       
    • I just find a simple solution. It was to modify Makefile.am and configure.ac and run a full autoreconf.

      Makefile.am: change
      bristoldir=${prefix}/bristol
      into
      bristoldir=${prefix}/share/bristol

      configure.ac: change
      BRISTOL_DIR=${prefix}/bristol
      into
      BRISTOL_DIR=${prefix}/share/bristol

      It work well now with --prefix=/usr. I get the data files in /usr/share/bristol and the program is working fine.

      Btw: The new GUI rocks!

       
    • For jack, it is compiled with bristol. The problem is at startBristol give me the error above when I run:

      startBristol -jack

      as with the older versions.

      But it work well when I run:

      startBristol -audio jack

       
    • Nick Copeland
      Nick Copeland
      2007-05-09

      Hi Dominique,

      The next upload will support --exec_prefix=/usr and --prefix=/usr/share as /usr to get the data files in /usr/share and binaries and libraries in /usr/bin and /usr/lib respectively.

      Is that going to be enough? I would prefer to use these parameters, eventually aslo as defaults, rather than to put 'share' actually into the autoreconf files. The issue is that putting the string 'share' into these files means every installion needs to have them in the path, even people who want to use /usr/local.

      Either way we can resolve it. I like your feedback on changes to the configure.ac and Makefile.am - this is the stuff I need to get the installations to work as people need them.

      Many thanks, nick.

       
    • Nick Copeland
      Nick Copeland
      2007-05-10

      The configuration files for 0.10.2 should support the different --prefix and --exec_prefix for the different locations. Was uploaded today.

       
    • The problem is at --prefix is mean to be the first prefix. If you look the output of './configure --help', you get:

        --prefix=PREFIX         install architecture-independent files in PREFIX
                                [/usr/local]
        --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                                [PREFIX]

      and

        --bindir=DIR           user executables [EPREFIX/bin]
        --sbindir=DIR          system admin executables [EPREFIX/sbin]
        --libexecdir=DIR       program executables [EPREFIX/libexec]
        --datadir=DIR          read-only architecture-independent data [PREFIX/share]
        --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
        --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
        --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
        --libdir=DIR           object code libraries [EPREFIX/lib]
        --includedir=DIR       C header files [PREFIX/include]
        --oldincludedir=DIR    C header files for non-gcc [/usr/include]
        --infodir=DIR          info documentation [PREFIX/info]
        --mandir=DIR           man documentation [PREFIX/man]

      They are the default used by configure. The files that bristol install with --prefix are read-only architecture-independent data files, so it would have been more appropriate to use --prefix as first prefix in the path, to have --exec-prefix=$prefix (the default), and --datadir for those read-only files.

      Another issue I get is like with 0.10.1, '-jack' don't work but '-audio jack' work. Both was working with the older releases.

       
    • Nick Copeland
      Nick Copeland
      2007-05-11

      Hi Dominique,

      I take your point on the installation locations and will generalise them further in the next upload 0.10.3. That will not be for a while longer as there are quite a few more changes to the MIDI code that need testing, plus a couple of fixes that have to go in.

      I will work on the -jack flag. This flag just configures a set of options that can be configured seperately so can be changed reasonably easily.

      Kind regards,

      nick.

       
    • Hi Nick,

      Ok, I am not sure if you are understanding what I mean with '-jack' and '-audio jack'. I am not talking about configure flags but runtime option. I have jack in my system USE flags on gentoo, so all the programs that have jack capabilities will be compiled with jack support. And I am sure at bristol is compiled with jack. The better prove is at it work fine with 'startBristol -audio jack'. But 'startBristol -jack' is not working anymore.

      Ciao!
      Dominique