Merge branch 'master' into ejh_next

This commit is contained in:
Ed Hartnett 2019-08-16 03:42:32 -06:00 committed by GitHub
commit bce3fa6169
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 305 additions and 438 deletions

View File

@ -14,6 +14,12 @@ developed. Programmers interested in parallel I/O should see
nc_open_par() and nc_create_par().
See [GitHub #1436](https://github.com/Unidata/netcdf-c/issues/1459)
* [Enhancement] Remove obsolete and deprecated functions
nc_set_base_pe() and nc_inq_base_pe() from the dispatch table. (Both
functions are still supported in the library, this is an internal
change only.)
See [GitHub #1436](https://github.com/Unidata/netcdf-c/issues/1468)
* [Bug Fix] Reverted nccopy behavior so that if no -c parameters
are given, then any default chunking is left to the netcdf-c library
to decide.

View File

@ -132,7 +132,7 @@ Next, specify where you want to install HDF5 in another shell variable, for exam
~~~~{.py}
$ # Build and install HDF5
$ H5DIR=/usr/local
$ ./configure --with-zlib=${ZDIR} --prefix=${H5DIR} --eanble-hl
$ ./configure --with-zlib=${ZDIR} --prefix=${H5DIR} --enable-hl
$ make check
$ make install # or sudo make install, if root permissions required
~~~~

View File

@ -128,8 +128,8 @@ main(int argc, char **argv)
if (nc_inq(ncid + TEST_VAL_42, NULL, NULL, NULL, NULL) != NC_EBADID) ERR;
/* These only work for netCDF-3 files. */
if (nc_set_base_pe(ncid, 0) != NC_ENOTNC3) ERR;
if (nc_inq_base_pe(ncid, NULL) != NC_ENOTNC3) ERR;
if (nc_set_base_pe(ncid, 0)) ERR;
if (nc_inq_base_pe(ncid, NULL)) ERR;
/* Attempt to write. */
if (nc_rename_att(ncid, NC_GLOBAL, ATT_NAME, NAME_DUMB) != NC_EPERM) ERR;

View File

@ -49,17 +49,6 @@ check_inq_format(int ncid, int expected_format, int expected_extended_format, in
if (mode != expected_mode) ERR;
if (extended_format != expected_extended_format) ERR;
/* Nothing to do with inq_format, but let's check the base_pe
* functions. */
if (expected_format == NC_FORMAT_CLASSIC || expected_format == NC_FORMAT_64BIT_OFFSET ||
expected_format == NC_FORMAT_CDF5) {
if (nc_set_base_pe(ncid, 0)) ERR;
if (nc_inq_base_pe(ncid, NULL)) ERR;
} else {
if (nc_set_base_pe(ncid, 0) != NC_ENOTNC3) ERR;
if (nc_inq_base_pe(ncid, NULL) != NC_ENOTNC3) ERR;
}
return 0;
}

View File

@ -83,12 +83,6 @@ extern "C" {
extern int
NC3_set_fill(int ncid, int fillmode, int *old_modep);
extern int
NC3_set_base_pe(int ncid, int pe);
extern int
NC3_inq_base_pe(int ncid, int *pe);
extern int
NC3_inq_format(int ncid, int *formatp);

View File

@ -49,12 +49,6 @@ extern "C" {
EXTERNL int
NC4_set_fill(int ncid, int fillmode, int *old_modep);
EXTERNL int
NC4_set_base_pe(int ncid, int pe);
EXTERNL int
NC4_inq_base_pe(int ncid, int *pe);
EXTERNL int
NC4_inq_format(int ncid, int *formatp);

View File

@ -35,8 +35,6 @@ struct NC_Dispatch
int (*abort)(int);
int (*close)(int, void *);
int (*set_fill)(int, int, int *);
int (*inq_base_pe)(int, int *);
int (*set_base_pe)(int, int);
int (*inq_format)(int, int*);
int (*inq_format_extended)(int, int *, int *);
@ -163,8 +161,6 @@ EXTERNL int NC_RO_set_fill(int ncid, int fillmode, int *old_modep);
/* These functions are for dispatch layers that don't implement these
* legacy functions. They return NC_ENOTNC3. */
EXTERNL int NC_NOTNC3_set_base_pe(int ncid, int pe);
EXTERNL int NC_NOTNC3_inq_base_pe(int ncid, int *pe);
EXTERNL int NC_NOTNC3_put_varm(int ncid, int varid, const size_t * start,
const size_t *edges, const ptrdiff_t *stride,
const ptrdiff_t *imapp, const void *value0,

View File

@ -101,8 +101,6 @@ NCD2_sync,
NCD2_abort,
NCD2_close,
NCD2_set_fill,
NCD2_inq_base_pe,
NCD2_set_base_pe,
NCD2_inq_format,
NCD2_inq_format_extended, /*inq_format_extended*/
@ -2257,12 +2255,6 @@ NCD2_set_fill(int ncid, int fillmode, int* old_modep)
return THROW(NC_EPERM);
}
int
NCD2_set_base_pe(int ncid, int pe)
{
return THROW(NC_EPERM);
}
int
NCD2_def_dim(int ncid, const char* name, size_t len, int* idp)
{
@ -2287,16 +2279,6 @@ NCD2_def_var(int ncid, const char *name,
Following functions basically return the netcdf-3 value WRT to the nc3id.
*/
int
NCD2_inq_base_pe(int ncid, int* pe)
{
NC* drno;
int ret;
if((ret = NC_check_id(ncid, (NC**)&drno)) != NC_NOERR) return THROW(ret);
ret = nc_inq_base_pe(getnc3id(drno), pe);
return THROW(ret);
}
int
NCD2_inq_format(int ncid, int* formatp)
{

View File

@ -57,12 +57,6 @@ NCD2_inq_format_extended(int ncid, int* formatp, int* modep);
extern int
NCD2_set_fill(int ncid, int fillmode, int *old_modep);
extern int
NCD2_set_base_pe(int ncid, int pe);
extern int
NCD2_inq_base_pe(int ncid, int *pe);
extern int
NCD2_inq_format(int ncid, int *formatp);

View File

@ -117,12 +117,6 @@ NCD4_set_fill(int ncid, int fillmode, int* old_modep)
return (NC_EPERM);
}
static int
NCD4_set_base_pe(int ncid, int pe)
{
return (NC_EPERM);
}
static int
NCD4_def_dim(int ncid, const char* name, size_t len, int* idp)
{
@ -253,18 +247,6 @@ Following functions basically return the netcdf-4 value WRT to the nc4id.
However, it is necessary to modify the grpid(ncid) to point to the substrate.
*/
static int
NCD4_inq_base_pe(int ncid, int* pe)
{
NC* ncp;
int ret = NC_NOERR;
int substrateid;
if((ret = NC_check_id(ncid, (NC**)&ncp)) != NC_NOERR) return (ret);
substrateid = makenc4id(ncp,ncid);
ret = nc_inq_base_pe(substrateid, pe);
return (ret);
}
static int
NCD4_inq_format(int ncid, int* formatp)
{
@ -806,8 +788,6 @@ NCD4_sync,
NCD4_abort,
NCD4_close,
NCD4_set_fill,
NCD4_inq_base_pe,
NCD4_set_base_pe,
NCD4_inq_format,
NCD4_inq_format_extended, /*inq_format_extended*/

View File

@ -1454,8 +1454,8 @@ nc_set_fill(int ncid, int fillmode, int *old_modep)
* @internal Learn base PE.
*
* @deprecated This function was used in the old days with the Cray at
* NCAR. The Cray is long gone, and this call is supported only for
* backward compatibility.
* NCAR. The Cray is long gone, and this call is now meaningless. The
* value returned for pe is always 0.
*
* @param ncid File and group ID.
* @param pe Pointer for base PE.
@ -1470,7 +1470,8 @@ nc_inq_base_pe(int ncid, int *pe)
NC* ncp;
int stat = NC_check_id(ncid, &ncp);
if(stat != NC_NOERR) return stat;
return ncp->dispatch->inq_base_pe(ncid,pe);
if (pe) *pe = 0;
return NC_NOERR;
}
/**
@ -1493,26 +1494,25 @@ nc_set_base_pe(int ncid, int pe)
NC* ncp;
int stat = NC_check_id(ncid, &ncp);
if(stat != NC_NOERR) return stat;
return ncp->dispatch->set_base_pe(ncid,pe);
return NC_NOERR;
}
/** \ingroup datasets
Inquire about the binary format of a netCDF file
as presented by the API.
This function returns the (rarely needed) format version.
\param ncid NetCDF ID, from a previous call to nc_open() or
nc_create().
\param formatp Pointer to location for returned format version, one of
NC_FORMAT_CLASSIC, NC_FORMAT_64BIT_OFFSET, NC_FORMAT_CDF5, NC_FORMAT_NETCDF4,
NC_FORMAT_NETCDF4_CLASSIC.
\returns ::NC_NOERR No error.
\returns ::NC_EBADID Invalid ncid passed.
/**
* @ingroup datasets
* Inquire about the binary format of a netCDF file
* as presented by the API.
*
* This function returns the (rarely needed) format version.
*
* @param ncid NetCDF ID, from a previous call to nc_open() or
* nc_create().
* @param formatp Pointer to location for returned format version, one
* of NC_FORMAT_CLASSIC, NC_FORMAT_64BIT_OFFSET, NC_FORMAT_CDF5,
* NC_FORMAT_NETCDF4, NC_FORMAT_NETCDF4_CLASSIC.
*
* @returns ::NC_NOERR No error.
* @returns ::NC_EBADID Invalid ncid passed.
* @author Dennis Heimbigner
*/
int
nc_inq_format(int ncid, int *formatp)

View File

@ -1,7 +1,7 @@
/* Copyright 2018, UCAR/Unidata See netcdf/COPYRIGHT file for copying
* and redistribution conditions.*/
/**
* @file @internal This file handles the *_base_pe()
* @file @internal This file handles the *_varm()
* functions for dispatch layers that need to return ::NC_ENOTNC3.
*
* @author Ed Hartnett
@ -9,36 +9,6 @@
#include "nc4dispatch.h"
/**
* @internal This function only does anything for netcdf-3 files.
*
* @param ncid Ignored.
* @param pe Ignored.
*
* @return ::NC_ENOTNC3 Not a netCDF classic format file.
* @author Ed Hartnett
*/
int
NC_NOTNC3_set_base_pe(int ncid, int pe)
{
return NC_ENOTNC3;
}
/**
* @internal This function only does anything for netcdf-3 files.
*
* @param ncid Ignored.
* @param pe Ignored.
*
* @return ::NC_ENOTNC3 Not a netCDF classic format file.
* @author Ed Hartnett
*/
int
NC_NOTNC3_inq_base_pe(int ncid, int *pe)
{
return NC_ENOTNC3;
}
/**
* @internal This function only does anything for netcdf-3 files.
*

View File

@ -28,8 +28,6 @@ static const NC_Dispatch HDF4_dispatcher = {
NC_HDF4_abort,
NC_HDF4_close,
NC_RO_set_fill,
NC_NOTNC3_inq_base_pe,
NC_NOTNC3_set_base_pe,
NC_HDF4_inq_format,
NC_HDF4_inq_format_extended,

View File

@ -28,8 +28,6 @@ static const NC_Dispatch HDF5_dispatcher = {
NC4_abort,
NC4_close,
NC4_set_fill,
NC_NOTNC3_inq_base_pe,
NC_NOTNC3_set_base_pe,
NC4_inq_format,
NC4_inq_format_extended,

View File

@ -91,8 +91,6 @@ NC3_sync,
NC3_abort,
NC3_close,
NC3_set_fill,
NC3_inq_base_pe,
NC3_set_base_pe,
NC3_inq_format,
NC3_inq_format_extended,

View File

@ -1537,39 +1537,6 @@ NC3_set_fill(int ncid,
return NC_NOERR;
}
/**
* This obsolete function is retained for backward compatibility. It
* does nothing.
*
* @param ncid Ignored.
* @param pe Ignored.
*
* @return NC_NOERR No error.
* @author Glenn Davis, Ed Hartnett
*/
int
NC3_set_base_pe(int ncid, int pe)
{
return NC_NOERR;
}
/**
* This obsolete function is retained for backward compatibility. It
* does nothing, and always returns pe = 0.
*
* @param ncid Ignored.
* @param pe Pointer to int that gets a 0. Ignored if NULL.
*
* @return NC_NOERR No error.
* @author Glenn Davis, Ed Hartnett
*/
int
NC3_inq_base_pe(int ncid, int *pe)
{
if (pe) *pe = 0;
return NC_NOERR;
}
/**
* Return the file format.
*

View File

@ -8,8 +8,7 @@
* This file is part of netcdf-4, a netCDF-like interface for HDF5, or a
* HDF5 backend for netCDF, depending on your point of view.
*
* This file handles the (useless) *_base_pe() functions, and the
* inq_format functions.
* This file handles the inq_format functions.
*
* @author Ed Hartnett, Dennis Heimbigner
*/

View File

@ -238,19 +238,6 @@ NCP_set_fill(int ncid, int fillmode, int *old_mode_ptr)
#endif
}
static int
NCP_inq_base_pe(int ncid, int *pep)
{
if (pep) *pep = 0;
return NC_NOERR;
}
static int
NCP_set_base_pe(int ncid, int pe)
{
return NC_NOERR;
}
static int
NCP_inq_format(int ncid, int *formatp)
{
@ -1399,8 +1386,6 @@ NCP_sync,
NCP_abort,
NCP_close,
NCP_set_fill,
NCP_inq_base_pe,
NCP_set_base_pe,
NCP_inq_format,
NCP_inq_format_extended,

View File

@ -87,14 +87,8 @@ check_inq_format(int ncid, int expected_format, int expected_extended_format, in
/* Nothing to do with inq_format, but let's check the base_pe
* functions. */
if (expected_format == NC_FORMAT_CLASSIC || expected_format == NC_FORMAT_64BIT_OFFSET ||
expected_format == NC_FORMAT_CDF5) {
if (nc_set_base_pe(ncid, 0)) ERR;
if (nc_inq_base_pe(ncid, NULL)) ERR;
} else {
if (nc_set_base_pe(ncid, 0) != NC_ENOTNC3) ERR;
if (nc_inq_base_pe(ncid, NULL) != NC_ENOTNC3) ERR;
}
return 0;
}

View File

@ -4,7 +4,7 @@ See COPYRIGHT file for copying and redistribution conditions.
This program tests netcdf-4 parallel I/O.
$Id: tst_parallel.c,v 1.7 2009/08/19 15:58:57 ed Exp $
Ed Hartnett, 2009/08/19
*/
/* Defining USE_MPE causes the MPE trace library to be used (and you

View File

@ -287,6 +287,31 @@ main(int argc, char **argv)
if (!mpi_rank)
SUMMARIZE_ERR;
if (!mpi_rank)
printf("*** testing NC_BYTE type and parallel I/O...");
{
/* This test is related to
* https://github.com/Unidata/netcdf-c/issues/1462. */
int ncid, varid;
signed char test_data_in, test_data = 42;
/* Crate a file with a scalar NC_BYTE value. */
if (nc_create_par(FILE, NC_NETCDF4, MPI_COMM_WORLD, MPI_INFO_NULL,
&ncid)) ERR;
if (nc_def_var(ncid, "fred", NC_BYTE, 0, NULL, &varid)) ERR;
if (nc_enddef(ncid)) ERR;
if (nc_put_var_schar(ncid, varid, &test_data));
if (nc_close(ncid)) ERR;
/* Reopen the file and check. */
if (nc_open_par(FILE, 0, comm, info, &ncid)) ERR;
if (nc_get_var_schar(ncid, varid, &test_data_in));
if (test_data_in != test_data) ERR;
if (nc_close(ncid)) ERR;
}
if (!mpi_rank)
SUMMARIZE_ERR;
/* Shut down MPI. */
MPI_Finalize();

View File

@ -77,8 +77,6 @@ NC_RO_sync,
tst_abort,
tst_close,
NC_RO_set_fill,
NC_NOTNC3_inq_base_pe,
NC_NOTNC3_set_base_pe,
tst_inq_format,
tst_inq_format_extended,