makedeb / mist

The official command-line interface for the makedeb Package Repository
GNU General Public License v3.0
73 stars 7 forks source link

Cannot run mist on ARM64 #38

Open Cwavs opened 2 years ago

Cwavs commented 2 years ago

Currently the prebuilt mpr doesn't support arm64 so I can't install from there, and I've had issues building it from source with makedeb, building from binary installs but won't run, giving the following error.

-bash: /usr/bin/mist: cannot execute binary file: Exec format error

hwittenborn commented 2 years ago

I've had issues building it from source with makedeb

What kind of issue pops up?

building from binary installs but won't run, giving the following error.

That's because packages are only published for amd64, and since most is compiled you get those errors. The PKGBUILD for mist-bin probably needs to be updated to reflect only supporting amd64, I'm just now noticing that the arch variable isn't correct there.

Mist is also going to be added to the main makedeb repo at some point, probably in the coming weeks. At the least it should be resolved there after that point.

Cwavs commented 2 years ago

What kind of issue pops up?

Well I can't currently install rustup, I thought I had gotten past that issue by installing from apt, but it doesn't look to be on apt so I can't remember how I did that, trying to install from the mpr errors because its can't find libssl, but that looks like it might be more of an issue with rustup than mist.

cobalt2727 commented 1 year ago

I'm having the same issue on a Raspberry Pi 4 - seems like it's trying to get an x86-64 dependency instead of actually checking the target device's architecture:

