Opened 4 years ago

Closed 4 years ago

Last modified 4 years ago

#48994 closed submission (fixed)

py-bob @2.0.6 New release

Reported by: tiagofrepereira2012 (Tiago Freitas Pereira) Owned by: dbevans (David B. Evans)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: andre.anjos@…, laurent.el-shafey@…, petrrr
Port: py-bob

Description

Hi,

Follow attached a set of port files for publication that will replace the port bob@1.2.2. This port now is using the portgroup python and for that reason was renamed to py-bob. py-bob was split in several small port files and they are available in the attached files also for publication.

I will open another ticket to replace the current bob@1.2.2 to an obsolete version.

Any question, please let me know.

Thanks in advance

Attachments (5)

main.log (41.4 KB) - added by dbevans (David B. Evans) 4 years ago.
Build log for py-bob showing configure failure of py-bob.blitz due to missing dependency on boost
py27-bob.blitz-main.log (4.5 KB) - added by dbevans (David B. Evans) 4 years ago.
Build log for py27-bob.blitz showing configure failure of py-bob.blitz due to missing dependency on boost
py27-bob-core-main.log (4.4 KB) - added by dbevans (David B. Evans) 4 years ago.
Build log for py27-bob-core showing build failure due to missing dependency cmake
py-bob.2.zip (76.5 KB) - added by tiagofrepereira2012 (Tiago Freitas Pereira) 4 years ago.
py-bob.zip (76.5 KB) - added by tiagofrepereira2012 (Tiago Freitas Pereira) 4 years ago.

Download all attachments as: .zip

Change History (25)

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

I haven't looked at everything yet, but some initial problems I see are:

Each directory in the zip archive contains an alias called Portfile, pointing to a file called Portfile.current. There should be no alias, and the real file should be called Portfile.

The py-bob portfile declares dependencies globally. In python portgroup ports, dependencies should only be declared inside the "if {${subport} eq ${name}} {...}" block.

Last edited 4 years ago by ryandesign (Ryan Schmidt) (previous) (diff)

comment:2 Changed 4 years ago by tiagofrepereira2012 (Tiago Freitas Pereira)

Hi,

Thanks for the comments. I implemented them and the result is in the current attachment for publication.

Thank you very much

Tiago

comment:3 Changed 4 years ago by tiagofrepereira2012 (Tiago Freitas Pereira)

Cc: tiagofrepereira@… added

Cc Me!

comment:4 Changed 4 years ago by tiagofrepereira2012 (Tiago Freitas Pereira)

Hello,

Any news about this one?

Thanks

Tiago

comment:5 Changed 4 years ago by mf2k (Frank Schima)

Cc: tiagofrepereira@… removed
Version: 2.3.3

As reporter, you do not need to Cc yourself.

comment:6 Changed 4 years ago by tiagofrepereira2012 (Tiago Freitas Pereira)

Cc: tiagofrepereira@… added
Last edited 4 years ago by tiagofrepereira2012 (Tiago Freitas Pereira) (previous) (diff)

comment:7 Changed 4 years ago by tiagofrepereira2012 (Tiago Freitas Pereira)

Hello,

Any news about this one?

PS: Sorry, but I don't know how to remove my e-mail from the Cc.

Thank you very much in advance

Tiago

comment:8 Changed 4 years ago by mf2k (Frank Schima)

Cc: andre.anjos@… laurent.el-shafey@… added; tiagofrepereira@… removed
Port: py-bob added

comment:9 Changed 4 years ago by petrrr

Cc: petr@… added

Cc Me!

comment:10 Changed 4 years ago by dbevans (David B. Evans)

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

As mentioned in my ticket #46465, I've dowloaded your submitted ports and have begun testing. First let me thank you for porting the new bob to MacPorts. It's truly a monumental amount of work!

I've run into a few issues, however, some stylistic and some more substantial.

Minor issues:

  • port names contain '.'. MacPorts common usage is to use '-' instead to separate name components.
  • the port group python sets some parameters for you particularly categories and dependencies. In particular, the port group sets the primary category to python and adds a depends_lib for the appropriate python version. Normal practice is to use categories-append and depends_lib-append to append any additional categories and dependencies that my be required. In particular, you are overriding python as the primary category with science. MacPorts practice is that all python ports should be in the python category. So you should just append your additional categories. Note also that the name of the containing directory for all your ports should be the same as the primary category (python).
  • you use 'revision 0' throughout. This is the default value so it is common practice to avoid explicitly setting the revision to 0 and only add the revision statement when incrementing the revision. If the version number is incremented the revision is reset to 0 and any revision statement removed.
  • currently there is an effort underway to add support, if possible, for python35. If your ports are compatible with python35 and the appropriate dependencies exist in MacPorts you might want to add this to your python.versions statement.

None of the above are show stoppers so I went ahead and attempted to build py-bob. The first dependency py-bob.blitz failed during configuration due to a missing dependency on boost so that needs to be added. Note also that boost has different variants depending on which version of python was used to build its python libraries. Default is boost +python27. MacPorts doesn't allow you to specify a dependency by variant so you should probably check to ensure that the proper variant of boost is installed depending on your ports' python version. This can be done by using the active_variants port group as follows:

PortGroup                 active_variants 1.1

...

require_active_variants   port:boost python${python.version}

This will perform a check during dependency checking at the beginning of the configure phase to determine if the installed version of boost uses the specified variant and will fail with an appropriate message to the user if not.

