elfmz / far2l

Linux port of FAR v2
GNU General Public License v2.0
1.78k stars 173 forks source link

how to make build for centos #336

Open vlbash opened 6 years ago

ghost commented 5 years ago

I was able to successfully build it in Fedora 29.

But it makes troubles in CentOS.

We need new CMake and libs which are not available in CentOS 7.

ghost commented 5 years ago

Easiest way (not tested, though) is to convert .deb to .rpm using alien: yum install alien alien -r PACKAGE_FILE_NAME.deb sudo yum localinstall PACKAGE_FILE_NAME.rpm

debs available here: https://github.com/unxed/far2l-deb consider trying versions for the oldest distros first

ps: not sure if alien is able to correctly process dependencies.

This does not work. It requires the following:

Error: Package: far2l-2.0-2.x86_64 (/far2l-2.0-2.x86_64)
           Requires: libwx_gtk2u_core-3.0.so.0()(64bit)
Error: Package: far2l-2.0-2.x86_64 (/far2l-2.0-2.x86_64)
           Requires: libcrypto.so.1.1()(64bit)
Error: Package: far2l-2.0-2.x86_64 (/far2l-2.0-2.x86_64)
           Requires: libwx_gtk2u_core-3.0.so.0(WXU_3.0)(64bit)
Error: Package: far2l-2.0-2.x86_64 (/far2l-2.0-2.x86_64)
           Requires: libcrypto.so.1.1(OPENSSL_1_1_0)(64bit)
Error: Package: far2l-2.0-2.x86_64 (/far2l-2.0-2.x86_64)
           Requires: libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
Error: Package: far2l-2.0-2.x86_64 (/far2l-2.0-2.x86_64)
           Requires: libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
Error: Package: far2l-2.0-2.x86_64 (/far2l-2.0-2.x86_64)
           Requires: libstdc++.so.6(GLIBCXX_3.4.22)(64bit)
Error: Package: far2l-2.0-2.x86_64 (/far2l-2.0-2.x86_64)
           Requires: libstdc++.so.6(CXXABI_1.3.8)(64bit)
Error: Package: far2l-2.0-2.x86_64 (/far2l-2.0-2.x86_64)
           Requires: libstdc++.so.6(CXXABI_1.3.9)(64bit)
ghost commented 5 years ago

I guess you can add the following instructions for CentOS 7:

Install development packages and tools:

yum install gawk m4 glib2-devel wxGTK3-devel cmake gcc-c++ git

Install cmake3, and new gcc, use it with scl:

yum install cmake3
yum install centos-release-scl
yum install devtoolset-8-gcc*
scl enable devtoolset-8 bash
which gcc
gcc --version

Clone far2l and do the same thing as described in readme:

git clone https://github.com/elfmz/far2l
mkdir build
cd build
cmake3 -DUSEWX=no -DCMAKE_BUILD_TYPE=Release ..
make -j4
make install

Enjoy!

--

centos-release-7-6.1810.2.el7.centos.x86_64

image

pgagarinov commented 4 years ago

Here is a script for installing Far2l on CentOS 8:

https://github.com/pgagarinov/centos-config/blob/master/centos8/basic/install_far2l.sh

rshekhovtsov commented 4 years ago

Here is a script for installing Far2l on CentOS 8:

https://github.com/pgagarinov/centos-config/blob/master/centos8/basic/install_far2l.sh

have two issues with this script on centos 8:

  1. wxGTK3-devel was not available, need to: dnf search epel-release sudo dnf install epel-release sudo dnf install wxGTK3-devel
  2. After installation, change Terminal flag in /usr/local/share/applications/far2l.desktop: Terminal=true
pgagarinov commented 4 years ago

Here is a script for installing Far2l on CentOS 8: https://github.com/pgagarinov/centos-config/blob/master/centos8/basic/install_far2l.sh

have two issues with this script on centos 8:

1. wxGTK3-devel was not available, need to:
   dnf search epel-release
   sudo dnf install epel-release
   sudo dnf install wxGTK3-devel

2. After installation, change Terminal flag in /usr/local/share/applications/far2l.desktop:
   Terminal=true

Fixed in https://github.com/Alliedium/awesome-linux-config/blob/master/centos8/basic/install_far2l.sh

valdemar1977 commented 1 year ago

I guess you can add the following instructions for CentOS 7:

Install development packages and tools:

yum install gawk m4 glib2-devel wxGTK3-devel cmake gcc-c++ git

Install cmake3, and new gcc, use it with scl:

yum install cmake3
yum install centos-release-scl
yum install devtoolset-8-gcc*
scl enable devtoolset-8 bash
which gcc
gcc --version

Clone far2l and do the same thing as described in readme:

git clone https://github.com/elfmz/far2l
mkdir build
cd build
cmake3 -DUSEWX=no -DCMAKE_BUILD_TYPE=Release ..
make -j4
make install

Enjoy!

--

centos-release-7-6.1810.2.el7.centos.x86_64

image

Has a problem with configuring on centos 7

