Insomnia: [Development] Dynamically link libcurl for Linux dev

Created on 5 Jun 2018  ·  16Comments  ·  Source: Kong/insomnia

  • Insomnia Version: 5.16.6
  • Operating System: Solus 3.999 (linux 4.16.13-74 / node 8.11.2)

Solus repository has version 5.14.7, I would like to upgrade to 5.16.6. However, I get the following error:

bash lerna ERR! node-pre-gyp verb command install [] lerna ERR! node-pre-gyp info check checked for "/home/build/YPKG/root/insomnia/build/insomnia-5.16.6/packages/insomnia-libcurl/node_modules/insomnia-node-libcurl/lib/binding/node_libcurl.node" (not found) lerna ERR! node-pre-gyp http GET https://github.com/getinsomnia/node-libcurl/releases/download/v1.2.17/node_libcurl-v1.2.17-node-v57-linux-x64.tar.gz lerna ERR! node-pre-gyp http 404 https://github.com/getinsomnia/node-libcurl/releases/download/v1.2.17/node_libcurl-v1.2.17-node-v57-linux-x64.tar.gz lerna ERR! node-pre-gyp ERR! Tried to download(404): https://github.com/getinsomnia/node-libcurl/releases/download/v1.2.17/node_libcurl-v1.2.17-node-v57-linux-x64.tar.gz lerna ERR! node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v57 ABI, glibc) (falling back to source compile with node-gyp) lerna ERR! node-pre-gyp http 404 status code downloading tarball https://github.com/getinsomnia/node-libcurl/releases/download/v1.2.17/node_libcurl-v1.2.17-node-v57-linux-x64.tar.gz lerna ERR! node-pre-gyp verb command build [ 'rebuild' ] lerna ERR! Could not run curl-config, please make sure libcurl dev package is installed. lerna ERR! Output: curl was built with static libraries disabled

Is it possible to reverse libcurl static link? What is my best option?

_Note: I'm not a Solus developer. I want to update Insomnia because I use it in my daily work._

accepted

Most helpful comment

For anyone waiting on this, can you try npm run bootstrap from the latest from the develop branch?

All 16 comments

👋 Thanks for opening your first issue! If you're reporting a 🐞 bug, please make sure
you include steps to reproduce it. If you're requesting a feature 🎁, please provide real
use cases that would benefit. 👪

To help make this a smooth process, please be sure you have first read the
contributing guidelines.

Hmm, I'm not sure what Solus so pardon my ignorance, but could you run one of the pre-packaged builds?

https://github.com/getinsomnia/insomnia/releases/download/v5.16.6/insomnia-5.16.6-x86_64.AppImage
https://github.com/getinsomnia/insomnia/releases/download/v5.16.6/insomnia-5.16.6.tar.gz
https://github.com/getinsomnia/insomnia/releases/download/v5.16.6/insomnia_5.16.6_amd64.snap

Having said that, I do need do implement dynamically-linked build for development on Linux. The switch to a static build was a rather sudden decision so I have yet to get around to fixing it. I'll see if I can figure something out soon.

I'm using AppImage. Works well, thanks.

Solus uses the eopkg package management system to deliver software to the end-user.

Home | Solus

With the insomnia-5.16.6.tar.gz file, I can use solbuild to package the application in .eopkg format and distribute it in _Solus Software Center_

Dynamically-linked would be great.

As an example, I would use the following package.yml to generate the .eopkg file:

yml name : insomnia version : 5.16.6 release : 3 source : - https://github.com/getinsomnia/insomnia/archive/v5.16.6.tar.gz : 2409aa6e340ba197953b9748c20fd09d66958659238f034bd50311b4ad01e45a license : AGPL-3.0 component : programming.tools summary : Insomnia is a cross-platform REST client description: | Insomnia is a cross-platform REST client networking : yes builddeps : - pkgconfig(alsa) - pkgconfig(gconf-2.0) - pkgconfig(gtk+-2.0) - pkgconfig(libcurl) - pkgconfig(xscrnsaver) - pkgconfig(xtst) - cups-devel - lerna - nodejs rundeps : - nodejs build : | ... install : | ...

The tar on the releases page contains a built executable that may work better. Would that be sufficient? That way you shouldn't need nodejs as a dependency or a complicated build step.

Also note, the license should be MIT.

Thanks for the tip.

