Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Update build system to Bitcoin 0.13.2 #1692

Closed
wants to merge 53 commits into from
Closed

Conversation

schinzelh
Copy link

@schinzelh schinzelh commented Oct 19, 2017

Our build system is missing some upstream commits, catching up with Bitcoin 0.13.2

fanquake and others added 15 commits October 19, 2017 17:49
Mention ARM executables in the release process documentation
(these were introduced in bitcoin#8188).
As well as that Linux tarballs have changed name to contain an
architecture tuple, instead of `linux32`/`linux64`.
Also mention that `-debug` files should not be uploaded (these were
introduced in bitcoin#8167).
These add very simple sanity checks to ensure that the build/host toolchains
have not changed since the last run. If they have, all ids will change and
packages will be rebuilt.

For more complicated usage (like parsing dpkg), HOST_ID_SALT/BUILD_ID_SALT may
be used to introduce arbitrary data to the ids.
In some cases, failed downloads wouldn't trigger a fallback download attempt.
Namely, checksum mismatches.
Checksums were being verified after download, but not again before extraction
Update FreeType, and change the download location to gnu.org. This is
the other official download location listed on freetype.org
@schinzelh schinzelh changed the title [WIP] Update build system to Bitcoin 0.13 [WIP] Update build system to Bitcoin 0.13.2 Oct 19, 2017
@@ -31,7 +31,66 @@ Example item

Example text.

0.12.1 Change log

dash-cli: arguments privacy

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-stdin is not available in Dash as of now. It is introduced in Bitcoin PR bitcoin#7550

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ups, that paragraph slipped in, just wanted to merge the Linux ARM part :)

properly in JSON RPC processing. This is no longer the case. This also affects
the GUI debug console.

C++11 and Python 3

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As far as I remember this is also not done yet in Dash

RPC low-level changes
----------------------

- `gettxoutsetinfo` UTXO hash (`hash_serialized`) has changed. There was a divergence between

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

References bitcoin#7848, which is also not in Dash yet

32-bit and 64-bit platforms, and the txids were missing in the hashed data. This has been
fixed, but this means that the output will be different than from previous versions.

- Full UTF-8 support in the RPC API. Non-ASCII characters in, for example,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't check this, but I'd assume also not done in Dash yet.

-------------------

Various code modernizations have been done. The Dash Core code base has
started using C++11. This means that a C++11-capable compiler is now needed for

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same. As far as I remember, this is not in Dash yet (I have many C++11 related PRs in my pile of backported PRs)

schinzelh and others added 11 commits October 20, 2017 10:00
- create a script to handle split debug. This will also eventually need to check
  targets, and use dsymutil for osx.
- update config.guess/config.sub for bdb for aarch64.
- temporarily disable symbol checks for arm/aarch64
- quit renaming to linux32/linux64 and use the host directly

This also adds a hack to work around an Ubuntu bug in the gcc-multilib package:
https://bugs.launchpad.net/ubuntu/+source/gcc-defaults-armhf-cross/+bug/1347820

The problem is that gcc-multilib conflicts with the aarch toolchain.
gcc-multilib installs a symlink that points
/usr/include/asm -> /usr/include/x86_64-linux-gnu/asm.

Without this link, gcc -m32 can't find asm/errno.h (and others), since
/usr/include/x86_64-linux-gnu isn't in its default include path. But
/usr/include/i386-linux-gnu is (though it doesn't exist on disk).

So work around the problem by linking
/usr/include/i386-linux-gnu/asm -> /usr/include/x86_64-linux-gnu/asm.

The symlink fix is actually quite reasonable, but echoing the password into
sudo is nasty, and should probably be addressed in gitian itself. It makes more
sense to enable passwordless sudo for the build user by default.
C_INCLUDE_PATH and CPLUS_INCLUDE_PATH work globally as though -isystem was used
for each invocation.

Since that changes the build results, force a rebuild of x86 depends by adding
the value to $HOST_ID_SALT.
theuni and others added 3 commits October 23, 2017 11:40
The non-pkg-config case can't use pkg-config to check the version.

Also, make sure that the check is properly guarded in the case of missing
pkg-config macros.
- guard PKG_PROG_PKG_CONFIG with an m4_ifdef. If not building for windows,
  require it
- add nops as necessary in case the ifdef reduces the if/then to nothing
- AC_SUBST some missing _LIBS. These were split out over time, but not all were
  properly substituted. They continued to work if pkg-config is installed
  because it does the AC_SUBST itself
@schinzelh
Copy link
Author

schinzelh commented Oct 23, 2017

@codablock what commit are you refering to? I am adding all build system related stuff.

@codablock
Copy link

5c62fed

@chaeplin
Copy link

chaeplin commented Oct 23, 2017

@schinzelh 2354e50 this one too.

@schinzelh
Copy link
Author

schinzelh commented Oct 23, 2017

@chaeplin Thats ok, it fixes #1455 which introduced a superfluous line break to the original patch - just nitpicking :)

knocte and others added 2 commits October 23, 2017 12:53
Changes the error message from:
./autogen.sh: 9: ./autogen.sh: autoreconf: not found

To:
configuration failed, please install autoconf first
@UdjinM6 UdjinM6 added this to the 12.3 milestone Oct 23, 2017
@UdjinM6 UdjinM6 mentioned this pull request Nov 1, 2017
Oleg Girko and others added 7 commits November 2, 2017 04:55
This fixes build with glibc 2.25 caused by conflict with CHAR_WIDTH macro
from TS 18661-1:2014.

Also, a patch is added to remove some redundant declarations from fcobjs.c
file because they may conflict with include file autogenerated by gperf.

Signed-off-by: Oleg Girko <ol@infoserver.lv>
Setting PKG_CONFIG_SYSROOT_DIR environment variable to "/"
for building Qt makes pkgconf behave strange
(remove "/" prefix instead of adding it).

And it makes no sense to set this variable for old pkgconfig anyway.

Signed-off-by: Oleg Girko <ol@infoserver.lv>
This is necessary on FreeBSD and MacOSX, at least.

See bitcoin#8834 (comment)
@UdjinM6
Copy link

UdjinM6 commented Dec 19, 2017

Need rebase

EDIT: postponing this, @codablock probably has all this covered in his set of backports

@codablock
Copy link

Just verified that all backports PRs/commits from this PR are included in the 0.14 backports. We can probably close this one.

@UdjinM6
Copy link

UdjinM6 commented Jan 29, 2018

@codablock looks like c6c2c4e and 3adac27 are not part of develop though. And btw bitcoin fixed fontconfig issue via this patch bitcoin@3498a8d (2.12.6 was released later).

@codablock
Copy link

Missed these as I only used the list from the PR description. Cherry-picked them into #1884

@UdjinM6
Copy link

UdjinM6 commented Jan 31, 2018

Closing in fav of all already backported patches and #1884

@UdjinM6 UdjinM6 closed this Jan 31, 2018
@UdjinM6 UdjinM6 removed this from the 12.3 milestone Jan 31, 2018
@UdjinM6 UdjinM6 deleted the update_depends branch February 17, 2018 13:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet