11/13/16

Compiling Vim 8.0 - Mac OS X Sierra


I know Homebrew but I hate those tools which pollute my system. This is mine. I want to pollute it myself !

1. Compile gettext


I want gettext but if you don't care about, you can safely skip this step and directly go to 2.
% cd && mkdir -p src/tarball && cd src
% curl http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.8.1.tar.gz -o tarball/!#:^:t
% tar xvzf !$
% cd !$:t:r:r
% ./configure
% make
% sudo make install
% sudo rm -rf /usr/local/share/doc/gettext/examples/

You can close the dialog box about Java.


2. Compile lua


I need lua support to test neocomplete but, as for 1., if you don't care about, you can safely skip this step and directly go to 3.
% cd && mkdir -p src/tarball && cd src
% curl http://www.lua.org/ftp/lua-5.3.3.tar.gz -o tarball/!#:^:t
% tar xvzf !$
% cd !$:t:r:r
% make macosx test
% sudo make install

3. Compile Vim


% cd && mkdir -p src/tarball && cd src

a) Copy and paste the text below in a file inside the src directory and name it: configuration_vim8
export CONF_OPT_X="--without-x"
export CONF_OPT_GUI="--disable-gui"
export CONF_OPT_PYTHON="--enable-pythoninterp"
export CONF_OPT_RUBY="--enable-rubyinterp"
export CONF_OPT_CSCOPE="--enable-cscope"
export CONF_OPT_MULTIBYTE="--enable-multibyte"
export CONF_OPT_FEAT="--with-features=huge"
export CONF_OPT_FAIL="--enable-fail-if-missing"
export CPPFLAGS="-isystem /usr/local/include"
export CONF_OPT_COMPBY="--with-compiledby='your name <your email>'"
export CONF_OPT_LUA="--enable-luainterp"
export CONF_OPT_LUA_PREFIX="--with-lua-prefix=/usr/local"

If you skipped the lua compilation (2.), you should remove CONF_OPT_LUA and CONF_OPT_LUA_PREFIX from the configuration file (or copy without the last 2 lines).

Anyway, you should modify the CONF_OPT_COMPBY option to put your name and email.