I'm not a Solus developer. But I suppose that building from source allows developers to optimize and apply possible fixes. (For example, in version 5.14.7, there was a patch to disable analytics by default)

Anyway, we can still use snap (Yes, it works well on Solus) or AppImage. But it would be nice to update the version available in _Solus Software Center_, currently 5.14.7

A build shouldn't be necessary for that feature since it only needs an environment variable to be set.

If you know the maintainer of the package, I would suggest using the prebuilt binary from the tar file to make things easier. This is what the AUR package does for the Arch Linux repository.

I'm curious to see what your build and install steps are in that file. Are you able to post those?

Sure!

yml setup : | %patch -p1 < $pkgfiles/0001-Disable-Analytics-by-default.patch build : | npm install electron-builder export PATH=$PATH:$workdir/node_modules/.bin npm run bootstrap npm run app-build cd packages/insomnia-app/build electron-builder --linux dir --x64 install : | install -Dm644 packages/insomnia-app/app/static/icon.png $installdir/usr/share/pixmaps/insomnia.png install -Dm644 $pkgfiles/insomnia.desktop $installdir/usr/share/applications/insomnia.desktop install -dm00644 $installdir/usr/share/insomnia install -dm00644 $installdir/usr/bin cp -R packages/insomnia-app/build/dist/linux-unpacked/* $installdir/usr/share/insomnia/ ln -s /usr/share/insomnia/insomnia $installdir/usr/bin/insomnia

Honestly, I'll follow your suggestion. I'll send a review of the package.yml with prebuilt binary from the tar file, hope they accept.

By the way, thank you for your attention.

Are you able to see the contents of 0001-Disable-Analytics-by-default.patch? I'd be curious to see what's in there.

I should also note that analytics were completely removed in the latest version so it should no longer be an issue for the package :smile:

No problem 😄Anything to help ensure that 2018 is the year of Linux on the desktop 👍

I should also note that analytics were completely removed in the latest version so it should no longer be an issue for the package smile

Yes, I read this in the changelog :)

I'm cleaning the package.yml and deleting this bunch of unnecessary stuff. I also changed the license.

Thanks again, you rock!

FYI

````
Date: Tue, 26 Dec 2017 19:31:43 +0100
Subject: [PATCH 1/1] Disable Analytics by default


packages/insomnia-app/app/models/settings.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/insomnia-app/app/models/settings.js b/packages/insomnia-app/app/models/settings.js
index b760008a..90f22892 100644
--- a/packages/insomnia-app/app/models/settings.js
+++ b/packages/insomnia-app/app/models/settings.js
@@ -55,7 +55,7 @@ export function init (): BaseSettings {
forceVerticalLayout: false,
autoHideMenuBar: false,
theme: 'default',
- disableAnalyticsTracking: false,
+ disableAnalyticsTracking: true,
pluginPath: '',
nunjucksPowerUserMode: false,

deviceId: null,

2.15.1
````

Ooo, that makes more sense now why there's a build step. When I mentioned the environment variable before I was confusing it with a different feature.

Using the prebuilt didn't work for this case. I think the correct thing is to wait for the dynamic link.

Current (Source code):

[Build] install successful [Examine] Examining packages [Stripped] /usr/share/insomnia/libffmpeg.so [Stripped] /usr/share/insomnia/libnode.so [Stripped] /usr/share/insomnia/insomnia [Dependency] /usr/share/insomnia/insomnia adds dependency on libnssutil3.so from libnss [Dependency] /usr/share/insomnia/insomnia adds dependency on libnspr4.so from libnspr [Dependency] /usr/share/insomnia/insomnia adds dependency on libpango-1.0.so.0 from pango ... (many other dependencies) [Package] Creating /home/build/work/insomnia-5.14.7-2-1-x86_64.eopkg ... [Package] Building complete INFO[22:59:53] Building succeeded

Prebuilt:

[Build] install successful [Examine] Examining packages File does not exist: /home/build/YPKG/root/insomnia/install/usr/bin/insomnia [Stripped] /usr/share/insomnia/libffmpeg.so [Stripped] /usr/share/insomnia/libnode.so [Stripped] /usr/share/insomnia/insomnia [Dependency] /usr/share/insomnia/insomnia adds dependency on libnssutil3.so from libnss [Dependency] /usr/share/insomnia/insomnia adds dependency on libnspr4.so from libnspr [Dependency] /usr/share/insomnia/insomnia adds dependency on libgio-2.0.so.0 from glib2 Fatal: Unknown symbol: libpangocairo-1.0.so.0 Fatal: Unknown symbol: libpango-1.0.so.0 [Dependency] /usr/share/insomnia/insomnia adds dependency on libglib-2.0.so.0 from glib2 [Dependency] /usr/share/insomnia/insomnia adds dependency on libgcc_s.so.1 from libgcc Fatal: Unknown symbol: libcairo.so.2 [Dependency] /usr/share/insomnia/insomnia adds dependency on libexpat.so.1 from expat Fatal: Unknown symbol: libXss.so.1 Fatal: Unknown symbol: libgtk-x11-2.0.so.0 [Dependency] /usr/share/insomnia/insomnia adds dependency on libstdc++.so.6 from libstdc++ Fatal: Unknown symbol: libXcomposite.so.1 [Dependency] /usr/share/insomnia/insomnia adds dependency on libgmodule-2.0.so.0 from glib2 Fatal: Unknown symbol: libasound.so.2 Fatal: Unknown symbol: libXtst.so.6 Fatal: Unknown symbol: libXdamage.so.1 Fatal: Unknown symbol: libgdk-x11-2.0.so.0 Fatal: Unknown symbol: libgconf-2.so.4 Fatal: Unknown symbol: libX11.so.6 [Dependency] /usr/share/insomnia/insomnia adds dependency on libc.so.6 from glibc Fatal: Unknown symbol: libXi.so.6 Fatal: Unknown symbol: libfontconfig.so.1 Fatal: Unknown symbol: libXcursor.so.1 Fatal: Unknown symbol: libX11-xcb.so.1 Fatal: Unknown symbol: libxcb.so.1 [Dependency] /usr/share/insomnia/insomnia adds dependency on librt.so.1 from glibc [Dependency] /usr/share/insomnia/insomnia adds dependency on libgobject-2.0.so.0 from glib2 [Dependency] /usr/share/insomnia/insomnia adds dependency on libpthread.so.0 from glibc Fatal: Unknown symbol: libXrandr.so.2 Fatal: Unknown symbol: libfreetype.so.6 Fatal: Unknown symbol: libcups.so.2 [Dependency] /usr/share/insomnia/insomnia adds dependency on libnss3.so from libnss [Dependency] /usr/share/insomnia/insomnia adds dependency on libsmime3.so from libnss [Dependency] /usr/share/insomnia/insomnia adds dependency on libdbus-1.so.3 from dbus Fatal: Unknown symbol: libgdk_pixbuf-2.0.so.0 Fatal: Unknown symbol: libXrender.so.1 Fatal: Unknown symbol: libatk-1.0.so.0 [Dependency] /usr/share/insomnia/insomnia adds dependency on ld-linux-x86-64.so.2 from glibc [Dependency] /usr/share/insomnia/insomnia adds dependency on libm.so.6 from glibc Fatal: Unknown symbol: libXfixes.so.3 [Dependency] /usr/share/insomnia/insomnia adds dependency on libdl.so.2 from glibc Fatal: Unknown symbol: libXext.so.6 [Package] Creating /home/build/work/insomnia-5.16.6-3-1-x86_64.eopkg ... [History] Constructing new history entry [Package] Building complete INFO[23:09:20] Building succeeded

Experiencing same issue running npm run bootstrap on Linux 4.16.13-2-ARCH

▶ npm version
{ insomnia: '1.0.0',
  npm: '5.6.0',
  ares: '1.10.1-DEV',
  cldr: '32.0',
  http_parser: '2.8.0',
  icu: '60.1',
  modules: '57',
  napi: '3',
  nghttp2: '1.32.0',
  node: '8.11.3',
  openssl: '1.0.2o',
  tz: '2017c',
  unicode: '10.0',
  uv: '1.19.1',
  v8: '6.2.414.54',
  zlib: '1.2.11' }

lerna log

For anyone waiting on this, can you try npm run bootstrap from the latest from the develop branch?

FYI, I put the static build of insomnia-node-libcurl behind an environment variable

https://github.com/getinsomnia/node-libcurl/blob/55bf924081c39bf1e2fde2fa1aa721167304c3a1/binding.gyp#L68-L80

I just got word from someone that this fix worked. Closing this one!

Thank You! It worked.

Was this page helpful?
0 / 5 - 0 ratings