Bitcoin Forum
October 09, 2024, 01:44:42 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 [2]  All
  Print  
Author Topic: Proposal: make it so anybody could easily compile the client  (Read 2589 times)
wumpus
Hero Member
*****
qt
Offline Offline

Activity: 812
Merit: 1022

No Maps for These Territories


View Profile
September 19, 2011, 10:02:28 AM
 #21

Developers. Do just this step one: include all the source into the main branch. QT includes, what have you. All. No downloads required.
This is not possible license-wise. You can externally release a tarball with all source code and dependencies, if you make it clear that it includes project+dependencies.

However, including the source and headers of entire frameworks such as boost and Qt into the git branch would be extremely unwise and also wasteful of space. LGPL and GPL allow linking against, but not copying the files into your project, except by making the entire project (L)GPL.

If you don't believe that, name one project that does this...

Quote
But now I am confused, which version to work with. Is your bitcoin-qt going to be the new official master branch as is? Or will there be some kind of merging process?
It's in the process of being merged.

Bitcoin Core developer [PGP] Warning: For most, coin loss is a larger risk than coin theft. A disk can die any time. Regularly back up your wallet through FileBackup Wallet to an external storage or the (encrypted!) cloud. Use a separate offline wallet for storing larger amounts.
HostFat
Staff
Legendary
*
Offline Offline

Activity: 4256
Merit: 1208


I support freedom of choice


View Profile WWW
September 19, 2011, 10:09:39 AM
 #22

Is it possible to make a bat that uses wget to download all sources? Grin

NON DO ASSISTENZA PRIVATA - http://hostfatmind.com
Alex Zee (OP)
Member
**
Offline Offline

Activity: 112
Merit: 10



View Profile WWW
September 19, 2011, 10:11:04 AM
 #23

Ok, what I will do is create a separate package with a single addition - a "windows" folder where I will put everything required to build it on Windows.

It's in the process of being merged.

That's kinda vague Smiley

When do you guys plan to make the official 0.5 branch?

BTC Monitor - systray price ticker
RipTalk.org - new Ripple forum
Remember remember the 5th of November
Legendary
*
Offline Offline

Activity: 1862
Merit: 1011

Reverse engineer from time to time


View Profile
September 19, 2011, 10:41:21 AM
 #24

I am glad to see a person who thinks like me.

+1 AlexZ!

BTC:1AiCRMxgf1ptVQwx6hDuKMu4f7F27QmJC2
Furyan
Full Member
***
Offline Offline

Activity: 175
Merit: 102



View Profile
September 20, 2011, 12:06:40 PM
 #25

Is it possible to make a bat that uses wget to download all sources? Grin

This is what my pushpool/bitcoin installer does. I can set up a new (Linux) pool server in minutes without having any of the dependencies on the machine.  No, I won't share it, it's a mess and is quite brittle Smiley