So that's where I am right now. Since I'm the one that asked for these ports, I'm taking ownership of this ticket and will commit these ports for you when the various issues are resolved and they build without error.

Thanks again for your help in contributing your significant software package to MacPorts. Let me know if you have any questions.

Dave

Changed 4 years ago by dbevans (David B. Evans)

Attachment: main.log added

Build log for py-bob showing configure failure of py-bob.blitz due to missing dependency on boost

Changed 4 years ago by dbevans (David B. Evans)

Attachment: py27-bob.blitz-main.log added

Build log for py27-bob.blitz showing configure failure of py-bob.blitz due to missing dependency on boost

comment:11 Changed 4 years ago by tiagofrepereira2012 (Tiago Freitas Pereira)

Dear Dave,

Thanks for your attention and advice on this one. I applied all the suggestions, except the one with the python 3.5 support (which was created an issue to take care of that https://github.com/idiap/bob/issues/209).

The portfiles are attached (py-bob.zip)

Thanks again for your attention.

Best Regards

Tiago

comment:12 Changed 4 years ago by dbevans (David B. Evans)

I finally got an opportunity to spend some time testing your latest update yesterday. Sorry for the delay.

With the new modifications, attempting to build py27-bob in a clean environment causes the following to be built successfully:

py27-bob-extension
py27-bob-blitz

However, it then attempts to build py27-bob-core and fails with the following error (full log attached)

:debug:build Assembled command: 'cd "/opt/local/var/macports/build/_Users_devans_macports_dports_python_py-bob-core/py27-bob-core/work/bob.core-2.0.4" && /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 setup.py --no-user-cfg build'
:debug:build Executing command line:  cd "/opt/local/var/macports/build/_Users_devans_macports_dports_python_py-bob-core/py27-bob-core/work/bob.core-2.0.4" && /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 setup.py --no-user-cfg build
:info:build Traceback (most recent call last):
:info:build   File "setup.py", line 56, in <module>
:info:build     boost_modules = ['system', 'iostreams', 'filesystem'],
:info:build   File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/bob/blitz/extension.py", line 92, in __init__
:info:build     BobLibrary.__init__(self, *args, **kwargs)
:info:build   File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/bob/extension/__init__.py", line 532, in __init__
:info:build     raise OSError("The Library class needs CMake version >= 2.8 to be installed, but CMake cannot be found")
:info:build OSError: The Library class needs CMake version >= 2.8 to be installed, but CMake cannot be found
:info:build Command failed:  cd "/opt/local/var/macports/build/_Users_devans_macports_dports_python_py-bob-core/py27-bob-core/work/bob.core-2.0.4" && /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 setup.py --no-user-cfg build
:info:build Exit code: 1

This is caused by a missing dependency on cmake and installing cmake at this point allows the full build to complete successfully but it's not clear to me where the dependency on cmake should go. It appears to be required when the BobLibrary class is initialized which implies that it should be included in one or more depends_lib statements. But not being familiar with your code, I'm not sure whether this is only needed in a few specific modules or all. Apparently not needed in the first two. So I'll leave this to you to determine. Note that when building on our buildbots (to generate potentially disstributable binary modules) each module will be built separately in a clean environment with no ports active initially so your declared dependencies for each module need to bring in all necessary dependencies.

So if we can resolve this issue, I think the ports should be ready to commit.

Changed 4 years ago by dbevans (David B. Evans)

Attachment: py27-bob-core-main.log added

Build log for py27-bob-core showing build failure due to missing dependency cmake

Changed 4 years ago by tiagofrepereira2012 (Tiago Freitas Pereira)

Attachment: py-bob.2.zip added

Changed 4 years ago by tiagofrepereira2012 (Tiago Freitas Pereira)

Attachment: py-bob.zip added

comment:13 Changed 4 years ago by tiagofrepereira2012 (Tiago Freitas Pereira)

Dear Dave,

Thanks for the feedback. I updated the PortFiles with your suggested fix.

I took a bit longer to submit this fix because we released the bob 2.0.6.

Now these portfiles relies on tbob 2.0.6. Hope this is not an issue.

Thanks again

Tiago

comment:14 in reply to:  13 Changed 4 years ago by dbevans (David B. Evans)

Replying to tiagofrepereira@…:

Now these portfiles relies on tbob 2.0.6.

Is this a typo? I don't see any dependencies on tbob or any new such submission.

comment:15 Changed 4 years ago by tiagofrepereira2012 (Tiago Freitas Pereira)

Sorry, it is a typo. It is bob 2.0.6

comment:16 Changed 4 years ago by dbevans (David B. Evans)

OK, no problem. Also you posted two new zip files py-bob.zip appears to be malformed so I assume py-bob.2.zip is the correct file?

comment:17 Changed 4 years ago by tiagofrepereira2012 (Tiago Freitas Pereira)

Hi Dave,

Consider the second one please (py-bob.2.zip). I had a issue with the first upload.

Thanks

comment:18 Changed 4 years ago by dbevans (David B. Evans)

I'm testing now. Will report shortly.

comment:19 Changed 4 years ago by dbevans (David B. Evans)

Resolution: fixed
Status: assignedclosed

All ports both python27 and python34 built successfully during testing.

Committed in r142985. Thanks for all your work on this latest update to bob.

If you have any further updates or modifications that you would like to make, copy me on your ticket and I'll be glad to test and commit them.

Dave

comment:20 Changed 4 years ago by dbevans (David B. Evans)

Summary: py-bob @2.0.5 New releasepy-bob @2.0.6 New release
Note: See TracTickets for help on using tickets.