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

Building Buck on Illumos #120

Closed
steveklabnik opened this issue Apr 7, 2023 · 13 comments
Closed

Building Buck on Illumos #120

steveklabnik opened this issue Apr 7, 2023 · 13 comments

Comments

@steveklabnik
Copy link
Contributor

steveklabnik commented Apr 7, 2023

Hey there! I'm excited about Buck, and want to give it a try generally. I think it could solve some problems that I have at work. But we use illumos for various things, which means sometimes stuff gets weird. I personally use Windows, so I'm not an expert on illumos either, so I am ultimately trying to get a program I don't know running on a platform I don't know well; fun times :)

So, here's where I'm at at the time of putting this together:

steveklabnik@f5a35c8

Let's talk about how I got there.

So, the first thing that goes wrong is:

error: could not compile `fs2` due to previous error
warning: build failed, waiting for other jobs to finish...
error[E0432]: unresolved import `self::os`
 --> /home/sklabnik/.cargo/registry/src/github.com-1ecc6299db9ec823/nix-0.19.1/src/features.rs:2:15
  |
2 | pub use self::os::*;
  |               ^^ could not find `os` in `self`

Okay, illumos is a weird unix, but I thought nix supported it. Let's check in on nix: https://crates.io/crates/nix

Oh, the latest release is 0.26, not 0.19. Let's see if we can update it:

$ cargo update -p nix
error: There are multiple `nix` packages in your project, and the specification `nix` is ambiguous.
Please re-run this command with `-p <spec>` where `<spec>` is one of the following:
  [email protected]
  [email protected]
  [email protected]
  [email protected]

Oh my.

Turns out 0.19 is being brought in by the dependency on fs2. I haven't heard of that package before.

https://github.com/danburkert/fs2-rs last commit in 2018. Uh oh. Here's a comment from 3 weeks ago on a PR: danburkert/fs2-rs#42 (comment)

for what it is worth, I submitted a PR to fs4 and they fixed it. I haven't seen any activity on fs2 for >5 years, but fs4 is a maintained fork that provides all of the same functionality.

Okay! Let's sub in fs4! If we do that...

error[E0425]: cannot find function `statvfs` in module `rustix::fs`
  --> src/unix.rs:55:23
   |
