Updating libpng in OpenJDK 1) Update the src/java.desktop/share/legal/libpng.md file. Usually this is just a matter of updating the version at the top, and in the embedded text, and extending the copyright date. The updated info comes from the LICENSE, TRADEMARK and AUTHORS files. 2) Copy LICENSE, README, and CHANGES from the new version into OpenJDK's libpng source directory 3) OpenJDK includes just a subset of the files, since we use it only for reading. Copy only the same .c and .h files as are already there and re-apply the GPL v2 + CP header to all the updated files. These files also have a special note referencing the previous license. Restore everything as it was. You can either do this with a clever-enough script, or manually copy/paste. There are 18 files to update so either is do-able. 4) Special and careful handling of pnglibconf.h OpenJDK has a heavily modified copy of pnglibconf.h. This is the trickiest part of the whole exercise. This file is generated by png at build time. Except for the dates and version, you should generally not need to update OpenJDK's copy unless the new version of PNG has added required new #defines that cause problems building. You can run configure && make on the downloaded source and compare, but we do not want to enable any of the WRITE support, and there are many more modifications as well. So do NOT just copy in a file from the new libpng. The header may be the only thing you want to update. Also this file has a special "THIS FILE WAS MODIFIED BY ORACLE, INC." line in the GPL header. So lots of reasons to not copy over the new version, and instead just tweak the existing one. 5) Run script to expand tabs and remove trailing white space from source files. First cd into the libpng folder and run the following script. for f in *.c *.h; do # replace tabs with spaces expand ${f} > ${f}.tmp; mv ${f}.tmp $f; # fix line endings to LF sed -i -e 's/\r$//g' ${f}; # remove trailing spaces sed -i -e 's/[ ]* $//g' ${f}; done 6) As with all native code, run it through the official build systems, in case the updated code trigger any fatal warnings with the official compilers. 7) Run the splashscreen jtreg tests.