Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#64903 closed defect (fixed)

Libreoffice installs dependencies and then fails because it is for 10.15

Reported by: angelog0 (Angelo Graziosi) Owned by: Tatsh (Andrew Udvare)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc:
Port: libreoffice

Description

I tried to install libreoffice via MacPorts and it, after installing _ALL_ dependencies fails because the macOS version, 10.13.6, is not 10.15!

Shouldn't the user have been notified earlier that MacPorts version of libreoffice requests macOS 10.15?

And now, how can I uninstall all those useless ports?

$ sudo port install libreoffice
Password:
--->  Computing dependencies for libreoffice
The following dependencies will be installed:
 bison
 bison-runtime
 box2d
 clucene
 cppunit
 flex
 gperf
 harfbuzz-icu
 hunspell
 hyphen
 ixion
 libabw
 libcdr-0.1
 libcuckoo
 libe-book
 libepoxy
 libepubgen
 libetonyek
 libexttextcat
 libfreehand
 liblangtag
 libmspub
 libmwaw
 libnumbertext
 libodfgen
 libpagemaker
 libproxy
 libqxp
 librevenge
 libstaroffice
 libvisio-0.1
 libwpd-0.10
 libwpg-0.3
 libwps
 libzmf
 mdds
 mesa
 mhash
 mythes
 neon
 orcus
 py39-lxml
 python27
 python2_select
 raptor2
 rasqal
 redland
 spdlog
 ucpp
 unixODBC
 xmlsec
 xorg-libXdamage
 xorg-libXxf86vm
 yajl
Continue? [Y/n]:
--->  Fetching archive for bison-runtime
[...]
--->  Fetching archive for xmlsec
--->  Attempting to fetch xmlsec-1.2.33_1.darwin_17.x86_64.tbz2 from http://packages.macports.org/xmlsec
--->  Attempting to fetch xmlsec-1.2.33_1.darwin_17.x86_64.tbz2.rmd160 from http://packages.macports.org/xmlsec
--->  Installing xmlsec @1.2.33_1
--->  Activating xmlsec @1.2.33_1
--->  Cleaning xmlsec
--->  Fetching archive for libreoffice
--->  Attempting to fetch libreoffice-7.3.2.1_0.darwin_17.x86_64.tbz2 from http://packages.macports.org/libreoffice
--->  Attempting to fetch libreoffice-7.3.2.1_0.darwin_17.x86_64.tbz2 from http://fco.it.packages.macports.org/libreoffice
--->  Attempting to fetch libreoffice-7.3.2.1_0.darwin_17.x86_64.tbz2 from http://fra.de.packages.macports.org/libreoffice
--->  Fetching distfiles for libreoffice
Error: Building libreoffice @7.3.2.1 requires macOS 10.15 or later.
Error:
Error: Consider downloading a version from LibreOffice's website:
Error: https://www.libreoffice.org/download/download/
Error:
Error: Failed to fetch libreoffice: incompatible OS X version
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_office_libreoffice/libreoffice/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug.
Error: Processing of port libreoffice failed
--->  Some of the ports you installed have notes:
  hunspell has the following notes:
    You must install (at least) one of the language dictionaries after installing this port in order for it to work.
  python27 has the following notes:
    To make this the default Python or Python 2 (i.e., the version run by the 'python' or 'python2' commands), run one
    or both of:

        sudo port select --set python python27
        sudo port select --set python2 python27

Change History (9)

comment:1 Changed 3 years ago by jmroot (Joshua Root)

Owner: set to Tatsh
Status: newassigned

Fair point, it should clear its dependencies on unsupported OS versions.

You can clean up with sudo port uninstall leaves (check port echo leaves first to see what will be uninstalled) or sudo port reclaim.

comment:2 Changed 3 years ago by Tatsh (Andrew Udvare)

Shouldn't the user have been notified earlier that MacPorts version of libreoffice requests macOS 10.15?

Unfortunately this feature does not exist yet. The code (not declarations like dependencies) that's within a port file is only ever run when the port is about to be installed. The code that stops this port from installing on < 10.15 is an example.

comment:3 Changed 3 years ago by kencu (Ken)

Given there are so many deps, you could do this:

if {${os.platform} eq "darwin" && ${os.major} < 19} {
    known_fail yes
+   depends_build
+   depends_lib
+   depends_run
    pre-fetch {
        ui_error "Building ${name} @${version} requires macOS 10.15 or later."
        ui_error ""
        ui_error "Consider downloading a version from LibreOffice's website:"
        ui_error "https://www.libreoffice.org/download/download/"
        ui_error ""
        return -code error "incompatible OS X version"
    }
}

comment:4 Changed 3 years ago by Tatsh (Andrew Udvare)

We would have to start doing that for so many ports. I think we should consider adding a restrictions_<os_name> global option as a function or boolean. So in this case

restrictions_darwin    ${os.major} >= 19 

This will remove a lot of conditional code in ports. And the evaluation of dependencies for any package can check this field easily.

comment:5 Changed 3 years ago by kencu (Ken)

some ports with onerous deps like this do it already.

But up to you, all the same to me.

Just wanted you to know it is both trivially simple and effective.

comment:7 Changed 3 years ago by Tatsh (Andrew Udvare)

comment:8 Changed 3 years ago by Tatsh (Andrew Udvare)

Resolution: fixed
Status: assignedclosed

In 82ed1bc2f98ff6c5b9e32953336be81de9659b85/macports-ports (master):

libreoffice: declare no deps for unsupported platforms

This allows the port to fail quickly so dependencies are not unnecessarily
installed only to fail when about to install libreoffice.

Closes #64903

comment:9 in reply to:  description Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to angelog0:

Shouldn't the user have been notified earlier that MacPorts version of libreoffice requests macOS 10.15?

That would be nice, wouldn't it? Unfortunately MacPorts base does not yet do that. See #60565.

Note: See TracTickets for help on using tickets.