b) Copy and paste the text below in a file inside the src directory and name it: apply_patches_vim80
PATCHES=../vim80-patches/*;
for f in $PATCHES; do
  echo "Applying patch $f";
  patch -p0 < $f;
done

c) Get the vim 8.0 sources:
% curl ftp://ftp.vim.org/pub/vim/unix/vim-8.0.tar.bz2 -o tarball/!#:^:t
% bzip2 -dc !$ | tar xvf -

d) Get the patches for vim 8.0:

The vim sources in the tarball are already patched until .0069 version so we only get patches we are interested in.

% mkdir vim80-patches && cd !#:^
% ftp ftp://ftp.vim.org/pub/vim/patches/8.0/
ftp> prompt
ftp> mget *.007*
ftp> mget *.008*
ftp> quit

At the date of writing this article, patch 8.0.0083 is the last.


e) Apply the patches:
% cd ../vim80
% sh ../apply_patches_vim80

f) Set up the environment variables for the compilation:
% source ../configuration_vim8
% env | grep -E 'CONF|CPPFLAGS'

The above command should show you the environment variables fixed by the configuration_vim8 file. If this is not the case, then we are in trouble. Ensure you have not mistyped something in the configuration file.


g) Compile vim:
% cd src
% make distclean
% make

At this stage, you can use the produced binary to see if vim is correctly build with your options:

% ./vim --version

You should see +ruby, +pyhton, +gettext and +lua (for the last two, only if you followed the steps 1. and 2.)


h) If all is fine, you can install vim:
% sudo make install

4. Make the new vim accessible


Create a link for vi

% cd /usr/local/bin
% sudo ln -s ./vim vi

Modify your ~./bashrc

export PATH=/usr/local/bin:$PATH

Source your .bashrc

% . ~/.bashrc
Done.

5/9/13

Enable write on NTFS for free (Mac OS X Lion / Mountain Lion)


1. Download NTFS-3G and install it.

2. Download MacFuse and install it.

3. Download a patch and install it.

Done.

7/13/12

VIM : macro


Vim possède une notion de macro. Grâce aux macros, on enregistre des actions qu'on peut réutiliser autant de fois qu'on le souhaite.

Classiquement :

  • On enregistre une macro avec q
  • On arrête une macro avec q
  • On utilise une macro avec @q

Si on met la macro dans un registre, ce que j'ai pour habitude de faire, on peut avoir par exemple :

  • On enregistre la macro dans le registre a par qa
  • On arrête la macro par q
  • On utilise la macro par @a

Dans l'exemple vidéo, on voit qu'il y a 29 lignes en bas à droite, donc on sait qu'il y a 15 noms de fleurs. Une fois exécutée notre enregistrement, il reste donc 14 noms de fleurs à traiter d'où le 14@a qui apparait à l'écran.

7/11/12

Compiling Vim 7.3 - Mac OS X Lion


Préambule

Si vous utilisez RVM, passez votre version de ruby sur celle par défaut (livrée avec le système) le temps de la compilation de Vim (surtout avec cette daube de RVM !). Rbenv is more Unix way ! Try it ! Use it ! Eat it !

 

1. Compiler gettext (Mac OSX Lion)

Si les messages de Vim en français vous importent peu, sautez directement au 2.

% cd
% mkdir -p src/tarball && cd src
% curl http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.1.1.tar.gz -so tarball/!#:^:t
% tar xvzf !$
% cd !$:t:r:r
% curl https://trac.macports.org/export/79617/trunk/dports/devel/gettext/files/stpncpy.patch -so stpncpy.patch
% patch -p0 < !$
% ./configure --disable-dependency-tracking --disable-debug --without-included-gettext --without-included-glib --without-included-libcroco --without-included-libxml --without-emacs --without-git --without-cvs
% make
% sudo make install
% sudo rm -rf /usr/local/share/doc/gettext/examples/

 

2. Compiler Vim (Mac OSX Lion)

% cd
% mkdir -p src/tarball && cd src

Créer les 2 fichiers ci-dessous dans src

Fichier apply_patches_vim73 :

rep="vim73-patches";
total_patches=$(ls -al ../$rep/7.3.* | wc -l)
for i in $(seq $total_patches); do
  echo "Application du patch $i";
  patch -p0 < ../$rep/7.3.$(printf "%.3d" $i);
done

Fichier configuration_vim73

export CONF_OPT_X="--without-x"
export CONF_OPT_GUI="--disable-gui"
export CONF_OPT_PYTHON="--enable-pythoninterp"
export CONF_OPT_RUBY="--enable-rubyinterp"
export CONF_OPT_CSCOPE="--enable-cscope"
export CONF_OPT_MULTIBYTE="--enable-multibyte"
export CONF_OPT_COMPBY="--with-compiledby='Votre nom '"
% curl ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2 -so tarball/!#:^:t
% bzip2 -dc !$ | tar xvf -
% mkdir vim73-patches && cd !#:^
% ftp ftp://ftp.vim.org/pub/vim/patches/7.3/
      ftp> prompt
      ftp> mget *
      ftp> quit
% cd ../vim73
% sh ../apply_patches_vim73
% source ../configuration_vim73
% env|grep CONF
% cd src
% make distclean
% make
% sudo make install

 

Créer un lien vi

% cd /usr/local/bin
% sudo ln -s ./vim vi

 

Modifier son .bashrc

export PATH=/usr/local/bin:$PATH

 

Ressourcer son .bashrc

% . ~/.bashrc

 

Done.

 

6/26/10

vim and screen 256 colors - MacOS X Snow Leopard


Nature du problème

Je souhaite utiliser des thèmes 256 couleurs avec Vim et plus spécifiquement le thème railscasts que j'utilisais sous Linux (thème d'origine TextMate utilisé par Ryan Bates pour ses screencasts). Vim et iTerm sont capables d'utiliser des thèmes 256 couleurs. Concernant iTerm, il suffit de choisir 'xterm-256color' dans la section 'Terminal Profiles'. Quant à Vim, il suffit d'ajouter set t_Co=256 à son .vimrc.

Attention, le Terminal livré avec Leopard ne supporte toujours pas un mode 256 couleurs. De toute façon, vous avez tout à gagner à passer à iTerm si ce n'est pas déjà fait (full screen, profiles à gogo suivant l'activité, etc...)

Le réel problème vient de la version de screen livrée avec Leopard qui ne supporte pas le mode 256 couleurs. Evidemment, comme j'utilise à outrance 'screen', c'est plus qu'ennuyeux de se retrouver avec un Vim en mode dégradé (surtout lorsqu'on épluche du code Rails à gogo comme c'est mon cas depuis plus d'une semaine). J'ai donc craqué et pris le temps de recompiler 'screen' avec le support du mode 256 couleurs.


Choix des sources

A défaut de faire correctement son boulot pour les utilitaires et logiciels en ligne de commande, Apple propose, sans doute pour se faire pardonner, des pages sur les logiciels Open Source utilisés pour le Mac. Je suis donc parti des sources de 'screen' pour Mac OS X version 10.6.4.

Je récupère également les sources du 'screen' correspondant à la version '10.6.2' car il manque 3 patches à la version '10.6.4' pour qu'on puisse le compiler correctement en ligne de commande. Les autres patches sont inutiles car les fichiers précédemment concernés ont déjà été modifiés (ils sont __APPLE__ powered ^^).


Lignes de commande en mode Canal+

J'ai choisi d'utiliser des commandes qui paraitront un peu 'cryptées' pour la plupart. Compiler un programme n'a rien de passionnant, alors autant apporter un peu de fun 'bash' pour le faire. Il suffit de copier les lignes qui suivent en respectant l'ordre et sans rien taper de plus entre chaque commande pour que ça se passe parfaitement (copier-coller roxe des mamans ours). Une ligne est fortement exagérée (celle du 'cd') et j'avoue que je ne l'aurais jamais tapée si ce n'était pour l'exemple et par nostalgie (cette ligne me rappelle la belle époque du Obfuscated Perl Contest).


Compilation et installation de 'screen'

cd
mkdir -p src/tarball && cd !#:2:h
wget http://www.opensource.apple.com/tarballs/screen/screen-19.tar.gz -O tarball/!#:^:t
wget !*:gs/9/6
tar xvzf !$:gs/6/9
mkdir !$:t:r:r/patches
tar xvzf !w:$ -C !$ --strip-components=2 *.diff
cd !mk:$:h/!#:$:h:gs/-19/
patch -p0 < ../patches/Makefile.in.diff
patch -p0 < ../patches/config.h.in.diff
patch -p0 < ../patches/configure.diff
./configure --enable-locale --enable-telnet --enable-colors256 --enable-rxvt_osc --prefix=/usr/local --disable-dependency-tracing
make
sudo make install

Modification du .screenrc

Il suffit d'ajouter ces lignes à son .screenrc (comme indiqué dans l'en-tête de railscasts.vim)

attrcolor b ".I"
termcapinfo xterm-color 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
defbce "on"
term screen-256color-bce
xterm-color doit correspondre à la réponse de echo $TERM

Utiliser son nouveau 'screen'

Je ne préfère pas toucher à l'installation d'Apple car je n'ai pas envie qu'une prochaine mise à jour vienne me compliquer la vie ^^. Pour utiliser des programmes recompilés (et donc, déjà existants sur le système), j'opte généralement pour l'utilisation de mon ~/bin. Il n'existe pas par défaut, il faut donc le créer si vous ne l'avez pas déjà fait.

mkdir ~/bin

Depuis son ~/bin, on fait simplement un lien vers son 'screen'.

ln -s /usr/local/bin/screen-4.0.3 screen

Si ce n'est pas déjà fait, on ajoute enfin son ~/bin à son PATH (dans son .bashrc ou son .bash_profile) en s'assurant qu'il sera bien le premier à être interrogé.

if [ -d ~/bin ]; then
    export PATH=~/bin:$PATH
fi

which screen doit vous dire que le système utilisera bien le screen nouvellement installé.

That's all.

5/28/10

Compiling Vim 7.2 - Mac Snow Leopard


Afin d'éviter des commentaires inutiles, je connais l'existence de MacVim mais je ne veux pas l'utiliser pour différentes raisons.

Pourquoi compiler une autre version de Vim ?

Par défaut, la version de Vim livrée avec Snow Leopard ne supporte pas l'interpréteur ruby et python. Je ne comprends pas pourquoi Monsieur Apple ne compile pas ces options pour Vim alors qu'il livre par défaut une version de Ruby et Python. C'est plutôt incohérent.

Je me fais ici un bloc-notes (comme souvent) qui pourra servir à d'autres.

Récupérer les tarballs de Vim 7.2

On récupère tous les tarballs pour disposer d'une version francisée et également pour pouvoir appliquer les patches sur les sources :

wget ftp://ftp.vim.org/pub/vim/unix/vim-7.2.tar.bz2
wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gz
wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz

Déployer les sources de Vim 7.2

bzip2 -dc vim-7.2.tar.bz2 | tar xvf -
tar xvzf vim-7.2-extra.tar.gz
tar xvzf vim-7.2-lang.tar.gz

Appliquer les patches

Les patches pour Vim 7.2 se récupèrent sur ftp://ftp.vim.org/pub/vim/patches/7.2/.

mkdir vim72-patch && cd !$
wget ftp://ftp.vim.org/pub/vim/patches/7.2/*

On applique un patch en tapant patch -p0 < ../vim72-patch/7.2.001 (en étant dans le répertoire vim72 bien évidemment). Comme il y a, à ce jour, plus de 400 patches, il est vivement conseillé de se faire un script pour ne pas y passer trop de temps. Pour information, la version de Vim livrée avec Snow Leopard ne comporte que les 108 premiers patches. J'ai personnellement appliqué tous les patches car il y a quand même quelques patches plus que nécessaires après le 108.

Préparer un fichier avec ses options de compilation

Créer son fichier avec ses options de compilation est amha le moyen le plus efficace pour modifier ses options et/ou appliquer ses options sur une prochaine version de Vim (on met juste le fichier de côté pour une utilisation ultérieure). Voici le contenu de mon fichier vim_comp_options :

export CONF_OPT_X="--without-x"
export CONF_OPT_GUI="--disable-gui"
export CONF_OPT_PYTHON="--enable-pythoninterp"
export CONF_OPT_RUBY="--enable-rubyinterp"
export CONF_OPT_CSCOPE="--enable-cscope"
export CONF_OPT_MULTIBYTE="--enable-multibyte"
export CONF_OPT_COMPBY="--with-compiledby='Bruno Carrere'"

Il suffit de sourcer le fichier depuis le term utilisé pour configurer et compiler Vim en tapant :

source path_vers_fichier/vim_comp_options
Vous pouvez contrôler que les options de configurations sont bien prises en compte en tapant env|grep CONF.

Configuration et compilation de Vim

cd vim72/src
make config
make
sudo make install

Pour ceux qui ne veulent pas appliquer les patches

Dans ce cas, on rencontre pas mal de soucis et il faut procéder à des aménagements au niveau des options de compilation.

On commence classiquement :

cd vim72/src
make config

On édite ensuite le /vim72/src/auto/config.mk comme suit :

DEFS            = -DHAVE_CONFIG_H -D_FORTIFY_SOURCE=0
CFLAGS          = -g -Os -pipe -mdynamic-no-pic
LDFLAGS         = -L. -arch x86_64  -L/usr/local/lib
puis on procède normalement pour la fin :
make
sudo make install

Je ne conseille vraiment pas cette méthode mais je la renseigne quand même car j'ai vu sur le net pas mal de personnes ayant des soucis avec la compilation de Vim dès lors qu'on n'applique pas les patches et qu'on se cantonne à une base 7.2 (et non 7.2.438 en appliquant tous les patches).

Vim PoWa !