Homebrew / legacy-homebrew

đź’€ The former home of Homebrew/homebrew (deprecated)
https://brew.sh
26.97k stars 11.34k forks source link

lilypond failed to build on 10.10 ("yosemite") #33523

Closed gabriel-striewe closed 9 years ago

gabriel-striewe commented 10 years ago

https://gist.github.com/fe4a29c2aab2c1d09056

I checked that XCode as well as the command line tools are up to date.

jacknagel commented 10 years ago

Can you rerun the build with --debug, and when it fails, choose "shell" and upload the config.log file?

gabriel-striewe commented 10 years ago

This is my config.log

https://gist.github.com/gabriel-striewe/050b62ac61beecb78390

DomT4 commented 10 years ago
configure:4021: /usr/local/bin/gcc-4.9 -Os -w -pipe -march=core2 -msse4 -mmacosx-version-min=10.10 -I/usr/local/opt/flex/include -I/usr/local/opt/readline/include -I/usr/local/opt/icu4c/include -I/usr/local/opt/gettext/include -F/usr/local/Frameworks -I/opt/X11/include -I/opt/X11/include/freetype2 -L/usr/local/opt/flex/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/icu4c/lib -L/usr/local/opt/libffi/lib -L/usr/local/opt/gettext/lib -L/usr/local/lib -F/usr/local/Frameworks -Wl,-headerpad_max_install_names -L/opt/X11/lib conftest.c >&5
<built-in>: error: unknown value '10.10' of -mmacosx-version-min

Bingo?

DomT4 commented 10 years ago

Looks like Guile18 doesn't recognise 10.10 as a valid OS X version in the configure script?

DomT4 commented 10 years ago
    case $host_os in
    rhapsody* | darwin1.[012])
      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
    darwin1.*)
      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
    darwin*) # darwin 5.x on
      # if running on 10.5 or later, the deployment target defaults
      # to the OS version, if on x86, and 10.4, the deployment
      # target defaults to 10.4. Don't you love it?
      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
    10.0,*86*-darwin8*|10.0,*-darwin[91]*)
      _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
    10.[012]*)
      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
    10.*)
      _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
      esac
DomT4 commented 10 years ago

Although that's just one of the fatal errors. It appears to have coughed up 3 fatal errors, the others are in this block.

DomT4 commented 10 years ago

Hmm :confused:. Guess guile18 isn't the error here, unless Lilypond hooks into it differently to the homebrew-versions build? Despite this:

