maemo.org Bugzilla – Bug 4754
Unhelpful "$Application breaks the 3rd party package policy" error
Last modified: 2009-08-11 16:32:22 UTC
You need to
before you can comment on or make changes to this bug.
Public Fremantle SDK beta && latest internal version (week27)
STEPS TO REPRODUCE THE PROBLEM:
Start Application manager
Add Fremantle Extras-devel repo to Catalogues
Try to install one of the following packages:
Vague and unhelpful "$Application breaks the 3rd party package policy" error
Running "apt-get install $application" works fine.
In my opinion it is actually everybody's interest to avoid "=" links to
official Maemo libraries, because even if they would be allowed they would
leave 0 margin to developers if a SSU comes breaking those links. Even if we
announces such updates with some time in advance (to be confirmed) it might
just happen that the developer is busy, on holidays, unaware... The ones who
would pay the consequences would be the users seeing how some of their apps
won't install anymore.
But of course this rule shouldn't be imposed for links between third party
packages. They are free to links as they wish, and such "external" links don's
seem to be affecting the good deployment of a SSU anyway. The own Extras
process makes sure already that conflicting versions a problems with
dependencies are detected in extras-devel before being promoted to testers and
By the way, shouldn't this policy be just part of the Maemo packaging policy?
Important to note here is that these applications don't actually specify '='
depends on system libraries, but their own libs or related packages.
I understand the need of not allowing to break SSU, but SSU should not be
affected by this.
For example with gftp:
gftp-common (= 2.0.18-17maemo4)
I'm not seeing any hard depends on system libs, so this looks more like a bug
than a policy issue?
This is currently being worked on.
Yes, it's a bug.
CCing vjazquez since he is the developer working on this.
I've landed a bunch of patches in master branch today, which should get this
bug fixed. Well, it gets actually fixed with commit b14f4...aaa42, but some
more commits were also pushed to make sure everything goes fine regarding to
other related issues (labels in the details dialog and red pill mode,
Here you have a brief summary of the commits pushed (see full log and patches
in gitorious for more detail):
Check the third party policy before showing a details dialog
* src/details.cc (show_package_details): get_package_info to continue
with spd_third_party_policy_check instead of spd_get_details.
(spd_third_party_policy_check): New. Checks pi->third_party_policy
and calls to check_third_party_policy if still an unknown value.
(spd_third_party_policy_check_reply): Handles resply from
(spd_get_details): Params list simplified as possible.
Use the red_pill_ignore_thirdparty_policy value in the frontend.
* src/details.cc (is_installable): Mind the red pill option
to ignore the third package policy when red pill mode is on.
* src/operations.cc (ip_third_party_policy_check): Do not check the
third party policy if the red pill mode option is set.
* src/settings.h (red_pill_ignore_thirdparty_policy): Export this
value out of settings.cc.
Removed usage of the ignore_thirdparty_policy flag in the backend.
* src/apt-worker.cc (flag_ignore_thirdparty_policy): Removed.
(set_options): Removed usage of flag_ignore_thirdparty_policy.
* src/settings.cc (backend_options): Do not encode as a 'backend
option' the value of red_pill_ignore_thirdparty_policy.
Removed unused value status_incompatible_thirdparty
* src/apt-worker-proto.h (enum apt_proto_able_status): Removed
status_incompatible_thirdparty from this enumeration.
Real implementation for the third party policy in apt-worker (NB#126335)
* src/apt-worker.cc (package_policy_status): Removed. This code will
be used from now on from cmd_third_party_policy_check.
(cmd_get_package_info): Removed usage of package_policy_status.
(is_ssu_dependency): New. Check if the SSU package (if found)
depends on a given package, by checking its reverse dependencies.
(cmd_third_party_policy_check): Actual implementation based on the
old package_policy_status and the new is_ssu_dependency functions.
Use apt_worker_third_party_policy_check() from the frontend
* src/main.cc (struct ctpp_closure): New.
(check_third_party_policy): New. It actually checks the third party
policy by calling to apt_worker_third_party_policy_check.
(ctpp_reply): Handles the reply from apt-worker.
* src/operations.cc (installable_status_to_message): No longer
consider status_incompatible_thirdparty for printing a message.
(ip_third_party_policy_check): New. Check the third party policy for
a given package through check_third_party_policy, if needed.
(ip_third_party_policy_check_reply): New. Handles the reply from
check_third_party_policy. Abort and show a message if needed.
(ip_get_info_for_install): Delegate in ip_third_party_policy_check
instead of in ip_with_new_info after executing get_package_info.
(ip_with_new_info): Changed prototype as the boolean 'changed'
parameter is no longer needed here.
Mind the 3rd party policy to better know when a package is installable.
* src/main.h, src/main.cc (third_party_policy): New attribute for
every package, telling about the status (if known) of the third party
policy with regard to that package.
* src/main.cc (package_info): Initialize third_party_policy to the
default third_party_unknown value.
* src/details.cc (is_installable): New. Checks both installable_status and
third_party_policy to determine whether a package is installable.
(decode_summary): Use new static function is_installable() here.
Look for the name of SSU package by looking for the 'system-update' flag.
* src/apt-worker.cc (ssu_package_name): New global variable to save
the name of the SSU package after having looked for it.
(cmd_get_package_list): Save the name of the SSU package, when found
out, in the ssu_package_name global variable.
Added frontend and backend (dummy) functions to check the 3rd party policy.
* src/apt-worker-client.h, src/apt-worker-client.h
(apt_worker_third_party_policy_check): New client function for the
new APTCMD_THIRD_PARTY_POLICY_CHECK operation in the apt-worker.
* src/apt-worker.cc (cmd_names): Added "THIRD_PARTY_POLICY_CHECK".
(cmd_third_party_policy_check): Dummy implementation which always
returns the same value for any package: third_party_compatible.
(handle_request): Call cmd_third_party_policy_check() when needed.
Declare protocol and datatypes for new op to check the 3rd party policy
* src/apt-worker-proto.h (enum apt_command): Added new command to the
(enum third_party_policy_status): New. Describes possible states of
the third party policy for a given package.
Hence, feel free to resolve this bug as FIXED when you want ;-)
Add myself in CC
(Going to close this as FIXED after internal verification.)
FIXED in Fremantle.
I was able to install gFTP without issues.