Notification time stamped 2022-05-31 22:18:24 UTC
From 9780cb7bac64a746399b754b2b524c5409e994f4 Mon Sep 17 00:00:00 2001 From: Orion Poplawski orion@nwra.com Date: Feb 13 2019 01:25:25 +0000 Subject: Add patch to fix compilation with GCC 9
---
diff --git a/nco-openmp.patch b/nco-openmp.patch new file mode 100644 index 0000000..6be0895 --- /dev/null +++ b/nco-openmp.patch @@ -0,0 +1,105 @@ +diff -up nco-4.7.8/src/nco/ncecat.c.openmp nco-4.7.8/src/nco/ncecat.c +--- nco-4.7.8/src/nco/ncecat.c.openmp 2018-11-16 14:26:06.000000000 -0700 ++++ nco-4.7.8/src/nco/ncecat.c 2019-02-12 18:11:59.843160669 -0700 +@@ -909,7 +909,7 @@ main(int argc,char **argv) + + /* OpenMP with threading over variables, not files */ + #ifdef _OPENMP +-# pragma omp parallel for default(none) private(in_id) shared(nco_dbg_lvl,fl_nbr,idx_rec_out,in_id_arr,nbr_var_prc,out_id,var_prc,var_prc_out,nbr_dmn_fl,md5,trv_tbl) ++# pragma omp parallel for private(in_id) shared(nco_dbg_lvl,fl_nbr,idx_rec_out,in_id_arr,nbr_var_prc,out_id,var_prc,var_prc_out,nbr_dmn_fl,md5,trv_tbl) + #endif /* !_OPENMP */ + /* Process all variables in current file */ + for(idx=0;idx<nbr_var_prc;idx++){ +diff -up nco-4.7.8/src/nco/ncflint.c.openmp nco-4.7.8/src/nco/ncflint.c +--- nco-4.7.8/src/nco/ncflint.c.openmp 2018-11-16 14:26:06.000000000 -0700 ++++ nco-4.7.8/src/nco/ncflint.c 2019-02-12 18:14:08.075627614 -0700 +@@ -834,7 +834,7 @@ main(int argc,char **argv) + /* OpenMP notes: + shared(): msk and wgt are not altered within loop + private(): wgt_avg does not need initialization */ +-# pragma omp parallel for default(none) firstprivate(wgt_1,wgt_2,wgt_out_1,wgt_out_2) private(DO_CONFORM,idx,in_id_1,in_id_2,has_mss_val) shared(MUST_CONFORM,nco_dbg_lvl,fl_in_1,fl_in_2,fl_out,gpe,in_id_1_arr,in_id_2_arr,nbr_var_prc,out_id,nco_prg_nm,var_prc_1,var_prc_2,var_prc_out,nbr_dmn_fl,trv_tbl) ++# pragma omp parallel for firstprivate(wgt_1,wgt_2,wgt_out_1,wgt_out_2) private(DO_CONFORM,idx,in_id_1,in_id_2,has_mss_val) shared(MUST_CONFORM,nco_dbg_lvl,fl_in_1,fl_in_2,fl_out,gpe,in_id_1_arr,in_id_2_arr,nbr_var_prc,out_id,nco_prg_nm,var_prc_1,var_prc_2,var_prc_out,nbr_dmn_fl,trv_tbl) + #endif /* !_OPENMP */ + for(idx=0;idx<nbr_var_prc;idx++){ + +diff -up nco-4.7.8/src/nco/nco_omp.c.openmp nco-4.7.8/src/nco/nco_omp.c +--- nco-4.7.8/src/nco/nco_omp.c.openmp 2018-11-16 14:26:06.000000000 -0700 ++++ nco-4.7.8/src/nco/nco_omp.c 2019-02-12 17:44:32.818115772 -0700 +@@ -202,7 +202,7 @@ nco_openmp_ini /* [fnc] Initialize OpenM + if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(fp_stderr,"%s: INFO After using omp_set_num_threads() to adjust for any user requests/NCO optimizations, omp_get_max_threads() reports that a parallel construct here/now would spawn %d thread(s)\n",nco_prg_nm_get(),thr_nbr_act); + #ifdef _OPENMP + if(nco_dbg_lvl_get() >= nco_dbg_scl){ +-# pragma omp parallel default(none) shared(thr_nbr_act) ++# pragma omp parallel shared(thr_nbr_act) + { /* begin OpenMP parallel */ + # pragma omp single nowait + { /* begin OpenMP single */ +diff -up nco-4.7.8/src/nco/nco_rgr.c.openmp nco-4.7.8/src/nco/nco_rgr.c +--- nco-4.7.8/src/nco/nco_rgr.c.openmp 2018-11-16 14:26:06.000000000 -0700 ++++ nco-4.7.8/src/nco/nco_rgr.c 2019-02-12 18:06:46.817310395 -0700 +@@ -3286,7 +3286,7 @@ nco_rgr_wgt /* [fnc] Regrid with externa + # ifdef GXX_OLD_OPENMP_SHARED_TREATMENT + # pragma omp parallel for default(none) firstprivate(dmn_cnt_in,dmn_cnt_out,dmn_srt,dmn_id_in,dmn_id_out,tally,var_val_dbl_in,var_val_dbl_out,wgt_vld_out) private(dmn_idx,dmn_nbr_in,dmn_nbr_out,dmn_nbr_max,dst_idx,has_mss_val,idx,idx_in,idx_out,idx_tbl,in_id,lnk_idx,lvl_idx,lvl_nbr,mss_val_dbl,rcd,thr_idx,trv,val_in_fst,val_out_fst,var_id_in,var_id_out,var_nm,var_sz_in,var_sz_out,var_typ_out,var_typ_rgr,var_val_crr) shared(col_src_adr,dmn_nbr_hrz_crd,flg_frc_nrm,fnc_nm,frc_out,lnk_nbr,out_id,row_dst_adr,wgt_raw) + # else /* !old g++ */ +-# pragma omp parallel for default(none) firstprivate(dmn_cnt_in,dmn_cnt_out,dmn_srt,dmn_id_in,dmn_id_out,tally,var_val_dbl_in,var_val_dbl_out,wgt_vld_out) private(dmn_idx,dmn_nbr_in,dmn_nbr_out,dmn_nbr_max,dst_idx,has_mss_val,idx,idx_in,idx_out,idx_tbl,in_id,lnk_idx,lvl_idx,lvl_nbr,mss_val_dbl,rcd,thr_idx,trv,val_in_fst,val_out_fst,var_id_in,var_id_out,var_nm,var_sz_in,var_sz_out,var_typ_out,var_typ_rgr,var_val_crr) shared(col_src_adr,dmn_nbr_hrz_crd,flg_frc_nrm,frc_out,lnk_nbr,out_id,row_dst_adr,wgt_raw) ++# pragma omp parallel for firstprivate(dmn_cnt_in,dmn_cnt_out,dmn_srt,dmn_id_in,dmn_id_out,tally,var_val_dbl_in,var_val_dbl_out,wgt_vld_out) private(dmn_idx,dmn_nbr_in,dmn_nbr_out,dmn_nbr_max,dst_idx,has_mss_val,idx,idx_in,idx_out,idx_tbl,in_id,lnk_idx,lvl_idx,lvl_nbr,mss_val_dbl,rcd,thr_idx,trv,val_in_fst,val_out_fst,var_id_in,var_id_out,var_nm,var_sz_in,var_sz_out,var_typ_out,var_typ_rgr,var_val_crr) shared(col_src_adr,dmn_nbr_hrz_crd,flg_frc_nrm,frc_out,lnk_nbr,out_id,row_dst_adr,wgt_raw) + # endif /* !old g++ */ + #endif /* !__INTEL_COMPILER */ + for(idx_tbl=0;idx_tbl<trv_nbr;idx_tbl++){ +diff -up nco-4.7.8/src/nco/nco_rth_utl.c.openmp nco-4.7.8/src/nco/nco_rth_utl.c +--- nco-4.7.8/src/nco/nco_rth_utl.c.openmp 2018-11-16 14:26:06.000000000 -0700 ++++ nco-4.7.8/src/nco/nco_rth_utl.c 2019-02-12 18:09:04.950000445 -0700 +@@ -55,7 +55,7 @@ nco_opr_nrm /* [fnc] Normalization of ar + nbr_var_prc_cpy=nbr_var_prc; + + #ifdef _OPENMP +-#pragma omp parallel for default(none) private(idx) shared(nbr_var_prc_cpy,nco_op_typ_cpy,var_prc,var_prc_out) ++#pragma omp parallel for private(idx) shared(nbr_var_prc_cpy,nco_op_typ_cpy,var_prc,var_prc_out) + #endif /* !_OPENMP */ + for(idx=0;idx<nbr_var_prc_cpy;idx++){ + +diff -up nco-4.7.8/src/nco/ncpdq.c.openmp nco-4.7.8/src/nco/ncpdq.c +--- nco-4.7.8/src/nco/ncpdq.c.openmp 2018-11-16 14:26:06.000000000 -0700 ++++ nco-4.7.8/src/nco/ncpdq.c 2019-02-12 18:17:27.485908813 -0700 +@@ -824,7 +824,7 @@ main(int argc,char **argv) + ddra_info.tmr_flg=nco_tmr_rgl; + + #ifdef _OPENMP +-#pragma omp parallel for default(none) private(idx,in_id) shared(aed_lst_add_fst,aed_lst_scl_fct,nco_dbg_lvl,dmn_rdr_nbr,gpe,in_id_arr,nbr_var_prc,nco_pck_map,nco_pck_plc,out_id,nco_prg_nm,rcd,var_prc,var_prc_out,nbr_dmn_fl,trv_tbl,IS_REORDER,fl_out_fmt) ++#pragma omp parallel for private(idx,in_id) shared(aed_lst_add_fst,aed_lst_scl_fct,nco_dbg_lvl,dmn_rdr_nbr,gpe,in_id_arr,nbr_var_prc,nco_pck_map,nco_pck_plc,out_id,nco_prg_nm,rcd,var_prc,var_prc_out,nbr_dmn_fl,trv_tbl,IS_REORDER,fl_out_fmt) + #endif /* !_OPENMP */ + + /* Process all variables in current file */ +diff -up nco-4.7.8/src/nco/ncra.c.openmp nco-4.7.8/src/nco/ncra.c +--- nco-4.7.8/src/nco/ncra.c.openmp 2018-11-16 14:26:06.000000000 -0700 ++++ nco-4.7.8/src/nco/ncra.c 2019-02-12 18:16:53.740522775 -0700 +@@ -1303,7 +1303,7 @@ main(int argc,char **argv) + if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(fp_stdout,"%s: INFO Record %ld of %s contributes to output record %ld\n",nco_prg_nm_get(),idx_rec_crr_in,fl_in,idx_rec_out[idx_rec]); + + #ifdef _OPENMP +-#pragma omp parallel for default(none) private(idx,in_id) shared(CNV_ARM,FLG_BFR_NRM,FLG_MRO,NORMALIZE_BY_WEIGHT,REC_FRS_GRP,REC_LST_DSR,base_time_crr,base_time_srt,fl_idx,fl_in,fl_nbr,fl_out,flg_skp1,flg_skp2,gpe,grp_id,grp_out_fll,grp_out_id,idx_rec,idx_rec_crr_in,idx_rec_out,in_id_arr,lmt_rec,md5,nbr_dmn_fl,nbr_rec,nbr_var_prc,nco_dbg_lvl,nco_op_typ,nco_prg_id,out_id,rcd,rec_usd_cml,trv_tbl,var_out_id,var_prc,var_prc_out,var_prc_typ_pre_prm,var_trv,wgt_arr,wgt_avg,wgt_avg_scl,wgt_nbr,wgt_nm,wgt_out,wgt_scv,fl_udu_sng,ra_bnds_lst, ra_climo_lst, ra_bnds_nbr, ra_climo_nbr) ++#pragma omp parallel for private(idx,in_id) shared(CNV_ARM,FLG_BFR_NRM,FLG_MRO,NORMALIZE_BY_WEIGHT,REC_FRS_GRP,REC_LST_DSR,base_time_crr,base_time_srt,fl_idx,fl_in,fl_nbr,fl_out,flg_skp1,flg_skp2,gpe,grp_id,grp_out_fll,grp_out_id,idx_rec,idx_rec_crr_in,idx_rec_out,in_id_arr,lmt_rec,md5,nbr_dmn_fl,nbr_rec,nbr_var_prc,nco_dbg_lvl,nco_op_typ,nco_prg_id,out_id,rcd,rec_usd_cml,trv_tbl,var_out_id,var_prc,var_prc_out,var_prc_typ_pre_prm,var_trv,wgt_arr,wgt_avg,wgt_avg_scl,wgt_nbr,wgt_nm,wgt_out,wgt_scv,fl_udu_sng,ra_bnds_lst, ra_climo_lst, ra_bnds_nbr, ra_climo_nbr) + #endif /* !_OPENMP */ + for(idx=0;idx<nbr_var_prc;idx++){ + +@@ -1594,7 +1594,7 @@ main(int argc,char **argv) + }else if(nco_prg_id == ncfe){ /* ncfe */ + + #ifdef _OPENMP +-#pragma omp parallel for default(none) private(idx,in_id) shared(nco_dbg_lvl,fl_idx,FLG_BFR_NRM,in_id_arr,nbr_var_prc,nco_op_typ,rcd,var_prc,var_prc_out,nbr_dmn_fl,trv_tbl,var_trv,grp_id,gpe,grp_out_fll,grp_out_id,out_id,var_out_id) ++#pragma omp parallel for private(idx,in_id) shared(nco_dbg_lvl,fl_idx,FLG_BFR_NRM,in_id_arr,nbr_var_prc,nco_op_typ,rcd,var_prc,var_prc_out,nbr_dmn_fl,trv_tbl,var_trv,grp_id,gpe,grp_out_fll,grp_out_id,out_id,var_out_id) + #endif /* !_OPENMP */ + for(idx=0;idx<nbr_var_prc;idx++){ /* Process all variables in current file */ + +diff -up nco-4.7.8/src/nco/ncwa.c.openmp nco-4.7.8/src/nco/ncwa.c +--- nco-4.7.8/src/nco/ncwa.c.openmp 2018-11-16 14:26:06.000000000 -0700 ++++ nco-4.7.8/src/nco/ncwa.c 2019-02-12 18:20:13.746810792 -0700 +@@ -907,7 +907,7 @@ main(int argc,char **argv) + lastprivate(): retain rcd value from last thread + private(): wgt_avg does not need initialization + shared(): msk, wgt and lmt_nbr are not altered within loop */ +-#pragma omp parallel for default(none) firstprivate(DO_CONFORM_MSK,DO_CONFORM_WGT,ddra_info,rcd) lastprivate(rcd) private(idx,in_id,wgt_avg) shared(MULTIPLY_BY_TALLY,MUST_CONFORM,NRM_BY_DNM,WGT_MSK_CRD_VAR,dmn_avg,dmn_avg_nbr,flg_ddra,flg_rdd,gpe,in_id_arr,msk_nm,msk_val,nbr_var_prc,nco_dbg_lvl,nco_op_typ,nco_prg_nm,op_typ_rlt,out_id,trv_tbl,var_prc,var_prc_out,wgt_nm,lmt_nbr,lmt_arg,FORTRAN_IDX_CNV,MSA_USR_RDR) ++#pragma omp parallel for firstprivate(DO_CONFORM_MSK,DO_CONFORM_WGT,ddra_info,rcd) lastprivate(rcd) private(idx,in_id,wgt_avg) shared(MULTIPLY_BY_TALLY,MUST_CONFORM,NRM_BY_DNM,WGT_MSK_CRD_VAR,dmn_avg,dmn_avg_nbr,flg_ddra,flg_rdd,gpe,in_id_arr,msk_nm,msk_val,nbr_var_prc,nco_dbg_lvl,nco_op_typ,nco_prg_nm,op_typ_rlt,out_id,trv_tbl,var_prc,var_prc_out,wgt_nm,lmt_nbr,lmt_arg,FORTRAN_IDX_CNV,MSA_USR_RDR) + #endif /* !_OPENMP */ + for(idx=0;idx<nbr_var_prc;idx++){ /* Process all variables in current file */ + char *grp_out_fll=NULL; /* [sng] Group name */ diff --git a/nco.spec b/nco.spec index 6a9d51c..e1706d1 100644 --- a/nco.spec +++ b/nco.spec @@ -2,13 +2,16 @@
Name: nco Version: 4.7.8 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Suite of programs for manipulating NetCDF/HDF4 files License: GPLv3 URL: http://nco.sourceforge.net/
Source0: https://github.com/nco/nco/archive/%%7Bversion%7D.tar.gz#/%%7Bname%7D-%%7Bve... Patch0: nco-install_C_headers.patch +# Fix for GCC 9 OpenMP 5 compliance +# https://github.com/nco/nco/issues/114 +Patch1: nco-openmp.patch
BuildRequires: gcc-c++ BuildRequires: bison, flex, gawk @@ -58,13 +61,14 @@ This package contains the NCO static libs. %prep %setup -q %patch0 -p1 -b .install_C_headers +%patch1 -p1 -b .openmp
%build %configure \ HAVE_ANTLR=yes \ --disable-dependency-tracking --includedir=%{_includedir}/nco -make %{?_smp_mflags} +%make_build %if 0%{?builddocs} make -C doc html pdf %endif @@ -131,6 +135,9 @@ chrpath -d -k $RPM_BUILD_ROOT%{_bindir}/* || :
%changelog +* Tue Feb 12 2019 Orion Poplawski orion@nwra.com 4.7.8-2 +- Add patch to fix compilation with GCC 9 + * Sat Feb 2 2019 Orion Poplawski orion@cora.nwra.com 4.7.8-1 - Update to 4.7.8
https://src.fedoraproject.org/rpms/nco/c/9780cb7bac64a746399b754b2b524c5409e...