How to Build Picard for Windows
From MusicBrainz Wiki
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.
Categories: Development | MusicBrainz Picard | How To | To Be Reviewed

