Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't compile #4

Open
chernish2 opened this issue Oct 20, 2020 · 53 comments
Open

Can't compile #4

chernish2 opened this issue Oct 20, 2020 · 53 comments

Comments

@chernish2
Copy link

Hello!
First of all I'm extremely excited with your revival of TurboVision! It's amazing that someone still remembers it!
I can't compile. I guess it's something related to C++ 17, but I'm not sure since I'm Ruby developer not C++.
Can you help me please?

chernish2@mintbox:/soft$ cd turbo/
chernish2@mintbox:
/soft/turbo$ cd tvision/
chernish2@mintbox:~/soft/turbo/tvision$ cmake .
CMake Error at CMakeLists.txt:2 (cmake_policy):
Policy "CMP0091" is not known to this version of CMake.

-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring incomplete, errors occurred!
See also "/home/chernish2/soft/turbo/tvision/CMakeFiles/CMakeOutput.log".

@magiblot
Copy link
Owner

Hi Alexey!

I'm sorry for this. It's fixed in the latest version of Turbo Vision, but I haven't updated the submodule in this repository for some time.

Until I fix it, you can just comment out line 2 of tvision/CMakeLists.txt. Or you can also try upgrading to CMake 3.16 or newer, which will give you a faster compilation.

Cheers!

@chernish2
Copy link
Author

Updated cmake to ver. 3.19.0-rc1
Now when doing make I got the following:
chernish2@mintbox:~/soft/turbo/tvision$ make
[ 0%] Building CXX object CMakeFiles/tvision.dir/source/linux/dir.cpp.o
In file included from /home/chernish2/soft/turbo/tvision/source/linux/dir.cpp:5:0:
/home/chernish2/soft/turbo/tvision/include/tvision/internal/findfrst.h:7:10: fatal error: filesystem: No such file or directory
#include
^~~~~~~~~~~~
compilation terminated.
CMakeFiles/tvision.dir/build.make:142: recipe for target 'CMakeFiles/tvision.dir/source/linux/dir.cpp.o' failed
make[2]: *** [CMakeFiles/tvision.dir/source/linux/dir.cpp.o] Error 1
CMakeFiles/Makefile2:159: recipe for target 'CMakeFiles/tvision.dir/all' failed
make[1]: *** [CMakeFiles/tvision.dir/all] Error 2
Makefile:102: recipe for target 'all' failed
make: *** [all] Error 2

@magiblot
Copy link
Owner

filesystem is a C++17 header. If the compiler cannot find it, then you must be using an outdated version.
Try upgrading to g++ 8 or later, then delete CMakeCache.txt before running cmake . again.

Note that CMake tells you the version of the compiler it's using:

-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0

@magiblot
Copy link
Owner

I have updated the Turbo Vision submodule in the latest commit. I don't know if git pull is enough to upgrade, so you may clone the whole repository again before trying one more time.

Check out the Readme, because the build commands have changed. This is the new way to do it:

$ (cd tvision && cmake . -B ./build && cmake --build ./build) # Build tvision.
$ cmake . && cmake --build . # Build Turbo.

@magiblot
Copy link
Owner

These commands:

$ cmake . && cmake --build . # Build Turbo.

Did you run them from the turbo directory (not tvision)?

Note that the commands to build tvision are surrounded by parenthesis. This is so that it returns to the turbo directory after running.

@chernish2
Copy link
Author

I got this error again (see below).
I'm using gcc-8, and there was no errors during making tvision.

[ 96%] Linking CXX static library libscintilla.a
[ 96%] Built target scintilla
Scanning dependencies of target turbo
[ 97%] Building CXX object CMakeFiles/turbo.dir/cmake_pch.hxx.gch
In file included from /home/chernish2/soft/turbo/CMakeFiles/turbo.dir/cmake_pch.hxx:5:0,
from :0:
/home/chernish2/soft/turbo/include/ScintillaHeaders.h:48:10: fatal error: filesystem: No such file or directory
#include
^~~~~~~~~~~~
compilation terminated.
CMakeFiles/turbo.dir/build.make:82: recipe for target 'CMakeFiles/turbo.dir/cmake_pch.hxx.gch' failed
make[2]: *** [CMakeFiles/turbo.dir/cmake_pch.hxx.gch] Error 1
CMakeFiles/Makefile2:123: recipe for target 'CMakeFiles/turbo.dir/all' failed
make[1]: *** [CMakeFiles/turbo.dir/all] Error 2
Makefile:102: recipe for target 'all' failed
make: *** [all] Error 2

