Re: How to cross compile Apple Silicon target under Intel Apple computer ?

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: How to cross compile Apple Silicon target under Intel Apple computer ?

Ken Cunningham
This right here is MacPorts golden opportunity again.

If we put some effort into this, to finish up the minor tweaks, MacPorts is the only game in town for this.

I have been fixing these as you all have seen, as I come across them.

But it would be great if people with BIgSur installed a copy of MacPorts into /opt/universal and just started building things.

Next on my list is cmake, which has no need to be universal in 99% of cases in the first place, so we should fix that in the cmake Portfile.



Ken
Reply | Threaded
Open this post in threaded view
|

Re: How to cross compile Apple Silicon target under Intel Apple computer ?

Gilles Caulier
Ken,

I second you. My computer is ready to cross compile the whole digiKam
bundle for Silicon target.

Note : from scratch, compiling the bundle for Intel took around 8
hours on my Macbook Pro 2015. After installing low level dependencies
from Macports, i compile KF5 framework, digiKAm and plugins, and the
last stage is to relocate, cleanup, and package the bundle for
production. All is done mostly with cmake and top level bash scripts
written by me.

And I can confirm that cross compiling for Silicon under Intel is
currently broken to cmake port (:-)))...

My best

Gilles Caulier


Le mer. 27 janv. 2021 à 22:45, Ken Cunningham
<[hidden email]> a écrit :

>
> This right here is MacPorts golden opportunity again.
>
> If we put some effort into this, to finish up the minor tweaks, MacPorts is the only game in town for this.
>
> I have been fixing these as you all have seen, as I come across them.
>
> But it would be great if people with BIgSur installed a copy of MacPorts into /opt/universal and just started building things.
>
> Next on my list is cmake, which has no need to be universal in 99% of cases in the first place, so we should fix that in the cmake Portfile.
>
>
>
> Ken
Reply | Threaded
Open this post in threaded view
|

Re: How to cross compile Apple Silicon target under Intel Apple computer ?

Ken Cunningham
In reply to this post by Ken Cunningham
Gilles,

This PR <https://github.com/macports/macports-ports/pull/9837> fixes cmake, for all practical purposes, as these cmake-requiring ports build on BigSur intel demonstrate.

We will wait a bit for Micheal to push, but just go grab it and install it if you like.

the fix, in the end, was as trivial as you might imagine.

ken



% port -v installed fish llvm-10
The following ports are currently installed:
  fish @3.1.2_0+universal (active) platform='darwin 20' archs='arm64 x86_64' date='2021-01-27T17:52:12-0800'
  llvm-10 @10.0.1_1+universal (active) platform='darwin 20' archs='arm64 x86_64' date='2021-01-27T16:58:36-0800'



Reply | Threaded
Open this post in threaded view
|

Re: How to cross compile Apple Silicon target under Intel Apple computer ?

Gilles Caulier
Voilà,

I start the stage 1 to install all low level dependencies for digiKam Silicon.
Just my macports.conf configuration file is customized like this :

+no_root -startupitem
startupitem_type none
startupitem_install no
macosx_deployment_target 11.0
build_arch arm64

There is nothing customized in variants.conf.

Plenty of ports are installed now, including cmake:

