[GNC-dev] GnuCash 3.0 wine versus Windoze 10

John Ralls jralls at ceridwen.us
Fri Apr 20 15:58:48 EDT 2018



> On Apr 20, 2018, at 10:50 AM, Geert Janssens <geert.gnucash at kobaltwit.be> wrote:
> 
> Op vrijdag 20 april 2018 19:23:36 CEST schreef jeffrey black:
>> On 04/20/2018 11:44 AM, Robin Chattopadhyay wrote:
>> 
>>> David-
>>> 
>>> 
>>> 
>>> Thank you very much for this comprehensive tutorial for building from
>>> source. I'm newish to Linux and I want to be able to do this but I've
>>> been
>>> confused. I managed to muddle through building 3.0 from source the
>>> evening
>>> before your email came.
>>> 
>>> 
>>> 
>>> I have some lingering questions that maybe this group can help with:
>>> After downloading the source and extracting the files, I made a second
>>> directory for the build, so I had:
>>> /home/foo/gnucash-3.0
>>> /home/foo/gnucash-build
>>> 
>>> 
>>> 
>>> Is this a correct/reasonable/best practice?
>>> 
>>> 
>>> 
>>> After I successfully ran cmake and make install and I can run gnucash,
>>> what
> if anything, can I or should I delete? Or should I keep the source
>>> and build directories?
>>> 
>>> 
>>> 
>>> I was running into problems with cmake when I set -D WITH_PYTHON=ON. I
>>> didn't capture any of the error messages, but it IIRC it was complaining
>>> about not having some test utility. I eventually switched to -D
>>> WITH_PYTHON=OFF and I was able to proceed. Is it possible that this is
>>> related to not installing the GTEST/GMOCK packages?
>>> 
>>> 
>>> 
>>> Thanks,
>>> Robin
>>> 
>>> 
>>> 
>>> On Fri, Apr 20, 2018 at 3:35 AM, DaveC49 <davidcousens at bigpond.com>
>>> wrote:
>>> 
>>> 
>>> 
>>>> Jeffrey,
>>>> 
>>>> 
>>>> 
>>>> I will start form scratch. The first step is setting up for building. My
>>>> apologies if I am teaching you to suck eggs. Linux Mint has an alias of
>>>> apt
> defined for apt-get. I am not sure if it is also defined in Ubuntu.
>>>> If not substitute apt-get where I have apt in the following.
>>>> 
>>>> 
>>>> 
>>>> # first download a copy of the gnucash source code gnucash-3.0.tar.bz2
>>>> from
> # https://www.gnucash.org/download.phtml and extract the
>>>> gnucash-3.0 source
>>>> file. I use a folder called # Applications in my home directory for
>>>> programs
>>>> and libraries I build from scratch and usually keep the
>>>> # sources there so i can easily rebuild if I strike a problem, but that
>>>> is
>>>> just a personal preference.
>>>> 
>>>> 
>>>> 
>>>> #Open a terminal/bash shell and then cd to the extracted folder
>>>> gnucash-3.0.
>>>> 
>>>> 
>>>> 
>>>> # this loads compilers,dev tools etc as per
>>>> https://packages.ubuntu.com/xenial/build-essential
>>>> $sudo apt install build essential
>>>> $sudo apt install cmake
>>>> 
>>>> 
>>>> 
>>>> #the next step is to install the gnucash dependencies as listed in the
>>>> README.dependencies file under the #gnucash-3.0 folder. This generally
>>>> lists
>>>> the minimum version of the libraries required. You will generally find
>>>> that
>>>> Ubuntu will in most cases load a later version. I will list the command
>>>> to
>>>> load  followed by the required version as in that file as a #comment
>>>> separated by a #. The list on https://wiki.gnucash.org/wiki/Building
>>>> lists
>>>> the development headers that are required but you may also need to load
>>>> the
> libraries as well
>>>> 
>>>> 
>>>> 
>>>> sudo apt-get install libtool libltdl-dev
>>>> #glib2 >        v2.40.0
>>>> sudo apt-get install libglib2.0 libglib2.0-dev
>>>> sudo apt-get install icu-devtools libicu-dev
>>>> # boost > 1.50.0
>>>> sudo apt-get install libboost-all-dev
>>>> # guile >=2.0.0
>>>> sudo apt-get install guile-2.0 guile-2.0-dev
>>>> #swig  >2.0.10
>>>> sudo apt-get install swig2.0
>>>> sudo apt-get install libxml2 libxml++2.6-dev
>>>> sudo apt-get install libxslt1.1 libxslt1-dev
>>>> sudo apt-get install xsltproc
>>>> sudo apt-get install libgtest-dev
>>>> sudo apt-get install gtk+3.0
>>>> sudo apt-get install libgtk-3-dev
>>>> sudo apt-get install libwebkit2gtk-4.0-37
>>>> sudo apt-get install libwebkit2gtk-4.0-dev
>>>> sudo apt-get install libdbi1 libdbi-dev
>>>> # if you use a database backend  rather than the default XML backaend
>>>> # you need to load at least one of the following
>>>> # and choose the one relevant to the database you want to use
>>>> sudo apt-get install libdbd-pgsql   #PostgreSQL database
>>>> sudo apt-get install libdbd-mysql  # MySQL database
>>>> sudo -get install libdbd-sqlite3     #Sqlite database
>>>> # these are needed if you use online banking tools
>>>> sudo apt-get install libofx6 libofx4 libofx-dev
>>>> dpkg -lsudo apt-get aqbanking-tools libaqbanking-dev
>>>> # this is required on linux systems it may be already installed but will
>>>> tell you if it is
>>>> sudo apt-get install dconf-cli
>>>> #
>>>> # you can check out what versions of packages are installed or not using
>>>> the
>>>> following command
>>>> dpkg -l | grep <package name>
>>>> # here <package name> can be the actual package name or a substring.
>>>> grep
>>>> will extract anything
>>>> # from the dpkg -l output which contains that substring
>>>> #
>>>> # The next step is getting googletest setup. The version from the Ubuntu
>>>> repository is 1.7.0 and does not
>>>> # contain gmock within the gtest download. V1.8.0 has both in the one
>>>> repository and is a little bit easier
>>>> #  to setup. Google do not recommend using googlemock and googletest as
>>>> shared dynamically linked
>>>> #  libraries because if a program is compiled with different compiler
>>>> flags
> from the libraries links to them
>>>> # at run time they can fail something I did not appreciate but I haven't
>>>> had
>>>> any problems so far.
>>>> # To set it up as recommended by Google and the developers, at a
>>>> terminal
>>>> opened in a suitable folder (e.g. $HOME/Applications is what I use) 
>>>> enter:
> #
>>>> git clone https://github.com/google/googletest.git
>>>> #
>>>> #this will create a folder googletest-master which has sub folders
>>>> googletest and googlemock
>>>> #
>>>> cd googletest-master
>>>> cmake -D BUILD_GTEST -DBUILD_GMOCK
>>>> make
>>>> # this creates the gtest and gmock libraries within the
>>>> googletest-master
>>>> folder but does not install them
>>>> # as shared dynamically linked libraries. You then need to create
>>>> environment variables pointing to the
>>>> # top level folders containing these libraries
>>>> export GTEST_ROOT=<path-to-googletest-master>/googletest
>>>> export GMOCK_ROOT=<path-to-googletest-master>/googlemock
>>>> # where <path-to-googletest-master> is in my case
>>>> $HOME/Applications/googletest-master. This allows
>>>> # CMake to find the googletest and googlemock libraries and include
>>>> files
>>>> to
>>>> link into the program.
>>>> #
>>>> # At this point you should be ready to build gnucash. I prefer to
>>>> install
>>>> it
>>>> in the /usr/local folder. This is
>>>> # where the linux distros generally install it. If your previous version
>>>> was
>>>> installed from a Linux
>>>> # distribution this is normally where it will be. It can also be
>>>> installed
>>>> under /opt. The essential step I
>>>> # found was to ensure that all traces of any previous version of GnuCash
>>>> were removed before doing
>>>> # the build.
>>>> #If you previously had a version from the Linux distro
>>>> sudo apt-get remove gnucash
>>>> # should achieve this. If you built a previous version from sources and
>>>> still have the build sources
>>>> # change to the  build directory (may be the source directory (e.g.
>>>> gnucash-2.6.19) or may be directory
>>>> # named build, my-build or similar under the source directory) and type
>>>> at
>>>> the terminal
>>>> sudo make uninstall
>>>> # to check whether you have been succesful or not type
>>>> whereis gnucash
>>>> # If nothing is returned then you have removed it successfully. If
>>>> whereis
>>>> returns any of
>>>> /usr/local/bin/gnucash
>>>> /usr/local/etc/gnucash
>>>> /usr/local/lib/gnucash
>>>> # then those directories should be be removed. In this case use
>>>> rm -r /usr/local/bin/gnucash
>>>> rm-r /usr/local/etc/gnucash
>>>> rm -r /usr/local/lib/gnucash
>>>> #
>>>> # now open a terminal at the toplevel gnucash-3.0 folder
>>>> mkdir mybuild
>>>> cd mybuild
>>>> cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_AQBANKING=OFF -D
>>>> WITH_OFX=ON ..
>>>> #
>>>> # You will find a full list of the option switches( i.e. -D WITH_...)
>>>> with
>>>> their default values towards the top
>>>> # of the Wiki Build page https://wiki.gnucash.org/wiki/Building. I
>>>> required
>>>> the OFX support for loading
>>>> # OFX files but don't use the AQBANKING support as Australian banks
>>>> currently don't allow direct access.
>>>> # if you are using a database backend e.g. you would require -D
>>>> WITH_SQL=ON
> #
>>>> # cmake should do a lot of checks as it runs and issue sttus messages
>>>> and
>>>> it
>>>> will stop if it encounters any
>>>> # problems. At this point come back with the terminal output and I (if
>>>> it
>>>> is
>>>> failry simple) or perhaps one of
>>>> # the developers can help sort it out. If it succeeds you will get a
>>>> mesaage
>>>> saying that it is writing the
>>>> # make files into the mybuild directory you created above.  Note there
>>>> was
>>>> some discussion of the
>>>> # mybuild directory having to be outside the gnucash-3.0 directory. This
>>>> is
> the case for building the
>>>> # documentation I believe, but is not the case for building GnuCash
>>>> itself.
> # If cmake completes successfully type at the terminal
>>>> make
>>>> # to build Gnucash. If make has any errors come back with the terminal
>>>> output. The only error i had here
>>>> # was with not having uninstalled the previous version fully.  If make
>>>> completes without error then
>>>> #type in the terminal
>>>> sudo make install
>>>> # which will install Gnucash
>>>> whereis gnucash
>>>> # should then return the following
>>>> /usr/local/bin/gnucash
>>>> /usr/local/etc/gnucash
>>>> /usr/local/lib/gnucash.
>>>> 
>>>> 
>>>> 
>>>> If you have previously installed from the menu you should have a menu
>>>> item
>>>> which points to /usr/local/bin/gnucash. If not create a new menu item
>>>> for
>>>> Gnucash and put gnucash %f as the command and if you can locate a
>>>> gnucash
>>>> icon set the icon to point to it. There is one in the sources at
>>>> ~/gnucash-3.0/data/pixmaps/gnucashicon.ico which you could copy to where
>>>> your system installs icons. I think it normally should be copied on
>>>> installation but there have been a few posts about it not being copied
>>>> possibly on Windows and Macs.
>>>> 
>>>> 
>>>> 
>>>> If you have any problems come back on the forum and we will try to sort
>>>> it
>>>> out from there.
>>>> 
>>>> 
>>>> 
>>>> Good luck
>>>> 
>>>> 
>>>> 
>>>> David
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> -----
>>>> David Cousens
>>>> --
>>>> Sent from:
>>>> http://gnucash.1415818.n4.nabble.com/GnuCash-Dev-f1435356.html
>>>> _______________________________________________
>>>> gnucash-devel mailing list
>>>> gnucash-devel at gnucash.org
>>>> https://lists.gnucash.org/mailman/listinfo/gnucash-devel
>>>> 
>>>> 
>>>> 
>>> _______________________________________________
>>> gnucash-devel mailing list
>>> gnucash-devel at gnucash.org
>>> https://lists.gnucash.org/mailman/listinfo/gnucash-devel
>>> .
>>> 
>>> 
>> 
>> David:
>> 
>> No offense taken.  It's not the first time I have had to have someone 
>> hold me by the hand and walk me trough the obvious stuff to build a 
>> program.
>> 
>> I will continue to use the default data structure files.  SQL and I have 
>> a tendency to argue with each other.
>> 
>> I will give your tutorial a try, in a few days.
>> 
>> Question:
>> 
>> I would like to run any builds I do under a different program name, 
>> keeping a stable version for backup use.  Any idea of how much of a hole 
>> I would be digging myself into?  Not as GnuCash but; say MyGnuCashBuild.
>> 
>> My guess is I would need to set up a VM to have different versions on 
>> the same system?  I would probably be better off to use my builds on 
>> this Ubuntu tower and continue with the stable on my laptop, with 
>> separate data files.
>> 
>> --JEffrey Black M.B.A
> 
> I have always liked that idea, but never got around testing whether this is 
> achievable.
> 
> Here are a few possible avenues depending on how far you want to go and how 
> much you like to experiment.
> 
> The easy method is to create a linux softlink named MyGnuCashBuild which 
> points at your locally built gnucash executable.
> If you put that softlink in a directory that's on your path, you can start 
> MyGnuCashBuild directly from the command line.
> 
> But other than the name to use to start gnucash, this doesn't change anything 
> else.
> 
> As you built gnucash yourself, you could also rename the executable file 
> itself directly. I think this is picked up at a couple of places in the GUI, 
> but definitely not everywhere.
> 
> Next if you want to have gnucash appear twice with a different name in your 
> desktop environment's menus you can create a personalized gnucash.desktop file 
> which you can store in $HOME/.local/share/applications. This was explained by 
> me and Colin Law a couple of days ago on the gnucash-devel or gnucash-user 
> mailing list.
> 
> And lastly (totally untested) you could try and configure your gnucash build 
> to use a custom package name by adding -DPACKAGE=MyGnuCashBuild to your cmake 
> invocation and rebuilding. The PACKAGE macro is used in *a lot* of places to 
> determine names of paths, environment variables, dconf settings and so on. If 
> it works (that is if the code never assumes a hardcoded "gnucash" in any of 
> those spots) you will have a completely different application, looking for 
> different settings in dconf and on the file system ensuring you never alter 
> anything that's touched by the stable gnucash. As said, this is totally 
> untested so it may not work at all. I'd be interested in the results though so 
> if you feel like doing the experiment, be sure to report back!

You can also set CMAKE_INSTALL_PREFIX=$HOME/.local and add $HOME/.local/bin to $PATH.

Regards,
John Ralls



More information about the gnucash-devel mailing list