@magiblot
Copy link
Owner

magiblot commented Oct 20, 2020

It's the same issue as before. You have been able to build tvision without issues because the submodule upgrade removed that dependendency from Turbo Vision. But the Turbo text editor depends on it unconditionally.

When you ran cmake ., did CMake print The CXX compiler identification is GNU 8.x.x, or was it still printing version 7.5.0?

If it's using version 7.5.0 despite having installed g++-8, you can try:

rm CMakeCache.txt && CXX=g++-8 cmake .

This will tell CMake to use g++-8 explicitly.

If you are actually using g++ 8, then you need an even newer version. Try g++ 9 or newer.

@chernish2
Copy link
Author

chernish2 commented Oct 20, 2020

Thank you!
Now I have (see below).
I guess it's facebook/folly#1262, but how to fix it?
libfmt-dev is installed.

[ 98%] Building CXX object CMakeFiles/turbo.dir/Unity/unity_1_cxx.cxx.o
In file included from /home/chernish2/soft/turbo/src/editwindow.h:11,
from /home/chernish2/soft/turbo/src/styles.cc:3,
from /home/chernish2/soft/turbo/CMakeFiles/turbo.dir/Unity/unity_1_cxx.cxx:3:
/home/chernish2/soft/turbo/src/editstates.h:9:10: fatal error: fmt/core.h: No such file or directory
#include <fmt/core.h>
^~~~~~~~~~~~
compilation terminated.
CMakeFiles/turbo.dir/build.make:112: recipe for target 'CMakeFiles/turbo.dir/Unity/unity_1_cxx.cxx.o' failed
make[2]: *** [CMakeFiles/turbo.dir/Unity/unity_1_cxx.cxx.o] Error 1
CMakeFiles/Makefile2:123: recipe for target 'CMakeFiles/turbo.dir/all' failed
make[1]: *** [CMakeFiles/turbo.dir/all] Error 2
Makefile:102: recipe for target 'all' failed
make: *** [all] Error 2

@magiblot
Copy link
Owner

Edit lines 44-53 of Turbo's CMakeLists.txt as follows:

 find_path(TVISION_INCLUDE "tvision/tv.h" HINTS "${CMAKE_CURRENT_SOURCE_DIR}/tvision/include")
+find_path(FMT_INCLUDE "fmt/core.h")
 
 target_include_directories(turbo PRIVATE
     ${SCINTILLA_INC}
     "${CMAKE_CURRENT_SOURCE_DIR}/include"
     "${CMAKE_CURRENT_SOURCE_DIR}/src"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/platform"
     "${TVISION_INCLUDE}"
     "${TVISION_INCLUDE}/override"
+    "${FMT_INCLUDE}"
 )

And try again.

@magiblot
Copy link
Owner

If the above still fails, you may need to install the development package for the fmt dependency.

@chernish2
Copy link
Author

chernish2 commented Oct 20, 2020

OK it works!
Is it possible to make something like
sudo make install ?
I would like to use turbo system-wide instead of nano.

@chernish2
Copy link
Author

chernish2 commented Oct 20, 2020

Also it would be good to have something like
apt install turbo
because I would like to use turbo on every of my machines (plenty of them). Build from source many times would be pain.
What do you think?

@magiblot
Copy link
Owner

Hooray!

There is no support for make install, but you can do:

sudo cp turbo /usr/local/bin/

Also it would be good to have something like
apt install turbo

Yes, this would be great, but for this to work a package has to be created and published in a repository and maintained by someone. I don't know how to do this and I'm not even using the same Linux distribution as you. I don't have the time to be a package maintainer either. So I'm sorry but I can't promise you this.

OK it works!

Did you have to install an additional package, or were the changes in CMakeLists.txt enough?

@chernish2
Copy link
Author

Instruction for building on Linux Ubuntu 20.04.1 LTS

sudo apt update
sudo apt install cmake build-essential git libfmt-dev libmagic-dev libgpm-dev libncursesw5 libncursesw5-dev
git clone --recursive https://github.com/magiblot/turbo.git
cd turbo
(cd tvision && cmake . -B ./build && cmake --build ./build) # Build tvision.
cmake . && cmake --build . # Build Turbo.
sudo cp turbo /usr/local/bin/
turbo