configure:4068: error: in `/private/tmp/lilypond--guile18-6FVpTd/guile-1.8.8':

On 10.10 for me:

==> Summary
🍺  /usr/local/Cellar/guile18/1.8.8: 301 files, 7.1M, built in 2.3 minutes
gabriel-striewe commented 10 years ago

Here the same. Guile18 building fine. However, when I start guile at the command line, I receive:

ERROR: Unbound variable: define

DomT4 commented 10 years ago

Ah, yes. I encounter the same error.

Dominyks-MacBook-Pro # guile
ERROR: Unbound variable: define

And then it errors out and quits. Hmm.

DomT4 commented 10 years ago

Working on an experimental fix. Will have something for you to test shortly.

gabriel-striewe commented 10 years ago

Thanks a lot for your help. Need to go to bed for a few hours... Will test tomorrow!

DomT4 commented 10 years ago

Oh no rush. Whenever you have time. Jack may well have come up with a better fix by morning. Whenever you get a chance try brew install https://raw.githubusercontent.com/DomT4/homebrew/9e873862480ffc1c6cc507d9bd706a52d2598a10/Library/Formula/lilypond.rb --devel and let me know if that works for you.

jacknagel commented 10 years ago

<built-in>: error: unknown value '10.10' of -mmacosx-version-min is coming from gcc, it needs to be reinstalled (either gcc or gcc-4.9 from homebrew-versions, whichever you have installed).

svenax commented 10 years ago

On a clean installation of Yosemite, and fresh Homebrew. Guile and other dependencies builds fine, but when starting on Lilypond stable it fails with message

ERROR: Please install required programs:  /usr/local/bin/fontforge >= 20110222 (installed: 6ffb25d7732adcc8d32dae75bd90bda90250304)

Looks like it is getting the installed version wrong. It is actually

$ fontforge --version
Copyright (c) 2000-2014 by George Williams. See AUTHORS for Contributors.
 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
 with many parts BSD <http://fontforge.org/license.html>. Please read LICENSE.
 Based on sources from 09:42 CEST 24-Oct-2014-ML-D.
 Based on source from git with hash:f6ffb25d7732adcc8d32dae75bd90bda90250304
fontforge 09:42 CEST 24-Oct-2014
libfontforge 20141024

$ brew info fontforge
fontforge: stable 20141014 (bottled), HEAD
https://fontforge.github.io
/usr/local/Cellar/fontforge/2.0.20140101 (1403 files, 41M)
  Built from source with: --with-x, --with-cairo
/usr/local/Cellar/fontforge/20141014 (1275 files, 39M) *
  Built from source with: --with-x
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/fontforge.rb
MikeMcQuaid commented 10 years ago

Tempted to boneyard Lilypond give the :tex requirement means it can't be tested or bottled.

svenax commented 10 years ago

As far as I know, TeX is an optional requirement, so we could mark it a such. It is only needed for lilypond-book, not for lilypond itself.

ETA: No wait, it needs Metafont to build the fonts. Oh well ...

DomT4 commented 10 years ago

Looks like it is getting the installed version wrong. It is actually

Yeah, I wondered about this. The Lilypond configure script is quite specific in how it looks for Fontforge and consequently I'm not all that surprised it is struggling to find our considerably newer version. I guess we either remove Lilypond from the core here and potentially move it into a homebrew-tex tap, or we bundle an older Fontforge with Lilypond temporarily, or we look at modifying the configure script to look for newer versions. Bleh.

gabriel-striewe commented 10 years ago

@DomT4: thanks for your receipe. it gives me the following error: <<< WARNING: Please consider installing optional programs or files: guile < 1.9.0 (installed: 2.0.11) texi2html dblatex pngtopnm

ERROR: Please install required programs: /usr/local/bin/fontforge >= 20110222 (installed: 6ffb25d7732adcc8d32dae75bd90bda90250304) <<<

We might have to bring this up on the lilypond list, unless you are an autotools wizard?

svenax commented 10 years ago

Thats the same error I got, @gabriel-striewe.

DomT4 commented 10 years ago

WARNING: Please consider installing optional programs or files: guile < 1.9.0 (installed: 2.0.11) texi2html dblatex pngtopnm

Expected that one. Essentially, I just removed the old guile in favour of the new one, but the support for that is experimental at this point and consequently you get the warning about it if you use it.

I'll look at the configure script to see what's going on with Fontforge and if we can fix that issue, but yeah, punt it upstream as well.

DomT4 commented 10 years ago

Yeah, punt this upstream. There's way too many references to how to work out the Fontforge build number in the configure script for me to patch them all. (I suppose I could, but I wouldn't be doing much else for the rest of the week heh).

gabriel-striewe commented 10 years ago

Before bringing this issue upstream, I will have to compile it by hand. That's what I just did, but the configure script hangs at guile-config:

checking for guile-config...

I cannot stop the process unless killing the terminal.

At the command prompt using guile and guile-config without autotools:

MacAir:~ gabriel$ guile ERROR: Unbound variable: define ^C MacAir:~ gabriel$ guile-config ERROR: Unbound variable: define ^C MacAir:~ gabriel$

Is anybody using guile18 stand-alone and might be able to help with this issue.

I did reinstall gcc-4.9. Command line tools and xcode are up to date...

adius commented 10 years ago

+1

ghost commented 10 years ago

Yeah, punt this upstream. There's way too many references to how to work out the Fontforge build number in the configure script for me to patch them all. (I suppose I could, but I wouldn't be doing much else for the rest of the week heh).

Since the configure script is generated by autoconf, there’s actually one single place that needs editing, namely lines 43-48 in aclocal.m4:

    if test -z "$_ver"; then
        ## If empty, try date [fontforge]
        eval _ver=\"\`("$1" --version || "$1" -V) 2>&1 | grep '[0-9]\{6,8\}' \
        | head -n 1 \
        | sed -e 's/^[^.0-9]*//' -e 's/[^.0-9]*$//'\`\"
    fi

The regular expression being used in grep catches both a source Git hash and a libfontforge date/version, the latter being what the script should really use. Because of head -n 1, only the Git hash is considered, which is the source of this error.

There are multiple ways to avoid reading a Git hash from --version and upstream is definitely better equipped to decide which is better, but it shouldn’t be hard for LilyPond’s Homebrew formula maintainer to patch that grep invocation whilst upstream doesn’t solve this — for example, by forcing libfontforge or ignoring hash.

In theory, only one line needs changing in aclocal.m4. I’m not sure whether Homebrew runs autoconf, but it shouldn’t be hard to run it in case it doesn’t at the moment.

DomT4 commented 10 years ago

Homebrew generally is pretty bleh on including patches that require the use of the autotools unless absolutely necessary. If you have something in mind though, feel free to open a PR with the proposed fix and the maintainers are forever happy to consider these things.

Given the options at this point, including your proposal, are 1) Patch and include autotool dependencies. 2) Given the hard tex dependency, boneyard. 3) Keep shipping a broken formulae, there probably wouldn't necessarily be objection to 1 if you manage to make it work.

ghost commented 10 years ago

Fixing the fontforge version detection problem in aclocal.m4 works as far as fontforge is concerned, but configure still fails with

WARNING: Please consider installing optional programs or files:  guile < 1.9.0 (installed: 2.0.11)

ERROR: Please install required programs:  International New Century Schoolbook fonts (make sure the fc-list utility can see them, or use --with-ncsb-dir) msgfmt mpost (due to a bug in metapost, versions 1.600 <= x < 1.803 are not supported; installed: 1.802) guile-config < 1.9.0 (installed: 2.0.11) (guile-devel, guile-dev or libguile-dev package) libguile (libguile-dev, guile-devel or guile-dev package). GUILE-with-rational-bugfix makeinfo >= 4.11 (installed: 4.8) texi2html dblatex pngtopnm

I’m not sure what boneyard and PRs are, and I won’t be spending more time with this issue. Feel free to forward this information to the maintainer and upstream if you think it’s helpful, and good luck!

DomT4 commented 10 years ago

Apologies for the jargon.

Boneyard = The place we send formulae that can no longer be supported for whatever reason. PRs = Pull Requests.

adius commented 9 years ago

What's the state on this? Would love to see it fixed =)

DomT4 commented 9 years ago

AFAIK, We're waiting on some upstream movement around Fontforge and Guile.

andrewcsmith commented 9 years ago

It does indeed look like this is an issue with Lilypond's configure script. I changed that one bit to

    eval _ver=\"\`("$1" --version || "$1" -V) 2>&1 | grep 'libfontforge [0-9]\{6,8\}' \
    | head -n 1 \
    | sed -e 's/^[^.0-9]*//' -e 's/[^.0-9]*$//'\`\"

and it at least got past that one error. You can also pass the flag --enable-guile2 to autogen.sh to avoid the warning about guile.

andrewcsmith commented 9 years ago

Also, msgfmt and makeinfo can be solved with brew link gettext and brew link texinfo, respectively. (I plan to unlink them as soon as lilypond finishes installing.)

Ledoux commented 9 years ago

For the fontforge old version problem in Yosemite,

there is a similar fix here : https://github.com/FontCustom/fontcustom/issues/204

to reinstall the old version and the lilypond install works then for me :

brew update brew uninstall fontforge cd /usr/local/Cellar/ git checkout bfdf80274b3542684e5343cbca04f93d63e44d9d /usr/local/Library/Formula/fontforge.rb brew install fontforge

piotr-yuxuan commented 9 years ago

Hi there, I also get the same. I'm trying to install lilypond 2.19.15-1 on ArchLinux. Sorry if I post at the wrong place, I've searched for similar problem and I've found this page wherein issue seems rather similar to mine.

ERROR: Please install required programs:  International New Century Schoolbook fonts
(make sure the fc-list utility can see them, or use --with-ncsb-dir) /usr/bin/fontforge >=
20110222 (installed: 4cea471798c92848170c2f47311979805966093)

But methinks it should work. Here is what I've got:

$ yaourt -Qs fontforge
extra/fontforge 20141126-2
    Outline and bitmap font editor
$ fc-list | grep "Century"
/usr/share/fonts/Type1/c059036l.pfb: Century SchoolBook URW:style=Bold Italic
/usr/share/fonts/Type1/c059016l.pfb: Century SchoolBook URW:style=Bold
/usr/share/fonts/Type1/c059013l.pfb: Century SchoolBook URW:style=Roman
/usr/share/fonts/Type1/c059033l.pfb: Century SchoolBook URW:style=Italic

I haven't found any free fonts named « International New Century Schoolbook » to download.

DomT4 commented 9 years ago

This issue was moved to Homebrew/homebrew-tex#10