jkimlab / mySyntenyPortal

A stand-alone application for constructing websites for visualizing and browsing synteny blocks
GNU General Public License v3.0
18 stars 5 forks source link

undefined symbol: Perl_Istack_sp_ptr #5

Closed mictadlo closed 6 months ago

mictadlo commented 6 years ago

Hi, I ran into the following problem:

> module load perl/5.22.1-foss-2016a
lorencm@cl2n075:/work/waterhouse_team/apps/mySyntenyPortal> which gcc
/pkg/suse12/software/gcccore/4.9.3/bin/gcc
lorencm@cl2n075:/work/waterhouse_team/apps/mySyntenyPortal> ./install.pl build

Compiling third party tools...
perl: symbol lookup error: /lustre/work-lustre/waterhouse_team/apps/mySyntenyPortal/src/lib/auto/Sort/Key/Key.so: undefined symbol: Perl_Istack_sp_ptr
Success!!

What did I miss?

Thank you in advance.

Michal

jongin333 commented 6 years ago

Hi,

If you have problems in PERL modules, remove the PERL libraries included in mySyntenyPortal packages and re-install the required perl modules.

You can see more information in this page (https://github.com/jkimlab/mySyntenyPortal#system-requirements).

Thank you, Jongin

mictadlo commented 6 years ago

Thank you it worked.

mictadlo commented 6 years ago

Hi, When I started to run mySyntenyPortal I got:

mySyntenyPortal build -p 10 -conf mmr2-tab.assembly.conf 

Building a website...
/usr/bin/perl: symbol lookup error: /home/lorencm/perl5/lib/perl5/x86_64-linux-thread-multi/auto/Sort/Key/Key.so: undefined symbol: Perl_xs_handshake
Done.

What did I miss?

Thank you in advance.

Michal

jongin333 commented 6 years ago

Hi Michal,

Do you have more than one versions of PERL in your server? I think that the problem is the different versions between executed PERL and installed module.

If it is right, it may work with the command below. $ perl [mySyntenyPortal path]/mySyntenyPortal build -p 10 -conf mmr2-tab.assembly.conf

Thank you, Jongin

mictadlo commented 6 years ago

Hi Jongin, Yes, on our cluster we have few different Perl versions installed and I am using the below commands to set up the Perl environment.

> module load perl/5.22.1-foss-2016a
> module load libgd
> PATH="/home/lorencm/perl5/bin${PATH:+:${PATH}}"; export PATH;
> PERL5LIB="/home/lorencm/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
> PERL_LOCAL_LIB_ROOT="/home/lorencm/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
> PERL_MB_OPT="--install_base \"/home/lorencm/perl5\""; export PERL_MB_OPT;
> PERL_MM_OPT="INSTALL_BASE=/home/lorencm/perl5"; export PERL_MM_OPT;

> perl /work/waterhouse_team/apps/mySyntenyPortal/mySyntenyPortal build -p 10 -conf mmr2-tab.assembly.conf

Building a website...
/usr/bin/perl: symbol lookup error: /home/lorencm/perl5/lib/perl5/x86_64-linux-thread-multi/auto/Sort/Key/Key.so: undefined symbol: Perl_xs_handshake
Done.

What did I miss?

Thank you in advance,

Michal

jongin333 commented 6 years ago

Hi Michal,

Then, I think that the problem is the first line of our Perl scripts (#!/usr/bin/perl). Can you change the first line of all our Perl scripts from '#!/usr/bin/perl' to 'your Perl path' in [mySyntenyPortal path]/scripts directory?

I think it will be helpful.

Thank you, Jongin

mictadlo commented 6 years ago

Hi Jongin, I changed it to #!/usr/bin/env perl and to #!/pkg/suse12/software/perl/5.22.1-foss-2016a/bin/perl in both case I got Perl_xs_handshake.

What did I miss?

Thank you in advance.

Michal

jongin333 commented 6 years ago

Hi Michal,

Then, can you try again to reinstall the Sort::Key module? If you have the same problem, it is better to discuss with your server administrator.

Thank you, Jongin

nortex commented 5 years ago

Hi, I have the same problem.

Is there any fix? The path and the file that the program is trying to find doesn't even exists, so the problem should be with the program code.

mySyntenyPortal/src/lib/auto/Sort/Key/Key.so: undefined symbol: Perl_Istack_sp_ptr

jongin333 commented 5 years ago

Dear nortex,

I removed the built-in perl libraries and revised perl scripts.

Could you try to reinstall with the new commit version?

Thank you, Jongin

nortex commented 5 years ago

Hi,

I was able to make it work with next steps:

I would suggest the developer to work and update the program in order to make the compilation and set-up process of the program more easy and friendly for HPC systems(that mostly using modules and different versions of perl and other important system packages).

Regards, Nortex

mictadlo commented 5 years ago

Hi, I only was able to install mySyntenyPortal inside Singularity and Docker containers as shown below:

Singularity file:

BootStrap: docker
From: debian:stretch-backports

%help
  A container with mySyntenyPortal

%post
  apt-get update && apt-get -y upgrade
  apt-get -y install \
    build-essential \
    zlib1g-dev \
    python-dev \
    imagemagick \
    cpanminus \
    pkg-config \
    libgd-dev \
    locales \
    git

  rm -rf /var/lib/apt/lists/*
  apt-get clean

  sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
    dpkg-reconfigure --frontend=noninteractive locales && \
    update-locale LANG=en_US.UTF-8

  # install
  git clone https://github.com/jkimlab/mySyntenyPortal.git
  cd mySyntenyPortal
  find . -name '*.pl' -exec sed -i.bak 's|#!/usr/bin/perl|#!/usr/bin/env perl|' {} +
  sed -i.bak 's|definedForAll = -Wall -Wextra -Werror -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE|definedForAll = -Wall -Wextra -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE|' src/third_party/lastz/src/Makefile

  cpanm Clone \
          Config::General \
          Data::PowerSet \
          Font::TTF::Font \
          GD \
          GD::Polyline \
          JSON \
          Math::Bezier \
          Math::Round \
          Math::VecStat \
          Parallel::ForkManager \
          Readonly \
          Regexp::Common \
          SVG \
          Set::IntSpan \
          Sort::Key::Natural \
          Statistics::Basic \
          Text::Format

  perl ./src/check_modules.pl \
  ./install.pl build 

%environment
  #export PATH=/usr/local/bin/:$PATH
  export LANG=en_US.UTF-8

Dockerfile:

FROM debian:stretch-backports

ENV DEBIAN_FRONTEND noninteractive

RUN apt update && apt install -y \
        build-essential \ 
        zlib1g-dev \
        python-dev \
        imagemagick \ 
        cpanminus \
        pkg-config \
        libgd-dev \
        locales \
        git \
    && rm -rf /var/lib/apt/lists/* && apt-get clean

RUN git clone https://github.com/jkimlab/mySyntenyPortal.git \
    && cd mySyntenyPortal \
    && find . -name '*.pl' -exec sed -i.bak 's|#!/usr/bin/perl|#!/usr/bin/env perl|' {} + \
    && sed -i.bak 's|definedForAll = -Wall -Wextra -Werror -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE|definedForAll = -Wall -Wextra -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE|' src/third_party/lastz/src/Makefile 

RUN cpanm Clone \
          Config::General \
          Data::PowerSet \
          Font::TTF::Font \
          GD \
          GD::Polyline \
          JSON \
          Math::Bezier \
          Math::Round \
          Math::VecStat \
          Parallel::ForkManager \
          Readonly \
          Regexp::Common \
          SVG \
          Set::IntSpan \
          Sort::Key::Natural \
          Statistics::Basic \
          Text::Format \
    && cd mySyntenyPortal \
    && perl ./src/check_modules.pl \
    && ./install.pl build

CMD ["/bin/bash"]