MacPorts 2.6.4
Entering shell mode... ("help" for help, "quit" to quit)
[macports/tools] > installed
The following ports are currently installed:
  asciidoc @9.0.4_0 (active)
  autoconf @2.69_5 (active)
  autoconf-archive @2019.01.06_0 (active)
  automake @1.16.3_0 (active)
  bison @3.7.4_0 (active)
  bison-runtime @3.7.4_0 (active)
  boost @1.71.0_3+no_single+no_static+python38 (active)
  brotli @1.0.9_0 (active)
  bzip2 @1.0.8_0 (active)
  cairo @1.16.0_1+quartz+x11 (active)
  ccache @4.1_0 (active)
  cctools @949.0.1_0+xcode (active)
  cmake @3.19.3_0 (active)
  curl @7.74.0_0+ssl (active)
  curl-ca-bundle @7.74.0_0 (active)
  dav1d @0.8.0_0 (active)
  db48 @4.8.30_4 (active)
  dbus @1.12.20_0 (active)
  docbook-xml @5.0_3 (active)
  docbook-xml-4.1.2 @5.0_1 (active)
  docbook-xml-4.2 @5.0_1 (active)
  docbook-xml-4.3 @5.0_1 (active)
  docbook-xml-4.4 @5.0_1 (active)
  docbook-xml-4.5 @5.0_1 (active)
  docbook-xml-5.0 @5.0_1 (active)
  docbook-xsl-nons @1.79.2_0 (active)
  eigen3 @3.3.9_0 (active)
  expat @2.2.10_0 (active)
  flex @2.6.4_0 (active)
  fontconfig @2.13.1_0 (active)
  fop @1.1_1 (active)
  freetype @2.10.4_0 (active)
  fribidi @1.0.10_0 (active)
  gawk @5.1.0_0 (active)
  gd2 @2.3.0_1+x11 (active)
  gdbm @1.18.1_1 (active)
  gettext @0.19.8.1_2 (active)
  ghostscript @9.53.3_1+x11 (active)
  giflib @4.2.3_0 (active)
  glib2 @2.58.3_1+x11 (active)
  gmake @4.3_0 (active)
  gobject-introspection @1.60.2_5 (active)
  gperf @3.1_0 (active)
  graphite2 @1.3.13_1 (active)
  graphviz @2.40.1_4+pangocairo+x11 (active)
  groff @1.22.4_4 (active)
  gtk-doc @1.32_1+python38 (active)
  gts @0.7.6-20121130_1 (active)
  harfbuzz @2.7.4_0 (active)
  help2man @1.47.17_0 (active)
  icu @67.1_3 (active)
  itstool @2.0.6_0+python38 (active)
  jasper @2.0.14_1 (active)
  jbig2dec @0.19_0 (active)
  jbigkit @2.1_0 (active)
  jpeg @9d_1 (active)
  lcms2 @2.11_1 (active)
  lensfun @0.3.2_5 (active)
  libarchive @3.5.1_0 (active)
  libcxx @5.0.1_4 (active)
  libedit @20191231-3.1_0 (active)
  libexif @0.6.22_0 (active)
  libffi @3.3_1 (active)
  libgphoto2 @2.5.26_1 (active)
  libical @3.0.8_1 (active)
  libiconv @1.16_1 (active)
  libidn @1.36_0 (active)
  libidn2 @2.3.0_0 (active)
  libjpeg-turbo @2.0.6_0 (active)
  libLASi @1.1.3_1 (active)
  libnetpbm @10.93.00_0 (active)
  libpaper @1.1.28_0 (active)
  libpixman @0.38.4_0 (active)
  libpng @1.6.37_0 (active)
  libpsl @0.21.1-20200817_0 (active)
  libtool @2.4.6_11 (active)
  libunistring @0.9.10_0 (active)
  libusb @1.0.24_0 (active)
  libusb-compat @0.1.7_0 (active)
  libuv @1.40.0_0 (active)
  libxml2 @2.9.10_1 (active)
  libxslt @1.1.34_4 (active)
  lz4 @1.9.3_0 (active)
  lzip @1.22_0 (active)
  lzma @4.65_1 (active)
  lzo2 @2.10_0 (active)
  m4 @1.4.18_2 (active)
  meson @0.55.3_1 (active)
  nasm @2.15.05_0 (active)
  ncurses @6.2_1 (active)
  netpbm @10.93.00_1+x11 (active)
  ninja @1.10.2_0 (active)
  openjpeg @2.3.1_0 (active)
  openssl @1.1.1i_0 (active)
  ossp-uuid @1.6.2_11+perl5_28 (active)
  p5.28-locale-gettext @1.70.0_0 (active)
  pango @1.42.4_2+quartz+x11 (active)
  pcre @8.44_1 (active)
  perl5 @5.28.3_0+perl5_28 (active)
  perl5.28 @5.28.3_1 (active)
  perl5.30 @5.30.3_0 (active)
  pkgconfig @0.29.2_0 (active)
  psutils @p17_1 (active)
  py38-anytree @2.8.0_0 (active)
  py38-beaker @1.11.0_0 (active)
  py38-libxml2 @2.9.10_0 (active)
  py38-lxml @4.4.1_0 (active)
  py38-mako @1.1.4_0 (active)
  py38-markdown @3.3.3_0 (active)
  py38-markupsafe @1.1.1_0 (active)
  py38-pygments @2.7.4_0 (active)
  py38-setuptools @51.3.3_0 (active)
  py38-six @1.15.0_0 (active)
  pygments_select @0.1_0 (active)
  python3_select @0.0_2 (active)
  python38 @3.8.7_0 (active)
  python_select @0.3_9 (active)
  re2c @2.0.3_0 (active)
  readline @8.1.000_0 (active)
  sqlite3 @3.34.1_0 (active)
  texinfo @6.7_1 (active)
  tiff @4.2.0_1 (active)
  uchardet @0.0.7_0 (active)
  urw-fonts @1.0.7pre44_0 (active)
  vala @0.50.2_0 (active)
  webp @1.1.0_1 (active)
  x265 @3.2.1_0 (active)
  Xft2 @2.3.3_0 (active)
  xmlcatmgr @2.2_1 (active)
  xorg-libice @1.0.10_0 (active)
  xorg-libpthread-stubs @0.4_0 (active)
  xorg-libsm @1.2.3_0 (active)
  xorg-libX11 @1.7.0_0 (active)
  xorg-libXau @1.0.9_0 (active)
  xorg-libXaw @1.0.13_2 (active)
  xorg-libxcb @1.14_0+python38 (active)
  xorg-libXdmcp @1.1.3_0 (active)
  xorg-libXext @1.3.4_0 (active)
  xorg-libXmu @1.1.3_0 (active)
  xorg-libXt @1.2.0_0 (active)
  xorg-util-macros @1.19.2_0 (active)
  xorg-xcb-proto @1.14.1_0+python38 (active)
  xorg-xcb-util @0.4.0_1 (active)
  xorg-xorgproto @2020.1_0 (active)
  xorg-xtrans @1.4.0_0 (active)
  xpm @3.5.13_0 (active)
  xrender @0.9.10_1 (active)
  XviD @1.3.7_0 (active)
  xz @5.2.5_0 (active)
  zlib @1.2.11_0 (active)
  zstd @1.4.8_0 (active)
