libceres-dev Focal arm64 build failing with failed test

Bug #1882626 reported by Emerson Knapp
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ceres-solver (Ubuntu)
Fix Released
Undecided
Unassigned
Focal
Fix Released
High
Kyle Fazzari
Groovy
Fix Released
Undecided
Unassigned

Bug Description

[Impact]

* ceres-solver's binary packages are not available on arm64 in Ubuntu Focal

* tests seem to be failing on arm64: https://launchpad.net/ubuntu/+source/ceres-solver/1.14.0-4ubuntu1/+build/19091179

* libceres is critical for robotics SLAM applications on Ubuntu, and arm64 is a very popular architecture for robotics

[Test Case]

* Simply run the existing test cases on arm64 and you'll see evaluation_callback_test fail just like in the above log

[Regression Potential]

* libceres isn't on arm64 at all, so the regression potential there is nil

* This is a test-only change, thus the only regression possible on other architectures is that the tests don't pass and the package doesn't build as a result (although note that tests pass locally just fine on amd64)

Revision history for this message
Kyle Fazzari (kyrofa) wrote :

Note that libceres1 is present on arm64 in Groovy (https://packages.ubuntu.com/groovy/libceres1)-- this only effects Focal.

Changed in ceres-solver (Ubuntu Focal):
status: New → Confirmed
Kyle Fazzari (kyrofa)
Changed in ceres-solver (Ubuntu Focal):
assignee: nobody → Kyle Fazzari (kyrofa)
importance: Undecided → High
Changed in ceres-solver (Ubuntu Groovy):
status: New → Fix Released
Kyle Fazzari (kyrofa)
description: updated
description: updated
description: updated
description: updated
Revision history for this message
Kyle Fazzari (kyrofa) wrote :

Attached is the debdiff of the patch for this issue.

Revision history for this message
Kyle Fazzari (kyrofa) wrote :

Sorry, last debdiff got garbled.

Revision history for this message
Marc Deslauriers (mdeslaur) wrote :

ACK on debdiff in comment #4, thanks!

Uploaded for processing by the SRU team.

Changed in ceres-solver (Ubuntu Focal):
status: Confirmed → In Progress
Revision history for this message
Kyle Fazzari (kyrofa) wrote :

Thank you, Marc!

Revision history for this message
Brian Murray (brian-murray) wrote : Please test proposed package

Hello Emerson, or anyone else affected,

Accepted ceres-solver into focal-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/ceres-solver/1.14.0-4ubuntu1.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-focal to verification-done-focal. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-focal. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in ceres-solver (Ubuntu Focal):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-focal
Revision history for this message
Kyle Fazzari (kyrofa) wrote :

Tested using upstream ceres-solver's helloworld.cc example[1].

Unable to test for regressions on arm64 because the package wasn't available there before -proposed:

$ sudo apt install libceres-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libceres-dev is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libceres-dev' has no installation candidate

Alright, testing 1.14.0-4ubuntu1.1 from -proposed:

$ g++ helloworld.cc -lceres -I /usr/include/eigen3 -lglog
ubuntu@arm64-test:~/ceres-solver/examples$ ./a.out
iter cost cost_change |gradient| |step| tr_ratio tr_radius ls_iter iter_time total_time
   0 4.512500e+01 0.00e+00 9.50e+00 0.00e+00 0.00e+00 1.00e+04 0 1.32e-04 5.72e-04
   1 4.511598e-07 4.51e+01 9.50e-04 9.50e+00 1.00e+00 3.00e+04 1 2.02e-04 9.69e-04
   2 5.012552e-16 4.51e-07 3.17e-08 9.50e-04 1.00e+00 9.00e+04 1 5.43e-05 1.12e-03
Ceres Solver Report: Iterations: 3, Initial cost: 4.512500e+01, Final cost: 5.012552e-16, Termination: CONVERGENCE
x : 0.5 -> 10

Looks great there. Moving on to regression testing on amd64, with version 1.14.0-4ubuntu1:

$ g++ helloworld.cc -lceres -I /usr/include/eigen3 -lglog
$ ./a.out
iter cost cost_change |gradient| |step| tr_ratio tr_radius ls_iter iter_time total_time
   0 4.512500e+01 0.00e+00 9.50e+00 0.00e+00 0.00e+00 1.00e+04 0 7.41e-05 7.69e-04
   1 4.511598e-07 4.51e+01 9.50e-04 9.50e+00 1.00e+00 3.00e+04 1 1.34e-04 1.03e-03
   2 5.012552e-16 4.51e-07 3.17e-08 9.50e-04 1.00e+00 9.00e+04 1 9.05e-06 1.04e-03
Ceres Solver Report: Iterations: 3, Initial cost: 4.512500e+01, Final cost: 5.012552e-16, Termination: CONVERGENCE
x : 0.5 -> 10

Now amd64, with version 1.14.0-4ubuntu1.1 from -proposed:

$ g++ helloworld.cc -lceres -I /usr/include/eigen3 -lglog
$ ./a.out
iter cost cost_change |gradient| |step| tr_ratio tr_radius ls_iter iter_time total_time
   0 4.512500e+01 0.00e+00 9.50e+00 0.00e+00 0.00e+00 1.00e+04 0 5.90e-05 4.02e-04
   1 4.511598e-07 4.51e+01 9.50e-04 9.50e+00 1.00e+00 3.00e+04 1 1.72e-04 6.28e-04
   2 5.012552e-16 4.51e-07 3.17e-08 9.50e-04 1.00e+00 9.00e+04 1 2.24e-05 6.74e-04
Ceres Solver Report: Iterations: 3, Initial cost: 4.512500e+01, Final cost: 5.012552e-16, Termination: CONVERGENCE
x : 0.5 -> 10

Time is of course a smidge different, but results are the same, across architectures and package versions. This looks good to me, thanks Brian!

[1]: https://github.com/ceres-solver/ceres-solver/blob/master/examples/helloworld.cc

tags: added: verification-done-focal
removed: verification-needed-focal
Revision history for this message
Emerson Knapp (emersonknapp) wrote :

Confirmed that I could install libceres-dev from "-proposed" on ARM64 Focal and successfully use it as a build dependency for reference project Google Cartographer, which originally brought the missing package to my attention.

Revision history for this message
Emerson Knapp (emersonknapp) wrote :

Oh, forgot to post version number -

root@machine:/# apt-cache policy libceres-dev
libceres-dev:
  Installed: 1.14.0-4ubuntu1.1
  Candidate: 1.14.0-4ubuntu1.1
  Version table:
 *** 1.14.0-4ubuntu1.1 100
        100 /var/lib/dpkg/status

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ceres-solver - 1.14.0-4ubuntu1.1

---------------
ceres-solver (1.14.0-4ubuntu1.1) focal; urgency=medium

  * Reduce the number of minimizer iterations in test (LP: #1882626)

 -- Kyle Fazzari <email address hidden> Thu, 11 Jun 2020 17:02:01 -0700

Changed in ceres-solver (Ubuntu Focal):
status: Fix Committed → Fix Released
Revision history for this message
Łukasz Zemczak (sil2100) wrote : Update Released

The verification of the Stable Release Update for ceres-solver has completed successfully and the package is now being released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.