Github messages for voidlinux
 help / color / Atom feed
* [PR PATCH] icecat: fix build
@ 2019-10-07 20:52 voidlinux-github
  2019-10-07 21:48 ` [PR PATCH] [Updated] " voidlinux-github
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: voidlinux-github @ 2019-10-07 20:52 UTC (permalink / raw)
  To: ml


[-- Attachment #1: Type: text/plain, Size: 409 bytes --]

There is a new pull request by jnbr against master on the void-packages repository

https://github.com/jnbr/void-packages icecat
https://github.com/void-linux/void-packages/pull/15221

icecat: fix build
- the vendored version of cssparser fails to build with current rust
- glibc-2.30 introduced gettid as a function

A patch file from https://github.com/void-linux/void-packages/pull/15221.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-icecat-15221.patch --]
[-- Type: text/x-diff, Size: 6158 bytes --]

From 2bd679b5ca885e45c2f13c3483728a2cd611374e Mon Sep 17 00:00:00 2001
From: Johannes <johannes.brechtmann@gmail.com>
Date: Mon, 7 Oct 2019 22:48:22 +0200
Subject: [PATCH] icecat: fix build

- the vendored version of cssparser fails to build with current rust
- glibc-2.30 introduced gettid as a function

[ci skip]
---
 srcpkgs/icecat/patches/fix-musl.patch       |  2 +-
 srcpkgs/icecat/patches/rust-cssparser.patch | 90 +++++++++++++++++++++
 srcpkgs/icecat/template                     | 12 +++
 3 files changed, 103 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/icecat/patches/rust-cssparser.patch

diff --git a/srcpkgs/icecat/patches/fix-musl.patch b/srcpkgs/icecat/patches/fix-musl.patch
index c32921d39e1..3ca65d926d5 100644
--- a/srcpkgs/icecat/patches/fix-musl.patch
+++ b/srcpkgs/icecat/patches/fix-musl.patch
@@ -5,7 +5,7 @@
  // We need a definition of gettid(), but glibc doesn't provide a
  // wrapper for it.
 -#if defined(__GLIBC__)
-+#if defined(__linux__)
++#if defined(__linux__) && !defined(__GLIBC__)
  #include <unistd.h>
  #include <sys/syscall.h>
  static inline pid_t gettid()
diff --git a/srcpkgs/icecat/patches/rust-cssparser.patch b/srcpkgs/icecat/patches/rust-cssparser.patch
new file mode 100644
index 00000000000..1ebef87c014
--- /dev/null
+++ b/srcpkgs/icecat/patches/rust-cssparser.patch
@@ -0,0 +1,90 @@
+backport of:
+
+From 3c98d22c5de3b696bf1fde2b6c90069812312aa6 Mon Sep 17 00:00:00 2001
+From: Simon Sapin <simon.sapin@exyr.org>
+Date: Tue, 23 Apr 2019 13:47:25 +0200
+Subject: [PATCH] Fix a future-compat warning
+
+```
+warning[E0506]: cannot assign to `self.input.cached_token` because it is borrowed
+   --> src/parser.rs:591:17
+    |
+566 |     pub fn next_including_whitespace_and_comments(&mut self) -> Result<&Token<'i>, BasicParseError<'i>> {
+    |                                                   - let's call the lifetime of this reference `'1`
+...
+579 |             Some(ref cached_token)
+    |                  ---------------- borrow of `self.input.cached_token` occurs here
+...
+591 |                 self.input.cached_token = Some(CachedToken {
+    |                 ^^^^^^^^^^^^^^^^^^^^^^^ assignment to borrowed `self.input.cached_token` occurs here
+...
+603 |         Ok(token)
+    |         --------- returning this value requires that `self.input.cached_token.0` is borrowed for `'1`
+    |
+    = warning: this error has been downgraded to a warning for backwards compatibility with previous releases
+    = warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
+```
+---
+ src/parser.rs | 50 +++++++++++++++++++++++++++-----------------------
+ 1 file changed, 27 insertions(+), 23 deletions(-)
+
+diff --git a/src/parser.rs b/src/parser.rs
+index 51f441e4..7cef117c 100644
+--- third_party/rust/cssparser/src/parser.rs
++++ third_party/rust/cssparser/src/parser.rs
+@@ -555,28 +555,34 @@
+         }
+ 
+         let token_start_position = self.input.tokenizer.position();
+-        let token;
+-        match self.input.cached_token {
+-            Some(ref cached_token)
+-            if cached_token.start_position == token_start_position => {
+-                self.input.tokenizer.reset(&cached_token.end_state);
+-                match cached_token.token {
+-                    Token::Function(ref name) => self.input.tokenizer.see_function(name),
+-                    _ => {}
+-                }
+-                token = &cached_token.token
++        let using_cached_token = self
++            .input
++            .cached_token
++            .as_ref()
++            .map_or(false, |cached_token| {
++                cached_token.start_position == token_start_position
++            });
++        let token = if using_cached_token {
++            let cached_token = self.input.cached_token.as_ref().unwrap();
++            self.input.tokenizer.reset(&cached_token.end_state);
++            match cached_token.token {
++                Token::Function(ref name) => self.input.tokenizer.see_function(name),
++                _ => {}
+             }
+-            _ => {
+-                let new_token = self.input.tokenizer.next()
+-                    .map_err(|()| self.new_basic_error(BasicParseErrorKind::EndOfInput))?;
+-                self.input.cached_token = Some(CachedToken {
+-                    token: new_token,
+-                    start_position: token_start_position,
+-                    end_state: self.input.tokenizer.state(),
+-                });
+-                token = self.input.cached_token_ref()
+-            }
+-        }
++            &cached_token.token
++        } else {
++            let new_token = self
++                .input
++                .tokenizer
++                .next()
++                .map_err(|()| self.new_basic_error(BasicParseErrorKind::EndOfInput))?;
++            self.input.cached_token = Some(CachedToken {
++                token: new_token,
++                start_position: token_start_position,
++                end_state: self.input.tokenizer.state(),
++            });
++            self.input.cached_token_ref()
++        };
+ 
+         if let Some(block_type) = BlockType::opening(token) {
+             self.at_start_of = Some(block_type);
diff --git a/srcpkgs/icecat/template b/srcpkgs/icecat/template
index 64a466766d9..655d7cab66e 100644
--- a/srcpkgs/icecat/template
+++ b/srcpkgs/icecat/template
@@ -37,6 +37,13 @@ if [ "$XBPS_WORDSIZE" -eq 32 ]; then
 	nodebug=yes
 fi
 
+# we need this because cargo verifies checksums of all files in vendor
+# crates when it builds and gives us no way to override or update the
+# file sanely... so just clear out the file list
+_clear_vendor_checksums() {
+	sed -i 's/\("files":{\)[^}]*/\1/' third_party/rust/$1/.cargo-checksum.json
+}
+
 post_extract() {
 	case "$XBPS_TARGET_MACHINE" in
 	*-musl)
@@ -51,6 +58,11 @@ post_extract() {
 	# Note: This is for Void Linux use ONLY.
 	echo -n "cd894504-7a2a-4263-abff-ff73ee89ffca" > mozilla-api-key
 }
+
+post_patch() {
+	_clear_vendor_checksums cssparser
+}
+
 do_build() {
 	local triplet
 	cp ${FILESDIR}/mozconfig .mozconfig

^ permalink raw reply	[flat|nested] 5+ messages in thread
[parent not found: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-20367@inbox.vuxu.org>]

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-07 20:52 [PR PATCH] icecat: fix build voidlinux-github
2019-10-07 21:48 ` [PR PATCH] [Updated] " voidlinux-github
2019-10-07 21:48 ` voidlinux-github
2019-10-09 20:01 ` [PR PATCH] [Merged]: " voidlinux-github
     [not found] <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-20367@inbox.vuxu.org>
2020-03-25 22:10 ` jnbr

Github messages for voidlinux

Archives are clonable: git clone --mirror http://inbox.vuxu.org/voidlinux-github

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://inbox.vuxu.org/vuxu.github.voidlinux


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git