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 log in before you can comment on or make changes to this bug.
SOFTWARE VERSION: 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: * madbomber * gFTP * mediabox EXPECTED OUTCOME: Installs. ACTUAL OUTCOME: Vague and unhelpful "$Application breaks the 3rd party package policy" error message. REPRODUCIBILITY: always OTHER COMMENTS: 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 end users.
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, basically) Here you have a brief summary of the commits pushed (see full log and patches in gitorious for more detail): commit fe8318c6d516133afd83f4b5553ad985ff48d689 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 check_third_party_policy. (spd_get_details): Params list simplified as possible. commit 545f0c385f2c00043a182bb6cf4f1eae4325ad3f 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. commit cd51157fa3de64f6da7254fe19751ecbd2043f49 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. commit f8dc706eda11a7f7b24d99c6165a62fe39d914c2 Removed unused value status_incompatible_thirdparty * src/apt-worker-proto.h (enum apt_proto_able_status): Removed status_incompatible_thirdparty from this enumeration. commit b14f446e165578024d49eb4355554aec9b3aaa42 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. commit c104bf3dc70f009fe1bbb88a612fac834752b5bd 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. commit cbf033f6efdf635b6cd70960bda2a131bf850c7d 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. (spd_update_common_page): Likewise. (spd_create_summary_page): Likewise. (spd_get_summary_label): Likewise. commit 690af28a1426c1c9d08be1265fc668c91d6390aa 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. commit 5179b88c732e85dee6b42cca64370549c79c7fb5 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. commit c1ce5fc249655dd73760e447e70dbeb7838f8c9d 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 enumeration: APTCMD_THIRD_PARTY_POLICY_CHECK. (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.