Build instructions for Linux and Windows


#1

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

https://cmake.org/download/

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 https://github.com/fritzing/fritzing-app

$ git clone https://github.com/fritzing/fritzing-parts

Download boost binaries for Windows from

https://sourceforge.net/projects/boost/files/boost-binaries/

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 https://github.com/Microsoft/vcpkg

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

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


Problem in running second time after installation in debian stretch
#2

…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…

I think that a 0.9.3c “bugfix release” can be very useful for a lot of people… “electronics and informatics made easy”, please… :wink:


#3

At present development is mostly at a standstill, I’m trying to correct that. There are very few changes since the last release so far, I’m trying to change that too, but it is going to be slow. Before a release is likely any changes made are going to need widespread testing. That means the user community is going to have to be willing to build the dev release from source to test the changes to demonstrate that the fixes actually work. There is no mechanism that I am aware of to build and distribute a release for testing at this point (I’d be happy to be proved wrong though). I think the user community is likely going to need to step up, and thus this post about how to do that. If we want progress we have to be willing to devote the time to producing it.

Peter


#4

@vanepp

Maybe something like what Arduino does, they setup servers to push hourly builds for Mac, Win and Linux from the latest github repository. You could even push the builds to github. That would require Fritzing to host the server and set it up but doable.


#5

Unfortunatly while I’m trying to jump start development, I’m just an interested user, I don’t have control of the distribution or access to the official repository (only my fork on github). If it was me I wouldn’t go to the effort of making a new release at this time because there isn’t very much change yet. For a while (perhaps a long while) it is going to be if you are willing to help test you need to build from source to make a test version. Having sort of got windows running I’m now trying to figure out how to get the 4 or 5 fixes I have in to my github fork of the application and compiled on Windows (I develop in linux) in order to test it and see if I have actually broken things instead of fixed them.

Peter