diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..c0a1aa15 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,24 @@ +version: 2 + +jobs: + build: + working_directory: ~/test + machine: true + steps: + - checkout + - run: + name: Fast finish outdated PRs and merge PRs + command: | + ./ci_support/fast_finish_ci_pr_build.sh + ./ci_support/checkout_merge_commit.sh + - run: + command: docker pull condaforge/linux-anvil + - run: + # Run, test and (if we have a BINSTAR_TOKEN) upload the distributions. + command: ./ci_support/run_docker_build.sh + +workflows: + version: 2 + build_and_test: + jobs: + - build diff --git a/.gitattributes b/.gitattributes index 288029dc..974953ec 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,7 @@ * text=auto +*.patch binary +*.diff binary meta.yaml text eol=lf build.sh text eol=lf bld.bat text eol=crlf diff --git a/README.md b/README.md index 8cd4f364..b1eebb14 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ To manage the continuous integration and simplify feedstock maintenance Using the ``conda-forge.yml`` within this repository, it is possible to re-render all of this feedstock's supporting files (e.g. the CI configuration files) with ``conda smithy rerender``. +For more information please check the [conda-forge documentation](https://conda-forge.org/docs/). Terminology =========== @@ -100,4 +101,4 @@ In order to produce a uniquely identifiable distribution: the [``build/number``](http://conda.pydata.org/docs/building/meta-yaml.html#build-number-and-string). * If the version of a package **is** being increased, please remember to return the [``build/number``](http://conda.pydata.org/docs/building/meta-yaml.html#build-number-and-string) - back to 0. + back to 0. \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml index 0d6a1e2b..9c1ddf11 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -9,22 +9,6 @@ environment: secure: ipv/06DzgA7pzz2CIAtbPxZSsphDtF+JFyoWRnXkn3O8j7oRe3rzqj3LOoq2DZp4 matrix: - - TARGET_ARCH: x86 - CONDA_PY: 27 - CONDA_INSTALL_LOCN: C:\\Miniconda - - - TARGET_ARCH: x64 - CONDA_PY: 27 - CONDA_INSTALL_LOCN: C:\\Miniconda-x64 - - - TARGET_ARCH: x86 - CONDA_PY: 34 - CONDA_INSTALL_LOCN: C:\\Miniconda35 - - - TARGET_ARCH: x64 - CONDA_PY: 34 - CONDA_INSTALL_LOCN: C:\\Miniconda35-x64 - - TARGET_ARCH: x86 CONDA_PY: 35 CONDA_INSTALL_LOCN: C:\\Miniconda35 diff --git a/ci_support/run_docker_build.sh b/ci_support/run_docker_build.sh index 5c1bacb5..57286d08 100755 --- a/ci_support/run_docker_build.sh +++ b/ci_support/run_docker_build.sh @@ -57,9 +57,9 @@ conda clean --lock conda install --yes --quiet conda-forge-build-setup source run_conda_forge_build_setup -# Embarking on 1 case(s). - conda build /recipe_root --quiet || exit 1 - upload_or_check_non_existence /recipe_root conda-forge --channel=main || exit 1 +conda build /recipe_root --quiet || exit 1 +upload_or_check_non_existence /recipe_root conda-forge --channel=main || exit 1 + touch /feedstock_root/build_artefacts/conda-forge-build-done EOF diff --git a/circle.yml b/circle.yml deleted file mode 100644 index 421809c1..00000000 --- a/circle.yml +++ /dev/null @@ -1,19 +0,0 @@ -checkout: - post: - - ./ci_support/fast_finish_ci_pr_build.sh - - ./ci_support/checkout_merge_commit.sh - -machine: - services: - - docker - -dependencies: - # Note, we used to use the naive caching of docker images, but found that it was quicker - # just to pull each time. #rollondockercaching - override: - - docker pull condaforge/linux-anvil - -test: - override: - # Run, test and (if we have a BINSTAR_TOKEN) upload the distributions. - - ./ci_support/run_docker_build.sh diff --git a/recipe/back_port_512.patch b/recipe/back_port_512.patch new file mode 100644 index 00000000..672ca443 --- /dev/null +++ b/recipe/back_port_512.patch @@ -0,0 +1,22 @@ +--- netcdf-c-4.5.0.orig/libdap2/dapcvt.c 2017-10-20 14:20:52.000000000 -0300 ++++ netcdf-c-4.5.0/libdap2/dapcvt.c 2017-10-24 11:06:14.777836188 -0300 +@@ -217,7 +217,8 @@ + #ifdef _MSC_VER + _ASSERTE(_CrtCheckMemory()); + #endif +- if(ival < 0 || ival > NC_MAX_UBYTE) ok = 0; ++ /* For back compatibility, we allow any value, but force conversion */ ++ ival = (ival & 0xFF); + *p = (char)ival; + } break; + case NC_CHAR: { +@@ -246,7 +247,8 @@ + unsigned int uval; + ok = sscanf(s,"%u%n",&uval,&nread); + _ASSERTE(_CrtCheckMemory()); +- if(uval > NC_MAX_UBYTE) ok = 0; ++ /* For back compatibility, we allow any value, but force conversion */ ++ uval = (uval & 0xFF); + *p = (unsigned char)uval; + #else + ok = sscanf(s,"%hhu%n",p,&nread); diff --git a/recipe/dap.path b/recipe/dap.path deleted file mode 100644 index b827cbe6..00000000 --- a/recipe/dap.path +++ /dev/null @@ -1,57 +0,0 @@ -diff -Naur netcdf-c-4.4.1.1.orig/libdap2/dapcvt.c netcdf-c-4.4.1.1/libdap2/dapcvt.c ---- netcdf-c-4.4.1.1.orig/libdap2/dapcvt.c 2016-11-21 16:27:08.000000000 -0200 -+++ netcdf-c-4.4.1.1/libdap2/dapcvt.c 2017-04-05 10:45:18.410066978 -0300 -@@ -210,14 +210,15 @@ - ok = 0; - switch (etype) { - case NC_BYTE: { -- char tmp[128]; -- -- unsigned char* p = (unsigned char*)dstmem; -+ char* p = (unsigned char*)dstmem; - #ifdef _MSC_VER -- ok = sscanf(s,"%hC%n",p,&nread); -- _ASSERTE(_CrtCheckMemory()); -+ int ival; -+ ok = sscanf(s,"%d%n",&ival,&nread); -+ _ASSERTE(_CrtCheckMemory()); -+ if(ival < NC_MIN_BYTE || ival > NC_MAX_BYTE) ok = 0; -+ *p = (char)ival; - #else -- ok = sscanf(s,"%hhu%n",p,&nread); -+ ok = sscanf(s,"%hhu%n",p,&nread); - #endif - } break; - case NC_CHAR: { -@@ -243,12 +244,15 @@ - case NC_UBYTE: { - unsigned char* p = (unsigned char*)dstmem; - #ifdef _MSC_VER -- ok = sscanf(s, "%hc%n", p,&nread); -- _ASSERTE(_CrtCheckMemory()); -+ unsigned int uval; -+ ok = sscanf(s,"%u%n",&uval,&nread); -+ _ASSERTE(_CrtCheckMemory()); -+ if(uval > NC_MAX_UBYTE) ok = 0; -+ *p = (unsigned char)uval; - #else - ok = sscanf(s,"%hhu%n",p,&nread); - #endif -- } break; -+ } break; - case NC_USHORT: { - unsigned short* p = (unsigned short*)dstmem; - ok = sscanf(s,"%hu%n",p,&nread); -diff -Naur netcdf-c-4.4.1.1.orig/libdap2/ncd2dispatch.c netcdf-c-4.4.1.1/libdap2/ncd2dispatch.c ---- netcdf-c-4.4.1.1.orig/libdap2/ncd2dispatch.c 2016-11-21 16:27:08.000000000 -0200 -+++ netcdf-c-4.4.1.1/libdap2/ncd2dispatch.c 2017-04-05 10:45:45.825068343 -0300 -@@ -336,7 +336,8 @@ - dapcomm->oc.rawurltext = strdup(path); - #endif - -- ncuriparse(dapcomm->oc.rawurltext,&dapcomm->oc.url); -+ ncstat = ncuriparse(dapcomm->oc.rawurltext,&dapcomm->oc.url); -+ if (!ncstat) goto done; - - /* parse the client parameters */ - ncuridecodeparams(dapcomm->oc.url); diff --git a/recipe/dfile.c.patch b/recipe/dfile.c.patch deleted file mode 100644 index 999bfb43..00000000 --- a/recipe/dfile.c.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- libdispatch\dfile.c.orig 2016-08-10 14:06:27.315735800 +1000 -+++ libdispatch\dfile.c 2016-08-10 14:06:36.097008200 +1000 -@@ -166,6 +166,7 @@ - { - FILE *fp; - size_t i; -+ __int64 file_len = 0; - #ifdef HAVE_SYS_STAT_H - struct stat st; - #endif -@@ -182,7 +183,6 @@ - - /* Windows and fstat have some issues, this will work around that. */ - #ifdef HAVE_FILE_LENGTH_I64 -- __int64 file_len = 0; - if((file_len = _filelengthi64(fileno(fp))) < 0) { - fclose(fp); - status = errno; diff --git a/recipe/dim.c.patch b/recipe/dim.c.patch deleted file mode 100644 index 8870db07..00000000 --- a/recipe/dim.c.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- libsrc\dim.c.orig 2016-08-10 14:20:07.878295000 +1000 -+++ libsrc\dim.c 2016-08-10 14:20:17.221986100 +1000 -@@ -444,6 +444,7 @@ - int existid; - NC_dim *dimp; - char *newname; /* normalized */ -+ NC_string *old; - - status = NC_check_id(ncid, &nc); - if(status != NC_NOERR) -@@ -465,7 +466,7 @@ - if(dimp == NULL) - return NC_EBADDIM; - -- NC_string *old = dimp->name; -+ old = dimp->name; - newname = (char *)utf8proc_NFC((const unsigned char *)unewname); - if(newname == NULL) - return NC_ENOMEM; diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 52075fb0..1c22d952 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,4 +1,4 @@ -{% set version = "4.4.1.1" %} +{% set version = "4.5.0" %} package: name: libnetcdf @@ -7,20 +7,16 @@ package: source: fn: v{{ version }}.tar.gz url: https://github.com/Unidata/netcdf-c/archive/v{{ version }}.tar.gz - sha256: 7f040a0542ed3f6d27f3002b074e509614e18d6c515b2005d1537fec01b24909 + sha256: f7d1cb2a82100b9bf9a1130a50bc5c7baf0de5b5022860ac3e09a0a32f83cf4a patches: - - dfile.c.patch # [win] - - dim.c.patch # [win] - - semantics.c.patch # [win] - - dap.path # [win] + # https://github.com/Unidata/netcdf-c/pull/512/files + - back_port_512.patch - CMakeLists.patch # [win] build: - number: 7 - skip: True # [win and py36] + number: 0 + skip: True # [win and py36 or py27] features: - - vc9 # [win and py27] - - vc10 # [win and py34] - vc14 # [win and (py35 or py36)] requirements: @@ -29,20 +25,16 @@ requirements: - cmake - pkg-config # [not win] - msinttypes # [win] - - curl + - curl >=7.44.0,<8 - zlib 1.2.8 - hdf4 - hdf5 1.8.18|1.8.18.* - - vc 9 # [win and py27] - - vc 10 # [win and py34] - vc 14 # [win and (py35 or py36)] run: - - curl + - curl >=7.44.0,<8 - zlib 1.2.8 - hdf4 - hdf5 1.8.18|1.8.18.* - - vc 9 # [win and py27] - - vc 10 # [win and py34] - vc 14 # [win and (py35 or py36)] test: diff --git a/recipe/semantics.c.patch b/recipe/semantics.c.patch deleted file mode 100644 index e10c2232..00000000 --- a/recipe/semantics.c.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- ncgen\semantics.c.orig 2016-11-23 16:47:45.538386400 +1000 -+++ ncgen\semantics.c 2016-11-23 17:00:40.896820500 +1000 -@@ -601,6 +601,7 @@ - int i; - int offset = 0; - unsigned long totaldimsize; -+ int largealign = 1; - if(tsym->touched) return; - tsym->touched=1; - switch (tsym->subclass) { -@@ -637,7 +638,6 @@ - /* now compute the size of the compound based on*/ - /* what user specified*/ - offset = 0; -- int largealign = 1; - for(i=0;isubnodes);i++) { - Symbol* field = (Symbol*)listget(tsym->subnodes,i); - /* only support 'c' alignment for now*/