[macports/tools] >

Of course as expected it stop after a long computation. It's about a
ffmpeg dependency : gmp

[macports/tools] > clean gmp
--->  Cleaning gmp
[macports/tools] > install gmp
--->  Fetching distfiles for gmp
--->  Verifying checksums for gmp
--->  Extracting gmp
--->  Applying patches to gmp
--->  Configuring gmp
Error: Failed to configure gmp, consult
/opt/digikam.org.arm64/var/macports/build/_opt_digikam.org.arm64_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_gmp/gmp/work/gmp-6.2.1/config.log
Error: Failed to configure gmp: configure failure: command execution failed
Error: See /opt/digikam.org.arm64/var/macports/logs/_opt_digikam.org.arm64_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_gmp/gmp/main.log
for details.
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
Error: Processing of port gmp failed

Are you agree that i open a generic file in bugzilla about digiKam
deps broken with Silicon ?

Best

Gilles Caulier

Le jeu. 28 janv. 2021 à 03:51, Ken Cunningham
<[hidden email]> a écrit :

>
> Gilles,
>
> This PR <https://github.com/macports/macports-ports/pull/9837> fixes cmake, for all practical purposes, as these cmake-requiring ports build on BigSur intel demonstrate.
>
> We will wait a bit for Micheal to push, but just go grab it and install it if you like.
>
> the fix, in the end, was as trivial as you might imagine.
>
> ken
>
>
>
> % port -v installed fish llvm-10
> The following ports are currently installed:
>   fish @3.1.2_0+universal (active) platform='darwin 20' archs='arm64 x86_64' date='2021-01-27T17:52:12-0800'
>   llvm-10 @10.0.1_1+universal (active) platform='darwin 20' archs='arm64 x86_64' date='2021-01-27T16:58:36-0800'
>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: How to cross compile Apple Silicon target under Intel Apple computer ?

