commercialhaskell / stack

The Haskell Tool Stack
http://haskellstack.org
BSD 3-Clause "New" or "Revised" License
4k stars 843 forks source link

problem building --docker double-conversion with lts-13.0 #4470

Closed esjmb closed 5 years ago

esjmb commented 5 years ago

Hi,

rebuilding a project that compiled fine using prior lts-12.x, but now using lts-13.0 the build fails with a foreign dependency problem.

  1. project has a dependency on double-conversion-2.0.2.0
  2. using fpco/stack-build

the following error arises:

Configuring double-conversion-2.0.2.0...
    Cabal-simple_mPHDZzAJ_2.4.0.1_ghc-8.6.3: Missing dependency on a foreign
    library:
    * Missing (or bad) C library: stdc++
    This problem can usually be solved by installing the system package that
    provides this library (you may need the "-dev" version). If the library is
    already installed but in a non-standard location then you can use the flags
    --extra-include-dirs= and --extra-lib-dirs= to specify where it is.If the
    library file does exist, it may contain errors that are caught by the C
    compiler at the preprocessing stage. In this case you can re-run configure
    with the verbosity flag -v3 to see the error messages.
Received ExitFailure 1 when running
Raw command: /usr/local/bin/docker start -a -i 33cb798d402713220eea57a44b860b126e40a2d703357afb8cb19a95c8fba5ca

The project builds fine without "--docker" Other projects without double-conversion build fine also.

thanks. s.

mihaimaruseac commented 5 years ago

