diff mbox

[for-next,2/3] package/google-breakpad: switch to the new git repository

Message ID 1480263400-29605-2-git-send-email-romain.naour@gmail.com
State Accepted
Headers show

Commit Message

Romain Naour Nov. 27, 2016, 4:16 p.m. UTC
Google-breakpad moved to a new git repository last year and the old svn
repository has been deleted. So, the Buildroot archive mirror is used.

svn: E160013: Unable to connect to a repository at URL 'http://google-breakpad.googlecode.com/svn/trunk'
svn: E160013: '/svn/trunk' path not found
--2016-11-27 10:42:34--  http://sources.buildroot.net/google-breakpad-1373.tar.gz

Swith to the git repository using the git hash corresponding to the
1373 svn revision. But there is an issue with the third parties...
Some of them are not bundled with Google-breakpad or as git submodule.
Even worst, the google-breakpad source code use #include
"third_party/lss" directly, so we can't provide missing third parties
with an external package.

That's why the linux-syscall-support package was added to Buildroot,
it provide the missing linux_syscall_support.h file which is must be
copied to src/third_party/lss/ in the Google-breakpad sources.

Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Pascal Huerst <pascal.huerst@gmail.com>
Cc: Frank Hunleth <fhunleth@troodon-software.com>
---
 package/google-breakpad/Config.in            |  3 ++-
 package/google-breakpad/google-breakpad.hash |  2 ++
 package/google-breakpad/google-breakpad.mk   | 25 +++++++++++++++++++++----
 3 files changed, 25 insertions(+), 5 deletions(-)
 create mode 100644 package/google-breakpad/google-breakpad.hash

Comments

Romain Naour Nov. 28, 2016, 7:37 p.m. UTC | #1
Hi All,

Le 27/11/2016 à 17:16, Romain Naour a écrit :
> Google-breakpad moved to a new git repository last year and the old svn
> repository has been deleted. So, the Buildroot archive mirror is used.
> 
> svn: E160013: Unable to connect to a repository at URL 'http://google-breakpad.googlecode.com/svn/trunk'
> svn: E160013: '/svn/trunk' path not found
> --2016-11-27 10:42:34--  http://sources.buildroot.net/google-breakpad-1373.tar.gz
> 
> Swith to the git repository using the git hash corresponding to the
> 1373 svn revision. But there is an issue with the third parties...
> Some of them are not bundled with Google-breakpad or as git submodule.
> Even worst, the google-breakpad source code use #include
> "third_party/lss" directly, so we can't provide missing third parties
> with an external package.
> 
> That's why the linux-syscall-support package was added to Buildroot,
> it provide the missing linux_syscall_support.h file which is must be
> copied to src/third_party/lss/ in the Google-breakpad sources.

Since we want a specific version of linux_syscall_support.h which is required by
Google-breakpad, linux_syscall_support.h may be added by a patch instead of
using an external package (linux-syscall-support) ?
The problem of using a patch is that we have to update it for each
Google-breakpad version bump.

Any suggestion is welcome.

Best regards,
Romain

