Opened 12 years ago

Closed 12 years ago

#38395 closed defect (fixed)

couchdb-devel @1.4.0a-20130227 Erlang R16B breaks couchdb build

Reported by: jeff@… Owned by: neverpanic (Clemens Lang)
Priority: Normal Milestone:
Component: ports Version: 2.1.3
Keywords: haspatch maintainer Cc:
Port: couchdb-devel couchdb

Description

Build fails with the following after upgrading erlang to R16B, reported in #37641.

/opt/local/bin/erlc  mochifmt_std.erl
/opt/local/bin/erlc  mochiglobal.erl
mochifmt_std.erl:6: parameterized modules are no longer supported
mochifmt_std.erl:11: variable 'THIS' is unbound
mochifmt_std.erl:14: variable 'THIS' is unbound
mochifmt_std.erl:23: variable 'THIS' is unbound
make[3]: *** [mochifmt_std.beam] Error 1
make[3]: *** Waiting for unfinished jobs....
mochifmt_records.erl:12: parameterized modules are no longer supported
mochifmt_records.erl:19: variable 'Recs' is unbound
make[3]: *** [mochifmt_records.beam] Error 1

CouchDB ticket: https://issues.apache.org/jira/browse/COUCHDB-1696

Not sure what to do about this yet. Suggestions welcome.

This almost certainly affects couchdb as well. I'll add a note here when I've tested it and know for sure.

Attachments (3)

couchdb.38395.1.patch (19.3 KB) - added by jeff@… 12 years ago.
couchdb-devel.38395.1.patch (18.5 KB) - added by jeff@… 12 years ago.
couchdb-and-couchdb-devel.38395.2.patch (8.3 KB) - added by jeff@… 12 years ago.

Download all attachments as: .zip

Change History (14)

comment:1 Changed 12 years ago by jeff@…

Yep, couchdb is affected too.

I'm looking into temporarily patching mochiweb using https://github.com/erlang/pmod_transform until the couchdb team makes releases with mochiweb updated.

Changed 12 years ago by jeff@…

Attachment: couchdb.38395.1.patch added

comment:2 Changed 12 years ago by jeff@…

Patch added for couchdb. It's hacky, but it works. Fortunately it should just be temporary until the couchdb project updates it properly. I'm working on patch for couchdb-devel now.

As always, suggestions and modifications welcome.

Changed 12 years ago by jeff@…

Attachment: couchdb-devel.38395.1.patch added

comment:3 Changed 12 years ago by jeff@…

couchdb-devel patch added. Could somebody take a look at this and commit both these patches or give me feedback if something isn't right?

comment:4 Changed 12 years ago by neverpanic (Clemens Lang)

Owner: changed from macports-tickets@… to cal@…
Status: newassigned

I saw

etap_web.erl:45: Warning: call to http:request/4 will fail, since it was removed in R15B; use httpc:request/4
etap_web.erl:59: Warning: call to http:request/4 will fail, since it was removed in R15B; use httpc:request/4

scrolling by for couchdb (not in -devel), but other than that it compiles fine, so let's ship it: r104123.

comment:5 Changed 12 years ago by neverpanic (Clemens Lang)

Resolution: fixed
Status: assignedclosed

comment:6 Changed 12 years ago by neverpanic (Clemens Lang)

Keywords: haspatch maintainer added

Feel free to add the keyword maintainer to any ticket you open for your own ports. Also, adding haspatch when you attach a patch might help speed up things.

comment:7 Changed 12 years ago by neverpanic (Clemens Lang)

Resolution: fixed
Status: closedreopened

Seems the buildbot didn't like the couchdb-devel change, although it did build fine for me locally:

/opt/local/bin/erlc  -pa . mochifmt_records.erl
/opt/local/bin/erlc  -pa . mochifmt_std.erl
mochifmt_records.erl:none: undefined parse transform 'pmod_pt'
make[3]: *** [mochifmt_records.beam] Error 1
make[3]: *** Waiting for unfinished jobs....
mochifmt_std.erl:none: undefined parse transform 'pmod_pt'
make[3]: *** [mochifmt_std.beam] Error 1
make[3]: Leaving directory `/opt/local/var/macports/build/_opt_mports_dports_databases_couchdb-devel/couchdb-devel/work/couchdb-devel-1.4.0a-20130227/src/moc↩
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_mports_dports_databases_couchdb-devel/couchdb-devel/work/couchdb-devel-1.4.0a-20130227/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_mports_dports_databases_couchdb-devel/couchdb-devel/work/couchdb-devel-1.4.0a-20130227'
make: *** [all] Error 2
make: Leaving directory `/opt/local/var/macports/build/_opt_mports_dports_databases_couchdb-devel/couchdb-devel/work/couchdb-devel-1.4.0a-20130227'
Command failed:  cd "/opt/local/var/macports/build/_opt_mports_dports_databases_couchdb-devel/couchdb-devel/work/couchdb-devel-1.4.0a-20130227" && /usr/bin/m↩
Exit code: 2
Error: org.macports.build for port couchdb-devel returned: command execution failed
DEBUG: Error code: CHILDSTATUS 86766 2
DEBUG: Backtrace: command execution failed
    while executing
"system -nice 0 $fullcmdstring"
    ("eval" body line 1)
    invoked from within
"eval system $notty $nice \$fullcmdstring"
    invoked from within
"command_exec build"
    (procedure "portbuild::build_main" line 8)
    invoked from within
"$procedure $targetname"
Warning: targets not executed for couchdb-devel: org.macports.activate org.macports.build org.macports.destroot org.macports.install
Please see the log file for port couchdb-devel for details:
    /opt/local/var/macports/logs/_opt_mports_dports_databases_couchdb-devel/couchdb-devel/main.log
To report a bug, follow the instructions in the guide:
    http://guide.macports.org/#project.tickets
Error: Processing of port couchdb-devel failed

Any ideas?

comment:8 Changed 12 years ago by jeff@…

Hmm, at the moment, no. Looking at the entire buildbot log. Interesting that couchdb built ok but couchdb-devel did not. couchdb-devel is the simpler change of the two.

Changed 12 years ago by jeff@…

comment:9 Changed 12 years ago by jeff@…

I had one of those eureka-right-before-falling-asleep moments. I'm pretty confident we have a race condition here. I'm going to guess that there are probably four cores or better on the buildbots and that port runs make with a -j option (or something similar that would parallelize make). If those assumptions are true, then that would cause the error the buildbot encountered, as the build of mochifmt_records.erl and mochifmt_std.erl depend on the .beam file generated from the compilation of pmod_pt.erl, but it hadn't yet finished building it. I didn't see it since I'm on a dual core box and I'm guessing you are too.

Combined patch is attached that sets up simple dependency in the makefile that should make this safe for any amount of concurrency in make. (tested with -j20)

comment:10 Changed 12 years ago by neverpanic (Clemens Lang)

Yeah, that sounds reasonable. Commited in r104138 without the revbump, because the port either previously built fine (in which case we don't need to force a rebuild), or it didn't (in which case it will have to be rebuilt anyway). Let's see what the buildbot says.

comment:11 Changed 12 years ago by neverpanic (Clemens Lang)

Resolution: fixed
Status: reopenedclosed
Note: See TracTickets for help on using tickets.