Sh script/cibuild Error

Hi,

My script/cibuild workflows keep having error.

Interestingly, my repo and local bash show a different error.

Below is the part of Git Bash saying I cannot open ‘libcurl’

‘C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ffi-1.14.2-x64-mingw32/lib/ffi/library.rb:145:in `block in ffi_lib’: Could not open library ‘libcurl’: ▒▒▒▒▒▒ ▒▒▒▒▒ ã▒▒ ▒▒ ▒▒▒▒▒ϴ▒.\r (LoadError).
Could not open library ‘libcurl.dll’: ▒▒▒▒▒▒ ▒▒▒▒▒ ã▒▒ ▒▒ ▒▒▒▒▒ϴ▒.\r.
Could not open library ‘libcurl.so.4’: ▒▒▒▒▒▒ ▒▒▒▒▒ ã▒▒ ▒▒ ▒▒▒▒▒ϴ▒.\r.
Could not open library ‘libcurl.so.4.dll’: ▒▒▒▒▒▒ ▒▒▒▒▒ ã▒▒ ▒▒ ▒▒▒▒▒ϴ▒.\r’

I tried gem install curb but only got another error
current directory: C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/curb-0.9.11/ext C:/Ruby27-x64/bin/ruby.exe -I C:/Ruby27-x64/lib/ruby/2.7.0 -r ./siteconf20201231-55420-1mlunr8.rb extconf.rb checking for curl-config... no checking for -lcurl... no *** extconf.rb failed ***

I already have curl.exe and path it in windows PATH, but didn’t make change.

Below is my repo saying other errors

Could someone teach me why this is happening? And how should I resolve these errors?

Seems like libcurl error is unusual for windows but I am here.

In case, my repo is [https://github.com/Jwmc999/Jwmc999.github.io]

Thanks

did you fix it? I see some edits to the post file.

No idea about your local issue, but the screenshot of the errors is coming from html proofer not jekyll so that isn’t really a jekyll error. html proofer is saying you have some links that don’t work.

For you local error, please paste the whole terminal output - not just the couple lines about the error, sometimes their is helpful info above that. Also don’t paste a screenshot if possible, just copy and then paste it into a code block (3 back tics first, then code, then 3 more back tics - back tic is the single quote like thing: ` that is shared with the ~).

Thanks for the tips!
I edited post file but html still have some error related to links.

My local error full code is as below

$ script/cibuild
Configuration file: C:/Users/user/Desktop/Jwmc999.github.io/_config.yml
            Source: .
       Destination: ./_site
 Incremental build: disabled. Enable with --incremental
      Generating...
      Remote Theme: Using theme pages-themes/hacker
       Jekyll Feed: Generating feed for posts
   GitHub Metadata: No GitHub API authentication could be found. Some fields may be missing or have incorrect data.
                    done in 3.562 seconds.
 Auto-regeneration: disabled. Use --watch to enable.
C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ffi-1.14.2-x64-mingw32/lib/ffi/library.rb:145:in `block in ffi_lib': Could not open library 'libcurl': ▒▒▒▒▒▒ ▒▒▒▒▒ ã▒▒ ▒▒ ▒▒▒▒▒ϴ▒.\r (LoadError)
.
Could not open library 'libcurl.dll': ▒▒▒▒▒▒ ▒▒▒▒▒ ã▒▒ ▒▒ ▒▒▒▒▒ϴ▒.\r
.
Could not open library 'libcurl.so.4': ▒▒▒▒▒▒ ▒▒▒▒▒ ã▒▒ ▒▒ ▒▒▒▒▒ϴ▒.\r
.
Could not open library 'libcurl.so.4.dll': ▒▒▒▒▒▒ ▒▒▒▒▒ ã▒▒ ▒▒ ▒▒▒▒▒ϴ▒.\r
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ffi-1.14.2-x64-mingw32/lib/ffi/library.rb:99:in `map'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ffi-1.14.2-x64-mingw32/lib/ffi/library.rb:99:in `ffi_lib'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ethon-0.12.0/lib/ethon/curls/settings.rb:7:in `<module:Curl>'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ethon-0.12.0/lib/ethon/curls/settings.rb:2:in `<module:Ethon>'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ethon-0.12.0/lib/ethon/curls/settings.rb:1:in `<top (required)>'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ethon-0.12.0/lib/ethon/curl.rb:27:in `require'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ethon-0.12.0/lib/ethon/curl.rb:27:in `<module:Curl>'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ethon-0.12.0/lib/ethon/curl.rb:13:in `<module:Ethon>'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ethon-0.12.0/lib/ethon/curl.rb:8:in `<top (required)>'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ethon-0.12.0/lib/ethon.rb:15:in `require'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/ethon-0.12.0/lib/ethon.rb:15:in `<top (required)>'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/typhoeus-1.4.0/lib/typhoeus.rb:2:in `require'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/typhoeus-1.4.0/lib/typhoeus.rb:2:in `<top (required)>'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/html-proofer-3.18.3/lib/html-proofer/url_validator.rb:3:in `require'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/html-proofer-3.18.3/lib/html-proofer/url_validator.rb:3:in `<top (required)>'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/html-proofer-3.18.3/lib/html-proofer.rb:7:in `require'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/html-proofer-3.18.3/lib/html-proofer.rb:7:in `block in require_all'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/html-proofer-3.18.3/lib/html-proofer.rb:6:in `each'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/html-proofer-3.18.3/lib/html-proofer.rb:6:in `require_all'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/html-proofer-3.18.3/lib/html-proofer.rb:12:in `<top (required)>'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/html-proofer-3.18.3/bin/htmlproofer:8:in `require'
        from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/html-proofer-3.18.3/bin/htmlproofer:8:in `<top (required)>'
        from C:/Ruby27-x64/bin/htmlproofer:23:in `load'
        from C:/Ruby27-x64/bin/htmlproofer:23:in `<main>'

