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

macvim: 7.4.909 -> 8.1.1517 #62934

Merged
merged 1 commit into from
Jun 16, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 106 additions & 0 deletions pkgs/applications/editors/vim/macvim-sparkle.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
diff --git a/src/MacVim/English.lproj/MainMenu.nib/designable.nib b/src/MacVim/English.lproj/MainMenu.nib/designable.nib
index bdbcfdb9e..5efc78ab6 100644
--- a/src/MacVim/English.lproj/MainMenu.nib/designable.nib
+++ b/src/MacVim/English.lproj/MainMenu.nib/designable.nib
@@ -24,11 +24,6 @@
<action selector="orderFrontStandardAboutPanel:" target="-2" id="142"/>
</connections>
</menuItem>
- <menuItem title="Check for Updates…" id="255">
- <connections>
- <action selector="checkForUpdates:" target="Jqk-qh-n0J" id="Wau-rL-cbn"/>
- </connections>
- </menuItem>
<menuItem isSeparatorItem="YES" id="196">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
@@ -206,6 +201,5 @@
</menuItem>
</items>
</menu>
- <customObject id="Jqk-qh-n0J" customClass="SUUpdater"/>
</objects>
</document>
diff --git a/src/MacVim/English.lproj/Preferences.nib/designable.nib b/src/MacVim/English.lproj/Preferences.nib/designable.nib
index 889450913..38afc3416 100644
--- a/src/MacVim/English.lproj/Preferences.nib/designable.nib
+++ b/src/MacVim/English.lproj/Preferences.nib/designable.nib
@@ -88,14 +88,10 @@
<rect key="frame" x="207" y="208" width="258" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMinY="YES"/>
<string key="toolTip">Checks for updates and presents a dialog box showing the release notes and prompt for whether you want to install the new version.</string>
- <buttonCell key="cell" type="check" title="Check for updates" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="975">
+ <buttonCell key="cell" type="check" title="Check for updates" bezelStyle="regularSquare" imagePosition="left" alignment="left" enabled="NO" inset="2" id="975">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
- <connections>
- <action selector="checkForUpdatesChanged:" target="-2" id="YjS-ig-M1j"/>
- <binding destination="58" name="value" keyPath="values.SUCheckAtStartup" id="169"/>
- </connections>
</button>
<textField verticalHuggingPriority="750" id="121">
<rect key="frame" x="209" y="50" width="243" height="58"/>
@@ -186,16 +182,13 @@
<rect key="frame" x="221" y="188" width="244" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMinY="YES"/>
<string key="toolTip">MacVim will automatically download and install updates without prompting. The updated version will be used the next time MacVim starts.</string>
- <buttonCell key="cell" type="check" title="Automatically install updates" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="GfP-vg-mec">
+ <buttonCell key="cell" type="check" title="Automatically install updates" bezelStyle="regularSquare" imagePosition="left" alignment="left" enabled="NO" inset="2" id="GfP-vg-mec">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
<connections>
<binding destination="58" name="enabled" keyPath="values.SUCheckAtStartup" id="5oY-Gf-XJN"/>
</connections>
</buttonCell>
- <connections>
- <binding destination="58" name="value" keyPath="values.SUAutomaticallyUpdate" id="kyZ-ah-zKf"/>
- </connections>
</button>
</subviews>
<point key="canvasLocation" x="137.5" y="382"/>
diff --git a/src/MacVim/MacVim.xcodeproj/project.pbxproj b/src/MacVim/MacVim.xcodeproj/project.pbxproj
index 648c4290d..c7dd99d1e 100644
--- a/src/MacVim/MacVim.xcodeproj/project.pbxproj
+++ b/src/MacVim/MacVim.xcodeproj/project.pbxproj
@@ -66,8 +66,6 @@
1DFE25A50C527BC4003000F7 /* PSMTabBarControl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D493DB90C52533B00AB718C /* PSMTabBarControl.framework */; };
52818B031C1C08CE00F59085 /* QLStephen.qlgenerator in Copy QuickLookPlugin */ = {isa = PBXBuildFile; fileRef = 52818AFF1C1C075300F59085 /* QLStephen.qlgenerator */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
528DA66A1426D4F9003380F1 /* macvim-askpass in Copy Scripts */ = {isa = PBXBuildFile; fileRef = 528DA6691426D4EB003380F1 /* macvim-askpass */; };
- 52A364731C4A5789005757EC /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52A364721C4A5789005757EC /* Sparkle.framework */; };
- 52A364761C4A57C1005757EC /* Sparkle.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 52A364721C4A5789005757EC /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
52B7ED9B1C4A4D6900AFFF15 /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 52B7ED9A1C4A4D6900AFFF15 /* dsa_pub.pem */; };
8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; };
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
@@ -124,7 +122,6 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
- 52A364761C4A57C1005757EC /* Sparkle.framework in Copy Frameworks */,
1D493DBA0C52534300AB718C /* PSMTabBarControl.framework in Copy Frameworks */,
);
name = "Copy Frameworks";
@@ -250,7 +247,6 @@
32CA4F630368D1EE00C91783 /* MacVim_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacVim_Prefix.pch; sourceTree = "<group>"; };
52818AFA1C1C075300F59085 /* QuickLookStephen.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = QuickLookStephen.xcodeproj; path = qlstephen/QuickLookStephen.xcodeproj; sourceTree = "<group>"; };
528DA6691426D4EB003380F1 /* macvim-askpass */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "macvim-askpass"; sourceTree = "<group>"; };
- 52A364721C4A5789005757EC /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = "<group>"; };
52B7ED9A1C4A4D6900AFFF15 /* dsa_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsa_pub.pem; sourceTree = "<group>"; };
8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D1107320486CEB800E47090 /* MacVim.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MacVim.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -264,7 +260,6 @@
1DFE25A50C527BC4003000F7 /* PSMTabBarControl.framework in Frameworks */,
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
1D8B5A53104AF9FF002E59D5 /* Carbon.framework in Frameworks */,
- 52A364731C4A5789005757EC /* Sparkle.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -443,7 +438,6 @@
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
- 52A364721C4A5789005757EC /* Sparkle.framework */,
1D8B5A52104AF9FF002E59D5 /* Carbon.framework */,
1D493DB30C52533B00AB718C /* PSMTabBarControl.xcodeproj */,
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
86 changes: 56 additions & 30 deletions pkgs/applications/editors/vim/macvim.nix
Original file line number Diff line number Diff line change
@@ -1,55 +1,73 @@
{ stdenv, fetchFromGitHub, ncurses, gettext
, pkgconfig, python, ruby, tcl, perl, luajit
{ stdenv, fetchFromGitHub, runCommand, ncurses, gettext
, pkgconfig, cscope, ruby, tcl, perl, luajit
, darwin

, usePython27 ? false
, python27 ? null, python37 ? null
}:

let
python = if usePython27
then { pkg = python27; name = "python"; }
else { pkg = python37; name = "python3"; };
in
assert python.pkg != null;

let
# Building requires a few system tools to be in PATH.
# Some of these we could patch into the relevant source files (such as xcodebuild and
# qlmanage) but some are used by Xcode itself and we have no choice but to put them in PATH.
# Symlinking them in this way is better than just putting all of /usr/bin in there.
buildSymlinks = runCommand "macvim-build-symlinks" {} ''
mkdir -p $out/bin
ln -s /usr/bin/xcrun /usr/bin/xcodebuild /usr/bin/tiffutil /usr/bin/qlmanage $out/bin
'';
in

stdenv.mkDerivation rec {
name = "macvim-${version}";

version = "7.4.909";
version = "8.1.1517";

src = fetchFromGitHub {
owner = "macvim-dev";
repo = "macvim";
rev = "75aa7774645adb586ab9010803773bd80e659254";
sha256 = "0k04jimbms6zffh8i8fjm2y51q01m5kga2n4djipd3pxij1qy89y";
rev = "snapshot-156";
sha256 = "17plmqcn49gqwr1km77mkxflrg0f4sn06r3n0fbxa8zcz9zmb1q2";
};

enableParallelBuilding = true;

nativeBuildInputs = [ pkgconfig ];
nativeBuildInputs = [ pkgconfig buildSymlinks ];
buildInputs = [
gettext ncurses luajit ruby tcl perl python
gettext ncurses cscope luajit ruby tcl perl python.pkg
];

patches = [ ./macvim.patch ];
patches = [ ./macvim.patch ./macvim-sparkle.patch ];

# The sparkle patch modified the nibs, so we have to recompile them
postPatch = ''
substituteInPlace src/MacVim/mvim --replace "# VIM_APP_DIR=/Applications" "VIM_APP_DIR=$out/Applications"

# Don't create custom icons.
substituteInPlace src/MacVim/icons/Makefile --replace '$(MAKE) -C makeicns' ""
substituteInPlace src/MacVim/icons/make_icons.py --replace "dont_create = False" "dont_create = True"

# Full path to xcodebuild
substituteInPlace src/Makefile --replace "xcodebuild" "/usr/bin/xcodebuild"
for nib in MainMenu Preferences; do
/usr/bin/ibtool --compile src/MacVim/English.lproj/$nib.nib/keyedobjects.nib src/MacVim/English.lproj/$nib.nib
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could cause issues when /usr/bin/ibtool doesn't exist. Probably we should follow the Hydra builds to see. I think a darwin.ibtool might be useful to give a nice error message when this doesn't exist.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What version of macOS does Hydra run on, and what's the minimum version of macOS that Nix supports? /usr/bin/ibtool should exist on any version of macOS from the past few years at least. I suppose this could be /usr/bin/xcrun ibtool instead if we need to support a version of macOS that predates the introduction of the full set of build tools into /usr/bin.

done
'';

configureFlags = [
#"--enable-cscope" # TODO: cscope doesn't build on Darwin yet
"--enable-cscope"
"--enable-fail-if-missing"
"--with-features=huge"
"--enable-gui=macvim"
"--enable-multibyte"
"--enable-nls"
"--enable-luainterp=dynamic"
"--enable-pythoninterp=dynamic"
"--enable-${python.name}interp=dynamic"
"--enable-perlinterp=dynamic"
"--enable-rubyinterp=dynamic"
"--enable-tclinterp=yes"
"--without-local-dir"
"--with-luajit"
"--with-lua-prefix=${luajit}"
"--with-${python.name}-command=${python.pkg}/bin/${python.name}"
"--with-ruby-command=${ruby}/bin/ruby"
"--with-tclsh=${tcl}/bin/tclsh"
"--with-tlib=ncurses"
Expand All @@ -58,8 +76,8 @@ stdenv.mkDerivation rec {

makeFlags = ''PREFIX=$(out) CPPFLAGS="-Wno-error"'';

# This is unfortunate, but we need to use the same compiler as XCode,
# but XCode doesn't provide a way to configure the compiler.
# This is unfortunate, but we need to use the same compiler as Xcode,
# but Xcode doesn't provide a way to configure the compiler.
#
# If you're willing to modify the system files, you can do this:
# http://hamelot.co.uk/programming/add-gcc-compiler-to-xcode-6/
Expand All @@ -72,42 +90,50 @@ stdenv.mkDerivation rec {
configureFlagsArray+=(
"--with-developer-dir=$DEV_DIR"
)
'';
''
# For some reason having LD defined causes PSMTabBarControl to fail at link-time as it
# passes arguments to ld that it meant for clang.
+ ''
unset LD
''
;

postConfigure = ''
substituteInPlace src/auto/config.mk --replace "PERL_CFLAGS =" "PERL_CFLAGS = -I${darwin.libutil}/include"

substituteInPlace src/MacVim/vimrc --subst-var-by CSCOPE ${cscope}/bin/cscope
'';

postInstall = ''
mkdir -p $out/Applications
cp -r src/MacVim/build/Release/MacVim.app $out/Applications
rm -rf $out/MacVim.app

rm $out/bin/{Vimdiff,Vimtutor,Vim,ex,rVim,rview,view}
rm $out/bin/*

cp src/MacVim/mvim $out/bin
cp src/vimtutor $out/bin

for prog in "vimdiff" "vi" "vim" "ex" "rvim" "rview" "view"; do
ln -s $out/bin/mvim $out/bin/$prog
for prog in mvim ex vi vim vimdiff view rvim rvimdiff rview; do
ln -s $out/Applications/MacVim.app/Contents/bin/mvim $out/bin/$prog
done

# Fix rpaths
exe="$out/Applications/MacVim.app/Contents/MacOS/Vim"
libperl=$(dirname $(find ${perl} -name "libperl.dylib"))
install_name_tool -add_rpath ${luajit}/lib $exe
install_name_tool -add_rpath ${tcl}/lib $exe
install_name_tool -add_rpath ${python}/lib $exe
install_name_tool -add_rpath ${python.pkg}/lib $exe
install_name_tool -add_rpath $libperl $exe
install_name_tool -add_rpath ${ruby}/lib $exe

# Remove manpages from tools we aren't providing
find $out/share/man \( -name eVim.1 -or -name xxd.1 \) -delete
'';

meta = with stdenv.lib; {
broken = true; # needs ruby 2.2
description = "Vim - the text editor - for macOS";
homepage = https://github.com/b4winckler/macvim;
homepage = https://github.com/macvim-dev/macvim;
license = licenses.vim;
maintainers = with maintainers; [ cstrahan ];
maintainers = with maintainers; [ cstrahan lilyball ];
platforms = platforms.darwin;
};
}
Loading