Opened 7 years ago
Closed 7 years ago
#54948 closed defect (fixed)
optipng @0.7.6: error: no member named 'st_atim' in 'struct stat'
Reported by: | fracai | Owned by: | ryandesign (Ryan Carsten Schmidt) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | highsierra | Cc: | galsondor (Scott G. Ainsworth), fracai, chrisminett (Chris Minett), phriedrich, szhorvat (Szabolcs Horvát), jowens (John Owens), khepler, jonasjonas (Frank Hellenkamp) |
Port: | optipng |
Description
osys.c:515:25: error: no member named 'st_atim' in 'struct stat' times[0] = sbuf.st_atim; ~~~~ ^ osys.c:516:25: error: no member named 'st_mtim' in 'struct stat' times[1] = sbuf.st_mtim; ~~~~ ^ 2 errors generated. make[1]: *** [osys.o] Error 1
Looks like a similar issue occurred previously: https://sourceforge.net/p/optipng/bugs/47/
Attachments (1)
Change History (18)
Changed 7 years ago by fracai
comment:2 Changed 7 years ago by kencu (Ken)
Keywords: | 10.13 removed |
---|---|
Owner: | set to ryandesign |
Status: | new → assigned |
Summary: | optipng 0.7.6 fails to build on MacOS 10.13 → optipng 0.7.6: error: no member named 'st_atim' in 'struct stat' |
comment:3 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)
The bug has already been reported to the developers. I'll await their fix.
comment:4 Changed 7 years ago by galsondor (Scott G. Ainsworth)
Cc: | galsondor added |
---|
comment:5 Changed 7 years ago by fracai
Cc: | fracai added |
---|
comment:6 Changed 7 years ago by chrisminett (Chris Minett)
Cc: | chrisminett added |
---|
comment:7 Changed 7 years ago by phriedrich
Cc: | phriedrich added |
---|
comment:8 Changed 7 years ago by szhorvat (Szabolcs Horvát)
Cc: | szhorvat added |
---|
comment:9 Changed 7 years ago by jowens (John Owens)
Cc: | jowens added |
---|
comment:10 Changed 7 years ago by khepler
Cc: | khepler added |
---|
comment:11 Changed 7 years ago by jonasjonas (Frank Hellenkamp)
Cc: | jonasjonas added |
---|
comment:12 follow-up: 13 Changed 7 years ago by phriedrich
Is there an option in MacPorts to patch the source for a certain version of macOS?
Replacing lines 515 and 516 in src/optipng/osys.c
with
#if defined OSYS_DARWIN times[0] = sbuf.st_atimespec; times[1] = sbuf.st_mtimespec; #else times[0] = sbuf.st_atim; times[1] = sbuf.st_mtim; #endif
works for me, but I haven't tested this on older versions of OS X/macOS.
comment:13 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)
Replying to phriedrich:
Is there an option in MacPorts to patch the source for a certain version of macOS?
Of course. For example, to add a patch only on darwin 17 (macOS High Sierra) and later:
if {${os.platform} eq "darwin" && ${os.major} >= 17} { patchfiles-append something.patch }
But older OS versions shouldn't see this code at all since they don't have the requisite OS functions, so a conditional patch shouldn't be needed.
comment:14 Changed 7 years ago by phriedrich
Theoretically we also wouldn't need the check for OSYS_DARWIN
here, since the patch is only applied in MacPorts.
So a patch like this would be enough:
diff -Naur optipng-0.7.6/src/optipng/osys.c optipng-0.7.6_hs/src/optipng/osys.c --- optipng-0.7.6/src/optipng/osys.c 2014-10-05 05:51:00.000000000 +0200 +++ optipng-0.7.6_hs/src/optipng/osys.c 2017-12-09 18:31:59.000000000 +0100 @@ -512,8 +512,8 @@ { struct timespec times[2]; - times[0] = sbuf.st_atim; - times[1] = sbuf.st_mtim; + times[0] = sbuf.st_atimespec; + times[1] = sbuf.st_mtimespec; if (utimensat(AT_FDCWD, dest_path, times, 0) != 0) result = -1; }
Is this the right format?
comment:15 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)
Status: | assigned → accepted |
---|---|
Summary: | optipng 0.7.6: error: no member named 'st_atim' in 'struct stat' → optipng @0.7.6: error: no member named 'st_atim' in 'struct stat' |
I am working on the patch now. I will keep the operating system check, since MacPorts can theoretically be installed on non-Mac systems.
comment:17 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
build log