Skip to content

Fix build on big-endian hosts? #9992

Description

@he32

Description

jj fails to build on big-endian hosts.

Steps to Reproduce the Problem

Try to build jj on a big-endian host, watch it fail because e.g. put_i16_be is not defined.

Expected Behavior

The build ought to succeed.

Actual Behavior

   Compiling serde_bser v0.4.0
error[E0599]: no method named `put_i16_be` found for struct `Vec<u8>` in the current scope
   --> /home/builder/work/devel/jj/work/vendor/serde_bser-0.4.0/src/ser/mod.rs:136:22
    |
136 |         self.scratch.put_i16_be(v);
    |                      ^^^^^^^^^^
    |
help: there is a method `put_i16_le` with a similar name
    |
136 -         self.scratch.put_i16_be(v);
136 +         self.scratch.put_i16_le(v);
    |

error[E0599]: no method named `put_i32_be` found for struct `Vec<u8>` in the current scope
   --> /home/builder/work/devel/jj/work/vendor/serde_bser-0.4.0/src/ser/mod.rs:146:22
    |
146 |         self.scratch.put_i32_be(v);
    |                      ^^^^^^^^^^
    |
help: there is a method `put_i32_le` with a similar name
    |
146 -         self.scratch.put_i32_be(v);
146 +         self.scratch.put_i32_le(v);
    |

error[E0599]: no method named `put_i64_be` found for struct `Vec<u8>` in the current scope
   --> /home/builder/work/devel/jj/work/vendor/serde_bser-0.4.0/src/ser/mod.rs:156:22
    |
156 |         self.scratch.put_i64_be(v);
    |                      ^^^^^^^^^^
    |
help: there is a method `put_i64_le` with a similar name
    |
156 -         self.scratch.put_i64_be(v);
156 +         self.scratch.put_i64_le(v);
    |

error[E0599]: no method named `put_f64_be` found for struct `Vec<u8>` in the current scope
   --> /home/builder/work/devel/jj/work/vendor/serde_bser-0.4.0/src/ser/mod.rs:258:22
    |
258 |         self.scratch.put_f64_be(v);
    |                      ^^^^^^^^^^
    |
help: there is a method `put_f64_le` with a similar name
    |
258 -         self.scratch.put_f64_be(v);
258 +         self.scratch.put_f64_le(v);
    |

For more information about this error, try `rustc --explain E0599`.
error: could not compile `serde_bser` (lib) due to 4 previous errors

The reason appears that the vendored version of serde_bser does not
have this particular pull request included: facebook/watchman#1238.

I'll admit that I'm a bit confused by the versioning of the serde_bser crate, as HEAD
at the source is 0.4.0 and includes this fix, and the same version (0.4.0) is apparently
used by jj, but there this fix is not included.

Specifications

  • Platform: Build issue experienced on NetBSD/macppc 11.0 w/ rust 1.97.0.
  • Version: jj version 0.44.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions