Opened 11 years ago

Closed 10 years ago

Last modified 10 years ago

#23125 closed update (fixed)

libpng: update to 1.4.x, tweak livecheck

Reported by: rmsfisher@… Owned by: ryandesign (Ryan Schmidt)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: waqar@…, jmroot (Joshua Root), rmstonecipher@…
Port: libpng

Description (last modified by blb@…)

Running "port livecheck libpng" reports that libpng has been updated.
For some reason MacPorts seems to be sticking to the "previous" rather than "current" series of libpng releases, so the livecheck result of 1.4.0 rather than 1.2.xx is a little misleading.
If/when libpng is updated to 1.2.42 (the most current version), please improve the livecheck expression to look for releases in the correct release series.

Attachments (4)

libpng-1.4.0.diff (1.2 KB) - added by ryandesign (Ryan Schmidt) 11 years ago.
libpng-1.4.1-libpng12.diff (4.3 KB) - added by jmroot (Joshua Root) 11 years ago.
libpng-Portfile.diff (1.1 KB) - added by rmstonecipher@… 10 years ago.
libpng 1.4.5
libpng-1.4.5.diff (1.6 KB) - added by jmroot (Joshua Root) 10 years ago.
also remove muniversal and redundant use_parallel_build

Download all attachments as: .zip

Change History (23)

comment:1 Changed 11 years ago by jmroot (Joshua Root)

Type: requestupdate
Version: 1.8.2

1.4.0 was only just released (2010-01-03); Ryan may well want to update the port to it.

comment:2 Changed 11 years ago by blb@…

Description: modified (diff)

I'm guessing the update (from the ReadMe)

Enabled iTXt support (changes png_struct, thus requires so-number change)

means all dependents will need a rev-bump, like for jpeg.

comment:3 Changed 11 years ago by ryandesign (Ryan Schmidt)

Cc: waqar@… added
Status: newassigned

I updated libpng to 1.2.42 in r62356 while I figure out how I want to handle 1.4.0.

Changed 11 years ago by ryandesign (Ryan Schmidt)

Attachment: libpng-1.4.0.diff added

comment:4 Changed 11 years ago by ryandesign (Ryan Schmidt)

The update to libpng 1.4.0 is straightforward enough, but yes, the library name is now libpng14.dylib and all the ports link with libpng12.dylib so they'll need a revbump right after.

comment:5 Changed 11 years ago by jmroot (Joshua Root)

You can apparently build both libpng12 and libpng14 from the 1.4.0 source.

comment:6 Changed 11 years ago by ryandesign (Ryan Schmidt)

Hm, yes I see the ANNOUNCE file says I can do this. But I don't see how to do this. Also I'm guessing the two versions would have to be built separately, with two separate configure and make invocations, complicating things (though not insurmountably; we've done that before, e.g. in php5 port and the php5extension and muniversal portgroups).

comment:7 Changed 11 years ago by ryandesign (Ryan Schmidt)

I think we'll just update to 1.4.0 and revbump all dependents. When doing so, remember to revbump and add libpng dependencies to the wine ports. Probably want to also "otool -L" all my installed ports afterward to see which ones still link with libpng12.dylib without declaring a dependency, so they can be revbumped too and have the dependency added.

comment:8 Changed 11 years ago by jmroot (Joshua Root)

Here's a patch that updates libpng to 1.4.1 and adds a new non-conflicting libpng12 port based on the old version. Also removes muniversal because it is doing nothing useful (the configured source for each arch does not differ at all apart from the arch flags).

comment:9 Changed 11 years ago by jmroot (Joshua Root)

Cc: jmr@… added

Changed 11 years ago by jmroot (Joshua Root)

Attachment: libpng-1.4.1-libpng12.diff added

comment:10 Changed 11 years ago by rmsfisher@…

Ryan S.,
I have built cairo against libpng 1.4.2; it compiles and runs properly but its dependents (pango, gtk2, py26-cairo, libglade2, and py26-gtk2) must all be rebuilt to rely upon libpng14.
Tons of ports depend upon libpng (172 from 'port echo depends:libpng |cat -n'); revision bumping each of those ports (and possibly a handful of those ports' dependents) would be quite an undertaking.
Josh's approach in the above diff is simpler and should allow ports to transition to libpng 1.4 far more smoothly.
Are there any specific issues that are delaying that move?

comment:11 Changed 11 years ago by ryandesign (Ryan Schmidt)

You're right, there would be a lot of ports to revbump, not just those that list libpng as a dependency, but also those that indirectly use libpng, which we may only discover through analyzing our installed ports, or worst case through bug reports later. But we've successfully used this revbump strategy with jpeg 7 and again with jpeg 8.

My concern with Joshua's proposal is the hack for deactivating libpng @1.2.x before installing libpng12. It can be simplified a bit now that MacPorts 1.9.0 is out, but it's still using commands that were not meant to appear in Portfiles. Though it's not like we haven't used various internal MacPorts methods in other ports before. (I know I'm guilty of this with php5.) And perhaps keeping both libpng12 @1.2.x and libpng @1.4.x is a good idea for now, since probably some software still doesn't work with libpng 1.4.x yet.

comment:12 Changed 10 years ago by rmstonecipher@…

Cc: rmstonecipher@… added

Cc Me!

comment:13 Changed 10 years ago by rmstonecipher@…

What should be done with this ticket and the above patch now that MacPorts 1.9.1 has been released?

comment:14 Changed 10 years ago by ryandesign (Ryan Schmidt)

I would prefer to handle this upgrade in the more traditional way: update the libpng port to 1.4.x, revbump all ports that use libpng, and later, if needed, add a libpng12 port for those ports that are incompatible with libpng 1.4.x. This way we can be sure which ports are linking with which version of libpng.

While Joshua's proposal might seem to be smoother, I worry that it means that ports built before this change will be using libpng 1.2.x, but rebuilding those ports would probably re-link them with libpng 1.4.x, possibly causing problems or incompatibilities then. We won't know until such a rebuild happens. I'd kind of rather have all those rebuilds happen now, via a revbump, and get it all out of the way.

comment:15 Changed 10 years ago by rmstonecipher@…

With permission I would like to apply the attached patch to the Portfile to upgrade the ported libpng to 1.4.5.
1.5.0 is available upstream, but the homepage warns against using it due to a bug that will be fixed in 1.5.1.
With an estimated release date of 2011-01-20, updating this port now should give us a few days to identify which ports need libpng 1.2.x and which can utilize libpng 1.[4,5].x.
May I give it a try?

Changed 10 years ago by rmstonecipher@…

Attachment: libpng-Portfile.diff added

libpng 1.4.5

Changed 10 years ago by jmroot (Joshua Root)

Attachment: libpng-1.4.5.diff added

also remove muniversal and redundant use_parallel_build

comment:16 Changed 10 years ago by jmroot (Joshua Root)

Go ahead, this is long since timed out. But use the patch I just attached. And don't forget to rev bump all dependents at the same time; you can use the script attached to #23260.

comment:17 Changed 10 years ago by ryandesign (Ryan Schmidt)

If you feel up to tackling this, please go ahead. Good luck!

comment:18 Changed 10 years ago by rmstonecipher@…

Resolution: fixed
Status: assignedclosed

Updated Portfile and scores of revision bumps committed in r75159.

comment:19 Changed 10 years ago by ryandesign (Ryan Schmidt)

Summary: graphics/libpng update version, tweak livechecklibpng: update to 1.4.x, tweak livecheck
Note: See TracTickets for help on using tickets.