Might be an issue with double-conversion between 2.0.2.0 and the version in lts-12.x (can you check what version was there? double-conversion is a grandfathered dependency so doesn't show directly on the stackage page)

esjmb commented 5 years ago

Hi, thanks for the quick reponse.

the dependency path is as follows:

stdc++ <-- double-conversion <-- bytestring-conversion <-- servant-auth-server

where A<—B means B depends on A

the versions seems stable over recent time:

bytestring-conversion’s current version (0.3.1) has been stable for quite some time - you have to go back to LTS 12.17 before you regress to 0.3.0 : https://www.stackage.org/package/bytestring-conversion/snapshots

double-conversion has been stable on 2.0.2.0 since its LTS 7.13 : https://www.stackage.org/package/double-conversion/snapshots

the last change to double-conversion in the commit history is dec 2016. the last change to bytestring-conversion was in jan 2016.

I’ve had a scan of servant-auth-server commits for the cabal file and i don’t think there has been a change there that is relevant either.

So, I don’t think the issue is with code in either library changed from 12.x (i think i was on 12.21 as it happens) to 13.0.

So far as I can tell its just a build issue on ubuntu with its-13.0?

the code builds on my MacBook pro with stack build, but when i try stack --docker build with LTS set to 13.0, no joy. I've tried a complete kill of stack-work etc. I've also tried an exec bash into fpco-stack-build and so far as i can tell, g++ is installed.

cheers Stephen

mihaimaruseac commented 5 years ago

Thanks for the reply. Indeed, it is not from Haskell land. One more thing that you could try (I'm not on a computer where I can run stack or other Haskell code) is to exec bash into the docker container and check versions of g++, clang++ (if available) and contents of /lib and /usr/lib (do a find -type f on them and pastebin the result, if possible).

Thanks.

esjmb commented 5 years ago

here the results:

g++-5 --version g++-5 (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609

no clang++

find /lib -type f 
/lib/udev/hwclock-set
/lib/udev/rules.d/99-systemd.rules
/lib/udev/rules.d/73-seat-late.rules
/lib/udev/rules.d/71-seat.rules
/lib/udev/rules.d/70-uaccess.rules
/lib/udev/rules.d/60-gnupg.rules
/lib/udev/rules.d/60-libfreenect0.5.rules
/lib/udev/rules.d/60-persistent-v4l.rules
/lib/udev/rules.d/77-mm-longcheer-port-types.rules
/lib/udev/rules.d/95-upower-wup.rules
/lib/udev/rules.d/60-persistent-input.rules
/lib/udev/rules.d/80-libinput-device-groups.rules
/lib/udev/rules.d/77-mm-haier-port-types.rules
/lib/udev/rules.d/77-mm-telit-port-types.rules
/lib/udev/rules.d/75-net-description.rules
/lib/udev/rules.d/60-persistent-alsa.rules
/lib/udev/rules.d/85-keyboard-configuration.rules
/lib/udev/rules.d/40-vm-hotadd.rules
/lib/udev/rules.d/40-i2c-tools.rules
/lib/udev/rules.d/77-mm-x22x-port-types.rules
/lib/udev/rules.d/69-xorg-vmmouse.rules
/lib/udev/rules.d/71-nvidia.rules
/lib/udev/rules.d/60-evdev.rules
/lib/udev/rules.d/69-libmtp.rules
/lib/udev/rules.d/95-upower-hid.rules
/lib/udev/rules.d/80-udisks2.rules
/lib/udev/rules.d/50-firmware.rules
/lib/udev/rules.d/77-mm-platform-serial-whitelist.rules
/lib/udev/rules.d/70-power-switch.rules
/lib/udev/rules.d/42-pn53x.rules
/lib/udev/rules.d/70-mouse.rules
/lib/udev/rules.d/85-regulatory.rules
/lib/udev/rules.d/50-udev-default.rules
/lib/udev/rules.d/77-mm-huawei-net-port-types.rules
/lib/udev/rules.d/77-mm-usb-serial-adapters-greylist.rules
/lib/udev/rules.d/71-power-switch-proliant.rules
/lib/udev/rules.d/60-block.rules
/lib/udev/rules.d/60-libsane.rules
/lib/udev/rules.d/60-drm.rules
/lib/udev/rules.d/80-net-setup-link.rules
/lib/udev/rules.d/80-ifupdown.rules
/lib/udev/rules.d/50-bluetooth-hci-auto-poweron.rules
/lib/udev/rules.d/77-mm-mtk-port-types.rules
/lib/udev/rules.d/66-xorg-synaptics-quirks.rules
/lib/udev/rules.d/61-gnome-bluetooth-rfkill.rules
/lib/udev/rules.d/70-debian-uaccess.rules
/lib/udev/rules.d/75-probe_mtd.rules
/lib/udev/rules.d/39-usbmuxd.rules
/lib/udev/rules.d/85-nm-unmanaged.rules
/lib/udev/rules.d/64-xorg-xkb.rules
/lib/udev/rules.d/77-mm-qdl-device-blacklist.rules
/lib/udev/rules.d/95-cd-devices.rules
/lib/udev/rules.d/73-usb-net-by-mac.rules
/lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules
/lib/udev/rules.d/60-persistent-storage.rules
/lib/udev/rules.d/90-libinput-model-quirks.rules
/lib/udev/rules.d/95-upower-csr.rules
/lib/udev/rules.d/69-wacom.rules
/lib/udev/rules.d/78-sound-card.rules
/lib/udev/rules.d/60-serial.rules
/lib/udev/rules.d/90-pulseaudio.rules
/lib/udev/rules.d/77-mm-simtech-port-types.rules
/lib/udev/rules.d/77-mm-nokia-port-types.rules
/lib/udev/rules.d/97-hid2hci.rules
/lib/udev/rules.d/84-nm-drivers.rules
/lib/udev/rules.d/73-special-net-names.rules
/lib/udev/rules.d/80-drivers.rules
/lib/udev/rules.d/64-btrfs.rules
/lib/udev/rules.d/61-persistent-storage-android.rules
/lib/udev/rules.d/77-mm-usb-device-blacklist.rules
/lib/udev/rules.d/40-usb_modeswitch.rules
/lib/udev/rules.d/77-mm-zte-port-types.rules
/lib/udev/rules.d/70-printers.rules
/lib/udev/rules.d/77-mm-ericsson-mbm.rules
/lib/udev/rules.d/80-mm-candidate.rules
/lib/udev/rules.d/60-libgphoto2-6.rules
/lib/udev/rules.d/78-graphics-card.rules
/lib/udev/rules.d/60-persistent-storage-tape.rules
/lib/udev/rules.d/60-cdrom_id.rules
/lib/udev/rules.d/65-libwacom.rules
/lib/udev/rules.d/40-crda.rules
/lib/udev/rules.d/69-cd-sensors.rules
/lib/udev/rules.d/77-mm-cinterion-port-types.rules
/lib/udev/rules.d/77-mm-dell-port-types.rules
/lib/udev/rules.d/80-debian-compat.rules
/lib/udev/hwdb.d/20-pci-vendor-model.hwdb
/lib/udev/hwdb.d/20-net-ifname.hwdb
/lib/udev/hwdb.d/69-libmtp.hwdb
/lib/udev/hwdb.d/20-libgphoto2-6.hwdb
/lib/udev/hwdb.d/90-libinput-model-quirks.hwdb
/lib/udev/hwdb.d/20-OUI.hwdb
/lib/udev/hwdb.d/20-usb-vendor-model.hwdb
/lib/udev/hwdb.d/20-usb-classes.hwdb
/lib/udev/hwdb.d/20-acpi-vendor.hwdb
/lib/udev/hwdb.d/20-pci-classes.hwdb
/lib/udev/hwdb.d/20-sdio-vendor-model.hwdb
/lib/udev/hwdb.d/70-mouse.hwdb
/lib/udev/hwdb.d/20-sdio-classes.hwdb
/lib/udev/hwdb.d/20-bluetooth-vendor-product.hwdb
/lib/udev/hwdb.d/60-evdev.hwdb
/lib/udev/hwdb.d/70-pointingstick.hwdb
/lib/udev/hwdb.d/60-keyboard.hwdb
/lib/udev/udev-configure-printer
/lib/udev/console-setup-tty
/lib/udev/hotplug.functions
/lib/udev/hid2hci
/lib/udev/v4l_id
/lib/udev/mtp-probe
/lib/udev/udev-add-printer
/lib/udev/libinput-model-quirks
/lib/udev/collect
/lib/udev/mtd_probe
/lib/udev/ifupdown-hotplug
/lib/udev/hwdb.bin
/lib/udev/ata_id
/lib/udev/libinput-device-group
/lib/udev/scsi_id
/lib/udev/usb_modeswitch
/lib/udev/cdrom_id
/lib/init/vars.sh
/lib/init/init-d-script
/lib/init/upstart-job
/lib/init/apparmor-profile-load
/lib/init/fstab
/lib/x86_64-linux-gnu/libnss_nisplus-2.23.so
/lib/x86_64-linux-gnu/libcom_err.so.2.1
/lib/x86_64-linux-gnu/libcrypt-2.23.so
/lib/x86_64-linux-gnu/libfdisk.so.1.1.0
/lib/x86_64-linux-gnu/libnss_compat-2.23.so
/lib/x86_64-linux-gnu/libprocps.so.4.0.0
/lib/x86_64-linux-gnu/librt-2.23.so
/lib/x86_64-linux-gnu/libgpg-error.so.0.17.0
/lib/x86_64-linux-gnu/libblkid.so.1.1.0
/lib/x86_64-linux-gnu/libext2fs.so.2.4
/lib/x86_64-linux-gnu/libpam_misc.so.0.82.0
/lib/x86_64-linux-gnu/libsystemd.so.0.14.0
/lib/x86_64-linux-gnu/libnss_files-2.23.so
/lib/x86_64-linux-gnu/libtinfo.so.5.9
/lib/x86_64-linux-gnu/libkmod.so.2.3.0
/lib/x86_64-linux-gnu/libnsl-2.23.so
/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1
/lib/x86_64-linux-gnu/libss.so.2.0
/lib/x86_64-linux-gnu/libpthread-2.23.so
/lib/x86_64-linux-gnu/libe2p.so.2.3
/lib/x86_64-linux-gnu/libpamc.so.0.82.1
/lib/x86_64-linux-gnu/libpcprofile.so
/lib/x86_64-linux-gnu/libacl.so.1.1.0
/lib/x86_64-linux-gnu/libSegFault.so
/lib/x86_64-linux-gnu/security/pam_motd.so
/lib/x86_64-linux-gnu/security/pam_unix.so
/lib/x86_64-linux-gnu/security/pam_ftp.so
/lib/x86_64-linux-gnu/security/pam_extrausers.so
/lib/x86_64-linux-gnu/security/pam_nologin.so
/lib/x86_64-linux-gnu/security/pam_sepermit.so
/lib/x86_64-linux-gnu/security/pam_permit.so
/lib/x86_64-linux-gnu/security/pam_warn.so
/lib/x86_64-linux-gnu/security/pam_rhosts.so
/lib/x86_64-linux-gnu/security/pam_limits.so
/lib/x86_64-linux-gnu/security/pam_mail.so
/lib/x86_64-linux-gnu/security/pam_xauth.so
/lib/x86_64-linux-gnu/security/pam_group.so
/lib/x86_64-linux-gnu/security/pam_listfile.so
/lib/x86_64-linux-gnu/security/pam_deny.so
/lib/x86_64-linux-gnu/security/pam_timestamp.so
/lib/x86_64-linux-gnu/security/pam_umask.so
/lib/x86_64-linux-gnu/security/pam_access.so
/lib/x86_64-linux-gnu/security/pam_shells.so
/lib/x86_64-linux-gnu/security/pam_localuser.so
/lib/x86_64-linux-gnu/security/pam_loginuid.so
/lib/x86_64-linux-gnu/security/pam_securetty.so
/lib/x86_64-linux-gnu/security/pam_userdb.so
/lib/x86_64-linux-gnu/security/pam_keyinit.so
/lib/x86_64-linux-gnu/security/pam_selinux.so
/lib/x86_64-linux-gnu/security/pam_pwhistory.so
/lib/x86_64-linux-gnu/security/pam_rootok.so
/lib/x86_64-linux-gnu/security/pam_time.so
/lib/x86_64-linux-gnu/security/pam_faildelay.so
/lib/x86_64-linux-gnu/security/pam_tally2.so
/lib/x86_64-linux-gnu/security/pam_lastlog.so
/lib/x86_64-linux-gnu/security/pam_env.so
/lib/x86_64-linux-gnu/security/pam_stress.so
/lib/x86_64-linux-gnu/security/pam_tally.so
/lib/x86_64-linux-gnu/security/pam_echo.so
/lib/x86_64-linux-gnu/security/pam_namespace.so
/lib/x86_64-linux-gnu/security/pam_succeed_if.so
/lib/x86_64-linux-gnu/security/pam_filter.so
/lib/x86_64-linux-gnu/security/pam_exec.so
/lib/x86_64-linux-gnu/security/pam_debug.so
/lib/x86_64-linux-gnu/security/pam_wheel.so
/lib/x86_64-linux-gnu/security/pam_tty_audit.so
/lib/x86_64-linux-gnu/security/pam_mkhomedir.so
/lib/x86_64-linux-gnu/security/pam_issue.so
/lib/x86_64-linux-gnu/security/pam_gnome_keyring.so
/lib/x86_64-linux-gnu/security/pam_systemd.so
/lib/x86_64-linux-gnu/libcap.so.2.24
/lib/x86_64-linux-gnu/libnss_hesiod-2.23.so
/lib/x86_64-linux-gnu/libattr.so.1.1.0
/lib/x86_64-linux-gnu/libgcrypt.so.20.0.5
/lib/x86_64-linux-gnu/libm-2.23.so
/lib/x86_64-linux-gnu/libpam.so.0.83.1
/lib/x86_64-linux-gnu/libreadline.so.6.3
/lib/x86_64-linux-gnu/libncursesw.so.5.9
/lib/x86_64-linux-gnu/libcryptsetup.so.4.6.0
/lib/x86_64-linux-gnu/libpcre.so.3.13.2
/lib/x86_64-linux-gnu/libbz2.so.1.0.4
/lib/x86_64-linux-gnu/libanl-2.23.so
/lib/x86_64-linux-gnu/libselinux.so.1
/lib/x86_64-linux-gnu/libmvec-2.23.so
/lib/x86_64-linux-gnu/libthread_db-1.0.so
/lib/x86_64-linux-gnu/libresolv-2.23.so
/lib/x86_64-linux-gnu/libc-2.23.so
/lib/x86_64-linux-gnu/libBrokenLocale-2.23.so
/lib/x86_64-linux-gnu/libsmartcols.so.1.1.0
/lib/x86_64-linux-gnu/libz.so.1.2.8
/lib/x86_64-linux-gnu/libapparmor.so.1.4.0
/lib/x86_64-linux-gnu/libhistory.so.6.3
/lib/x86_64-linux-gnu/libutil-2.23.so
/lib/x86_64-linux-gnu/libdl-2.23.so
/lib/x86_64-linux-gnu/libnss_nis-2.23.so
/lib/x86_64-linux-gnu/libnss_dns-2.23.so
/lib/x86_64-linux-gnu/libusb-0.1.so.4.4.4
/lib/x86_64-linux-gnu/libncurses.so.5.9
/lib/x86_64-linux-gnu/libseccomp.so.2.3.1
/lib/x86_64-linux-gnu/libudev.so.1.6.4
/lib/x86_64-linux-gnu/ld-2.23.so
/lib/x86_64-linux-gnu/libuuid.so.1.3.0
/lib/x86_64-linux-gnu/libaudit.so.1.0.0
/lib/x86_64-linux-gnu/libmount.so.1.1.0
/lib/x86_64-linux-gnu/liblzma.so.5.0.0
/lib/x86_64-linux-gnu/libcidn-2.23.so
/lib/x86_64-linux-gnu/libmemusage.so
/lib/x86_64-linux-gnu/libsepol.so.1
/lib/x86_64-linux-gnu/libgcc_s.so.1
/lib/x86_64-linux-gnu/libply-splash-graphics.so.4.0.0
/lib/x86_64-linux-gnu/libip6tc.so.0.1.0
/lib/x86_64-linux-gnu/libnih.so.1.0.0
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
/lib/x86_64-linux-gnu/libpng12.so.0.54.0
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2
/lib/x86_64-linux-gnu/libiptc.so.0.0.0
/lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2
/lib/x86_64-linux-gnu/libply-boot-client.so.4.0.0
/lib/x86_64-linux-gnu/libdbus-1.so.3.14.6
/lib/x86_64-linux-gnu/libply-splash-core.so.4.0.0
/lib/x86_64-linux-gnu/libnss_mdns_minimal.so.2
/lib/x86_64-linux-gnu/libnss_mdns6.so.2
/lib/x86_64-linux-gnu/libkeyutils.so.1.5
/lib/x86_64-linux-gnu/liblzo2.so.2.0.0
/lib/x86_64-linux-gnu/libaio.so.1.0.1
/lib/x86_64-linux-gnu/libatm.so.1.0.0
/lib/x86_64-linux-gnu/libssl.so.1.0.0
/lib/x86_64-linux-gnu/libnih-dbus.so.1.0.0
/lib/x86_64-linux-gnu/libjson-c.so.2.0.0
/lib/x86_64-linux-gnu/libntfs-3g.so.861.0.0
/lib/x86_64-linux-gnu/libnss_mdns.so.2
/lib/x86_64-linux-gnu/libply.so.4.0.0
/lib/x86_64-linux-gnu/libulockmgr.so.1.0.1
/lib/x86_64-linux-gnu/libx86.so.1
/lib/x86_64-linux-gnu/libisc-export.so.160.0.0
/lib/x86_64-linux-gnu/libparted.so.2.0.1
/lib/x86_64-linux-gnu/libwrap.so.0.7.6
/lib/x86_64-linux-gnu/libexpat.so.1.6.0
/lib/x86_64-linux-gnu/libnss_mdns6_minimal.so.2
/lib/x86_64-linux-gnu/libslang.so.2.3.0
/lib/x86_64-linux-gnu/libpcsclite.so.1.0.0
/lib/x86_64-linux-gnu/libdns-export.so.162.1.3
/lib/x86_64-linux-gnu/libpopt.so.0.0.0
/lib/x86_64-linux-gnu/libfuse.so.2.9.4
/lib/x86_64-linux-gnu/libbsd.so.0.8.2
/lib/x86_64-linux-gnu/libnewt.so.0.52.18
/lib/x86_64-linux-gnu/libip4tc.so.0.1.0
/lib/x86_64-linux-gnu/libnl-genl-3.so.200.22.0
/lib/x86_64-linux-gnu/libcgmanager.so.0.0.0
/lib/x86_64-linux-gnu/libmnl.so.0.1.0
/lib/x86_64-linux-gnu/libnss_mdns4.so.2
/lib/x86_64-linux-gnu/libnl-3.so.200.22.0
/lib/x86_64-linux-gnu/libpci.so.3.3.1
/lib/x86_64-linux-gnu/libatasmart.so.4.0.5
/lib/x86_64-linux-gnu/libusb-1.0.so.0.1.0
/lib/x86_64-linux-gnu/libxtables.so.11.0.0
/lib/terminfo/l/linux
/lib/terminfo/r/rxvt-basic
/lib/terminfo/r/rxvt-unicode
/lib/terminfo/r/rxvt
/lib/terminfo/x/xterm
/lib/terminfo/x/xterm-r5
/lib/terminfo/x/xterm-xfree86
/lib/terminfo/x/xterm-r6
/lib/terminfo/x/xterm-vt220
/lib/terminfo/x/xterm-color
/lib/terminfo/x/xterm-256color
/lib/terminfo/x/xterm-mono
/lib/terminfo/w/wsvt25m
/lib/terminfo/w/wsvt25
/lib/terminfo/p/pcansi
/lib/terminfo/a/ansi
/lib/terminfo/v/vt100
/lib/terminfo/v/vt220
/lib/terminfo/v/vt52
/lib/terminfo/v/vt102
/lib/terminfo/s/screen-256color-bce
/lib/terminfo/s/screen-w
/lib/terminfo/s/screen-256color
/lib/terminfo/s/screen-s
/lib/terminfo/s/sun
/lib/terminfo/s/screen
/lib/terminfo/s/screen-bce
/lib/terminfo/E/Eterm
/lib/terminfo/d/dumb
/lib/terminfo/h/hurd
/lib/terminfo/c/cygwin
/lib/terminfo/c/cons25
/lib/terminfo/c/cons25-debian
/lib/terminfo/m/mach-gnu
/lib/terminfo/m/mach-bold
/lib/terminfo/m/mach-gnu-color
/lib/terminfo/m/mach-color
/lib/terminfo/m/mach
/lib/systemd/systemd-bootchart
/lib/systemd/systemd-sleep
/lib/systemd/systemd-hibernate-resume
/lib/systemd/systemd-modules-load
/lib/systemd/systemd-networkd-wait-online
/lib/systemd/systemd-localed
/lib/systemd/systemd-ac-power
/lib/systemd/systemd-socket-proxyd
/lib/systemd/systemd-hostnamed
/lib/systemd/systemd-rfkill
/lib/systemd/systemd-resolved
/lib/systemd/system/rpcbind.target
/lib/systemd/system/systemd-reboot.service
/lib/systemd/system/systemd-sysctl.service
/lib/systemd/system/kexec.target
/lib/systemd/system/console-getty.service
/lib/systemd/system/systemd-quotacheck.service
/lib/systemd/system/sockets.target
/lib/systemd/system/initrd-cleanup.service
/lib/systemd/system/local-fs.target
/lib/systemd/system/initrd-root-fs.target
/lib/systemd/system/timers.target
/lib/systemd/system/quotaon.service
/lib/systemd/system/systemd-modules-load.service
/lib/systemd/system/systemd-journald-dev-log.socket
/lib/systemd/system/hibernate.target
/lib/systemd/system/apt-daily.timer
/lib/systemd/system/systemd-random-seed.service
/lib/systemd/system/initrd-udevadm-cleanup-db.service
/lib/systemd/system/systemd-hibernate.service
/lib/systemd/system/systemd-resolved.service.d/resolvconf.conf
/lib/systemd/system/systemd-networkd-resolvconf-update.path
/lib/systemd/system/paths.target
/lib/systemd/system/shutdown.target
/lib/systemd/system/apt-daily-upgrade.service
/lib/systemd/system/sigpwr.target
/lib/systemd/system/network-online.target
/lib/systemd/system/systemd-tmpfiles-clean.service
/lib/systemd/system/system-update.target
/lib/systemd/system/container-getty@.service
/lib/systemd/system/time-sync.target
/lib/systemd/system/systemd-networkd-resolvconf-update.service
/lib/systemd/system/rescue.target
/lib/systemd/system/systemd-rfkill.socket
/lib/systemd/system/systemd-update-utmp-runlevel.service
/lib/systemd/system/initrd.target
/lib/systemd/system/proc-sys-fs-binfmt_misc.automount
/lib/systemd/system/getty-static.service
/lib/systemd/system/systemd-hostnamed.service
/lib/systemd/system/systemd-user-sessions.service
/lib/systemd/system/emergency.target
/lib/systemd/system/emergency.service
/lib/systemd/system/systemd-timesyncd.service
/lib/systemd/system/sigpwr-container-shutdown.service
/lib/systemd/system/sys-kernel-debug.mount
/lib/systemd/system/network-pre.target
/lib/systemd/system/systemd-journald-audit.socket
/lib/systemd/system/initrd-fs.target
/lib/systemd/system/cryptsetup.target
/lib/systemd/system/sysinit.target
/lib/systemd/system/initrd-switch-root.target
/lib/systemd/system/bluetooth.target
/lib/systemd/system/systemd-timesyncd.service.d/disable-with-time-daemon.conf
/lib/systemd/system/rescue.service
/lib/systemd/system/hybrid-sleep.target
/lib/systemd/system/nss-lookup.target
/lib/systemd/system/systemd-logind.service
/lib/systemd/system/remote-fs-pre.target
/lib/systemd/system/sys-kernel-config.mount
/lib/systemd/system/halt.target
/lib/systemd/system/apt-daily-upgrade.timer
/lib/systemd/system/printer.target
/lib/systemd/system/systemd-initctl.socket
/lib/systemd/system/initrd-switch-root.service
/lib/systemd/system/systemd-poweroff.service
/lib/systemd/system/reboot.target
/lib/systemd/system/serial-getty@.service
/lib/systemd/system/rc-local.service.d/debian.conf
/lib/systemd/system/systemd-rfkill.service
/lib/systemd/system/systemd-ask-password-wall.service
/lib/systemd/system/exit.target
/lib/systemd/system/machine.slice
/lib/systemd/system/kmod-static-nodes.service
/lib/systemd/system/dev-hugepages.mount
/lib/systemd/system/systemd-halt.service
/lib/systemd/system/initrd-parse-etc.service
/lib/systemd/system/systemd-bootchart.service
/lib/systemd/system/sys-fs-fuse-connections.mount
/lib/systemd/system/poweroff.target
/lib/systemd/system/systemd-resolved.service
/lib/systemd/system/systemd-bus-proxyd.service
/lib/systemd/system/syslog.socket
/lib/systemd/system/local-fs-pre.target
/lib/systemd/system/slices.target
/lib/systemd/system/getty.target
/lib/systemd/system/user@.service
/lib/systemd/system/systemd-fsck@.service
/lib/systemd/system/user.slice
/lib/systemd/system/umount.target
/lib/systemd/system/systemd-networkd.socket
/lib/systemd/system/systemd-initctl.service
/lib/systemd/system/systemd-hybrid-sleep.service
/lib/systemd/system/multi-user.target
/lib/systemd/system/-.slice
/lib/systemd/system/systemd-ask-password-console.service
/lib/systemd/system/getty@.service
/lib/systemd/system/systemd-journald.service
/lib/systemd/system/systemd-hibernate-resume@.service
/lib/systemd/system/nss-user-lookup.target
/lib/systemd/system/systemd-machine-id-commit.service
/lib/systemd/system/systemd-suspend.service
/lib/systemd/system/systemd-fsckd.socket
/lib/systemd/system/system.slice
/lib/systemd/system/sleep.target
/lib/systemd/system/systemd-timedated.service
/lib/systemd/system/proc-sys-fs-binfmt_misc.mount
/lib/systemd/system/systemd-remount-fs.service
/lib/systemd/system/cryptsetup-pre.target
/lib/systemd/system/remote-fs.target
/lib/systemd/system/systemd-update-utmp.service
/lib/systemd/system/rc-local.service
/lib/systemd/system/basic.target
/lib/systemd/system/systemd-networkd-wait-online.service
/lib/systemd/system/systemd-localed.service
/lib/systemd/system/systemd-ask-password-console.path
/lib/systemd/system/systemd-tmpfiles-setup-dev.service
/lib/systemd/system/systemd-journal-flush.service
/lib/systemd/system/swap.target
/lib/systemd/system/final.target
/lib/systemd/system/systemd-tmpfiles-setup.service
/lib/systemd/system/console-shell.service
/lib/systemd/system/systemd-exit.service
/lib/systemd/system/graphical.target
/lib/systemd/system/systemd-backlight@.service
/lib/systemd/system/smartcard.target
/lib/systemd/system/sound.target
/lib/systemd/system/mail-transport-agent.target
/lib/systemd/system/dev-mqueue.mount
/lib/systemd/system/debug-shell.service
/lib/systemd/system/systemd-fsck-root.service
/lib/systemd/system/network.target
/lib/systemd/system/systemd-kexec.service
/lib/systemd/system/systemd-ask-password-wall.path
/lib/systemd/system/apt-daily.service
/lib/systemd/system/suspend.target
/lib/systemd/system/systemd-networkd.service
/lib/systemd/system/systemd-tmpfiles-clean.timer
/lib/systemd/system/busnames.target
/lib/systemd/system/systemd-bus-proxyd.socket
/lib/systemd/system/systemd-fsckd.service
/lib/systemd/system/systemd-journald.socket
/lib/systemd/system/systemd-binfmt.service
/lib/systemd/system/plymouth-start.service
/lib/systemd/system/plymouth-reboot.service
/lib/systemd/system/avahi-daemon.service
/lib/systemd/system/systemd-udev-settle.service
/lib/systemd/system/systemd-udevd-control.socket
/lib/systemd/system/plymouth-read-write.service
/lib/systemd/system/systemd-udev-trigger.service
/lib/systemd/system/udev-configure-printer@.service
/lib/systemd/system/accounts-daemon.service
/lib/systemd/system/acpid.socket
/lib/systemd/system/plymouth-halt.service
/lib/systemd/system/systemd-hwdb-update.service
/lib/systemd/system/systemd-ask-password-plymouth.service
/lib/systemd/system/rsync.service
/lib/systemd/system/plymouth-quit-wait.service
/lib/systemd/system/acpid.path
/lib/systemd/system/systemd-udevd.service
/lib/systemd/system/usb_modeswitch@.service
/lib/systemd/system/upower.service
/lib/systemd/system/binfmt-support.service
/lib/systemd/system/plymouth-quit.service
/lib/systemd/system/ModemManager.service
/lib/systemd/system/usbmuxd.service
/lib/systemd/system/nvidia-prime.service
/lib/systemd/system/ifup@.service
/lib/systemd/system/keyboard-setup.service
/lib/systemd/system/unattended-upgrades.service
/lib/systemd/system/polkitd.service
/lib/systemd/system/nvidia-persistenced.service
/lib/systemd/system/acpid.service
/lib/systemd/system/console-setup.service
/lib/systemd/system/pppd-dns.service
/lib/systemd/system/udisks2.service
/lib/systemd/system/plymouth-poweroff.service
/lib/systemd/system/networking.service
/lib/systemd/system/bluetooth.service
/lib/systemd/system/systemd-ask-password-plymouth.path
/lib/systemd/system/wpa_supplicant.service
/lib/systemd/system/dbus.service
/lib/systemd/system/NetworkManager-wait-online.service
/lib/systemd/system/cron.service
/lib/systemd/system/avahi-daemon.socket
/lib/systemd/system/colord.service
/lib/systemd/system/NetworkManager.service
/lib/systemd/system/dbus.socket
/lib/systemd/system/rtkit-daemon.service
/lib/systemd/system/systemd-udevd-kernel.socket
/lib/systemd/system/plymouth-kexec.service
/lib/systemd/system/plymouth-switch-root.service
/lib/systemd/system/NetworkManager-dispatcher.service
/lib/systemd/system/wacom-inputattach@.service
/lib/systemd/system/lightdm.service
/lib/systemd/systemd-timesyncd
/lib/systemd/systemd-cgroups-agent
/lib/systemd/system-preset/90-systemd.preset
/lib/systemd/systemd-journald
/lib/systemd/systemd-bus-proxyd
/lib/systemd/systemd-update-utmp
/lib/systemd/systemd-reply-password
/lib/systemd/systemd-random-seed
/lib/systemd/systemd-fsck
/lib/systemd/systemd-cryptsetup
/lib/systemd/systemd-networkd
/lib/systemd/systemd-backlight
/lib/systemd/systemd-quotacheck
/lib/systemd/systemd-fsckd
/lib/systemd/network/80-container-host0.network
/lib/systemd/network/80-container-ve.network
/lib/systemd/network/99-default.link
/lib/systemd/systemd-shutdown
/lib/systemd/systemd-sysv-install
/lib/systemd/systemd-sysctl
/lib/systemd/systemd-initctl
/lib/systemd/systemd
/lib/systemd/system-sleep/wpasupplicant
/lib/systemd/systemd-binfmt
/lib/systemd/system-generators/systemd-getty-generator
/lib/systemd/system-generators/systemd-fstab-generator
/lib/systemd/system-generators/systemd-hibernate-resume-generator
/lib/systemd/system-generators/systemd-insserv-generator
/lib/systemd/system-generators/systemd-system-update-generator
/lib/systemd/system-generators/systemd-debug-generator
/lib/systemd/system-generators/systemd-dbus1-generator
/lib/systemd/system-generators/systemd-rc-local-generator
/lib/systemd/system-generators/systemd-cryptsetup-generator
/lib/systemd/system-generators/systemd-sysv-generator
/lib/systemd/system-generators/systemd-gpt-auto-generator
/lib/systemd/systemd-remount-fs
/lib/systemd/systemd-timedated
/lib/systemd/systemd-activate
/lib/systemd/systemd-user-sessions
/lib/systemd/systemd-logind
/lib/systemd/systemd-udevd
/lib/lsb/init-functions.d/20-left-info-blocks
/lib/lsb/init-functions.d/40-systemd
/lib/lsb/init-functions.d/01-upstart-lsb
/lib/lsb/init-functions.d/50-ubuntu-logging
/lib/lsb/init-functions.d/99-plymouth
/lib/lsb/init-functions
/lib/nvidia-410/modprobe.conf
/lib/xtables/libxt_time.so
/lib/xtables/libxt_pkttype.so
/lib/xtables/libxt_connmark.so
/lib/xtables/libipt_CLUSTERIP.so
/lib/xtables/libxt_mac.so
/lib/xtables/libxt_cluster.so
/lib/xtables/libipt_REJECT.so
/lib/xtables/libip6t_dst.so
/lib/xtables/libxt_sctp.so
/lib/xtables/libxt_tos.so
/lib/xtables/libip6t_ipv6header.so
/lib/xtables/libip6t_NETMAP.so
/lib/xtables/libxt_owner.so
/lib/xtables/libxt_connlimit.so
/lib/xtables/libxt_set.so
/lib/xtables/libxt_CLASSIFY.so
/lib/xtables/libip6t_REDIRECT.so
/lib/xtables/libxt_rateest.so
/lib/xtables/libipt_ULOG.so
/lib/xtables/libip6t_LOG.so
/lib/xtables/libip6t_eui64.so
/lib/xtables/libxt_SET.so
/lib/xtables/libxt_tcpmss.so
/lib/xtables/libxt_connlabel.so
/lib/xtables/libxt_NFLOG.so
/lib/xtables/libip6t_ah.so
/lib/xtables/libxt_cgroup.so
/lib/xtables/libxt_multiport.so
/lib/xtables/libxt_TRACE.so
/lib/xtables/libxt_helper.so
/lib/xtables/libip6t_HL.so
/lib/xtables/libxt_IDLETIMER.so
/lib/xtables/libxt_comment.so
/lib/xtables/libip6t_REJECT.so
/lib/xtables/libipt_ECN.so
/lib/xtables/libxt_bpf.so
/lib/xtables/libxt_CT.so
/lib/xtables/libipt_NETMAP.so
/lib/xtables/libipt_DNAT.so
/lib/xtables/libip6t_frag.so
/lib/xtables/libxt_limit.so
/lib/xtables/libxt_DSCP.so
/lib/xtables/libxt_hashlimit.so
/lib/xtables/libxt_connbytes.so
/lib/xtables/libxt_u32.so
/lib/xtables/libxt_policy.so
/lib/xtables/libxt_LED.so
/lib/xtables/libxt_NOTRACK.so
/lib/xtables/libxt_SYNPROXY.so
/lib/xtables/libxt_rpfilter.so
/lib/xtables/libxt_standard.so
/lib/xtables/libip6t_hl.so
/lib/xtables/libxt_devgroup.so
/lib/xtables/libxt_addrtype.so
/lib/xtables/libxt_string.so
/lib/xtables/libxt_CHECKSUM.so
/lib/xtables/libipt_SNAT.so
/lib/xtables/libxt_TCPMSS.so
/lib/xtables/libxt_ecn.so
/lib/xtables/libxt_TEE.so
/lib/xtables/libip6t_DNAT.so
/lib/xtables/libxt_iprange.so
/lib/xtables/libxt_dccp.so
/lib/xtables/libxt_mark.so
/lib/xtables/libxt_ipvs.so
/lib/xtables/libxt_HMARK.so
/lib/xtables/libxt_physdev.so
/lib/xtables/libipt_ttl.so
/lib/xtables/libxt_dscp.so
/lib/xtables/libip6t_mh.so
/lib/xtables/libxt_osf.so
/lib/xtables/libip6t_DNPT.so
/lib/xtables/libxt_length.so
/lib/xtables/libxt_NFQUEUE.so
/lib/xtables/libxt_MARK.so
/lib/xtables/libxt_mangle.so
/lib/xtables/libxt_TCPOPTSTRIP.so
/lib/xtables/libxt_TPROXY.so
/lib/xtables/libxt_state.so
/lib/xtables/libxt_CONNMARK.so
/lib/xtables/libxt_tcp.so
/lib/xtables/libxt_udp.so
/lib/xtables/libip6t_hbh.so
/lib/xtables/libipt_REDIRECT.so
/lib/xtables/libxt_esp.so
/lib/xtables/libip6t_SNPT.so
/lib/xtables/libxt_RATEEST.so
/lib/xtables/libxt_nfacct.so
/lib/xtables/libipt_ah.so
/lib/xtables/libxt_CONNSECMARK.so
/lib/xtables/libipt_TTL.so
/lib/xtables/libip6t_MASQUERADE.so
/lib/xtables/libxt_recent.so
/lib/xtables/libxt_TOS.so
/lib/xtables/libxt_SECMARK.so
/lib/xtables/libxt_quota.so
/lib/xtables/libipt_MASQUERADE.so
/lib/xtables/libxt_conntrack.so
/lib/xtables/libxt_AUDIT.so
/lib/xtables/libipt_realm.so
/lib/xtables/libxt_socket.so
/lib/xtables/libipt_LOG.so
/lib/xtables/libxt_cpu.so
/lib/xtables/libxt_ipcomp.so
/lib/xtables/libip6t_icmp6.so
/lib/xtables/libip6t_SNAT.so
/lib/xtables/libxt_statistic.so
/lib/xtables/libip6t_rt.so
/lib/xtables/libipt_icmp.so
/lib/sysvinit/telinit
/lib/crda/setregdomain
/lib/crda/regulatory.bin
/lib/crda/pubkeys/linville.key.pub.pem
/lib/crda/pubkeys/benh@debian.org.key.pub.pem
/lib/crda/pubkeys/sforshee.key.pub.pem
/lib/crda/libreg.so
/lib/firmware/regulatory.db
/lib/firmware/regulatory.db.p7s
/lib/ifupdown/wait-for-ll6.sh
/lib/ifupdown/settle-dad.sh
/lib/modprobe.d/aliases.conf

/usr/lib is to big - i'll attach

esjmb commented 5 years ago

tmp.txt

here is /usr/lib

mihaimaruseac commented 5 years ago

I see /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 so there is at least one version of libstdc++.

esjmb commented 5 years ago

interesting.

I tried (my best guess)

stack --docker --extra-lib-dirs=/usr/lib/x86_64-linux-gnu --extra-include-dirs=/usr/include/c++/5.4.0 build

but same error. any thoughts?

mihaimaruseac commented 5 years ago

I'll have to get into the docker container myself to see what's missing.

The --extra-.. flags on the stack --docker invocation don't get propagated to each individual command inside :(

gvolpe commented 5 years ago

Hi, I'm experiencing the same issue using the same docker image on my Circle CI build. It's a private repo (work stuff) but this is the output I get:

--  While building package double-conversion-2.0.2.0 using:
      /root/.stack/setup-exe-cache/x86_64-linux/Cabal-simple_mPHDZzAJ_2.4.0.1_ghc-8.6.3 --builddir=.stack-work/dist/x86_64-linux/Cabal-2.4.0.1 configure --with-ghc=/root/.stack/programs/x86_64-linux/ghc-8.6.3/bin/ghc --with-ghc-pkg=/root/.stack/programs/x86_64-linux/ghc-8.6.3/bin/ghc-pkg --user --package-db=clear --package-db=global --package-db=/root/.stack/snapshots/x86_64-linux/lts-13.0/8.6.3/pkgdb --libdir=/root/.stack/snapshots/x86_64-linux/lts-13.0/8.6.3/lib --bindir=/root/.stack/snapshots/x86_64-linux/lts-13.0/8.6.3/bin --datadir=/root/.stack/snapshots/x86_64-linux/lts-13.0/8.6.3/share --libexecdir=/root/.stack/snapshots/x86_64-linux/lts-13.0/8.6.3/libexec --sysconfdir=/root/.stack/snapshots/x86_64-linux/lts-13.0/8.6.3/etc --docdir=/root/.stack/snapshots/x86_64-linux/lts-13.0/8.6.3/doc/double-conversion-2.0.2.0 --htmldir=/root/.stack/snapshots/x86_64-linux/lts-13.0/8.6.3/doc/double-conversion-2.0.2.0 --haddockdir=/root/.stack/snapshots/x86_64-linux/lts-13.0/8.6.3/doc/double-conversion-2.0.2.0 --dependency=base=base-4.12.0.0 --dependency=bytestring=bytestring-0.10.8.2 --dependency=ghc-prim=ghc-prim-0.5.3 --dependency=text=text-1.2.3.1
    Process exited with code: ExitFailure 1
    Logs have been written to: /root/project/.stack-work/logs/double-conversion-2.0.2.0.log

    Configuring double-conversion-2.0.2.0...
    Cabal-simple_mPHDZzAJ_2.4.0.1_ghc-8.6.3: Missing dependency on a foreign
    library:
    * Missing (or bad) C library: stdc++
    This problem can usually be solved by installing the system package that
    provides this library (you may need the "-dev" version). If the library is
    already installed but in a non-standard location then you can use the flags
    --extra-include-dirs= and --extra-lib-dirs= to specify where it is.If the
    library file does exist, it may contain errors that are caught by the C
    compiler at the preprocessing stage. In this case you can re-run configure
    with the verbosity flag -v3 to see the error messages.
Exited with code 1

I tried using lts-13.0 and lts-13.1 and I get the same output. The same project builds locally on my Ubuntu machine.

I'd be happy to provide more details to help me get helped :)

gvolpe commented 5 years ago

Same error downgrading to lts-12.7. And here's the Circle CI build file:

version: 2.1
jobs:
  build:
    docker:
      - image: fpco/stack-build:lts
    steps:
      - checkout
      - restore_cache:
          name: Restore Cached Dependencies
          keys:
            - bill-statement-gen-v1-{{ checksum "package.yaml" }}
      - run:
          name: Resolve/Update Dependencies
          command: stack setup
      - run:
          name: Run tests
          command: stack test
      - run:
          name: Install executable
          command: stack install
      - save_cache:
          name: Cache Dependencies
          key: bill-statement-gen-v1-{{ checksum "package.yaml" }}
          paths:
            - ".stack-work"
      - store_artifacts:
          path: ~/.local/bin/bill-statement-gen-exe
          destination: bill-statement-gen-exe
esjmb commented 5 years ago

Hi, wanted to give you an update on this. I tracked down my problems in every case to compilation of double-conversion, which was an indirect dependency of my projects down various pathways. I worked with the guys maintaining servant-auth and http-link-header and was able in each case to identify a clean fix to remove the dependency on double-conversion. These fixes are now merged into the repos, and as a result, I can now build successfully using docker for lts-13.x.

My necessary stack package settings are

- location: # temporary until this commit is in its release
    git: git@github.com:myfreeweb/http-link-header.git
    commit: 0897d57a7d66548a5893560d5481764ec1a2ecfb
- location:  # temporary until this commit is in its release
    git: git@github.com:haskell-servant/servant-auth.git
    commit: 1def1b3438b9ff59b88c5626835ebfe3ff8abbf3
    subdirs:
      - servant-auth

So maybe try this as a temporary fix, and if this doesn't work, then a series of stack dot --external | grep ... calls might help you track down the dependency tree from your code to double-conversion. From there you might be able to similarly be able to remove the dependency in libraries your code relies on and propose an appropriate PR.

The dependency changes on the two repos that affected me have been merged to master in each case, and so the above settings will in due course no longer be needed.

The root cause does appear to be a problem building double-conversion, the building of which is dependent on a c library that for some reason is no longer being included in the lts-13.x build in a place where stack expects it to be. That's my best 2c anyway. :)

cheers, Stephen.

dbaynard commented 5 years ago

You may be better off having this in extra-deps:

extra-deps:
- github: myfreeweb/http-link-header # temporary until this commit is in its release
  commit: 0897d57a7d66548a5893560d5481764ec1a2ecfb
- github: haskell-servant/servant-auth # temporary until this commit is in its release
  commit: 1def1b3438b9ff59b88c5626835ebfe3ff8abbf3
  subdirs:
  - servant-auth

This looks like an upstream issue, as it seems to only be a problem with double-conversions — what still needs doing with stack?

Edit: Indentation

esjmb commented 5 years ago

thanks for the tip.

re. stack, as it seems to be simply an LTS build issue, I think nothing. Perhaps I should have raised the issue in commercialhaskell/stackage-snapshots, but the cause wasn't clear to me at the time.

thanks.

gvolpe commented 5 years ago

Thanks for sharing more details, this is what I get:

$ stack dot --external | grep double-conversion
"double-conversion" -> "base";
"double-conversion" -> "bytestring";
"double-conversion" -> "ghc-prim";
"double-conversion" -> "text";
"tinylog" -> "double-conversion";

tinylog is the one that brings in double-conversion as specified here. And I need it because it's required by the http-client I'm using.

From there you might be able to similarly be able to remove the dependency in libraries your code relies on and propose an appropriate PR.

Unfortunately I'm quite a newbie in the Haskell ecosystem and these issues are really frustrating. I'm not really sure in what changes I should propose to tinylog if any.

dbaynard commented 5 years ago

Do bos/double-conversion#20 and freebroccolo/docker-haskell#35 help?

I'll wait to see what @mihaimaruseac has to say about this; he can close the issue if necessary.

The --extra-.. flags on the stack --docker invocation don't get propagated to each individual command inside :(

gvolpe commented 5 years ago

Do bos/double-conversion#20 and freebroccolo/docker-haskell#35 help?

Unfortunately not, but thanks for the links.

gvolpe commented 5 years ago

Here's is the relevant part of the verbose log I get when trying to cabal install double-conversion:

/root/.cabal/share/doc/x86_64-linux-ghc-8.6.3/double-conversion-2.0.2.0
Configuration files installed in: /root/.cabal/etc
No alex found
Using ar found on system at: /usr/bin/ar
No c2hs found
No cpphs found
No doctest found
Using gcc version 7 found on system at: /usr/bin/gcc
Using ghc version 8.6.3 found on system at: /opt/ghc/8.6.3/bin/ghc
Using ghc-pkg version 8.6.3 found on system at: /opt/ghc/8.6.3/bin/ghc-pkg
No ghcjs found
No ghcjs-pkg found
No greencard found
Using haddock version 2.22.0 found on system at: /opt/ghc/8.6.3/bin/haddock
No happy found
Using haskell-suite found on system at: haskell-suite-dummy-location
Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
No hmake found
Using hpc version 0.67 found on system at: /opt/ghc/8.6.3/bin/hpc
Using hsc2hs version 0.68.5 found on system at: /opt/ghc/8.6.3/bin/hsc2hs
Using hscolour version 1.22 found on system at: /usr/bin/HsColour
No jhc found
Using ld found on system at: /usr/bin/ld.gold
Using pkg-config version 0.29.1 found on system at: /usr/bin/pkg-config
Using runghc version 8.6.3 found on system at: /opt/ghc/8.6.3/bin/runghc
Using strip version 2.26 found on system at: /usr/bin/strip
Using tar found on system at: /bin/tar
No uhc found
/usr/bin/gcc -fno-stack-protector '-fuse-ld=gold' /tmp/17797-4.c -o /tmp/17797-5 '-D__GLASGOW_HASKELL__=806' '-Dlinux_BUILD_OS=1' '-Dx86_64_BUILD_ARCH=1' '-Dlinux_HOST_OS=1' '-Dx86_64_HOST_ARCH=1' -Idist/build/autogen -Idist/build/double-conversion/src -Idist/build/include -I./double-conversion/src -I./include -I. -DNDEBUG -I/opt/ghc/8.6.3/lib/ghc-8.6.3/bytestring-0.10.8.2/include -I/opt/ghc/8.6.3/lib/ghc-8.6.3/base-4.12.0.0/include -I/opt/ghc/8.6.3/lib/ghc-8.6.3/integer-gmp-1.0.2.0/include -I/opt/ghc/8.6.3/lib/ghc-8.6.3/include -DNDEBUG '-lstdc++' -L/opt/ghc/8.6.3/lib/ghc-8.6.3/text-1.2.3.1 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/binary-0.8.6.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/containers-0.6.0.1 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/bytestring-0.10.8.2 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/deepseq-1.4.4.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/array-0.5.3.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/base-4.12.0.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/integer-gmp-1.0.2.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/ghc-prim-0.5.3 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/rts
/usr/bin/gcc returned ExitFailure 1 with error message:
/usr/bin/ld.gold: error: cannot find -lstdc++
collect2: error: ld returned 1 exit status
/usr/bin/gcc -fno-stack-protector '-fuse-ld=gold' /tmp/17797-6.c -o /tmp/17797-7 '-lstdc++' -L/opt/ghc/8.6.3/lib/ghc-8.6.3/text-1.2.3.1 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/binary-0.8.6.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/containers-0.6.0.1 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/bytestring-0.10.8.2 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/deepseq-1.4.4.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/array-0.5.3.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/base-4.12.0.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/integer-gmp-1.0.2.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/ghc-prim-0.5.3 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/rts
/usr/bin/gcc returned ExitFailure 1 with error message:
/usr/bin/ld.gold: error: cannot find -lstdc++
collect2: error: ld returned 1 exit status
/usr/bin/gcc -fno-stack-protector '-fuse-ld=gold' /tmp/17797-8.c -o /tmp/17797-9 '-lstdc++' -L/opt/ghc/8.6.3/lib/ghc-8.6.3/text-1.2.3.1 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/binary-0.8.6.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/containers-0.6.0.1 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/bytestring-0.10.8.2 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/deepseq-1.4.4.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/array-0.5.3.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/base-4.12.0.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/integer-gmp-1.0.2.0 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/ghc-prim-0.5.3 -L/opt/ghc/8.6.3/lib/ghc-8.6.3/rts
/usr/bin/gcc returned ExitFailure 1 with error message:
/usr/bin/ld.gold: error: cannot find -lstdc++
collect2: error: ld returned 1 exit status
/usr/bin/gcc -fno-stack-protector '-fuse-ld=gold' /tmp/17797-10.c -o /tmp/17797-11 -c '-D__GLASGOW_HASKELL__=806' '-Dlinux_BUILD_OS=1' '-Dx86_64_BUILD_ARCH=1' '-Dlinux_HOST_OS=1' '-Dx86_64_HOST_ARCH=1' -Idist/build/autogen -Idist/build/double-conversion/src -Idist/build/include -I./double-conversion/src -I./include -I. -DNDEBUG -I/opt/ghc/8.6.3/lib/ghc-8.6.3/bytestring-0.10.8.2/include -I/opt/ghc/8.6.3/lib/ghc-8.6.3/base-4.12.0.0/include -I/opt/ghc/8.6.3/lib/ghc-8.6.3/integer-gmp-1.0.2.0/include -I/opt/ghc/8.6.3/lib/ghc-8.6.3/include -DNDEBUG
CallStack (from HasCallStack):
  die', called at libraries/Cabal/Cabal/Distribution/Simple/Configure.hs:1786:34 in Cabal-2.4.0.1:Distribution.Simple.Configure
  checkForeignDeps, called at libraries/Cabal/Cabal/Distribution/Simple.hs:615:7 in Cabal-2.4.0.1:Distribution.Simple
setup-Simple-Cabal-2.4.0.1-x86_64-linux-ghc-8.6.3: Missing dependency on a
foreign library:
* Missing (or bad) C library: stdc++
This problem can usually be solved by installing the system package that
provides this library (you may need the "-dev" version). If the library is
already installed but in a non-standard location then you can use the flags
--extra-include-dirs= and --extra-lib-dirs= to specify where it is.If the
library file does exist, it may contain errors that are caught by the C
compiler at the preprocessing stage. In this case you can re-run configure
with the verbosity flag -v3 to see the error messages.

World file is already up to date.
cabal: Error: some packages failed to install:
double-conversion-2.0.2.0 failed during the configure step. The exception was:
ExitFailure 1
esjmb commented 5 years ago

tinylog is the one that brings in double-conversion as specified here. And I need it because it's required by the http-client I'm using.

from what I can see, tiny log has a genuine dependency on double-conversion in tinylog/src/System/Logger/Message.hs:102 - that being a call to toShortest :: Double -> Text.

You could as a temporary fix clone and modify (eg. just show or text-show:tshow the double and take the performance hit) but an easier solution might be to use an alternative logger. I personally like hslogger, and I can confirm that it will build with stack --docker build with LTS 13.x.

or wait for @mihaimaruseac :)

From there you might be able to similarly be able to remove the dependency in libraries your code relies on and propose an appropriate PR.

Unfortunately I'm quite a newbie in the Haskell ecosystem and these issues are really frustrating. I'm not really sure in what changes I should propose to tinylog if any.

to propose a fix that removed the dependency on doube-conversion in this case, you'd need to demonstrate a fix that both eliminates a dependency and that does not negatively impact performance. logging is a core function of any system, so maintainers of such libraries will be particularly sensitive to performance and performance is generally the reason why people use the double-conversion library. my 2c is that you are not going to demonstrate the use case easily. after all, there is nothing wrong with the double-conversion library - this is only a build issue that is most likely temporary.

anyway, probably getting off topic. good luck.

fiadliel commented 5 years ago

I ended up getting an error running cc1plus - no such file or directory. There is a version in /usr/lib/gcc/x86_64-linux-gnu/5/cc1plus. However, gcc -v shows gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~16.04~ppa1)

Running ln -sf /usr/bin/gcc-5 /etc/alternatives/gcc caused gcc-5 to be run, and the project built successfully. However, this does an end-run around Ubuntu's update-alternatives framework, and may not be the best solution to the issue.

fiadliel commented 5 years ago

It looks like C++ compilation was broken by https://github.com/commercialhaskell/stackage/commit/b654f1f11cb566d1a5c61cb76928c4b04df80ae9 and was probably fixed by https://github.com/commercialhaskell/stackage/commit/363938a39fbe79c58bd874d11bdd5cce9ea0d5a2

https://github.com/commercialhaskell/stack/blob/master/etc/dockerfiles/stack-build/lts-13.0/Dockerfile is currently pinned to a broken version of the file (from the point of view of working C++ compilation).

gvolpe commented 5 years ago

Thanks for the insights @fiadliel ! I actually got it working creating symbolic links. It was a very painful process until I figured this out but still not sure whether it's an optimal solution. I'll post my solution after the build finishes on Circle CI (got it working locally).

gvolpe commented 5 years ago

As pointed out on Twitter by @fiadliel, installing apt-get update && apt-get install g++-7 -y on my docker image fpco/stack-build before running stack build worked for me.

mihaimaruseac commented 5 years ago

I think we can close this then. Thanks for all the work in identifying both the issue in the libraries and in stack and for the fixes (in extra-deps and in installing g++).

I can confirm that the fixes work for me.

fiadliel commented 5 years ago

The official docker image still can't build C++ code without modification, and cannot be fixed elsewhere since the Dockerfile (hosted in this repo) is pinned to a specific revision.

Should another issue be opened to fix the image, or is C++ compilation considered out of scope?

mihaimaruseac commented 5 years ago

I think C++ is out of scope, but I'll let others weigh in (CC @dbaynard @qrilka @snoyberg)

dbaynard commented 5 years ago

The Dockerfile ought to have a working (rather than non-functioning) version — given that g++ is available. Beyond that I'm not the person to ask…

borsboom commented 5 years ago

The Docker image should work for building any Linux-compatible package in LTS-13, so I'm going to reopen this. I don't think switching to the bootstrap script in https://github.com/commercialhaskell/stackage/commit/363938a39fbe79c58bd874d11bdd5cce9ea0d5a2 is a good idea, since that changes a lot besides fixing this issue (among which, requires upgrading the image to be based on Ubuntu 18.04).

borsboom commented 5 years ago

I've pushed Docker image fpco/stack-build:lts-13.3 which should fix this. I confirmed that installing double-conversion works with this image (and didn't work with fpco/stack-build:lts-13.2).