Opened 23 months ago

Last modified 3 weeks ago

#55445 assigned defect

install phase fails with "no destroot found"

Reported by: gaming-hacker (G Alexander) Owned by:
Priority: Normal Milestone:
Component: base Version: 2.4.2
Keywords: Cc: tweakui
Port:

Description

All, I haven't checkecked this witih other ports but I don't want to install anything with perl5.24 as 5.26 is installed.

I am upgrading fftw-3 and this is the listing for dependencies

Installing Port
Full Name: fftw-3 @3.3.5+clang50+openmpi_devel
Build Dependencies:   clang-5.0
Library Dependencies: openmpi-devel-clang50
The following ports are dependencies of fftw-3 @3.3.5_1+clang50+openmpi_devel:
  clang-5.0
    xz
      libiconv
        gperf
      gettext
        expat
        ncurses
    cmake
      py27-sphinx
        py27-docutils
          python27
            pkgconfig
            bzip2
            db48
            libedit
            libffi
            openssl
              zlib
            sqlite3
            python_select
            python2_select
          py27-roman
            unzip
            py27-setuptools
        py27-alabaster
        py27-babel
          py27-tz
        py27-imagesize
        py27-jinja2
          py27-markupsafe
        py27-pygments
        py27-requests
          py27-chardet
          py27-idna
          py27-urllib3
          py27-certifi
        py27-six
        py27-snowballstemmer
        py27-sphinxcontrib-websupport
        sphinx_select
        py27-typing
      curl
        libidn2
          autoconf
          automake
          libtool
            xattr
          libunistring
            perl5.26
              gdbm
                readline
            texinfo
              help2man
                p5.26-locale-gettext
        curl-ca-bundle
      libarchive
        libxml2
        lzo2
        lz4
      libuv
    libomp-devel
    llvm-5.0
      xar
      libcxx
      llvm_select
    clang_select
    ld64
      ld64-latest
        libmacho-headers
  openmpi-devel-clang50
    hwloc
    mpi_select
    mpi-doc

It shows no rdeps on perl5.24 but 5.26, yet when upgrading fftw-3, the following occurs

UPgrading Port
--->  Computing dependencies for perl5.24
--->  Installing perl5.24 @5.24.3_0
Error: Failed to install perl5.24: no destroot found at: /opt/local/var/macports/build/_Users_glen_local_macports-ports_lang_perl5/perl5.24/work/destroot
Error: See /opt/local/var/macports/logs/_Users_glen_local_macports-ports_lang_perl5/perl5.24/main.log for details.
Error: Problem while installing perl5.24
Error: Follow https://guide.macports.org/#project.tickets to report a bug

Change History (8)

comment:1 Changed 23 months ago by ryandesign (Ryan Schmidt)

Difficult to say why perl5.24 was used. Could you attach the main.log?

Easy to say why installing it failed; see wiki:ProblemHotlist#nodestrootfound.

comment:2 Changed 23 months ago by mf2k (Frank Schima)

Keywords: rdeps removed
Owner: set to seanfarley
Status: newassigned

Nevermind. Base issue.

Last edited 23 months ago by mf2k (Frank Schima) (previous) (diff)

comment:3 Changed 23 months ago by mf2k (Frank Schima)

Owner: seanfarley deleted
Port: fftw-3 removed

comment:4 Changed 21 months ago by jmroot (Joshua Root)

Summary: rdeps doesn't report perl5.24 for fftw-3install phase fails with "no destroot found"

Presumably you have something installed with variants that are not (or are no longer) default, leading to the different dependencies. That part isn't really a bug.

The install failure does seem to be a bug. There have been other reports and we never worked out why it happened. It always seems to work fine after cleaning the affected port. If you had deleted /opt/local/var/macports/build/_Users_glen_local_macports-ports_lang_perl5/perl5.24/work/destroot without cleaning the port completely (i.e. the statefile still existed saying that the destroot phase was complete), that would explain it, but I guess you probably didn't.

comment:5 Changed 7 months ago by jmroot (Joshua Root)

Possibly something to do with the install failing due to conflicting files.

comment:6 Changed 4 months ago by ryandesign (Ryan Schmidt)

I don't believe that all of the users who have reported this problem over the years are manually deleting their destroots. There must be a bug in base that causes it to do so, or more likely causes it to not create the destroot (maybe not even run the destroot phase) in the first place.

In src/package1.0/portarchivefetch.tcl in proc portarchivefetch::fetchfiles we have this code:

    if {[info exists archive_exists]} {
        # modify state file to skip remaining phases up to destroot
        global target_state_fd
        foreach target {fetch checksum extract patch configure build destroot} {
            write_statefile target "org.macports.${target}" $target_state_fd
        }
        return 0
    }

I wonder if [info exists archive_exists] might be unexpectedly true in some situation, whereupon we would mark all the phases up to destroot complete, even though we should not have.

comment:7 Changed 3 months ago by mf2k (Frank Schima)

Cc: tweakui added

Has duplicate #58725.

comment:8 Changed 3 weeks ago by jmroot (Joshua Root)

The recipe to trigger the bug seems to be:

  1. Try to install a port when there is a conflicting file present (the port will be installed but fail to activate)
  2. Uninstall the port
  3. Try to install the port again without cleaning

If you just remove the conflicting file and try again without uninstalling, it's fine. If you clean before the new install attempt, it's of course also fine.

Note: See TracTickets for help on using tickets.