@chernish2
Copy link
Author

Instruction for Ubuntu 18 is also ready (much more difficult), but you need to fix this first please:

Edit lines 44-53 of Turbo's CMakeLists.txt as follows:

 find_path(TVISION_INCLUDE "tvision/tv.h" HINTS "${CMAKE_CURRENT_SOURCE_DIR}/tvision/include")
+find_path(FMT_INCLUDE "fmt/core.h")
 
 target_include_directories(turbo PRIVATE
     ${SCINTILLA_INC}
     "${CMAKE_CURRENT_SOURCE_DIR}/include"
     "${CMAKE_CURRENT_SOURCE_DIR}/src"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/platform"
     "${TVISION_INCLUDE}"
     "${TVISION_INCLUDE}/override"
+    "${FMT_INCLUDE}"
 )

And try again.

@magiblot
Copy link
Owner

Okay, I wasn't sure that was necessary to fix the compilation. I just pushed commit 7f32616 with this change.

@chernish2
Copy link
Author

Instruction for building on Ubuntu 18.04.5 LTS

sudo apt update
sudo apt-get install libssl-dev gcc-8 g++-8 git libfmt-dev libmagic-dev libgpm-dev libncursesw5 libncursesw5-dev ncurses-dev build-essential 

#build CMake 3.18.1
export CXX=g++-8
sudo apt remove --purge --auto-remove cmake
mkdir ~/temp && cd ~/temp
wget https://cmake.org/files/v3.18/cmake-3.18.1.tar.gz
tar -xzvf cmake-3.18.1.tar.gz
cd cmake-3.18.1/
./bootstrap
make -j$(nproc)
sudo make install

#build fmt
cd .. && git clone https://github.com/fmtlib/fmt.git && cd fmt/
cmake . && cmake --build .
sudo make install
cd ..

git clone --recursive https://github.com/magiblot/turbo.git && cd turbo

(cd tvision && cmake . -B ./build && cmake --build ./build) # Build tvision.
cmake . && cmake --build . # Build Turbo.
sudo cp turbo /usr/local/bin/
turbo

Please feel free to use both instructions by any means you like.

@chernish2
Copy link
Author

Are there any means to add Ruby syntax highlighting?
Also would be happy for Python and R.

@chernish2
Copy link
Author

I think it would be nice also to add some instruction on how to pass hotkeys (Alt + F etc.) from Linux terminal to turbo itself (if possible). Now to use the menu I forced to press F12 and then scroll the menus since main hotkey combinations are intercepted by terminal.

@magiblot
Copy link
Owner

Are there any means to add Ruby syntax highlighting?
Also would be happy for Python and R.

Well, at this point it requires editing the source code. I may be able to do it in a couple of days. Python should be already working.

I think it would be nice also to add some instruction on how to pass hotkeys (Alt + F etc.) from Linux terminal to turbo itself (if possible).

There's nothing I can do about this. Maybe your terminal application has a setting where you can change this behaviour. For example, gnome-terminal has this option:

Screenshot_20201021_215557

Now to use the menu I forced to press F12 and then scroll the menus since main hotkey combinations are intercepted by terminal.

Note that you can press the highlighted key instead of navigating with the cursor. For instance, F12+f opens the 'File' menu.

Cheers!

@magiblot
Copy link
Owner

Also, thank you very much for the build instructions! I will add them later to the Readme.

@chernish2
Copy link
Author

I think it would be nice also to add some instruction on how to pass hotkeys (Alt + F etc.) from Linux terminal to turbo itself (if possible).

There's nothing I can do about this. Maybe your terminal application has a setting where you can change this behaviour. For example, gnome-terminal has this option:

Indeed in Ubuntu default terminal it is sufficient to right-click in it and disable "Show Menubar". After that hotkeys are processed by turbo directly.

@magiblot
Copy link
Owner

Indeed in Ubuntu default terminal it is sufficient to right-click in it and disable "Show Menubar". After that hotkeys are processed by turbo directly.

No, I was referring to the "Enable mnemonics" option, which I already disabled.

@chernish2
Copy link
Author

Is it possible to show in File Open dialog files starting with dot ('hidden')?

@magiblot
Copy link
Owner

magiblot commented Oct 23, 2020

It's not implemented yet, but I'll add it to my TODO list.

magiblot added a commit that referenced this issue Nov 1, 2020
Contributed by Alexey Chernysh in #4.
Co-authored-by: chernish2 <rakata.warrior@gmail.com>
@magiblot
Copy link
Owner

