As a start to getting people being able to test fixes and improvements to Fritzing here are current build instructions for Linux (in this link to a post in wishlist which I made before finishing the Windows version) and Windows. Even if you don’t want to do development you may want to build the current version of Fritzing to get (and therefore test widely) fixes that have been generated since 0.9.3b was released. I don’t think there is enough new yet to make a new release any time soon (and even then the code will need wide testing) so this is likely the only way to get fixes for a while. The linux version is fairly easy. Windows is much less so.
Linux build instructions here:
Now for Windows.
A note here before you get bit, you need between 30 and 40 gigabytes of space on your C: drive to install both Visual Studio and Qt. If you don’t have enough (which I initially did not) you get to restart the entire multi hour install after you arrange more disk space.
Install the Win 7 sdk from a google search for “windows 7 sdk” (needs to be for your version of Windows, the win 7 one appears to really be 8.1)
run winsdk_web.exe
untick documentation
untick samples
ticked Windows Headers and libaries
ticked Visual C++ compilers
ticked Windows Developement tools
ticked win32 development tools
ticked .net development tools
ticked application verifyer
ticked debugging tools for windows
unticked redistributable components (already unticked)
Install
Note Visual Studio 2017 is supposed to work with Qt5.10, but in practice I was not able to get it to work. There appeared to be a bug in Qt that wasn’t finding the compilers so I went back to Visual Studio 2015.
Install visual studio 2015 from
You will need to create an account and log in to get there but it is free once you get to it. They want you to use Visual studio 2017, but I wasn’t able to make it work with Qt (due to a Qt bug apparently) and Qt on 2017 reportadly does not support 32 bit compiles (you have to build Qt from source to get that) which Fritzing needs so I’d suggest using 2015. Note I made the mistake of doing the hours long install with the C runtime 2017 installed which broke the 2015 install, so uninstall at least the 2017 runtime libraries if they are installed (I’m using a dedicated disk just for Fritzing dev, you may not be as lucky in which case you may have problems).
en_visual_studio_community_2015_with_update_3_x86_x64_web_installer_8922963.exe
choose custom install
Programming Languages
Visual c++
tick Common tools for c++2015
tick Microsoft Foundation Classes for C++
tick Windows XP support for C++
untick Visual F#
untick Python Tools for Visual sudio
Windows and Web Development
tick Microsoft web developer tools
everything else unticked
Launch visual studio to let it intialize itself
run Windows update to see if it needs updates (mine didn’t but it is safer to check with Microsoft …)
Pick an install directoty. I used fritzing_dev in all the rest of this (I also use Cygwin to get a unix
environment on Windows but will try to keep to things that will work from a dos command window as well
although the / may need to change to \ if you are using a command prompt.
Install the fritzing-app and fritzing-parts repositories from github
fritzing-app:
either by downloading and unzipping it or using git to clone it (I used git under cygwin to clone it)
same for fritzing-parts from
cd fritzing_dev
and unzip or clone both repos here to have. Note I initially downloaded the parts zip file but discovered that it didn’t appear to have the .git directory and parts updating failed, so at least for the parts repository use git to clone it is the safer bet.
fritzing-app
fritzing-parts
in frtizing_dev
Now build the dependencies cmake Boost and libgit2
Install cmake from
I used the prebuilt binary in
cmake-3.10.2-win64-x64.msi
run the installer
tick Add Cmake to system path for all users
install
I used cygwin to clone the repositories you can also use the dos git package if you like
$ git clone GitHub - fritzing/fritzing-app: Fritzing desktop application
$ git clone GitHub - fritzing/fritzing-parts: Electronic components for use in the Fritzing app (aka the parts library)
Download boost binaries for Windows from
I used boost_1_66_0.7z as the current lastest version
unzip it with 7zip
to get a
boost_1_66_0 directory then copy that directory to
fritzing-app/lib/src
so you have
fritzing-app/lib/src/boost_1_66_0
under cygwin:
Owner@Owner-PC /cygdrive/f/Fritzing_dev
$ cp -R boost_1_66_0 fritzing-app/src/lib
Owner@Owner-PC /cygdrive/f/Fritzing_dev
$ ls fritzing-app/src/lib
boost_1_66_0 qtsysteminfo quazip
Now on to libgit2
To match up with the linux version we want to build libssl2 and openssh
so download vcpkg (an application to build open source packages on Windows) from
git clone GitHub - microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS
Owner@Owner-PC /cygdrive/f/Fritzing_dev
$ ls
boost_1_66_0 boost_1_66_0.7z fritzing-app fritzing-parts vcpkg
this leaves you with a diretory vcpkg.
Now we need to switch to a Visual Studio 64 bit command prompt. To do so click
Start->all programs->Visual Studio 2015->Visual Studio Tools->Windows desktop command prompts->vs2015 x64 Native tools Command prompt
which will open a dos command window with the compiler set to 64 bits (as far as I know it sets the compilers to 32 bits even on a 64 bit machine as stupid as that seems)
In the command prompt change to your Fritzing_dev directory. For me
f:
cd Fritzing_dev\vcpkg
Directory of F:\Fritzing_dev\vcpkg
02/24/2018 04:38 PM .
02/24/2018 04:38 PM …
02/24/2018 04:38 PM .git
02/24/2018 04:38 PM 95 .gitattributes
02/24/2018 04:38 PM 5,323 .gitignore
02/24/2018 04:38 PM 0 .vcpkg-root
02/24/2018 04:38 PM 97 bootstrap-vcpkg.bat
02/24/2018 04:38 PM 80,344 CHANGELOG.md
02/24/2018 04:38 PM 2,432 CONTRIBUTING.md
02/24/2018 04:38 PM docs
02/24/2018 04:38 PM 1,107 LICENSE.txt
02/24/2018 04:38 PM ports
02/24/2018 04:38 PM 2,431 README.md
02/24/2018 04:38 PM scripts
02/24/2018 04:38 PM toolsrc
02/24/2018 04:38 PM triplets
8 File(s) 91,829 bytes
8 Dir(s) 53,169,041,408 bytes free
F:\Fritzing_dev\vcpkg>
bootstrap-vcpkg.bat
which produces:
F:\Fritzing_dev\vcpkg>bootstrap-vcpkg.bat
Downloading vswhere…
WARNING: Github has dropped support for TLS versions prior to 1.2, which is not
available on your system
WARNING: Please manually download
https://github.com/Microsoft/vswhere/releases/download/2.3.2/vswhere.exe to
F:\Fritzing_dev\vcpkg\downloads\vswhere-2.3.2\vswhere.exe
Download failed
At F:\Fritzing_dev\vcpkg\scripts\VcpkgPowershellUtils.ps1:133 char:18
-
throw <<<< "Download failed"
- CategoryInfo : OperationStopped: (Download failed:String) , R
untimeException - FullyQualifiedErrorId : Download failed
- CategoryInfo : OperationStopped: (Download failed:String) , R
So from a webbrowser download
https://github.com/Microsoft/vswhere/releases/download/2.3.2/vswhere.exe
in to your Fritzing_dev directory
and in the command prompt
cd downloads
mkdir vswhere-2.3.2
copy …..\vswhere.exe vswhere-2.3.2
also download
https://github.com/git-for-windows/git/releases/download/v2.16.2.windows.1/MinGit-2.16.2-32-bit.zip
and copy that in to the downloads directory as well (because openssl will fail on it)
then run bootstrap-vcpkg.bat again and this time it works
and should end up as:
…
4>Done Building Project “F:\Fritzing_dev\vcpkg\toolsrc\vcpkgmetricsuploade
r\vcpkgmetricsuploader.vcxproj” (Build target(s)).
1>Done Building Project “F:\Fritzing_dev\vcpkg\toolsrc\dirs.proj” (default
targets).
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:33.85
F:\Fritzing_dev\vcpkg>
Now we are ready to build openssl and libssh2 (libgit2 is here, but doesn’t work so we will build it manually
later)
again from the Visual Studio command prompt window:
F:\Fritzing_dev\vcpkg>vcpkg install --triplet x64-windows openssl
The following packages will be built and installed:
openssl[core]:x64-windows
…
Building package openssl[core]:x64-windows… done
Installing package openssl[core]:x64-windows…
Installing package openssl[core]:x64-windows… done
Elapsed time for package openssl:x64-windows: 7.976 min
Total elapsed time: 7.976 min
The package openssl is compatible with built-in CMake targets:
find_package(OpenSSL REQUIRED)
target_link_libraries(main PRIVATE OpenSSL::SSL OpenSSL::Crypto)
now do libssh2
F:\Fritzing_dev\vcpkg>vcpkg install --triplet x64-windows libssh2
The following packages will be built and installed:
libssh2[core]:x64-windows
- zlib[core]:x64-windows
…
– Performing post-build validation
– Performing post-build validation done
Building package libssh2[core]:x64-windows… done
Installing package libssh2[core]:x64-windows…
Installing package libssh2[core]:x64-windows… done
Elapsed time for package libssh2:x64-windows: 55.37 s
Total elapsed time: 1.274 min
The package libssh2:x64-windows provides CMake targets:
find_package(libssh2 REQUIRED)
target_link_libraries(main PRIVATE Libssh2::libssh2)
F:\Fritzing_dev\vcpkg>
So now you have libssh2 and openssh in vcpkg\Installed. We wiil need to copy them to the libgit2 directory
later but now lets build libgit2 using these two libraries (unfortunatly not with vcpkg though as that doesn’t work).
with a web browser download from
libgit2 v0.26.0.zip (or the latest current version which is this one at present)
unzip it in to Fritzing_dev
To install it (from From instructions on http://blog.julienmialon.com/2017/01/)
Grab from
by hitting the raw button and copy / paste the file
FindLIBSSH2.cmake
and copy it in to
Fritzing_dev/libgit2-0.26.0/cmake/Modules
vi CMakeLists.txt
change
Optional external dependency: libssh2
IF (USE_SSH)
PKG_CHECK_MODULES(LIBSSH2 libssh2)
ENDIF()
to
Optional external dependency: libssh2
IF (USE_SSH)
FIND_PACKAGE(LIBSSH2)
ENDIF()
Now in the Visual Studio command window again
cd …/libgit2-0.26.0
set the path to the libssh2 and openssl libraries
set LIBSSH2_ROOT=f:/fritzing_dev/vcpkg/installed/x64-windows
(you may need to adjust the path above to what you use.) now to build the libary. In libgit2-0.26.0 (where you should be) from the Visual Studio command prompt:
mkdir build
cd build
cmake -G “Visual Studio 14 Win64” …
cmake --build .
This should build a libgit2 library using the vcpkg versions of libssh2 and openssl the -G “Visual Studio 14 Win64” makes it use the 64 bit compiler rather than the 32 (even on a 64 machine, totally braindead) The cmake -G “Visual Studio 14 Win64” … above should have output like this to indicate it found the libssh2 library successfully. If it does not check your FindLIBSSH2.cmake, CMakeLists.txt and set LIBSSH2_ROOT=f:/fritzing_dev/vcpkg/installed/x64-windows are correct.
…
– Could NOT find HTTP_Parser (missing: HTTP_PARSER_INCLUDE_DIR HTTP_PARSER_LIBR
ARY)
– http-parser version 2 was not found; using bundled 3rd-party sources.
– Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
– zlib was not found; using bundled 3rd-party sources.
– Found LIBSSH2: F:/Fritzing_dev/vcpkg/installed/x64-windows/lib/libssh2.lib
– Looking for libssh2_userauth_publickey_frommemory in F:/Fritzing_dev/vcpkg/in
stalled/x64-windows/lib/libssh2.lib
– Looking for libssh2_userauth_publickey_frommemory in F:/Fritzing_dev/vcpkg/in
stalled/x64-windows/lib/libssh2.lib - found
The cmake --build . step should end like this (the warnings are fine):
F:\Fritzing_dev\libgit2-0.26.0\tests\worktree\worktree.c(51): warning C4267:
‘=’: conversion from ‘size_t’ to ‘unsigned int’, possible loss of data [F:\Frit
zing_dev\libgit2-0.26.0\build\libgit2_clar.vcxproj]
255 Warning(s)
0 Error(s)
you now have the gitlib2 library in build. Now you need to create the libary that Fritzing will look for in
Fritzing_dev/libgit2 so for me back to cygwin to do the necessary copies.
so from Fritzing_dev
mkdir libgit2
mkdir libgit2/build64
cp libgit2-0.26.0/build/Debug/* libgit2/build64
cp -R libgit2-0.26.0/include libgit2
Now we need to copy the dlls from vcpkg in to libgit2 so Fritzing will find them
cp vcpkg/installed/x64-windows/bin/* libgit2/build64
Now all the prereqs are built and installed so now on to Qt.
You will need to create an account on the Qt web site and select the open source community version of Qt then
Download Qt file (for me that was)
qt-unified-windows-x86-3.0.2-online.exe
and run it.
select Qt 5.10.0
no longer appear to need to add anything more to the select as everything is already selected.
Unselect
MSVC 2013 64-bit
MinGw 5.3.0 32bit
UWP ARMV7 (MSVC 2015)
UWP ARMV7 (MSVC 2017)
Android x86
Android ARMV7
Sources
as you shouldn’t need any of them. Then set it to install (which takes a very long time, some 6 hours of
downloading on my adsl link!)
When that completes start Qtcreator (either from the start menu or from a shortcut on the desktop)
click on open project an navigate to your Fritzing_dev/fritzing-app directory and click on the file
phoenix.pro
(which is the Fritzing build file)
That brings up a Configure Project screen with (in my case) a choice of
(ticked) Desktop Qt5.10 MSVC2015 32bit
Desktop Qt5.10 MSVC2015 64bit
(depending on your selections you may have more.
untick the Desktop Qt5.10 MSVC2015 32bit and
tick the Desktop Qt5.10 MSVC2015 64bit
so it is the only one selected and then click Configure Project
The general messages window should show:
Project MESSAGE: target arch: x86_64
Project MESSAGE: allways true on win32. leads to build problems
Project MESSAGE: found libgit2 include path at F:/Fritzing_dev/fritzing-app/…/libgit2/include
Project MESSAGE: found libgit2 library in F:/Fritzing_dev/fritzing-app/…/libgit2/build64
Project MESSAGE: libgit2
Project MESSAGE: using Boost from src/lib/boost_1_66_0
Project MESSAGE: libs -LF:/Fritzing_dev/fritzing-app/…/libgit2/build64 -lgit2
Project MESSAGE: target arch: x86_64
Project MESSAGE: allways true on win32. leads to build problems
Project MESSAGE: found libgit2 include path at F:/Fritzing_dev/fritzing-app/…/libgit2/include
Project MESSAGE: found libgit2 library in F:/Fritzing_dev/fritzing-app/…/libgit2/build64
Project MESSAGE: libgit2
Project MESSAGE: using Boost from src/lib/boost_1_66_0
Project MESSAGE: libs -LF:/Fritzing_dev/fritzing-app/…/libgit2/build64 -lgit2
Indicating it found the libgit2 and boost libraries as it should have.
Now click on projects on the left tool bar about the middle
Desktop Qt 5.10.0 MSVC2015 64 bit should be highlighted with
build
run
below it. Click on run
executable should be (in my case) F:\Fritzing_dev\debug64\Fritzing.exe
command line arguments (blank)
Working directory f:\Fritzing_dev\debug64
we need to modify the command line arguments field twice, once to rebuild the data base and then to the
normal run setting. So first set the database build setup so copy
-f “f:/fritzing_dev/fritzing-app/” -parts "f:/fritzing_dev/fritzing-parts/ " -db “f:/fritzing_dev/fritzing-parts/parts.db”
in to the command line arguments field (you will need to change the path to match your system!)
Now click the green run arrow on the bottom of the left tool bar (just below the phoenix Debug label, the lower
arrow will start the debugger which isn’t what we want right now)
If you click on the compiler output tab on the bottom of the screen you will see the compile starting. This
takes quite a while to complete. When it finishes (or before if you choose) click on the Applicaiton Output
tab. while the compile completes it will be blank. When the compile finishes you will get the console messages
from Fritzing as it trys to bulld the database. In my case that results in this error (which may or may not
occur for you):
…
“part path not in parts:F:/fritzing_dev/fritzing-parts/core/led-rgb-4pin-anode_rbg.fzp f:/fritzing_dev/fritzing-parts 1”
“part path not in parts:F:/fritzing_dev/fritzing-parts/core/sparkfun-discretesemi-mosfet-nchannel-pth.fzp f:/fritzing_dev/fritzing-parts 1”
“referenceModel::loadAll completed”
F:/Fritzing_dev/debug64/Fritzing.exe exited with code 0
This is caused by this:
parts:F:/fritzing_dev/… not matching this f:/fritzing_dev/ (Note the first f is upper case and the second
is lower case). This is a Windows oddity, to Windows both paths are identical to Qt they aren’t and the
mismatch breaks the parts database creation. The fix is fairly easy but I don’t yet know how to get it on to
a repro in github that you could download so for now we will patch the local source.
From cygwin in directory Fritzing_dev/frtizing_app
vi src/referencemodel/sqlitereferencemodel.cpp
at line 915 change
else if (path.startsWith(prefix))
to
#ifdef Q_OS_WIN
else if (path.startsWith(prefix, Qt::CaseInsensitive)) {
#else
else if (path.startsWith(prefix)) {
#endif
You should end up with something that looks like this:
#ifdef Q_OS_WIN
else if (path.startsWith(prefix, Qt::CaseInsensitive)) {
#else
else if (path.startsWith(prefix)) {
#endif
path = path.mid(prefix.count() + 1); // + 1 to remove the beginning “/”
while we are here, lets change the Fritzing user directories so that the dev version of Fritzing will co exist
with the production version of Fritzing (by having the dev user files in Fritzing_dev). To do that
vi src/utils/folderutils.cpp
and at line 144 and 151 add a _dev to each Fritzing:
line 144:
QString path = QSettings(QSettings::IniFormat,QSettings::UserScope,"Fritzing","Fritzing").fileName();
to
QString path = QSettings(QSettings::IniFormat,QSettings::UserScope,"Fritzing_dev","Fritzing_dev").fileName();
line 151 from
return dir.absoluteFilePath("Fritzing");
to
return dir.absoluteFilePath("Fritzing_dev");
Then save the file and rerun Qtcreator.
Now I still get a different error but it appears to have built the database and Fritzing runs:
“part path not in parts:C:/Users/Owner/AppData/Roaming/Fritzing_dev/partfactory/69478abbb113421c89cbdd5cd12c736a/core/4001_4_x_2_input_NOR_gate_multipart_subpart4.fzp f:/fritzing_dev/fritzing-parts 1”
“referenceModel::loadAll completed”
F:/Fritzing_dev/debug64/Fritzing.exe exited with code 0
So now click on Projects->run again and delete the
-db “f:/fritzing_dev/fritzing-parts/parts.db”
leaving
-f “f:/fritzing_dev/fritzing-app/” -parts "f:/fritzing_dev/fritzing-parts/ "
in the command line arguments field.
Now when you click the run arrow Fritzing should start normally. Now you have the development version of Fritzing up and running (we hope anyway). From now on you should be able to just replace the fritzing-app repository with a new one and rebuild the app with Qt creator to test new fixes. You can also follow the release procedure in the dev wiki to make a standalone install (although I don’t think there is enough change to make that worthwhile right now). I have fixes for a number of file related problems that I will try and figure out how to get on to github so you can try them out.
Peter