When I tried to install ‘libcurl’

$ gem install curb
ERROR:  Error installing curb:
        ERROR: Failed to build gem native extension.

    current directory: C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/curb-0.9.11/ext
C:/Ruby27-x64/bin/ruby.exe -I C:/Ruby27-x64/lib/ruby/2.7.0 -r ./siteconf20210101-45152-1elqhij.rb extconf.rb
checking for curl-config... no
checking for -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=C:/Ruby27-x64/bin/$(RUBY_BASE_NAME)
        --with-curl-dir
        --without-curl-dir
        --with-curl-include
        --without-curl-include=${curl-dir}/include
        --with-curl-lib
        --without-curl-lib=${curl-dir}/lib
        --with-curllib
        --without-curllib
extconf.rb:18:in `<main>':   Can't find libcurl or curl/curl.h (RuntimeError)

  Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
  options to extconf.

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  C:/Ruby27-x64/lib/ruby/gems/2.7.0/extensions/x64-mingw32/2.7.0/curb-0.9.11/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/curb-0.9.11 for inspection.
Results logged to C:/Ruby27-x64/lib/ruby/gems/2.7.0/extensions/x64-mingw32/2.7.0/curb-0.9.11/gem_make.out
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions. This could take a while...

I already have a ‘curl.exe’ in ‘C:\Program Files\Git\mingw64\bin’ and added that to the Path. Same error happens for gem install curb.

Read the error message carefully :wink:

The error says it can’t find the library (usually .so in GNU/Linux, .dll in Windows), curl.exe is an executable not a library.

Also, you need to make sure the gem installer can read the lib/ and include/ directories inside your Mingw64 directory, because that’s where the compiler is going to look for the library (libcurl) and the header files (curl.h).

I don’t use Windows, so I can only advice you to read the documentation about installing the gem you are having problems with, on Windows.

2 Likes

Thanks for your words, I do have library.dill under ‘C:\Ruby27-x64’ still having difficulty in fixing this error. I found this post https://github.com/taf2/curb/issues/315, but did not really work for me as I couldn’t find ‘devkitvars.sh’ from ‘C:\Ruby27-x64’, which I installed with Devkit. Most google search shows Linux or Ubuntu, not windows 10. If anyone aware of how to solve this error, I would really appreciate it!

this usually means ruby was installed without the devkit. I think you said you did it with the devkit? but if jekyll installed then maybe this is not the problem as it needs the devkit.

if you do gem install jekyll do you get any errors?
I’m guessing your issue is not with jekyll, it is with something else in your script? I would try to do the things your script does one at a time manually to see where the error is happening.

1 Like

I can"t see why curb is needed here. The curb README says it depends on libcurl to be installed already, not the other way around

The orginal error was lack of libcurl.dll and then some fallbacks. You said you have library.dill setup but I don’t know if that’s the same thing.

So I’d say download libcurl again, and put it in a bin directory.

(Overview and link to downloads)

See also answer here with download and move steps

This thread seems mostly about the local curl issues.

The CI build error is specific to the way you have URLs setup in you repo and would be better as a separate thread if this doesn’t solve it
… what I did see is a _site/post.html referencing 3x bad /tree/main/... urls

Log

And I see that is how you reference posts in your markdown file.

The basic markdown way would NOT work even if you shortened the URL.

[Foo](/_posts/foo.md)

Because the final post URL is actually like more levels down like

/2021/01/01/foo.html

Have a look at the Jekyll docs on linking to files.

You need to do this for pages with the link tag.

[Foo]({% link foo/about.md %})

And for posts you need the post_url tag.

[Foo]({% post_url 2021-01-01-foo %})

Which will render the URL as

href="/2021/01/01/foo.html"

See post_url in Jekyll docs.

1 Like

Thanks for the info, while I am trying to fix the link error, I found my Jekyll version is 3.9.0, not 4.0. It won’t upgrade via command, so I’m reinstalling ruby…
Thanks anyway