Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ycm_core.so built against wrong python lib when using homebrewed pythons and custom macvim builds #50

Closed
seletz opened this issue Feb 6, 2013 · 1 comment

Comments

@seletz
Copy link

seletz commented Feb 6, 2013

Problem

I use a homebrewed python2.7, and a custom homebrewed MacVIM (to include the split-browser frature).

With this setup, ycm_core.so is linked wrongly, causing a SIGABRT on vim startup:

$ otool -L ycm_core.so
ycm_core.so:
    /Users/seletz/.vim/bundle/YouCompleteMe/python/ycm_core.so (compatibility version 0.0.0, current version 0.0.0)
    /System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.2)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

Homebrew recipe

Here's my hacked together homebrew recipe for building my version of MacVIM. Please
note the inreplace for the python link libs.

require 'formula'

class MacvimSeletz < Formula
  homepage 'https://github.com/seletz/macvim/'

  head 'https://github.com/seletz/macvim.git', :branch => 'split-browser'

  option "custom-icons", "Try to generate custom document icons"
  option "override-system-vim", "Override system vim"
  option "with-cscope", "Build with Cscope support"
  option "with-lua", "Build with Lua scripting support"

  depends_on 'cscope' if build.include? 'with-cscope'
  depends_on 'lua' if build.include? 'with-lua'

  depends_on :xcode # For xcodebuild.

  def install
    # Set ARCHFLAGS so the Python app (with C extension) that is
    # used to create the custom icons will not try to compile in
    # PPC support (which isn't needed in Homebrew-supported systems.)
    arch = MacOS.prefer_64_bit? ? 'x86_64' : 'i386'
    ENV['ARCHFLAGS'] = "-arch #{arch}"

    # If building for 10.8, make sure that CC is set to "clang".
    # Reference: https://github.com/b4winckler/macvim/wiki/building
    ENV['CC'] = "clang" if MacOS.version >= :mountain_lion

    args = %W[
      --with-features=huge
      --with-tlib=ncurses
      --enable-multibyte
      --with-macarchs=#{arch}
      --enable-perlinterp
      --enable-pythoninterp
      --enable-rubyinterp
      --enable-tclinterp
      --with-ruby-command=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
    ]

    args << "--enable-cscope" if build.include? "with-cscope"

    if build.include? "with-lua"
      args << "--enable-luainterp"
      args << "--with-lua-prefix=#{HOMEBREW_PREFIX}"
    end

    system "./configure", *args

    inreplace "src/auto/config.mk", /^PYTHON_CFLAGS.*$/,
                                "PYTHON_CFLAGS = -I/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/include/python2.7 -fno-strict-aliasing -fno-common -dynamic -I/usr/local/include -DNDEBUG -g -O3 -Wall -Wstrict-prototypes"
    inreplace "src/auto/config.mk", /^PYTHON_LIBS.*$/,
                                "PYTHON_LIBS = -L/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config -ldl -framework CoreFoundation -lpython2.7"
    # Building custom icons fails for many users, so off by default.
    unless build.include? "custom-icons"
      inreplace "src/MacVim/icons/Makefile", "$(MAKE) -C makeicns", ""
      inreplace "src/MacVim/icons/make_icons.py", "dont_create = False", "dont_create = True"
    end

    # Reference: https://github.com/b4winckler/macvim/wiki/building
    cd 'src/MacVim/icons' do
      system "make getenvy"
    end

    system "make"

    prefix.install "src/MacVim/build/Release/MacVim.app"
    inreplace "src/MacVim/mvim", /^# VIM_APP_DIR=\/Applications$/,
                                 "VIM_APP_DIR=#{prefix}"
    bin.install "src/MacVim/mvim"

    # Create MacVim vimdiff, view, ex equivalents
    executables = %w[mvimdiff mview mvimex gvim gvimdiff gview gvimex]
    executables += %w[vi vim vimdiff view vimex] if build.include? "override-system-vim"
    executables.each {|f| ln_s bin+'mvim', bin+f}
  end

  def caveats; <<-EOS.undent
    MacVim.app installed to:
      #{prefix}

    To link the application to a normal Mac OS X location:
        brew linkapps
    or:
        ln -s #{prefix}/MacVim.app /Applications
    EOS
  end
end

@Valloric
Copy link
Member

Valloric commented Feb 6, 2013

Duplicate issue #18.

@Valloric Valloric closed this as completed Feb 6, 2013
Grimy pushed a commit to Grimy/YouCompleteMe that referenced this issue Dec 22, 2014
Swap the order of parameters in ResultAnd
@hardboydu hardboydu mentioned this issue Jul 4, 2016
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 23, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants