| 151 | == Build failures after upgrading to ncurses 6 == #ncurses6 |
| 152 | |
| 153 | After upgrading ncurses to version 6, a port may fail to build, with the following error message in the main.log or config.log file: |
| 154 | |
| 155 | {{{ |
| 156 | dyld: Library not loaded: /opt/local/lib/libncurses.5.dylib |
| 157 | Referenced from: /opt/local/lib/libreadline.6.dylib |
| 158 | Reason: no suitable image found. Did find: |
| 159 | /usr/lib/libncurses.5.dylib: no matching architecture in universal wrapper |
| 160 | }}} |
| 161 | |
| 162 | The solution is to upgrade readline: |
| 163 | |
| 164 | {{{ |
| 165 | sudo port upgrade readline |
| 166 | }}} |
| 167 | |
| 168 | Then clean the port that originally failed to build, and try to build it again. |
| 169 | |
| 170 | The problem occurs when building ports that use an autotools-based configure script, after having upgraded ncurses to version 6 but before having upgraded readline to use ncurses 6. The reason the problem occurs is that part of the boilerplate that autotools bakes into every configure script is to locate an awk implementation. The first one it checks for is gawk, so if the gawk port happens to be installed, a configure script will try to use that. gawk depends on readline, which depends on ncurses, and if you have upgraded ncurses but haven't upgraded readline to use the new ncurses, then gawk will be broken. |
| 171 | |
| 172 | MacPorts usually upgrades dependencies first, so you wouldn't see this problem if gawk were listed as a dependency of the port that failed to build. But we don't want to add unnecessary gawk dependencies to thousands of configure-based ports when the awk implementation that's part of OS X would work just as well. |
| 173 | |
| 174 | |
| 175 | == Port installation fails with "no destroot found" == #nodestrootfound |
| 176 | |
| 177 | Installing a port fails with the error message "no destroot found", for example: |
| 178 | |
| 179 | {{{ |
| 180 | :error:install org.macports.install for port libpixman returned: no destroot found at: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_graphics_libpixman/libpixman/work/destroot |
| 181 | }}} |
| 182 | |
| 183 | We do not know what causes this occasional problem, but the solution is to clean the affected port and try again. For example the above error shows libpixman is the port that failed, so to clean it you would run: |
| 184 | |
| 185 | {{{ |
| 186 | sudo port clean libpixman |
| 187 | }}} |
| 188 | |
| 189 | |
| 190 | |
| 191 | == Error message from "port upgrade outdated": uninstall failure: "an invalid entry was passed" == #interrupteduninstall |
| 192 | |
| 193 | Before MacPorts 2.1.3 it was possible to leave the registry in an inconsistent state if an uninstallation was interrupted. Although this has been fixed in version 2.1.3, the fix does not cure a previously corrupt registry. |
| 194 | |
| 195 | The perl script attached to the ticket [ticket:34482 about this bug] fixes the registry. The direct link is [attachment:ticket:34482:macports_34482_fix here]. |
| 196 | |