install_aapp8.sh

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #48817
    fu zilinfu zilin
    Participant

    I attempted to compile using the install_aapp8.sh script, and when it reached item 3, which is the compilation of eccodes, the following issue occurred:
    [65%] Linking C executable ../bin/grib_to_netcdf
    CMakeFiles/grib_to_netcdf.dir/grib_to_netcdf.c.o: In function ‘define_netcdf_dimensions’:
    /public2/users/lwang1/MetOffice/build/eccodes-2.26.0-Source/tools/grib_to_netcdf.c:3074: reference to ‘nc_def_var_chunking’ undefined
    /public2/users/lwang1/MetOffice/build/eccodes-2.26.0-Source/tools/grib_to_netcdf.c:3078: reference to ‘nc_def_var_deflate’ undefined
    make[2]: *** [bin/grib_to_netcdf] Error 1
    make[1]: *** [tools/CMakeFiles/grib_to_netcdf.dir/all] Error 2
    make: *** [all] Error 2
    problem with ecCodes make

    How can I deal it, please.

    #48819
    Nigel AtkinsonNigel Atkinson
    Moderator

    Hello,

    I suspect your system is picking up an old version of the netCDF library. Since AAPP does not need netCDF support, please try building ecCodes with the following cmake flag, just after line 227 of the install_aapp8.sh script:

    -DENABLE_NETCDF=OFF

    Actually I noticed that the version of install_aapp8.sh on the NWP SAF server had somehow reverted to an earlier version, intended for use with AAPP v8.10. I have now replaced it with the version that was issued with AAPP v8.11, which uses ecCodes 2.27.1. In practice it won’t matter which version of ecCodes you install: the netCDF modification applies to both.

    Regards,

    Nigel

    #48821
    fu zilinfu zilin
    Participant

    Thank you for answering my question,I had successfully fixed this issue by upgrading the library.Meanwhile I also learn a new way you told me to solve the problem.Thank you very much.

    But I found some new problems in the next step:

    One is that line 509 of the new script in item=9,it tries to assign “Linux-Intel-icc” to arch if ifort is used,but when I installed,it would dispaly the error as follow:
    【+ ./configure ‘–aapp-prefix=/public2/users/lwang1/MetOffice/install/AAPP_8.11’ ‘–xrcs-prefix=/public2/users/lwang1/MetOffice/install/opslrs/xerces-c-1.7.0’ ‘–fftw-prefix=/public2/users/lwang1/MetOffice/install/opslrs/fftw-3.0.1’ ‘–prefix=/public2/users/lwang1/MetOffice/install/opslrs’ ‘–arch=Linux-Intel-icc’ ‘–optimize=normal’ ‘–site-id=UKM’ ‘–nthreads=20′
    Unknown arch `Linux-Intel-icc’
    + status=2
    Error: OPS-LRS configure failed】

    So after I read the OPS-LRS User Manual and it said may use Linux-Intel because in the config sub-directory just has Linux-Intel file.

    Other issue is that when I reach item=8,it displays “libfl.a is installed” .Does this mean my installation was successful ?

    If successful,for item=9 to install OPS-LRS,the following error was reported:
    【cd MSGS/src; make bin
    make[2]: Entering directory “/public2/users/lwang1/MetOffice/build/OPS_V8.4-AAPP-l-20211216/src/MSGS/src”
    icc -Wl,–start-group -o MSGS__Serveur MSGS.a ../../MSG/src/MSG.a ../../ENV/src/ENV.a ../../CMN/src/CMN.a ../../CMN/PRS/src/CMN_PRS.a ../../CMN/DAT/src/CMN_DAT.a ../../CMN/OBS/src/CMN_OBS.a ../../MSG/src/MSG.a ../../ENV/src/ENV.a ../../CMN/src/CMN.a ../../CMN/PRS/src/CMN_PRS.a ../../CMN/DAT/src/CMN_DAT.a ../../CMN/OBS/src/CMN_OBS.a -L../../EXT/navigation/lib -lnavigation -L../../EXT/MLA/lib -lMLA -L../../EXT/env/lib -lenv -L../../EXT/ngmath-lite/lib -lngmath-lite -L../../EXT/lapack-lite/lib -llapack-lite -L../../EXT/spline-lite/lib -lspline-lite -L../../EXT/numrec-lite/lib -lnumrec-lite -L../../EXT/fortran-lock/lib -lfortran-lock -L/public2/users/lwang1/MetOffice/install/AAPP_8.11/AAPP/lib -lnavtool -lf7tp -lf7cp -lf7gp -lf7ml -L/public2/users/lwang1/MetOffice/install/opslrs/xerces-c-1.7.0/lib -lxerces-c1_7_0 -L/public2/users/lwang1/MetOffice/install/opslrs/fftw-3.0.1/lib -lfftw3 -lifport -lifcore -limf -lsvml -lipgo -lirc -lirc_s -ldl -lfl -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -lpthread -lnsl -lrt -lm -lc -Wl,–end-group -Wl,-static -limf -lifcoremt -lirc -Wl,-call_shared -lm -lc
    /opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: cannot find -lfl
    make[2]: *** [MSGS__Serveur] Error 1
    make[2]: Leaving directory “/public2/users/lwang1/MetOffice/build/OPS_V8.4-AAPP-l-20211216/src/MSGS/src”
    make[1]: *** [bin] Error 2
    make[1]: Leaving directory “/public2/users/lwang1/MetOffice/build/OPS_V8.4-AAPP-l-20211216/src”
    make: *** [all] Error 2
    OPS-LRS make failed】

    Why is there an error, I won’t install successfully for flex in item=8 ?

    #48823
    fu zilinfu zilin
    Participant

    I’m sorry for the previous reply which in September 22, 2023 at 6:56 am. I had solved the second problem by installing flex successfully.So for now it can find the -lfl files.I’m sorry again for wasting your time.

    But the first issue still remains,and if I change the arch=Linux-Intel-icc to the arch=Linux-Intel,then the codes can run.

    However it report the new error as follow:
    【/public2/users/lwang1/MetOffice/install/opslrs/xerces-c-1.7.0/lib/libxerces-c1_7_0.so: undefined reference to ‘stricmp(const char*, const char*)’
    /public2/users/lwang1/MetOffice/install/opslrs/xerces-c-1.7.0/lib/libxerces-c1_7_0.so: undefined reference to ‘strnicmp(const char*, const char*, unsigned int)’
    make[2]: *** [MSGS__Serveur] Error 1】

    It’s similar to the question I asked the first time. Is this a compiler issue? Since my compiler is intel, I had change something when configuring the xerces library for example I used icc and icpc instead of gcc and g++ in line 359 of the script.
    Or is it a version issue with the xerces library?

    Sincerely,

    Fu

    #48825
    Nigel AtkinsonNigel Atkinson
    Moderator

    Sorry about the confusion with Linux-Intel-icc. It seems that install_aapp8.sh is a little out of step with the options available in OPS-LRS. You have solved it correctly.

    I’m not sure about the xerces problem. We have not previously tried building this library with icc and icpc. I would try it on our system here, but unfortunately there appears to be a license issue, so I can’t run them.

    It is unfortunate that OPS-LRS requires a very old version of xerces (1.7.0). This has been on our risk register for some time. But I checked a newer version (2.8.0) and that still has calls to stricmp and strnicmp, which suggests that the problem is not related to the old version.

    I will alert our colleagues at Meteo-France to your issue and see if they can help.

    Regards,

    Nigel

    #48826
    sonia peresonia pere
    Participant

    Dear Fu,

    Could you send us your file: install_app8.sh? Thanks

    Regards,

    Sonia

    #48828
    fu zilinfu zilin
    Participant

    Thank you for your continued help and look forward to reply from you again.

    Sincerely,

    Fu

    #48829
    fu zilinfu zilin
    Participant

    Hello,Sonia

    How do I send the script to you? Can you give me an email?

    #48830
    Nigel AtkinsonNigel Atkinson
    Moderator

    Sonia,

    The install_aapp8.sh is almost the same as the one at https://nwp-saf.eumetsat.int/downloads/aapp_data_files/, with the following changes: line 359 (xerces build) use icc and icpc. Line 509: use Linux-Intel (because Linux-Intel-icc was not actually included in OPS-LRS v8.4. We had it in the released version of OPS-LRS v8.0 but it got omitted accidentally).

    Nigel

    #48831
    Nigel AtkinsonNigel Atkinson
    Moderator

    Fu,

    I noticed one thing, which may or may not be relevant. On your system, is there a difference between icc and icpc? I understand that icc can compile both C and C++, and in the OPS-LRS config file Linux-Intel only icc is used. But when building xerces you used icpc for the C++ compiler. If they are different versions then perhaps there might be a compatibility issue, in which case try building xerces with only icc.

    Nigel

    #48832
    fu zilinfu zilin
    Participant

    Hello,Nigel

    Unfortunately, I tried building with only icc, but it still failed.

    #50038
    Nigel AtkinsonNigel Atkinson
    Moderator

    Sorry, this topic has been dormant for a long time. While preparing an updated install_aapp8.sh for the upcoming AAPP v8.14 release, we have done some testing on the ECMWF server, and I believe the issue with icc is now solved. The problem was that the xerces-c-src1_7_0 library uses functions stricmp and strnicmp that are not part of the POSIX standard and are not supported in the icc compiler. We made the following addition to the install_aapp8.sh script, in the section that deals with xerces:

    
      #For Intel compiler we need to change XMLString.cpp due to its use of non-standard functions stricmp and strnicmp
      
      if [ $CC = icc ]; then
        file=xerces-c-src1_7_0/src/xercesc/util/XMLString.cpp
        a="$(grep strings.h $file)"
        if [ -z "$a" ]; then
          echo "Modifying $file to support Intel compiler"
          sed -i "s/#include <string.h>/#include <string.h>\n#include <strings.h>/" $file
          sed -i s/stricmp/strcasecmp/ $file
          sed -i s/strnicmp/strncasecmp/ $file
        fi
      fi
    

    OPS-LRS then builds successfully.

    Nigel

Viewing 12 posts - 1 through 12 (of 12 total)
  • You must be logged in to reply to this topic.