magiblot commented Nov 8, 2020

Hi Alexey. I have changed the way how the project is built. It should be now simpler and faster. The README has been updated with the new build instructions. Can you try it out and confirm that it still works for you?

Cheers.

@chernish2
Copy link
Author

Hey! Good job! Both instructions works perfectly!
Also I would like to add this line to the very end of each instruction:
sudo update-alternatives --install /usr/bin/editor editor /usr/local/bin/turbo 50
It makes turbo available in select editor dialog:
sudo select-editor

@chernish2
Copy link
Author

Hi there.
I found out it's very difficult to use copy/paste outside of turbo. I mean - it's a pain to copy text in turbo and paste it say in browser. nano is very easy with such a task but unfortunately not turbo.
Please can you fix it?

@magiblot
Copy link
Owner

Hey Alexey. This is issue #2. Anyway, I found an external library that does this and tried to integrate it in 469e279. Can you please give it a try?

@chernish2
Copy link
Author

Hello!
What should I do? git pull and rebuild from scratch?

@magiblot
Copy link
Owner

Yes, that's enough.

@chernish2
Copy link
Author

On Ubuntu 20 completing the instruction, and have errors:
cmake . -DCMAKE_BUILD_TYPE=Release
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Version: 7.1.2
-- Build type: Release
-- CXX_STANDARD: 11
-- Performing Test has_std_11_flag
-- Performing Test has_std_11_flag - Success
-- Performing Test has_std_0x_flag
-- Performing Test has_std_0x_flag - Success
-- Performing Test SUPPORTS_USER_DEFINED_LITERALS
-- Performing Test SUPPORTS_USER_DEFINED_LITERALS - Success
-- Performing Test FMT_HAS_VARIANT
-- Performing Test FMT_HAS_VARIANT - Success
-- Required features: cxx_variadic_templates
-- Looking for strtod_l
-- Looking for strtod_l - not found
-- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
CMake Error at /usr/share/cmake-3.16/Modules/FindPkgConfig.cmake:511 (message):
pkg-config tool not found
Call Stack (most recent call first):
/usr/share/cmake-3.16/Modules/FindPkgConfig.cmake:643 (_pkg_check_modules_internal)
deps/libclipboard/CMakeLists.txt:66 (pkg_check_modules)

-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found PythonInterp: /usr/bin/python3.8 (found version "3.8.5")
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
-- (tvision) Build Examples:
-- (tvision) Build w/GPM: ON
-- (tvision) gpm library requested
-- (tvision) gpm library found
-- Configuring incomplete, errors occurred!
See also "/home/chernish2/turbo/CMakeFiles/CMakeOutput.log".
See also "/home/chernish2/turbo/CMakeFiles/CMakeError.log".
chernish2@ch:~/turbo$ cmake --build . # Build Turbo.
make: *** No targets specified and no makefile found. Stop.

@magiblot
Copy link
Owner

Okay. You have to install pkg-config. It's a dependency of the new submodule. I'll have to update the documentation.
I guess this should be enough:

sudo apt install pkg-config

Let me know if it keeps producing errors.

@chernish2
Copy link
Author

Yes, then having this:
-- Checking for module 'xcb'
-- No package 'xcb' found
CMake Error at /usr/share/cmake-3.16/Modules/FindPkgConfig.cmake:463 (message):
A required package was not found

@magiblot
Copy link
Owner

Let's try with this:

sudo apt install xcb

@chernish2
Copy link
Author

Sorry, doesn't help:
sudo apt install xcb
Reading package lists... Done
Building dependency tree
Reading state information... Done
xcb is already the newest version (2.4-5).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

May be something like libxcb?

@magiblot
Copy link
Owner

Yeah, probably. Can you please try that? Or maybe there is a -dev package.

@chernish2
Copy link
Author

sudo apt install libxcb1-dev !!

@chernish2
Copy link
Author

So with two libs (pkg-config libxcb1-dev) it builds on Ubuntu 20.
I can easily copy text from GUI to turbo using ctrl+c / ctrl+v.
But I can't copy from turbo to GUI (have tried ctrl+c and ctrl+shift+c).

Also it would be convenient to have basic options like "Copy", Cut, Paste in Edit menu.

@magiblot
Copy link
Owner

But I can't copy from turbo to GUI (have tried ctrl+c and ctrl+shift+c).