> 
> Signed-off-by: Romain Naour <romain.naour@gmail.com>
> Cc: Pascal Huerst <pascal.huerst@gmail.com>
> Cc: Frank Hunleth <fhunleth@troodon-software.com>
> ---
>  package/google-breakpad/Config.in            |  3 ++-
>  package/google-breakpad/google-breakpad.hash |  2 ++
>  package/google-breakpad/google-breakpad.mk   | 25 +++++++++++++++++++++----
>  3 files changed, 25 insertions(+), 5 deletions(-)
>  create mode 100644 package/google-breakpad/google-breakpad.hash
> 
> diff --git a/package/google-breakpad/Config.in b/package/google-breakpad/Config.in
> index c800974..5c3f2e8 100644
> --- a/package/google-breakpad/Config.in
> +++ b/package/google-breakpad/Config.in
> @@ -10,6 +10,7 @@ config BR2_PACKAGE_GOOGLE_BREAKPAD
>  	depends on BR2_TOOLCHAIN_HAS_THREADS
>  	depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC)
>  	depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
> +	select BR2_PACKAGE_LINUX_SYSCALL_SUPPORT
>  	help
>  	  Google-Breakpad is a library and tool suite that allows you
>  	  to distribute an application to users with compiler-provided
> @@ -29,7 +30,7 @@ config BR2_PACKAGE_GOOGLE_BREAKPAD
>  	  needed to extract the debugging symbols from target
>  	  binaries.
>  
> -	  http://code.google.com/p/google-breakpad/
> +	  https://chromium.googlesource.com/breakpad/breakpad
>  
>  comment "google-breakpad requires a glibc or uClibc toolchain w/ wchar, thread, C++ enabled"
>  	depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
> diff --git a/package/google-breakpad/google-breakpad.hash b/package/google-breakpad/google-breakpad.hash
> new file mode 100644
> index 0000000..b66f43d
> --- /dev/null
> +++ b/package/google-breakpad/google-breakpad.hash
> @@ -0,0 +1,2 @@
> +# Locally calculated
> +sha256 25466aac60b83b231ce03d1540b1f8528c02ddaa76b08aed779084b145f07516 google-breakpad-7883a8308274cc37847e4ff3b995a327588fe034.tar.gz
> diff --git a/package/google-breakpad/google-breakpad.mk b/package/google-breakpad/google-breakpad.mk
> index 7a88c76..0805c25 100644
> --- a/package/google-breakpad/google-breakpad.mk
> +++ b/package/google-breakpad/google-breakpad.mk
> @@ -4,16 +4,33 @@
>  #
>  ################################################################################
>  
> -GOOGLE_BREAKPAD_VERSION = 1373
> -GOOGLE_BREAKPAD_SITE = http://google-breakpad.googlecode.com/svn/trunk
> -GOOGLE_BREAKPAD_SITE_METHOD = svn
> +GOOGLE_BREAKPAD_VERSION = 7883a8308274cc37847e4ff3b995a327588fe034
> +GOOGLE_BREAKPAD_SITE = https://chromium.googlesource.com/breakpad/breakpad
> +GOOGLE_BREAKPAD_SITE_METHOD = git
>  GOOGLE_BREAKPAD_CONF_OPTS = --disable-processor --disable-tools
>  # Only a static library is installed
>  GOOGLE_BREAKPAD_INSTALL_TARGET = NO
>  GOOGLE_BREAKPAD_INSTALL_STAGING = YES
>  GOOGLE_BREAKPAD_LICENSE = BSD-3c
>  GOOGLE_BREAKPAD_LICENSE_FILES = LICENSE
> -GOOGLE_BREAKPAD_DEPENDENCIES = host-google-breakpad
> +GOOGLE_BREAKPAD_DEPENDENCIES = host-google-breakpad linux-syscall-support
> +
> +HOST_GOOGLE_BREAKPAD_DEPENDENCIES = host-linux-syscall-support 
> +
> +# Avoid using depot-tools to download this file.
> +define HOST_GOOGLE_BREAKPAD_LSS
> +	$(INSTALL) -D -m 0644 \
> +		$(HOST_DIR)/usr/include/linux_syscall_support.h \
> +		$(@D)/src/third_party/lss/linux_syscall_support.h
> +endef
> +HOST_GOOGLE_BREAKPAD_POST_EXTRACT_HOOKS += HOST_GOOGLE_BREAKPAD_LSS
> +
> +define GOOGLE_BREAKPAD_LSS
> +	$(INSTALL) -D -m 0644 \
> +		$(STAGING_DIR)/usr/include/linux_syscall_support.h \
> +		$(@D)/src/third_party/lss/linux_syscall_support.h
> +endef
> +GOOGLE_BREAKPAD_POST_EXTRACT_HOOKS += GOOGLE_BREAKPAD_LSS
>  
>  define GOOGLE_BREAKPAD_EXTRACT_SYMBOLS
>  	$(EXTRA_ENV) package/google-breakpad/gen-syms.sh $(STAGING_DIR) \
>
Thomas Petazzoni Dec. 17, 2016, 3:33 p.m. UTC | #2
Hello,

On Sun, 27 Nov 2016 17:16:39 +0100, Romain Naour wrote:
> Google-breakpad moved to a new git repository last year and the old svn
> repository has been deleted. So, the Buildroot archive mirror is used.
> 
> svn: E160013: Unable to connect to a repository at URL 'http://google-breakpad.googlecode.com/svn/trunk'
> svn: E160013: '/svn/trunk' path not found
> --2016-11-27 10:42:34--  http://sources.buildroot.net/google-breakpad-1373.tar.gz
> 
> Swith to the git repository using the git hash corresponding to the
> 1373 svn revision. But there is an issue with the third parties...
> Some of them are not bundled with Google-breakpad or as git submodule.
> Even worst, the google-breakpad source code use #include
> "third_party/lss" directly, so we can't provide missing third parties
> with an external package.
> 
> That's why the linux-syscall-support package was added to Buildroot,
> it provide the missing linux_syscall_support.h file which is must be
> copied to src/third_party/lss/ in the Google-breakpad sources.
> 
> Signed-off-by: Romain Naour <romain.naour@gmail.com>
> Cc: Pascal Huerst <pascal.huerst@gmail.com>
> Cc: Frank Hunleth <fhunleth@troodon-software.com>
> ---
>  package/google-breakpad/Config.in            |  3 ++-
>  package/google-breakpad/google-breakpad.hash |  2 ++
>  package/google-breakpad/google-breakpad.mk   | 25 +++++++++++++++++++++----
>  3 files changed, 25 insertions(+), 5 deletions(-)
>  create mode 100644 package/google-breakpad/google-breakpad.hash