cobalt@pi4b:~/mist$ makedeb -si -H 'MPR-Package: yes'
[#] Making package: mist 0.10.0-1 (Sun 04 Dec 2022 09:03:28 PM EST)
[#] Checking for missing dependencies...
[#] Loading extensions...
[#] Retrieving sources...
  [->] Found v0.10.0.tar.gz
[#] Validating source files with sha256sums...
    v0.10.0.tar.gz ... Skipped
[#] Extracting sources...
  [->] Extracting v0.10.0.tar.gz with bsdtar
[#] Removing existing $pkgdir/ directory...
[#] Starting build()...
   Compiling serde_derive v1.0.145
   Compiling openssl-sys v0.9.76
   Compiling bitflags v1.3.2
   Compiling indexmap v1.9.1
   Compiling tokio v1.21.2
The following warnings were emitted during compilation:

warning: cc1: error: unknown value ‘x86-64’ for ‘-march’
warning: cc1: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8.7-a armv8.8-a armv8-r armv9-a native
warning: cc1: error: ‘-fcf-protection=full’ is not supported for this target

error: failed to run custom build command for `openssl-sys v0.9.76`

Caused by:
  process didnt exit successfully: `/home/cobalt/mist/src/mist-0.10.0/target/release/build/openssl-sys-a40af0d0d7810ce1/build-script-main` (exit status: 101)
  --- stdout
  cargo:rustc-cfg=const_fn
  cargo:rustc-cfg=openssl
  cargo:rerun-if-env-changed=AARCH64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR
  AARCH64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset
  cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
  OPENSSL_LIB_DIR unset
  cargo:rerun-if-env-changed=AARCH64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR
  AARCH64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset
  cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
  OPENSSL_INCLUDE_DIR unset
  cargo:rerun-if-env-changed=AARCH64_UNKNOWN_LINUX_GNU_OPENSSL_DIR
  AARCH64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset
  cargo:rerun-if-env-changed=OPENSSL_DIR
  OPENSSL_DIR unset
  cargo:rerun-if-env-changed=OPENSSL_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=OPENSSL_STATIC
  cargo:rerun-if-env-changed=OPENSSL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=SYSROOT
  cargo:rerun-if-env-changed=OPENSSL_STATIC
  cargo:rerun-if-env-changed=OPENSSL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rustc-link-lib=ssl
  cargo:rustc-link-lib=crypto
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=OPENSSL_STATIC
  cargo:rerun-if-env-changed=OPENSSL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-changed=build/expando.c
  OPT_LEVEL = Some("3")
  TARGET = Some("aarch64-unknown-linux-gnu")
  HOST = Some("aarch64-unknown-linux-gnu")
  CC_aarch64-unknown-linux-gnu = None
  CC_aarch64_unknown_linux_gnu = None
  HOST_CC = None
  CC = None
  CFLAGS_aarch64-unknown-linux-gnu = None
  CFLAGS_aarch64_unknown_linux_gnu = None
  HOST_CFLAGS = None
  CFLAGS = Some("-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection")
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("false")
  CARGO_CFG_TARGET_FEATURE = Some("llvm14-builtins-abi,neon")
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-march=x86-64" "-mtune=generic" "-O2" "-pipe" "-fno-plt" "-fexceptions" "-Wp,-D_FORTIFY_SOURCE=2" "-Wformat" "-Werror=format-security" "-fstack-clash-protection" "-fcf-protection" "-I" "/usr/include" "-E" "build/expando.c"
  cargo:warning=cc1: error: unknown value ‘x86-64’ for ‘-march’
  cargo:warning=cc1: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8.7-a armv8.8-a armv8-r armv9-a native
  cargo:warning=cc1: error: ‘-fcf-protection=full’ is not supported for this target
  exit status: 1

  --- stderr
  thread 'main' panicked at '
  Header expansion error:
  Error { kind: ToolExecError, message: "Command \"cc\" \"-O3\" \"-ffunction-sections\" \"-fdata-sections\" \"-fPIC\" \"-march=x86-64\" \"-mtune=generic\" \"-O2\" \"-pipe\" \"-fno-plt\" \"-fexceptions\" \"-Wp,-D_FORTIFY_SOURCE=2\" \"-Wformat\" \"-Werror=format-security\" \"-fstack-clash-protection\" \"-fcf-protection\" \"-I\" \"/usr/include\" \"-E\" \"build/expando.c\" with args \"cc\" did not execute successfully (status code exit status: 1)." }

  Failed to find OpenSSL development headers.

  You can try fixing this setting the `OPENSSL_DIR` environment variable
  pointing to your OpenSSL installation or installing OpenSSL headers package
  specific to your distribution:

      # On Ubuntu
      sudo apt-get install libssl-dev
      # On Arch Linux
      sudo pacman -S openssl
      # On Fedora
      sudo dnf install openssl-devel
      # On Alpine Linux
      apk add openssl-dev

  See rust-openssl README for more information:

      https://github.com/sfackler/rust-openssl#linux
  ', /home/cobalt/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.76/build/main.rs:185:13
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
[! build()] A failure occurred in build().
    Aborting...
hwittenborn commented 1 year ago

I think I just realized what the issue is, I'm pretty sure makedeb stable has the CARCH value hardcoded to x86_64 in /etc/makepkg.conf thus causing that issue. Would you guys be able to try building on makedeb beta or alpha @cobalt2727 @Cwavs?

Cwavs commented 1 year ago

I don't think this fixes my issue, as I'm not able to get this far, my issue relates to building rustup which I can confirm this doesn't fix. However this reminds me of another issue that might be possibly related to the CARCH one, MARCH still looks to be hardcoded to x86_64, which causes btop to fail to build, would you like me to open a seperate issue on the makedeb repo for that?

hwittenborn commented 1 year ago

my issue relates to building rustup which I can confirm this doesn't fix

What kind of error pops up when building with alpha/beta?

MARCH still looks to be hardcoded to x86_64

From what I saw this is only on stable at the moment, it looks like that got removed from the config on alpha and beta - they needed to be removed in order to build the makedeb packages for all the architectures in makedeb's CI.

cobalt2727 commented 1 year ago

I'll have a look at this soon, but I would assume that fixes it

BillFleming commented 1 year ago

This is still an issue when trying to run current makedeb on mist 0.12. If I comment out the cargo build line, I can manually run it separately, then create a working mist arm64.deb (at least on debian trixie, bout to try deb 12 ARM64 VM)

Note that if you don't have the specific rust ring -dev package installed, it will fail earlier during the ring build.

Compiling ring v0.16.20
   Compiling link-cplusplus v1.0.9
   Compiling rustls v0.21.5
The following warnings were emitted during compilation:

warning: Assembler messages:
warning: Error: unknown architecture `x86-64'
warning: 
warning: Error: unrecognized option -march=x86-64
warning: cc1plus: error: unknown value ‘x86-64’ for ‘-march’