pvr4me
> On Jan 28, 2021, at 12:30 PM, Gilles Caulier <[hidden email]> wrote:
>
>
> Of course as expected it stop after a long computation. It's about a
> ffmpeg dependency : gmp
>
> [macports/tools] > clean gmp
> --->  Cleaning gmp
> [macports/tools] > install gmp
> --->  Fetching distfiles for gmp
> --->  Verifying checksums for gmp
> --->  Extracting gmp
> --->  Applying patches to gmp
> --->  Configuring gmp
> Error: Failed to configure gmp, consult
> /opt/digikam.org.arm64/var/macports/build/_opt_digikam.org.arm64_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_gmp/gmp/work/gmp-6.2.1/config.log
> Error: Failed to configure gmp: configure failure: command execution failed
> Error: See /opt/digikam.org.arm64/var/macports/logs/_opt_digikam.org.arm64_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_gmp/gmp/main.log
> for details.
> Error: Follow https://guide.macports.org/#project.tickets to report a bug.
> Error: Processing of port gmp failed
>
> Are you agree that i open a generic file in bugzilla about digiKam
> deps broken with Silicon ?

Hmm, as of now, our user-submitted stats show that there are 14 installations of gmp on arm64:

https://ports.macports.org/port/gmp/stats?days=30&days_ago=0

I presume that is people with M1 Macs that have built and installed the software on that machine.

The gmp port has some interesting comments and code related to informing configure of the (build?) CPU in order to get the best performance from the compiled code:

https://github.com/macports/macports-ports/blob/master/devel/gmp/Portfile#L104

If I read this right (which is not at all assured), it looks like for non-universal builds, it is assuming that the build and target machines must have the same CPU.  Which is the opposite of your case.  Perhaps you would have more success if you tried to build everything universal?

The log referred to in the error messages  (/opt/digikam.org.arm64/var/macports/logs/_opt_digikam.org.arm64_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_gmp/gmp/main.log) should confirm if this was the problem.

If you need to file a ticket, have it refer to the port that is failing.  It is not especially relevant that you are trying to install it as part of the installation of DigiKam.  

Craig
Reply | Threaded
Open this post in threaded view
|

Re: How to cross compile Apple Silicon target under Intel Apple computer ?

Gilles Caulier
Ticket created :

https://trac.macports.org/ticket/62173

Gilles Caulier

Le jeu. 28 janv. 2021 à 19:17, Craig Treleaven <[hidden email]> a écrit :

>
> > On Jan 28, 2021, at 12:30 PM, Gilles Caulier <[hidden email]> wrote:
> >
> >
> > Of course as expected it stop after a long computation. It's about a
> > ffmpeg dependency : gmp
> >
> > [macports/tools] > clean gmp
> > --->  Cleaning gmp
> > [macports/tools] > install gmp
> > --->  Fetching distfiles for gmp
> > --->  Verifying checksums for gmp
> > --->  Extracting gmp
> > --->  Applying patches to gmp
> > --->  Configuring gmp
> > Error: Failed to configure gmp, consult
> > /opt/digikam.org.arm64/var/macports/build/_opt_digikam.org.arm64_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_gmp/gmp/work/gmp-6.2.1/config.log
> > Error: Failed to configure gmp: configure failure: command execution failed
> > Error: See /opt/digikam.org.arm64/var/macports/logs/_opt_digikam.org.arm64_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_gmp/gmp/main.log
> > for details.
> > Error: Follow https://guide.macports.org/#project.tickets to report a bug.
> > Error: Processing of port gmp failed
> >
> > Are you agree that i open a generic file in bugzilla about digiKam
> > deps broken with Silicon ?
>
> Hmm, as of now, our user-submitted stats show that there are 14 installations of gmp on arm64:
>
> https://ports.macports.org/port/gmp/stats?days=30&days_ago=0
>
> I presume that is people with M1 Macs that have built and installed the software on that machine.
>
> The gmp port has some interesting comments and code related to informing configure of the (build?) CPU in order to get the best performance from the compiled code:
>
> https://github.com/macports/macports-ports/blob/master/devel/gmp/Portfile#L104
>
> If I read this right (which is not at all assured), it looks like for non-universal builds, it is assuming that the build and target machines must have the same CPU.  Which is the opposite of your case.  Perhaps you would have more success if you tried to build everything universal?
>
> The log referred to in the error messages  (/opt/digikam.org.arm64/var/macports/logs/_opt_digikam.org.arm64_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_gmp/gmp/main.log) should confirm if this was the problem.
>
> If you need to file a ticket, have it refer to the port that is failing.  It is not especially relevant that you are trying to install it as part of the installation of DigiKam.
>
> Craig