License questions aside, it can be difficult to include all the required dependencies for a project, particularly anything built in C++ on Windows.  Windows/MSVC runtime has a *&(@$ load of library dependencies it doesn't advertise that can bite you hard when deploying an application.  The redistributables do a good job of addressing 99.8% of the problems so usually just distributing the msvc redistributables will do the job, but then there are the edge cases...

Qt's full build is over 30 GB.  The core libraries (release) are only a couple hundred kb, but debug ones are about 10gb total.  Any developer will need the debug ones if they want to do their own compiling without worrying about dependencies.  I know of no place currently that will host binary lib drops that big, so cuts/choices would have to be made - a Qt GUI project could include only the QtGui.dll and QtGuid.dll files, which amounts to about 10 MB. But you wouldn't be able to link/include functionality from any other Qt libraries.

The situation is much simpler with the .NET Framework on Windows. It includes everything, and because you can run the framework installer as part of a setup package, you don't even need to include the framework, just include the redistributable installer.  And because with .NET, a dependency list is as simple as a list of DLL's you drop in your exe dir, including non-Framework libraries is trivial.

Remember, all this is licensing aside.  Redistribution is a hot topic in software licensing and you can get burned pretty badly by it if you're not careful.
Alex Zee (OP)
Member
**
Offline Offline

Activity: 112
Merit: 10



View Profile WWW
September 20, 2011, 07:17:06 PM
 #26

Well, I finally managed to create a stand-alone 1-click Windows build.

You can download it here (25 Mb):

http://qbizy.com/bitcoin-one-click-win-build-0.4.0rc2.7z

It's based on the latest official version (0.4.0 RC 2).

You will need Visual Studio 2005 to build it (if you'll manage to compile it in later versions - please post here).

--

The source code is not modified in any way, except one line in the "util.h" - I've added "typedef int pid_t;" because it didn't recognize this type.

The code that uses it should probably be #ifdef'ed with "__WXMSW__". Developers, please fix it!

Another thing - the "bitcoin.ico" converted to uncompressed format so VS's resource compiler would understand it.

Also, developers, please put the updated icon into the main distribution:

http://qbizy.com/bitcoin-vs2005-compatible-ico.zip

--

No UPNP yet. Is it important? No daemon too. Latest OpenSSL 1.0.0e is used instead of 1.0.0d.

EXE file size is 6 instead of 11 Mb.

Still tries to load "WMIApSrv" driver, same as the official client. Need to find how to turn this off...

To save space only the essential dependencies were included. For example, no debug libraries. All the added Windows stuff is in the single "windows" folder.

Comments and ideas appreciated.

BTC Monitor - systray price ticker
RipTalk.org - new Ripple forum
speeder
Hero Member
*****
Offline Offline

Activity: 994
Merit: 501


PredX - AI-Powered Prediction Market


View Profile
September 20, 2011, 07:24:20 PM
 #27

+1 to Alex Zee point.


I never fiddled with the sources myself, because my time is too precious to waste trying to compile stuff.

casascius
Mike Caldwell
VIP
Legendary
*
Offline Offline

Activity: 1386
Merit: 1140


The Casascius 1oz 10BTC Silver Round (w/ Gold B)


View Profile WWW
September 21, 2011, 04:50:07 AM
 #28

I too am frustrated by difficulty getting this to compile (on Linux).

I too want to contribute a little here and there.  Even if the README was a bit of a HOWTO that said go get this, go get that, I'd do it.

I am hoping that someone will be able to walk me through getting past whatever is throwing me for a loop.  It looks related to OpenSSL.

http://pastebin.com/wYDFLzds

Companies claiming they got hacked and lost your coins sounds like fraud so perfect it could be called fashionable.  I never believe them.  If I ever experience the misfortune of a real intrusion, I declare I have been honest about the way I have managed the keys in Casascius Coins.  I maintain no ability to recover or reproduce the keys, not even under limitless duress or total intrusion.  Remember that trusting strangers with your coins without any recourse is, as a matter of principle, not a best practice.  Don't keep coins online. Use paper or hardware wallets instead.
nhodges
Sr. Member
****
Offline Offline

Activity: 322
Merit: 251


View Profile
September 21, 2011, 05:16:39 AM
 #29

Well, I finally managed to create a stand-alone 1-click Windows build.

You can download it here (25 Mb):

http://qbizy.com/bitcoin-one-click-win-build-0.4.0rc2.7z

It's based on the latest official version (0.4.0 RC 2).

You will need Visual Studio 2005 to build it (if you'll manage to compile it in later versions - please post here).

--

The source code is not modified in any way, except one line in the "util.h" - I've added "typedef int pid_t;" because it didn't recognize this type.

The code that uses it should probably be #ifdef'ed with "__WXMSW__". Developers, please fix it!

Another thing - the "bitcoin.ico" converted to uncompressed format so VS's resource compiler would understand it.

Also, developers, please put the updated icon into the main distribution:

http://qbizy.com/bitcoin-vs2005-compatible-ico.zip

--

No UPNP yet. Is it important? No daemon too. Latest OpenSSL 1.0.0e is used instead of 1.0.0d.

EXE file size is 6 instead of 11 Mb.

Still tries to load "WMIApSrv" driver, same as the official client. Need to find how to turn this off...

To save space only the essential dependencies were included. For example, no debug libraries. All the added Windows stuff is in the single "windows" folder.

Comments and ideas appreciated.


You can submit a pull request to the core project on github, I believe.

Furyan
Full Member
***
Offline Offline

Activity: 175
Merit: 102



View Profile
September 21, 2011, 10:18:59 PM
 #30

I too am frustrated by difficulty getting this to compile (on Linux).

I too want to contribute a little here and there.  Even if the README was a bit of a HOWTO that said go get this, go get that, I'd do it.

I am hoping that someone will be able to walk me through getting past whatever is throwing me for a loop.  It looks related to OpenSSL.

http://pastebin.com/wYDFLzds

makefile.unix?  What OS are you compiling on?
casascius
Mike Caldwell
VIP
Legendary
*
Offline Offline

Activity: 1386
Merit: 1140


The Casascius 1oz 10BTC Silver Round (w/ Gold B)


View Profile WWW
September 22, 2011, 09:57:54 PM
 #31

I finally got it to work, my issue was that I had two different versions of openssl, one with includes at /usr/local/include/openssl and the other with /usr/include/openssl, and they were managing to include one another's include files due to the way the include search path apparently works.  Would yield screenfuls of compile errors all related to ECDSA.  So removing one of them solved the problem.

SO yeah, that's not the fault of the Bitcoin project.  But having a list of the dependencies and the typical instructions to install them (either HTTP URL, git clone path, apt-get package name, etc.) in the README wouldn't hurt.

Companies claiming they got hacked and lost your coins sounds like fraud so perfect it could be called fashionable.  I never believe them.  If I ever experience the misfortune of a real intrusion, I declare I have been honest about the way I have managed the keys in Casascius Coins.  I maintain no ability to recover or reproduce the keys, not even under limitless duress or total intrusion.  Remember that trusting strangers with your coins without any recourse is, as a matter of principle, not a best practice.  Don't keep coins online. Use paper or hardware wallets instead.
ShadowOfHarbringer
Legendary
*
Offline Offline

Activity: 1470
Merit: 1006


Bringing Legendary Har® to you since 1952


View Profile
September 28, 2011, 05:18:24 AM
 #32


I've tried once to compile it. Gave up.

I don't understand why can't you bundle all the needed libraries and distribute the complete source code with the client?

1) You will get more trust. What's the point of doing code review if you can't compile a binary version from it?

2) You will get more developers involved. I, personally, can't spend several days, figuring out just how to compile it. But if it were a matter of loading it into VS and hitting Build, I might work on small features or optimizations.

And the most annoying is that I don't see any rational reasons not to do it! Why hasn't it been done from the beginning? Are you trying to impose some sort of an artificial "entry barrier"?


P.S. I am specifically talking about Windows.

It is more difficult to compile anything on windows by default.
If you want to EASILY compile things, move to an Open Source UNIX-like system (such as Linux), which is designed for ease of compilation by default.

However, having a proper ./configure script on UNIX/Linux wouldn't hurt. For now it is not possible to do the following on the Bitcoin client sources:

Code:
./configure
make
make install

Which is a little annoying. Other then that, compilation on UNIX is not problematic.

Pages: « 1 [2]  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!