-- git hash: 706304a
-- Build Type: Release Version: 2.5.2-706304a-beta
-- Enabling registry support due to enabled LEGACY
-- generating headers and languages
-- Building with libuchardet
CMake Error at /usr/share/cmake3/Modules/FindPackageHandleStandardArgs.cmake:164 (message):
  Could NOT find Uchardet (missing: UCHARDET_LIBRARY UCHARDET_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/share/cmake3/Modules/FindPackageHandleStandardArgs.cmake:445 (_FPHSA_FAILURE_MESSAGE)
  cmake/modules/FindUchardet.cmake:16 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  far2l/CMakeLists.txt:214 (find_package)

-- Configuring incomplete, errors occurred!
See also "/home/kadmin/far2l/_build/CMakeFiles/CMakeOutput.log".
See also "/home/kadmin/far2l/_build/CMakeFiles/CMakeError.log"

Inside /home/kadmin/far2l/_build/CMakeFiles/CMakeError.log

Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output:
Change Dir: /home/kadmin/far2l/_build/CMakeFiles/CMakeTmp

Run Build Command(s):/bin/gmake cmTC_0d082/fast && /bin/gmake  -f CMakeFiles/cmTC_0d082.dir/build.make CMakeFiles/cmTC_0d082.dir/build
gmake[1]: Entering directory `/home/kadmin/far2l/_build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_0d082.dir/src.c.o
/opt/rh/devtoolset-8/root/usr/bin/cc   -Wall -std=c99 -fPIC -Wno-unused-function -D_FILE_OFFSET_BITS=64 -ffunction-sections -fdata-sections -Wl,--gc-sections -DWINPORT_REGISTRY -DCMAKE_HAVE_LIBC_PTHREAD   -o CMakeFiles/cmTC_0d082.dir/src.c.o   -c /home/kadmin/far2l/_bui
ld/CMakeFiles/CMakeTmp/src.c
Linking C executable cmTC_0d082
/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_0d082.dir/link.txt --verbose=1
/opt/rh/devtoolset-8/root/usr/bin/cc  -Wall -std=c99 -fPIC -Wno-unused-function -D_FILE_OFFSET_BITS=64 -ffunction-sections -fdata-sections -Wl,--gc-sections -DWINPORT_REGISTRY -DCMAKE_HAVE_LIBC_PTHREAD    -rdynamic CMakeFiles/cmTC_0d082.dir/src.c.o  -o cmTC_0d082
CMakeFiles/cmTC_0d082.dir/src.c.o: In function `main':
src.c:(.text.main+0x21): undefined reference to `pthread_create'
src.c:(.text.main+0x2d): undefined reference to `pthread_detach'
src.c:(.text.main+0x39): undefined reference to `pthread_cancel'
src.c:(.text.main+0x4a): undefined reference to `pthread_join'
src.c:(.text.main+0x5e): undefined reference to `pthread_atfork'
collect2: error: ld returned 1 exit status
gmake[1]: *** [cmTC_0d082] Error 1
gmake[1]: Leaving directory `/home/kadmin/far2l/_build/CMakeFiles/CMakeTmp'
gmake: *** [cmTC_0d082/fast] Error 2

Source file was:
#include <pthread.h>

void* test_func(void* data)
{
  return data;
}

int main(void)
{
  pthread_t thread;
  pthread_create(&thread, NULL, test_func, NULL);
  pthread_detach(thread);
  pthread_cancel(thread);
  pthread_join(thread, NULL);
  pthread_atfork(NULL, NULL, NULL);
  pthread_exit(NULL);

  return 0;
}

Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /home/kadmin/far2l/_build/CMakeFiles/CMakeTmp

Run Build Command(s):/bin/gmake cmTC_d6556/fast && /bin/gmake  -f CMakeFiles/cmTC_d6556.dir/build.make CMakeFiles/cmTC_d6556.dir/build
gmake[1]: Entering directory `/home/kadmin/far2l/_build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_d6556.dir/CheckFunctionExists.c.o
/opt/rh/devtoolset-8/root/usr/bin/cc   -Wall -std=c99 -fPIC -Wno-unused-function -D_FILE_OFFSET_BITS=64 -ffunction-sections -fdata-sections -Wl,--gc-sections -DWINPORT_REGISTRY -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTC_d6556.dir/CheckFunctionExists.c.o
   -c /usr/share/cmake3/Modules/CheckFunctionExists.c
Linking C executable cmTC_d6556
/usr/bin/cmake3 -E cmake_link_script CMakeFiles/cmTC_d6556.dir/link.txt --verbose=1
/opt/rh/devtoolset-8/root/usr/bin/cc  -Wall -std=c99 -fPIC -Wno-unused-function -D_FILE_OFFSET_BITS=64 -ffunction-sections -fdata-sections -Wl,--gc-sections -DWINPORT_REGISTRY -DCHECK_FUNCTION_EXISTS=pthread_create    -rdynamic CMakeFiles/cmTC_d6556.dir/CheckFunctionExi
sts.c.o  -o cmTC_d6556  -lpthreads
/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: cannot find -lpthreads
collect2: error: ld returned 1 exit status
gmake[1]: *** [cmTC_d6556] Error 1
gmake[1]: Leaving directory `/home/kadmin/far2l/_build/CMakeFiles/CMakeTmp'
gmake: *** [cmTC_d6556/fast] Error 2

ldconfig has output

ldconfig -p | grep pthread
    libpthread.so.0 (libc6,x86-64, OS ABI: Linux 2.6.32) => /lib64/libpthread.so.0
    libpthread.so.0 (libc6, OS ABI: Linux 2.6.32) => /lib/libpthread.so.0
    libgpgme-pthread.so.11 (libc6,x86-64) => /lib64/libgpgme-pthread.so.11
    libevent_pthreads-2.0.so.5 (libc6,x86-64) => /lib64/libevent_pthreads-2.0.so.5