gitian: Windows 64 bit support #3560

pull laanwj wants to merge 5 commits into bitcoin:master from laanwj:2014_01_win64 changing 15 files +498 −387
  1. laanwj commented at 7:34 PM on January 20, 2014: member
    • Build a 64 bit version of all dependencies
    • Show 32/64 bit version in "About..." for x86
    • Export 64-bit .exes and installer from gitian win build

    I've done limited testing on the resulting executable; seems to work fine. I haven't tested the 64 bit installer.

    Closes #3544.

  2. wtogami commented at 8:47 AM on January 21, 2014: contributor

    Planning on leaving the files named *win32.yml? Needs rebase.

  3. laanwj commented at 9:13 AM on January 21, 2014: member

    Rebased and renamed.

  4. laanwj commented at 10:30 AM on January 21, 2014: member

    Hm the installer seems to work, but for 64 bit is called:

    build/out/64/bitcoin-0.8.99-win32-setup.exe
    

    This should obviously be win64.

    I also wonder whether the 64-bit installler picks the Program Files instead of Program Files (x86) correctly when installed on a 64-bit system. I suppose not without further work on the installer.

    Edit: this looks helpful http://bojan-komazec.blogspot.nl/2011/10/nsis-installer-for-64-bit-windows.html

  5. wtogami commented at 11:10 AM on January 21, 2014: contributor

    Successfully built all deps except qt-win.yml fails with not enough space available within the VM. Did you use non-defaults in creating a larger VM disk?

    ./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/qt-win.yml

    • tar xzf /home/ubuntu/build/qt-everywhere-opensource-src-5.2.0.tar.gz tar: qt-everywhere-opensource-src-5.2.0/qtwebkit/Source/WebCore/rendering/svg/SVGInlineTextBox.cpp: Wrote only 3584 of 10240 bytes tar: qt-everywhere-opensource-src-5.2.0/qtwebkit/Source/WebCore/rendering/svg/RenderSVGForeignObject.cpp: Cannot write: No space left on device
  6. laanwj commented at 11:54 AM on January 21, 2014: member

    I used the default, I see that the default VM image size changed 10GB in https://github.com/devrandom/gitian-builder/commit/95e09ae608a34f73a292c9df9e2d0e1c238236f9

  7. gitian: Windows 64 bit support
    - Build a 64 bit version of all dependencies
    - Show 32/64 bit version in "About..." for x86
    - Export 64-bit .exes and installer from gitian build
    f622232bcf
  8. laanwj commented at 1:29 PM on January 21, 2014: member

    Ok, the installer should be sane now.

    It shows 32/64-bit in the window caption, picks the right program files directory, and errors out when trying to install the 64-bit version on a 32-bit system.

  9. Adapt Windows installer for 64 bit 2f87b38e2e
  10. build: Add bitcoin-cli.exe to installer 39db27ca35
  11. build: Package docs/ and don't package source.
    No-one uses the installer then builds from source.
    Closes #2819.
    6c980c7d31
  12. luke-jr commented at 5:45 PM on January 21, 2014: member

    I take it the installer itself is still 32-bit? Might be ideal to make it 64-bit as well, so people can run without WoW64...

  13. in src/qt/utilitydialog.cpp:None in 6c980c7d31 outdated
      40 | +         */
      41 | +#if defined(__x86_64__)
      42 | +        version += " (64-bit)";
      43 | +#elif defined(__i386__ )
      44 | +        version += " (32-bit)";
      45 | +#endif
    


    luke-jr commented at 5:45 PM on January 21, 2014:

    I wonder if there'd be a better way to just name the architecture, regardless of what it is?


    laanwj commented at 6:53 PM on January 21, 2014:

    Well, this is mostly aimed at windows users, putting a host tuple wouldn't be more enlightening for them.


    Diapolo commented at 9:08 AM on January 22, 2014:

    Maybe x86 / x64, but that is even more confusing?


    laanwj commented at 9:21 AM on January 22, 2014:

    In the installer I use the (32-bit)/(64-bit) convention, so using the same convention here would make sense.

    Sure, we could use x86/x64 but then everything would need to be changed, and I don't see much advantage. People that compile and run Bitcoin on 'other' architectures know what they're doing and don't need to be reminded in the About: dialog.

    If this is really a point of contention and people are really opposed to x86-only 'features' outside of Windows we can make it #ifdef WIN32. End of bike-shedding :)


    wtogami commented at 9:41 AM on January 22, 2014:

    The two ARM users might want a version label. =)

    Nice addition.


    luke-jr commented at 7:06 PM on January 22, 2014:

    x86_32 and x86_64 would probably be ideal, but let's not shed-paint it... x86/x64 is definitely wrong, though! There is no such thing as x64.

  14. laanwj commented at 6:56 PM on January 21, 2014: member

    @luke-jr There is no working 64-bit version of NSIS afaik, and if it exists it's way too recent to be in Ubuntu 12.04. Having a 32-bit installer executable has the added advantage that it's possible to give a sensible error to people running the 64-bit installer on a 32-bit system.

  15. build: Change package name to Bitcoin Core
    Affects the name of the package as shown in installers
    and such.
    
    Also rebrand the windows installer.
    fe14e8d790
  16. luke-jr commented at 6:59 PM on January 21, 2014: member

    I guess non-WoW64 users are rare enough they can just use the ZIP

  17. BitcoinPullTester commented at 7:29 PM on January 21, 2014: none

    Automatic sanity-testing: PASSED, see http://jenkins.bluematt.me/pull-tester/fe14e8d790f05beb6d01bb380fea873cec5de3ba for binaries and test log. This test script verifies pulls every time they are updated. It, however, dies sometimes and fails to test properly. If you are waiting on a test, please check timestamps to verify that the test.log is moving at http://jenkins.bluematt.me/pull-tester/current/ Contact BlueMatt on freenode if something looks broken.

  18. in contrib/gitian-descriptors/qt-win.yml:None in fe14e8d790
      71 | +
      72 | +    # as zip stores file timestamps, use faketime to intercept stat calls to set dates for all files to reference date
      73 | +    export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
      74 | +    zip -r $OUTDIR/qt-win${BITS}-5.2.0-gitian-r1.zip *
      75 | +    unset LD_PRELOAD
      76 | +    unset FAKETIME
    


    wtogami commented at 7:12 AM on January 22, 2014:

    Please add the rm -f ?


    laanwj commented at 7:19 AM on January 22, 2014:

    As it works fine with the default configuration of gitian (which has a 10GB disk), I'd like to keep it like this. It's useful to be able to ssh and inspect the intermediate files in the VM.

  19. Diapolo commented at 9:09 AM on January 22, 2014: none

    @luke-jr Every x64 Windows has WOW64 layer AFAIK.

  20. int03h commented at 12:37 PM on January 22, 2014: none

    WOW64 is the x86 emulator that allows 32-bit Windows-based applications to run seamlessly on 64-bit Windows. WOW64 is provided with the operating system and does not have to be explicitly enabled. For more information, seeWOW64 Implementation Detailshttp://msdn.microsoft.com/en-us/library/windows/desktop/aa384274(v=vs.85).aspx.

    The system isolates 32-bit applications from 64-bit applications, which includes preventing file and registry collisions. Console, GUI, and service applications are supported. The system provides interoperability across the 32/64 boundary for scenarios such as cut and paste and COM. However, 32-bit processes cannot load 64-bit DLLs for execution, and 64-bit processes cannot load 32-bit DLLs for execution. This restriction does not apply to DLLs loaded as data files or image resource files; for more information, see LoadLibraryExhttp://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx.

    A 32-bit application can detect whether it is running under WOW64 by calling the IsWow64Processhttp://msdn.microsoft.com/en-us/library/windows/desktop/ms684139(v=vs.85).aspx function. The application can obtain additional information about the processor by using the GetNativeSystemInfohttp://msdn.microsoft.com/en-us/library/windows/desktop/ms724340(v=vs.85).aspx function. Note that 64-bit Windows does not support running 16-bit Windows-based applications. The primary reason is that handles have 32 significant bits on 64-bit Windows. Therefore, handles cannot be truncated and passed to 16-bit applications without loss of data. Attempts to launch 16-bit applications fail with the following error:

    From: P. Kaufmann [mailto:notifications@github.com] Sent: Wednesday, January 22, 2014 4:10 AM To: bitcoin/bitcoin Subject: Re: [bitcoin] gitian: Windows 64 bit support (#3560) @luke-jrhttps://github.com/luke-jr Every x64 Windows has WOW64 layer AFAIK.

    — Reply to this email directly or view it on GitHubhttps://github.com/bitcoin/bitcoin/pull/3560#issuecomment-33003972.

  21. laanwj commented at 12:57 PM on January 22, 2014: member

    Right, let's close the WOW64 discussion and go back to testing the pull. Seeing how long Windows kept around support for 16-bit applications, I'm not really worried about 32-bit support being dropped any time soon in the default installs.

  22. luke-jr commented at 7:07 PM on January 22, 2014: member

    Well, WoW64 is already optional on at least one OS, but again we still have the installerless ZIP.

  23. sipa commented at 10:00 PM on January 22, 2014: member

    This shed color is good enough.

  24. laanwj referenced this in commit 6746787a0c on Jan 23, 2014
  25. laanwj merged this on Jan 23, 2014
  26. laanwj closed this on Jan 23, 2014

  27. laanwj deleted the branch on Apr 9, 2014
  28. DrahtBot locked this on Sep 8, 2021

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-13 15:16 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me