This works for me. I'll have to test further.

Also it would be convenient to have basic options like "Copy", Cut, Paste in Edit menu.

Yes.

Thanks for testing!

@chernish2
Copy link
Author

And following the instruction for Ubuntu 18 it fails to build turbo:
[ 95%] Built target clipboard
Scanning dependencies of target turbo
[ 95%] Building CXX object CMakeFiles/turbo.dir/cmake_pch.hxx.gch
[ 96%] Building CXX object CMakeFiles/turbo.dir/Unity/unity_2_cxx.cxx.o
[ 96%] Building CXX object CMakeFiles/turbo.dir/Unity/unity_1_cxx.cxx.o
[ 96%] Building CXX object CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o
[ 97%] Linking CXX executable turbo
CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function std::_Function_handler<bool (TNode*, int), DocumentTreeView::hasPath(util::u8path const&, int*)::{lambda(auto:1*, auto:2)#1}>::_M_invoke(std::_Any_data const&, TNode*&&, int&&)': unity_0_cxx.cxx:(.text+0x847): undefined reference to std::filesystem::__cxx11::path::compare(std::filesystem::__cxx11::path const&) const'
CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function EditorWindow::canOverwrite() const': unity_0_cxx.cxx:(.text+0x3f50): undefined reference to std::filesystem::status(std::filesystem::__cxx11::path const&, std::error_code&)'
CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function DocumentTreeView::Node::Node(DocumentTreeView::Node*, util::u8path const&)': unity_0_cxx.cxx:(.text+0x4ce4): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()'
CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function DocumentTreeView::getDirNode(util::u8path const&)': unity_0_cxx.cxx:(.text+0x51d5): undefined reference to std::filesystem::__cxx11::path::compare(std::filesystem::__cxx11::path const&) const'
unity_0_cxx.cxx:(.text+0x5285): undefined reference to std::filesystem::__cxx11::path::compare(std::filesystem::__cxx11::path const&) const' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function FileType::detect(EditorWindow&)':
unity_0_cxx.cxx:(.text+0x6192): undefined reference to std::filesystem::__cxx11::path::_M_find_extension() const' unity_0_cxx.cxx:(.text+0x6264): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()'
unity_0_cxx.cxx:(.text+0x635f): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function FileType::detect(EditorWindow&) [clone .constprop.291]':
unity_0_cxx.cxx:(.text+0x6732): undefined reference to std::filesystem::__cxx11::path::_M_find_extension() const' unity_0_cxx.cxx:(.text+0x6804): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()'
unity_0_cxx.cxx:(.text+0x68ff): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function EditorWindow::tryLoadFile(bool)':
unity_0_cxx.cxx:(.text+0x6d39): undefined reference to std::filesystem::absolute(std::filesystem::__cxx11::path const&, std::error_code&)' unity_0_cxx.cxx:(.text+0x6dde): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()'
unity_0_cxx.cxx:(.text+0x6f31): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function TurboApp::setFocusedEditor(EditorWindow*)':
unity_0_cxx.cxx:(.text+0x7e0e): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' unity_0_cxx.cxx:(.text+0x7f39): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()'
CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function EditorWindow::EditorWindow(TRect const&, std::basic_string_view<char, std::char_traits<char> >, bool)': unity_0_cxx.cxx:(.text+0x82c0): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()'
CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o:unity_0_cxx.cxx:(.text+0x883b): more undefined references to std::filesystem::__cxx11::path::_M_split_cmpts()' follow CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function EditorWindow::saveAsDialog()::{lambda(TView*)#1}::operator()(TView*) const [clone .isra.265]':
unity_0_cxx.cxx:(.text+0xa007): undefined reference to std::filesystem::absolute(std::filesystem::__cxx11::path const&, std::error_code&)' unity_0_cxx.cxx:(.text+0xa17d): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()'
unity_0_cxx.cxx:(.text+0xa3e0): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' unity_0_cxx.cxx:(.text+0xa634): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()'
CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function util::u8path::parent_path() const': unity_0_cxx.cxx:(.text._ZNK4util6u8path11parent_pathEv[_ZNK4util6u8path11parent_pathEv]+0x2d): undefined reference to std::filesystem::__cxx11::path::parent_path() const'
unity_0_cxx.cxx:(.text._ZNK4util6u8path11parent_pathEv[_ZNK4util6u8path11parent_pathEv]+0xad): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function util::u8path::filename() const':
unity_0_cxx.cxx:(.text._ZNK4util6u8path8filenameEv[_ZNK4util6u8path8filenameEv]+0xe8): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()'
collect2: error: ld returned 1 exit status
CMakeFiles/turbo.dir/build.make:163: recipe for target 'turbo' failed
make[2]: *** [turbo] Error 1
CMakeFiles/Makefile2:323: recipe for target 'CMakeFiles/turbo.dir/all' failed
make[1]: *** [CMakeFiles/turbo.dir/all] Error 2
Makefile:148: recipe for target 'all' failed
make: *** [all] Error 2

@magiblot
Copy link
Owner

magiblot commented Nov 25, 2020

std::filesystem errors, why am I not surprised? Is a newer version of GCC available in Ubuntu 18? Or maybe you could try with Clang (CXX=clang++).

@chernish2
Copy link
Author

This helps for Ubuntu 18 to build:
export CXX=g++-8
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-9

Under Ubuntu 18 it pastes from GUI with ctrl+shift+v , but no way to paste from turbo to GUI.

@chernish2
Copy link
Author

Also if possible please add autoloading files opened in previous sessions.
Please!

@magiblot
Copy link
Owner

Hi Alexey. Besides my main system, which has the latest version of most packages, I am also testing on Lubuntu 18.04 with the following packages:

cmake 3.10.2
g++ 8.4.0
pkg-config 0.29.1
libxcb1-dev 1.13

I ran across some compilation issues which I managed to fix in the latest commits.

The clipboard works between Turbo and GUI applications with just Ctrl+C and Ctrl+V, so I cannot reproduce your situation. Can you rebuild with the latest commit and try again?

Please make sure that the following command:

echo $DISPLAY

Produces some output (e.g. :0). Because libclipboard relies on that variable to connect to the X11 display server.

Also if possible please add autoloading files opened in previous sessions.
Please!

Okay, but it won't be soon.

@chernish2
Copy link
Author

Ok, new commit builds fine on 18.
I get it why I can't copy. What I'm trying to do is to replace nano with turbo on a server configuration (without GUI). So $DISPLAY is obviously empty.
I confirm that on machine with GUI copy-paste works fine.
But the idea is to use turbo on server (no GUI) configuration. And to copy-paste from ssh terminal to GUI is something I would like to have (it is possible in nano with the help of mouse), though the more common scenario is to copy from GUI to ssh terminal (which works).

@magiblot
Copy link
Owner

magiblot commented Nov 27, 2020

If an X11 server is running in your graphical environment (which is likely to be the case if your local system is Linux), you can use the -X option of ssh to enable X11 forwarding.

@chernish2
Copy link
Author

Yes, with -X it works!
Thank you!

@magiblot magiblot mentioned this issue Dec 24, 2020
@alexmyczko
Copy link

alexmyczko commented Jan 30, 2023

here's a debian source package (unfinished, but building, installable, runnable):

http://sid.ethz.ch/debian/turbo/

For proper packaging, the deps would be need to get rid of, and tag a release.

libfmt-dev already exists in Debian, so that should be used instead a delivered copy of it.
the tvision part should also be packaged separately...

@magiblot
Copy link
Owner

Hi @alexmyczko, thanks for the support!

It is possible to use the system-installed libfmt with the CMake option -DTURBO_USE_SYSTEM_DEPS=ON.
Turbo Vision is a static library, so using the submodule shouldn't make a great difference. However, cmake --install currently also installs the Turbo Vision files, which should be fixed. Otherwise, it is possible to use a system-installed tvision with the option -DTURBO_USE_SYSTEM_TVISION=ON.

As for the tagged release, is it really necessary?

@alexmyczko
Copy link

thanks a lot! the tag is not really needed but would be nice sooner or later

magiblot added a commit that referenced this issue Jan 30, 2023
'EXCLUDE_FROM_ALL' was removed in 5345911 but it is apparently not the cause of any issues. Actually, we need this option to avoid installing Turbo Vision files.

See #4.
@magiblot
Copy link
Owner

magiblot commented Jan 30, 2023

However, cmake --install currently also installs the Turbo Vision files, which should be fixed.

I have just fixed this, so it should now be possible to install Turbo without any interference from the submodules.

@alexmyczko
Copy link

sorry the link (debian packaging) was not working for some time, fixed again...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants