Opened 6 years ago

Closed 6 years ago

#58283 closed defect (fixed)

VLC @3.0.6_1 fails to build against libssh2 1.8.1 due to missing defines

Reported by: jonnyflash-owlgod Owned by: RJVB (René Bertin)
Priority: Normal Milestone:
Component: ports Version: 2.5.4
Keywords: Cc:
Port: VLC

Description (last modified by jonnyflash-owlgod)

Attempting install of VLC on iMac Late 2015, macOS 10.14.2, Xcode 10.1 build version 10B61

:error:configure Failed to configure VLC: configure failure: command execution failed
:debug:configure Error code: NONE
:debug:configure Backtrace: configure failure: command execution failed
:debug:configure     while executing
:debug:configure "$procedure $targetname"

Attachments (2)

main.log (4.2 MB) - added by jonnyflash-owlgod 6 years ago.
patch-vlc-fix-libssh2.diff (500 bytes) - added by kencu (Ken) 6 years ago.

Change History (16)

comment:1 Changed 6 years ago by kencu (Ken)

Cc: rjvbertin@… removed
Description: modified (diff)
Owner: set to RJVB
Status: newassigned

comment:2 Changed 6 years ago by kencu (Ken)

Hi,

To have any hope of helping you, we'll need to see the log that was generated during your failed build attempt as well.

Also -- if you're really still running MacPorts 2.5.2, you should update to the current version (sudo port -v selfupdate) and then upgrade your ports first.

comment:3 Changed 6 years ago by jonnyflash-owlgod

Description: modified (diff)

comment:4 in reply to:  2 Changed 6 years ago by jonnyflash-owlgod

Replying to kencu: Replying to jonnyflash-owlgod: ; I've run sudo port -v self update ]]] and it states {{{ ---> MacPorts base is already the latest version

This is what I got with a standard build:

:info:build Exit code: 2
:error:build Failed to build VLC: command execution failed
:debug:build Error code: CHILDSTATUS 62837 2
:debug:build Backtrace: command execution failed
:debug:build     while executing
:debug:build "system {*}$notty {*}$nice $fullcmdstring"
:debug:build     invoked from within
:debug:build "command_exec build"
:debug:build     (procedure "portbuild::build_main" line 8)
:debug:build     invoked from within
:debug:build "$procedure $targetname"

Hi,

To have any hope of helping you, we'll need to see the log that was generated during your failed build attempt as well.

Also -- if you're really still running MacPorts 2.5.2, you should update to the current version (sudo port -v selfupdate) and then upgrade your ports first.

Changed 6 years ago by jonnyflash-owlgod

Attachment: main.log added

comment:5 in reply to:  2 Changed 6 years ago by jonnyflash-owlgod

Replying to kencu:

main.log attached.

Hi,

To have any hope of helping you, we'll need to see the log that was generated during your failed build attempt as well.

Also -- if you're really still running MacPorts 2.5.2, you should update to the current version (sudo port -v selfupdate) and then upgrade your ports first.

comment:6 Changed 6 years ago by jonnyflash-owlgod

Version: 2.5.22.5.4

comment:7 Changed 6 years ago by kencu (Ken)

So this is the error:

:info:build access/sftp.c:310:14: error: use of undeclared identifier 'LIBSSH2_HOSTKEY_TYPE_ECDSA_256'
:info:build         case LIBSSH2_HOSTKEY_TYPE_ECDSA_256:
:info:build              ^
:info:build access/sftp.c:311:42: error: use of undeclared identifier 'LIBSSH2_KNOWNHOST_KEY_ECDSA_256'
:info:build             knownhost_fingerprint_algo = LIBSSH2_KNOWNHOST_KEY_ECDSA_256;
:info:build                                          ^
:info:build access/sftp.c:314:14: error: use of undeclared identifier 'LIBSSH2_HOSTKEY_TYPE_ECDSA_384'
:info:build         case LIBSSH2_HOSTKEY_TYPE_ECDSA_384:
:info:build              ^
:info:build access/sftp.c:315:42: error: use of undeclared identifier 'LIBSSH2_KNOWNHOST_KEY_ECDSA_384'
:info:build             knownhost_fingerprint_algo = LIBSSH2_KNOWNHOST_KEY_ECDSA_384;
:info:build                                          ^
:info:build access/sftp.c:318:14: error: use of undeclared identifier 'LIBSSH2_HOSTKEY_TYPE_ECDSA_521'
:info:build         case LIBSSH2_HOSTKEY_TYPE_ECDSA_521:
:info:build              ^
:info:build access/sftp.c:319:42: error: use of undeclared identifier 'LIBSSH2_KNOWNHOST_KEY_ECDSA_521'
:info:build             knownhost_fingerprint_algo = LIBSSH2_KNOWNHOST_KEY_ECDSA_521;
:info:build                                          ^

Those constants are supposedly guarded to prevent this kind of error, in sftp.c:

  309 #if LIBSSH2_VERSION_NUM >= 0x010801
  310         case LIBSSH2_HOSTKEY_TYPE_ECDSA_256:
  311             knownhost_fingerprint_algo = LIBSSH2_KNOWNHOST_KEY_ECDSA_256;
  312             break;
  313 
  314         case LIBSSH2_HOSTKEY_TYPE_ECDSA_384:
  315             knownhost_fingerprint_algo = LIBSSH2_KNOWNHOST_KEY_ECDSA_384;
  316             break;
  317 
  318         case LIBSSH2_HOSTKEY_TYPE_ECDSA_521:
  319             knownhost_fingerprint_algo = LIBSSH2_KNOWNHOST_KEY_ECDSA_521;
  320             break;
  321 #endif

And I confirm that when I try to build vlc on my Mojave system, I get the same error. So something is amiss, indeed.

comment:8 Changed 6 years ago by kencu (Ken)

Those defines were added to libssh2 11 months ago <https://github.com/libssh2/libssh2/blame/master/include/libssh2.h> but for whatever reason, they are not in the libssh2.h we have installed at present, which is version 1.8.1, the latest release. So...why not?

comment:9 Changed 6 years ago by kencu (Ken)

I just bumped libssh2 locally to 1.8.2, and it's not defined there either. Looks like vlc was overly optimistic in when that define would be available.

Probably best to change the guard in sftp.c to 0x010901 for now, and let them wait it out. I'll try that.

comment:10 Changed 6 years ago by kencu (Ken)

Yep, that did it:

$ port -v installed vlc
The following ports are currently installed:
  VLC @3.0.6_1+quartz (active) platform='darwin 18' archs='x86_64' date='2019-03-31T23:11:16-0700'

I upload the patch for you, until Rene gets around to it. Or maybe I'll PR it a bit later on.

Changed 6 years ago by kencu (Ken)

Attachment: patch-vlc-fix-libssh2.diff added

comment:11 Changed 6 years ago by kencu (Ken)

So if you know how to apply a patch, go right ahead. IF you don't and you want to get this done, go into your vlc build directory like this:

cd `port work vlc`
cd v*

and then edit the file in question yourself like this, using bbedit or your favourite text editor:

bbedit modules/access/sftp.c

and change that number (line 309) from Ox010801 to Ox010901

Save the file. Go out of the build directory, and away you go with your build:

cd /
sudo port -v install vlc

and if you have any luck at all, you should get a clean build like I just did.

comment:12 Changed 6 years ago by kencu (Ken)

Summary: VLC fails to configure when running with traceVLC @3.0.6_1 fails to build against libssh2 1.8.1 due to missing defines

comment:14 Changed 6 years ago by ken-cunningham-webuse

Resolution: fixed
Status: assignedclosed

In 5d80a52c3b53fbf07f3f6f634cdee0d47ba035c3/macports-ports (master):

vlc: fix build against libssh2

an expected #define in v 1.8.1 of libssh2 was not
actually present. change test to block use

closes: #58283

Note: See TracTickets for help on using tickets.