55 |     match rustix::fs::statvfs(path.as_ref()) {
   |                       ^^^^^^^ not found in `rustix::fs`
   |
help: consider importing this function
   |
45 | use crate::statvfs;
   |
help: if you import `statvfs`, refer to it directly
   |
55 -     match rustix::fs::statvfs(path.as_ref()) {
55 +     match statvfs(path.as_ref()) {
   |

error[E0425]: cannot find function `allocate` in module `sys`
  --> src/file_ext/sync_impl.rs:70:14
   |
70 |         sys::allocate(self, len)
   |              ^^^^^^^^ not found in `sys`

Not just that, but we're also now trying to build jemallocator, which says

  Invalid configuration `x86_64-unknown-illumos': OS `illumos' not recognized

I asked one of my co-workers about this, and he said

Were it me, I would probably try and port it with ifdefs to use https://illumos.org/man/3LIB/libumem instead for us

It's also possible jemalloc will work -- it has been around long enough that someone probably ported it to Solaris

I saw things in upstream jemalloc that suggest it might, but the jemallocator crate says three linux targets and one mac target, not even windows! (I hear you've got windows builds though; I haven't tried it on my local computer, that will come soon enough though)

But, it seems like jemalloc's statistics API isn't actually required to get a build off. So maybe we could conditionally include it, not on illumos. Problem: it doesn't seem like that configuration exists for workspaces, so we have to re-duplicate it into each cargo.toml. Gross but I just want this to build first, we can figure out something cleaner later...

... but that also doesn't seem to work, it's still trying to build jemallocator anyway. Either I'm making a big mistake or it just ignores more complex condtitionals.

I'm also getting errors about protobuffs failing to build. turns out that the pre-built stuff isn't supported upstream. https://github.com/stepancheg/rust-protoc-bin-vendored/blob/master/protoc-bin-vendored/src/lib.rs#L61-L74

Well, that should be okay, I should be able to set BUCK2_BUILD_PROTOC_INCLUDE and BUCK2_BUILD_PROTOC to override this. But that doesn't work either. I realized that this is because the code as written unconditionally calls that method above in protoc-bin-vendored, and then unwraps it, so it always panics. The diff above includes a small change which I believe shouldn't make that happen anymore.

So, finally, building this gives:

error[E0425]: cannot find function `statvfs` in module `rustix::fs`
  --> /home/sklabnik/.cargo/registry/src/github.com-1ecc6299db9ec823/fs4-0.6.3/src/unix.rs:55:23
   |
55 |     match rustix::fs::statvfs(path.as_ref()) {
   |                       ^^^^^^^ not found in `rustix::fs`
   |
help: consider importing this function
   |
45 | use crate::statvfs;
   |
help: if you import `statvfs`, refer to it directly
   |
55 -     match rustix::fs::statvfs(path.as_ref()) {
55 +     match statvfs(path.as_ref()) {
   |

error[E0425]: cannot find function `allocate` in module `sys`
  --> /home/sklabnik/.cargo/registry/src/github.com-1ecc6299db9ec823/fs4-0.6.3/src/file_ext/sync_impl.rs:70:14
   |
70 |         sys::allocate(self, len)
   |              ^^^^^^^^ not found in `sys`

error[E0432]: unresolved import `crate::cpu::cpu_times_percpu`
 --> /home/sklabnik/.cargo/registry/src/github.com-1ecc6299db9ec823/psutil-3.2.2/src/cpu/cpu_times_percent.rs:6:29
  |
6 | use crate::cpu::{cpu_times, cpu_times_percpu, CpuTimes};
  |                             ^^^^^^^^^^^^^^^^
  |                             |
  |                             no `cpu_times_percpu` in `cpu`
  |                             help: a similar name exists in the module: `cpu_times_percent`

error[E0432]: unresolved import `crate::network::net_io_counters_pernic`
 --> /home/sklabnik/.cargo/registry/src/github.com-1ecc6299db9ec823/psutil-3.2.2/src/network/net_io_couters.rs:8:5
  |
8 | use crate::network::net_io_counters_pernic;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `net_io_counters_pernic` in `network`
  
  <snip>
  
  error: failed to run custom build command for `jemalloc-sys v0.5.3+5.3.0-patched`

Caused by:
  process didn't exit successfully: `/home/sklabnik/buck2/target/debug/build/jemalloc-sys-0a4333827d733bae/build-script-build` (exit status: 101)
  --- stdout
  TARGET=x86_64-unknown-illumos
  HOST=x86_64-unknown-illumos
  NUM_JOBS=48
  OUT_DIR="/home/sklabnik/buck2/target/debug/build/jemalloc-sys-56f23bc0b6815c11/out"
  BUILD_DIR="/home/sklabnik/buck2/target/debug/build/jemalloc-sys-56f23bc0b6815c11/out/build"
  SRC_DIR="/home/sklabnik/.cargo/registry/src/github.com-1ecc6299db9ec823/jemalloc-sys-0.5.3+5.3.0-patched"
  cargo:rustc-cfg=prefixed
  cargo:rerun-if-env-changed=JEMALLOC_OVERRIDE
  OPT_LEVEL = Some("1")
  TARGET = Some("x86_64-unknown-illumos")
  HOST = Some("x86_64-unknown-illumos")
  cargo:rerun-if-env-changed=CC_x86_64-unknown-illumos
  CC_x86_64-unknown-illumos = None
  cargo:rerun-if-env-changed=CC_x86_64_unknown_illumos
  CC_x86_64_unknown_illumos = None
  cargo:rerun-if-env-changed=HOST_CC
  HOST_CC = None
  cargo:rerun-if-env-changed=CC
  CC = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-illumos
  CFLAGS_x86_64-unknown-illumos = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_illumos
  CFLAGS_x86_64_unknown_illumos = None
  cargo:rerun-if-env-changed=HOST_CFLAGS
  HOST_CFLAGS = None
  cargo:rerun-if-env-changed=CFLAGS
  CFLAGS = None
  cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("true")
  CARGO_CFG_TARGET_FEATURE = Some("fxsr,llvm14-builtins-abi,sse,sse2")
  CC="gcc"
  CFLAGS="-O1 -ffunction-sections -fdata-sections -fPIC -g -fno-omit-frame-pointer -m64 -Wall"
  JEMALLOC_REPO_DIR="jemalloc"
  cargo:rerun-if-env-changed=JEMALLOC_SYS_WITH_MALLOC_CONF
  cargo:rerun-if-env-changed=JEMALLOC_SYS_WITH_LG_PAGE
  cargo:rerun-if-env-changed=JEMALLOC_SYS_WITH_LG_HUGEPAGE
  cargo:rerun-if-env-changed=JEMALLOC_SYS_WITH_LG_QUANTUM
  cargo:rerun-if-env-changed=JEMALLOC_SYS_WITH_LG_VADDR
  --with-jemalloc-prefix=_rjem_
  CARGO_FEATURE_PROFILING set
  running: cd "/home/sklabnik/buck2/target/debug/build/jemalloc-sys-56f23bc0b6815c11/out/build" && CC="gcc" CFLAGS="-O1 -ffunction-sections -fdata-sections -fPIC -g -fno-omit-frame-pointer -m64 -Wall" CPPFLAGS="-O1 -ffunction-sections -fdata-sections -fPIC -g -fno-omit-frame-pointer -m64 -Wall" LDFLAGS="-O1 -ffunction-sections -fdata-sections -fPIC -g -fno-omit-frame-pointer -m64 -Wall" "sh" "/home/sklabnik/buck2/target/debug/build/jemalloc-sys-56f23bc0b6815c11/out/build/configure" "--disable-cxx" "--enable-doc=no" "--enable-shared=no" "--with-jemalloc-prefix=_rjem_" "--with-private-namespace=_rjem_" "--enable-prof" "--host=x86_64-unknown-illumos" "--build=x86_64-unknown-illumos" "--prefix=/home/sklabnik/buck2/target/debug/build/jemalloc-sys-56f23bc0b6815c11/out"
  checking for xsltproc... /usr/bin/xsltproc
  checking for x86_64-unknown-illumos-gcc... gcc
  checking whether the C compiler works... yes
  checking for C compiler default output file name... a.out
  checking for suffix of executables...
  checking whether we are cross compiling... no
  checking for suffix of object files... o
  checking whether we are using the GNU C compiler... yes
  checking whether gcc accepts -g... yes
  checking for gcc option to accept ISO C89... none needed
  checking whether compiler is cray... no
  checking whether compiler supports -std=gnu11... yes
  checking whether compiler supports -Werror=unknown-warning-option... no
  checking whether compiler supports -Wall... yes
  checking whether compiler supports -Wextra... yes
  checking whether compiler supports -Wshorten-64-to-32... no
  checking whether compiler supports -Wsign-compare... yes
  checking whether compiler supports -Wundef... yes
  checking whether compiler supports -Wno-format-zero-length... yes
  checking whether compiler supports -Wpointer-arith... yes
  checking whether compiler supports -Wno-missing-braces... yes
  checking whether compiler supports -Wno-missing-field-initializers... yes
  checking whether compiler supports -Wno-missing-attributes... yes
  checking whether compiler supports -pipe... yes
  checking whether compiler supports -g3... yes
  checking how to run the C preprocessor... gcc -E
  checking for grep that handles long lines and -e... /usr/gnu/bin/grep
  checking for egrep... /usr/gnu/bin/grep -E
  checking for ANSI C header files... yes
  checking for sys/types.h... yes
  checking for sys/stat.h... yes
  checking for stdlib.h... yes
  checking for string.h... yes
  checking for memory.h... yes
  checking for strings.h... yes
  checking for inttypes.h... yes
  checking for stdint.h... yes
  checking for unistd.h... yes
  checking whether byte ordering is bigendian... no
  checking size of void *... 8
  checking size of int... 4
  checking size of long... 8
  checking size of long long... 8
  checking size of intmax_t... 8
  checking build system type... running: "tail" "-n" "100" "/home/sklabnik/buck2/target/debug/build/jemalloc-sys-56f23bc0b6815c11/out/build/config.log"
  dvidir='${docdir}'
  enable_autogen=''
  enable_cache_oblivious=''
  enable_cxx='0'
  enable_debug=''
  enable_doc='no'
  enable_experimental_smallocx=''
  enable_fill=''
  enable_initial_exec_tls=''
  enable_lazy_lock=''
  enable_log=''
  enable_opt_safety_checks=''
  enable_opt_size_checks=''
  enable_prof='yes'
  enable_readlinkat=''
  enable_shared='no'
  enable_static=''
  enable_stats=''
  enable_tls=''
  enable_uaf_detection=''
  enable_utrace=''
  enable_xmalloc=''
  enable_zone_allocator=''
  exe=''
  exec_prefix='/home/sklabnik/buck2/target/debug/build/jemalloc-sys-56f23bc0b6815c11/out'
  host='x86_64-unknown-illumos'
  host_alias='x86_64-unknown-illumos'
  host_cpu=''
  host_os=''
  host_vendor=''
  htmldir='${docdir}'
  importlib=''
  includedir='${prefix}/include'
  infodir='${datarootdir}/info'
  install_suffix=''
  je_=''
  jemalloc_version=''
  jemalloc_version_bugfix=''
  jemalloc_version_gid=''
  jemalloc_version_major=''
  jemalloc_version_minor=''
  jemalloc_version_nrev=''
  libdir='${exec_prefix}/lib'
  libdl=''
  libexecdir='${exec_prefix}/libexec'
  libprefix=''
  link_whole_archive=''
  localedir='${datarootdir}/locale'
  localstatedir='${prefix}/var'
  mandir='${datarootdir}/man'
  o=''
  objroot=''
  oldincludedir='/usr/include'
  pdfdir='${docdir}'
  prefix='/home/sklabnik/buck2/target/debug/build/jemalloc-sys-56f23bc0b6815c11/out'
  private_namespace=''
  program_transform_name='s,x,x,'
  psdir='${docdir}'
  rev='2'
  sbindir='${exec_prefix}/sbin'
  sharedstatedir='${prefix}/com'
  so=''
  srcroot=''
  sysconfdir='${prefix}/etc'
  target_alias=''

  ## ----------- ##
  ## confdefs.h. ##
  ## ----------- ##

  /* confdefs.h */
  #define PACKAGE_NAME ""
  #define PACKAGE_TARNAME ""
  #define PACKAGE_VERSION ""
  #define PACKAGE_STRING ""
  #define PACKAGE_BUGREPORT ""
  #define PACKAGE_URL ""
  #define JEMALLOC_HAS_RESTRICT
  #define STDC_HEADERS 1
  #define HAVE_SYS_TYPES_H 1
  #define HAVE_SYS_STAT_H 1
  #define HAVE_STDLIB_H 1
  #define HAVE_STRING_H 1
  #define HAVE_MEMORY_H 1
  #define HAVE_STRINGS_H 1
  #define HAVE_INTTYPES_H 1
  #define HAVE_STDINT_H 1
  #define HAVE_UNISTD_H 1
  #define SIZEOF_VOID_P 8
  #define LG_SIZEOF_PTR 3
  #define SIZEOF_INT 4
  #define LG_SIZEOF_INT 2
  #define SIZEOF_LONG 8
  #define LG_SIZEOF_LONG 3
  #define SIZEOF_LONG_LONG 8
  #define LG_SIZEOF_LONG_LONG 3
  #define SIZEOF_INTMAX_T 8
  #define LG_SIZEOF_INTMAX_T 3

  configure: exit 1

  --- stderr
  Invalid configuration `x86_64-unknown-illumos': OS `illumos' not recognized
  configure: error: /bin/sh build-aux/config.sub x86_64-unknown-illumos failed
  thread 'main' panicked at 'command did not execute successfully: cd "/home/sklabnik/buck2/target/debug/build/jemalloc-sys-56f23bc0b6815c11/out/build" && CC="gcc" CFLAGS="-O1 -ffunction-sections -fdata-sections -fPIC -g -fno-omit-frame-pointer -m64 -Wall" CPPFLAGS="-O1 -ffunction-sections -fdata-sections -fPIC -g -fno-omit-frame-pointer -m64 -Wall" LDFLAGS="-O1 -ffunction-sections -fdata-sections -fPIC -g -fno-omit-frame-pointer -m64 -Wall" "sh" "/home/sklabnik/buck2/target/debug/build/jemalloc-sys-56f23bc0b6815c11/out/build/configure" "--disable-cxx" "--enable-doc=no" "--enable-shared=no" "--with-jemalloc-prefix=_rjem_" "--with-private-namespace=_rjem_" "--enable-prof" "--host=x86_64-unknown-illumos" "--build=x86_64-unknown-illumos" "--prefix=/home/sklabnik/buck2/target/debug/build/jemalloc-sys-56f23bc0b6815c11/out"
  expected success, got: exit status: 1', /home/sklabnik/.cargo/registry/src/github.com-1ecc6299db9ec823/jemalloc-sys-0.5.3+5.3.0-patched/build.rs:346:9
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

I am not sure how much time I'll be able to devote to figuring out this build, but will keep poking at it, and tracking how things seem to go.

@ndmitchell
Copy link
Contributor

All these sound like things we should clean up. Moving to fs4. Fixes to protobuf stuff. We'll aim to reduce the delta you are maintaining, and hopefully eventually get to success.

@steveklabnik
Copy link
Contributor Author

<3.

I'm gonna send a PR with the protobuff bits right now, as it's very small and self-contained.

@ndmitchell
Copy link
Contributor

I've got an internal diff moving to fs4. There is your protoc which I'm importing. For jemalloc I've got a diff to use that on linux/mac, rather than generic unix, which seems like the only flavours of unix it will actually work. I'm pushing those through the review/CI process internally and then they'll be in the repo (tomorrow if I get a diff review tonight, otherwise likely Monday). Then we'll be on to new and exciting errors :)

@ndmitchell
Copy link
Contributor

I notice you upgraded rustyline and removed psutil - are both of those required too?

@steveklabnik
Copy link
Contributor Author

ah yes, the dangers of reconstructing a story after the fact, I forgot about those too :)

So, psutil has a bunch of errors if you try to compile it, and is only being used in-tree for one tiny thing, which on some platforms returns empty results already anyway, so my idea was to try and remove it for now, just to get things building.

Rustyline also has vague illumos issues (I know I've run into them and hit a corner case, but I can't off the top of my head remember what that is) and I was upgrading it in-tree because it also failed to build for some reason; personally I tend to use reedline because I love nu shell, and it does seem to work well on illumos, but I'm not even sure whatever that edge case was is relevant here, so I wasn't suggesting removing it. I also didn't have a chance yet to dig into how integrated it is, but I assume it's fairly important, as readline often is.

@get9
Copy link
Contributor

get9 commented Apr 7, 2023

FWIW the psutil dep is probably only needed for straight-up Linux and macOS and can be gated to those two platforms only. Prior to the OSS release it was easiest to gate to Unix, but sounds like we should be a bit more precise with the conditional imports now.

I can update this later this weekend.

@sunfishcode
Copy link

A PR to fix compilation of fs4 on illumos is here: al8n/fs4-rs#3

@ndmitchell
Copy link
Contributor

All my diffs are approved and running through CI - expect them to land in 2-5 hours.

facebook-github-bot pushed a commit that referenced this issue Apr 9, 2023
Summary:
The intention of using environment variables is to override these paths. With the code as written, this will unconditionally panic if protoc_bin_vendored doesn't know where the protobuff compiler/includes are, even if we're using an environment variable to set these paths.

With this change, we only unwrap when actually attempting to use the path from `protoc_bin_vendored`.

Found as part of #120.

Pull Request resolved: #121

Reviewed By: cjhopman

Differential Revision: D44799077

Pulled By: ndmitchell

fbshipit-source-id: 56db51961166df0870cb4ad07a220abfc21c5008
facebook-github-bot pushed a commit that referenced this issue Apr 10, 2023
Summary: As requested in #120, let's gate psutil inclusion to only linux and macOS (where this code should only return valid results.)

Reviewed By: ndmitchell, stepancheg

Differential Revision: D44815147

fbshipit-source-id: 99d9fce17bafb5683a3e946e63ed72f7ad59e524
@get9
Copy link
Contributor

get9 commented Apr 10, 2023

44b28fd should remove the psutil dep for non-linux/mac.

@steveklabnik
Copy link
Contributor Author

Catching up on this, very cool to see all this activity!

  thread 'main' panicked at 'PROTOC not available for platform Error { os: "illumos", arch: "x86_64" }, set $BUCK2_BUILD_PROTOC to override', app/buck2_protoc_dev/src/lib.rs:30:17

This error is way nicer now too :)

buuuuuut!

image

success! Well, with this patch anyway:

diff --git a/Cargo.toml b/Cargo.toml
index 22e2f2d70c..7bbc9117be 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -128,7 +128,7 @@ faccess = "0.2.3"
 fancy-regex = "0.10.0"
 flate2 = "1.0.22"
 fnv = "1.0.7"
-fs2 = "0.4.3"
+fs4 = { git = "https://github.com/sunfishcode/fs4-rs", branch = "sunfishcode/illumos", features = ["sync"] }
 futures = { version = "0.3.24", features = ["async-await", "compat"] }
 futures-intrusive = "0.4"
 glob = "0.3.0"
diff --git a/app/buck2_client_ctx/Cargo.toml b/app/buck2_client_ctx/Cargo.toml
index 7edd24b340..25bef4ba3c 100644
--- a/app/buck2_client_ctx/Cargo.toml
+++ b/app/buck2_client_ctx/Cargo.toml
@@ -16,7 +16,7 @@ chrono = { workspace = true }
 crossterm = { workspace = true }
 derivative = { workspace = true }
 derive_more = { workspace = true }
-fs2 = { workspace = true }
+fs4 = { workspace = true }
 futures = { workspace = true }
 hex = { workspace = true }
 httparse = { workspace = true }
diff --git a/app/buck2_client_ctx/src/build_count.rs b/app/buck2_client_ctx/src/build_count.rs
index 0c3bf71804..e18eda173f 100644
--- a/app/buck2_client_ctx/src/build_count.rs
+++ b/app/buck2_client_ctx/src/build_count.rs
@@ -15,7 +15,7 @@ use anyhow::Context;
 use buck2_common::client_utils;
 use buck2_core::fs::paths::abs_norm_path::AbsNormPathBuf;
 use buck2_core::fs::paths::file_name::FileName;
-use fs2::FileExt;
+use fs4::FileExt;
 use serde::Deserialize;
 use serde::Serialize;
 use tokio::io::AsyncReadExt;
diff --git a/app/buck2_client_ctx/src/daemon/client/mod.rs b/app/buck2_client_ctx/src/daemon/client/mod.rs
index 72b4201efe..21b64c9a18 100644
--- a/app/buck2_client_ctx/src/daemon/client/mod.rs
+++ b/app/buck2_client_ctx/src/daemon/client/mod.rs
@@ -19,7 +19,7 @@ use buck2_cli_proto::*;
 use buck2_common::daemon_dir::DaemonDir;
 use buck2_core::fs::fs_util;
 use buck2_core::fs::paths::abs_norm_path::AbsNormPathBuf;
-use fs2::FileExt;
+use fs4::FileExt;
 use futures::future::BoxFuture;
 use futures::pin_mut;
 use futures::stream;
diff --git a/starlark-rust/starlark/Cargo.toml b/starlark-rust/starlark/Cargo.toml
index 4f4906933c..6f063d7b7a 100644
--- a/starlark-rust/starlark/Cargo.toml
+++ b/starlark-rust/starlark/Cargo.toml
@@ -41,7 +41,7 @@ walkdir = "2.3"
 serde = { version = "1.0", features = ["derive"] }
 logos = "0.12"
 serde_json = "1.0"
-rustyline = "7.1"
+rustyline = "9.1"
 maplit = "1.0.2"
 lsp-server = "0.5"
 lsp-types = "0.93.0"

and then

$ cargo update -p rustix
$ cargo update -p nix
$ cargo update -p rustyline

(these operations not reflected in the diff because of Cargo.lock not being in version control.)

Once @sunfishcode 's PR lands and a new release is cut, I can send in a PR to actually update this.

@ndmitchell
Copy link
Contributor

Fantastic!

For info, the upgrade to fs4 had to get reverted because it pulls in an old rustix that has problems on Windows. If the fs4 diffs you have up get merged, then we should be good to do it again. If they don't get merged, I guess someone needs to fork to fs6...

I'll work on an upgrade of rustyline. I see 11.0 is the latest, so will upgrade to that.

You can ignore the future incompatibilities things - we'll take care of them when they become real issues, and they show up for everyone.

@ndmitchell
Copy link
Contributor

With dd685b5 we've upgraded to rustyline 11.0.

Unfortunately we can't upgrade to fs4 until al8n/fs4-rs#2 lands.

@sunfishcode
Copy link

fs4 0.6.4 is now released, which has the fixes for building on illumos.

steveklabnik added a commit to steveklabnik/buck2 that referenced this issue May 8, 2023
This fixes the build on illumos.

Fixes facebook#120
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 a pull request may close this issue.

4 participants