Applied to master, thanks.

Thomas
Bernd Kuhls May 28, 2017, 6:14 p.m. UTC | #3
Am Sun, 27 Nov 2016 17:16:39 +0100 schrieb Romain Naour:

> +GOOGLE_BREAKPAD_DEPENDENCIES = host-google-breakpad linux-syscall-
support
> +
> +HOST_GOOGLE_BREAKPAD_DEPENDENCIES = host-linux-syscall-support 
> +
> +# Avoid using depot-tools to download this file.
> +define HOST_GOOGLE_BREAKPAD_LSS
> +	$(INSTALL) -D -m 0644 \
> +		$(HOST_DIR)/usr/include/linux_syscall_support.h \
> +		$(@D)/src/third_party/lss/linux_syscall_support.h
> +endef
> +HOST_GOOGLE_BREAKPAD_POST_EXTRACT_HOOKS += HOST_GOOGLE_BREAKPAD_LSS

Hi,

I do not know whether I found a bug or not while currently testing an 
allyesconfig with "make legal-info" only.

In this case the package linux-syscall-support was not installed to 
staging, therefore linux_syscall_support.h cannot be installed by 
_POST_EXTRACT_HOOKS breaking the google-breakpad-legal-info target:

/usr/bin/install: cannot stat '/home/bernd/buildroot/buildroot/output/
host/usr/i586-buildroot-linux-uclibc/sysroot/usr/include/
linux_syscall_support.h': No such file or directory

Is the legal-info target meant to be used that way, this means without 
building the package first, or do the packages have to be built before?
In this case the problem would not exist.

Regards, Bernd
Romain Naour May 28, 2017, 6:51 p.m. UTC | #4
Hi Bernd,

Le 28/05/2017 à 20:14, Bernd Kuhls a écrit :
> Am Sun, 27 Nov 2016 17:16:39 +0100 schrieb Romain Naour:
> 
>> +GOOGLE_BREAKPAD_DEPENDENCIES = host-google-breakpad linux-syscall-
> support
>> +
>> +HOST_GOOGLE_BREAKPAD_DEPENDENCIES = host-linux-syscall-support 
>> +
>> +# Avoid using depot-tools to download this file.
>> +define HOST_GOOGLE_BREAKPAD_LSS
>> +	$(INSTALL) -D -m 0644 \
>> +		$(HOST_DIR)/usr/include/linux_syscall_support.h \
>> +		$(@D)/src/third_party/lss/linux_syscall_support.h
>> +endef
>> +HOST_GOOGLE_BREAKPAD_POST_EXTRACT_HOOKS += HOST_GOOGLE_BREAKPAD_LSS
> 
> Hi,
> 
> I do not know whether I found a bug or not while currently testing an 
> allyesconfig with "make legal-info" only.
> 
> In this case the package linux-syscall-support was not installed to 
> staging, therefore linux_syscall_support.h cannot be installed by 
> _POST_EXTRACT_HOOKS breaking the google-breakpad-legal-info target:
> 
> /usr/bin/install: cannot stat '/home/bernd/buildroot/buildroot/output/
> host/usr/i586-buildroot-linux-uclibc/sysroot/usr/include/
> linux_syscall_support.h': No such file or directory
> 
> Is the legal-info target meant to be used that way, this means without 
> building the package first, or do the packages have to be built before?
> In this case the problem would not exist.

Thanks for the report, I reproduced the bug here.

You're right, you can generate a defconfig and then extract legal-info without
building at all.

It seems I used the wrong hook to copy the linux_syscall_support.h file.
What do you think about PRE_CONFIGURE instead ?

Best regards,
Romain

> 
> Regards, Bernd
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
Thomas Petazzoni May 28, 2017, 8:17 p.m. UTC | #5
Hello,

On Sun, 28 May 2017 20:14:36 +0200, Bernd Kuhls wrote:

> I do not know whether I found a bug or not while currently testing an 
> allyesconfig with "make legal-info" only.
> 
> In this case the package linux-syscall-support was not installed to 
> staging, therefore linux_syscall_support.h cannot be installed by 
> _POST_EXTRACT_HOOKS breaking the google-breakpad-legal-info target:
> 
> /usr/bin/install: cannot stat '/home/bernd/buildroot/buildroot/output/
> host/usr/i586-buildroot-linux-uclibc/sysroot/usr/include/
> linux_syscall_support.h': No such file or directory
> 
> Is the legal-info target meant to be used that way, this means without 
> building the package first, or do the packages have to be built before?
> In this case the problem would not exist.

I confirm that we should be able to run "make legal-info" without doing
a build first. So, something like:

 $ make foo_defconfig
 $ make legal-info

is supposed to work.

Thomas
diff mbox

Patch

diff --git a/package/google-breakpad/Config.in b/package/google-breakpad/Config.in
index c800974..5c3f2e8 100644
--- a/package/google-breakpad/Config.in
+++ b/package/google-breakpad/Config.in
@@ -10,6 +10,7 @@  config BR2_PACKAGE_GOOGLE_BREAKPAD
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC)
 	depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
+	select BR2_PACKAGE_LINUX_SYSCALL_SUPPORT
 	help
 	  Google-Breakpad is a library and tool suite that allows you
 	  to distribute an application to users with compiler-provided
@@ -29,7 +30,7 @@  config BR2_PACKAGE_GOOGLE_BREAKPAD
 	  needed to extract the debugging symbols from target
 	  binaries.
 
-	  http://code.google.com/p/google-breakpad/
+	  https://chromium.googlesource.com/breakpad/breakpad
 
 comment "google-breakpad requires a glibc or uClibc toolchain w/ wchar, thread, C++ enabled"
 	depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
diff --git a/package/google-breakpad/google-breakpad.hash b/package/google-breakpad/google-breakpad.hash
new file mode 100644
index 0000000..b66f43d
--- /dev/null
+++ b/package/google-breakpad/google-breakpad.hash
@@ -0,0 +1,2 @@ 
+# Locally calculated
+sha256 25466aac60b83b231ce03d1540b1f8528c02ddaa76b08aed779084b145f07516 google-breakpad-7883a8308274cc37847e4ff3b995a327588fe034.tar.gz
diff --git a/package/google-breakpad/google-breakpad.mk b/package/google-breakpad/google-breakpad.mk
index 7a88c76..0805c25 100644
--- a/package/google-breakpad/google-breakpad.mk
+++ b/package/google-breakpad/google-breakpad.mk
@@ -4,16 +4,33 @@ 
 #
 ################################################################################
 
-GOOGLE_BREAKPAD_VERSION = 1373
-GOOGLE_BREAKPAD_SITE = http://google-breakpad.googlecode.com/svn/trunk
-GOOGLE_BREAKPAD_SITE_METHOD = svn
+GOOGLE_BREAKPAD_VERSION = 7883a8308274cc37847e4ff3b995a327588fe034
+GOOGLE_BREAKPAD_SITE = https://chromium.googlesource.com/breakpad/breakpad
+GOOGLE_BREAKPAD_SITE_METHOD = git
 GOOGLE_BREAKPAD_CONF_OPTS = --disable-processor --disable-tools
 # Only a static library is installed
 GOOGLE_BREAKPAD_INSTALL_TARGET = NO
 GOOGLE_BREAKPAD_INSTALL_STAGING = YES
 GOOGLE_BREAKPAD_LICENSE = BSD-3c
 GOOGLE_BREAKPAD_LICENSE_FILES = LICENSE
-GOOGLE_BREAKPAD_DEPENDENCIES = host-google-breakpad
+GOOGLE_BREAKPAD_DEPENDENCIES = host-google-breakpad linux-syscall-support
+
+HOST_GOOGLE_BREAKPAD_DEPENDENCIES = host-linux-syscall-support 
+
+# Avoid using depot-tools to download this file.
+define HOST_GOOGLE_BREAKPAD_LSS
+	$(INSTALL) -D -m 0644 \
+		$(HOST_DIR)/usr/include/linux_syscall_support.h \
+		$(@D)/src/third_party/lss/linux_syscall_support.h
+endef
+HOST_GOOGLE_BREAKPAD_POST_EXTRACT_HOOKS += HOST_GOOGLE_BREAKPAD_LSS
+
+define GOOGLE_BREAKPAD_LSS
+	$(INSTALL) -D -m 0644 \
+		$(STAGING_DIR)/usr/include/linux_syscall_support.h \
+		$(@D)/src/third_party/lss/linux_syscall_support.h
+endef
+GOOGLE_BREAKPAD_POST_EXTRACT_HOOKS += GOOGLE_BREAKPAD_LSS
 
 define GOOGLE_BREAKPAD_EXTRACT_SYMBOLS
 	$(EXTRA_ENV) package/google-breakpad/gen-syms.sh $(STAGING_DIR) \