How to Build Picard for Windows

From MusicBrainz Wiki

Jump to: navigation, search

Contents

[edit] How to build Picard for Windows

[edit] Disclaimer

This HowTo is work in progress and terribly incomplete. Currently it is more a collection of notes which can help you to build Picard on Windows, but it is not a real step by step instruction.

[edit] About

This HowTo explains the process of building the Picard installer for Windows from source using the MinGW build environment.

[edit] Requirements

[edit] Runtime & libraries

  • Python 2.7.x (Ensure you get a 32-bit version)
  • PyQt 4 Picard 0.15 is packaged with 4.7 but Py2.7-x86-gpl-4.8.4 appears to work. Ensure you get a 32-bit/x86 version.
  • Mutagen (1.20 works fine)
  • libdiscid
  • LibOFA
  • FFmpeg (Only 0.5.2-w32 currently appears to work; you may need to build it yourself using MinGW/MSYS)
  • MinGW & MSYS (Can use the GUI installer to install both at once)

[edit] For packaging/installer

[edit] Install Python, PyQt and py2exe

[edit] Install NSIS

[edit] Install MinGW and MSYS

Grab one of the installers from here. In the installer ensure you choose the following optional components:

  • C++ compiler
  • MSYS Basic System
  • MinGW Developer Toolkit

Installing to C:\MinGW (MSYS will be in C:\MinGW\msys\1.0) will simplify the rest of the guide.

Add C:\MinGW\bin to your PATH.

[edit] Build libavformat/libavcodec

Download the FFmpeg 0.5.2 source code and extract it to a directory. You are trying to build individual FFmpeg components in shared mode. Picard needs

  • libavformat
  • libavcodec
  • libavutil

From inside the MSYS shell change to that directory and run:

./configure --prefix=C:/MinGW \
  --extra-cflags="-mno-cygwin -mms-bitfields" \
  --extra-ldflags="-Wl,--add-stdcall-alias" \
  --enable-memalign-hack \
  --target-os=mingw32 \
  --enable-shared \
  --disable-static \
  --disable-ffmpeg \
  --disable-ffplay \
  --disable-ffserver \
  --disable-network \
  --disable-muxers \
  --disable-demuxers \
  --enable-demuxer=aac \
  --enable-demuxer=ac3 \
  --enable-demuxer=ape \
  --enable-demuxer=flac \
  --enable-demuxer=mpc \
  --enable-demuxer=mpc8 \
  --enable-demuxer=ogg \
  --enable-demuxer=wav \
  --disable-bsfs \
  --disable-filters \
  --disable-parsers \
  --enable-parser=aac \
  --enable-parser=ac3 \
  --enable-parser=mpegaudio \
  --disable-protocols \
  --enable-protocol=file \
  --disable-indevs \
  --disable-outdevs \
  --disable-encoders \
  --disable-decoders \
  --enable-decoder=aac \
  --enable-decoder=ac3 \
  --enable-decoder=alac \
  --enable-decoder=flac \
  --enable-decoder=mp2 \
  --enable-decoder=mp3 \
  --enable-decoder=mpc7 \
  --enable-decoder=mpc8 \
  --enable-decoder=ape \
  --enable-decoder=wavpack \
  --enable-decoder=vorbis \
  --enable-decoder=wmav1 \
  --enable-decoder=wmav2 \
  --enable-decoder=tta \
  --enable-decoder=pcm_alaw \
  --enable-decoder=pcm_dvd \
  --enable-decoder=pcm_f32be \
  --enable-decoder=pcm_f32le \
  --enable-decoder=pcm_f64be \
  --enable-decoder=pcm_f64le \
  --enable-decoder=pcm_s16be \
  --enable-decoder=pcm_s16le \
  --enable-decoder=pcm_s16le_planar \
  --enable-decoder=pcm_s24be \
  --enable-decoder=pcm_daud \
  --enable-decoder=pcm_s24le \
  --enable-decoder=pcm_s32be \
  --enable-decoder=pcm_s32le \
  --enable-decoder=pcm_s8 \
  --enable-decoder=pcm_u16be \
  --enable-decoder=pcm_u16le \
  --enable-decoder=pcm_u24be \
  --enable-decoder=pcm_u24le

Build the libraries with

make

You may see errors from make regarding

make: lib: Command not found

Make is looking for the Microsoft Library Manager from Visual Studio. You can ignore these; the DLLs should be successfully built and appear to be sufficient. However you will have to change the build.cfg before building Picard (see below).

[edit] Download the Picard source code

See Picard Download for instructions on how to obtain the source code of Picard.

[edit] Install libdiscid and libofa

[edit] Install Mutagen

From a cmd shell

cd mutagen-1.20
python setup.py install

[edit] Build the Picard installer

From a cmd shell, configure Picard:

python setup.py config --compiler mingw32 --library-dirs C:\MinGW\lib --include-dirs C:\MinGW\include

Fix the build.cfg:

[directshow]
libs = 
cflags = 

[libofa]
libs = 
cflags = 

[avcodec]
libs = avcodec.dll avformat.dll avutil.dll
cflags = 

[build]
have-make = True
with-directshow = False
with-avcodec = True
with-libofa = False

Build Picard and create the installer:

python setup.py build --compiler mingw32 
python setup.py build --compiler mingw32 bdist_nsis

[edit] Known issues

  • It is possible that the resulting picard.exe does not show the proper file icon. This is probably a bug of py2exe on Vista. You can fix the icon with the tool Resource Hacker or any other tool, that can edit the resources in executables.
  • If you try to build libdiscid yourself you must apply the patch from ticket #5255.
Personal tools