Bug 4754 - (int-126335) Unhelpful "$Application breaks the 3rd party package policy" error
: Unhelpful "$Application breaks the 3rd party package policy" error
Product: Settings and Maintenance
Application manager
: 5.0-beta2
: All Linux
: Low normal with 2 votes (vote)
: 5.0 (1.2009.41-10)
Assigned To: unassigned
: application-manager-bugs
: http://talk.maemo.org/showthread.php?...
: int-187818
  Show dependency tree
Reported: 2009-07-02 17:31 UTC by Andre Klapper
Modified: 2009-08-11 16:32 UTC (History)
8 users (show)

See Also:



You need to log in before you can comment on or make changes to this bug.

Description Andre Klapper (reporter) maemo.org 2009-07-02 17:31:32 UTC
Public Fremantle SDK beta && latest internal version (week27)

Start Application manager
Add Fremantle Extras-devel repo to Catalogues
Try to install one of the following packages:
 * madbomber
 * gFTP
 * mediabox


Vague and unhelpful "$Application breaks the 3rd party package policy" error


Running "apt-get install $application" works fine.
Comment 1 Quim Gil nokia 2009-07-05 19:27:18 UTC
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.
Comment 2 Quim Gil nokia 2009-07-05 19:33:57 UTC
By the way, shouldn't this policy be just part of the Maemo packaging policy?
Comment 3 Niels Breet maemo.org 2009-07-08 11:08:06 UTC
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?
Comment 4 Andre Klapper (reporter) maemo.org 2009-07-09 02:02:00 UTC
This is currently being worked on.
Yes, it's a bug.
Comment 5 Quim Gil nokia 2009-07-27 15:43:55 UTC
CCing vjazquez since he is the developer working on this.
Comment 6 Mario Sanchez Prada 2009-08-05 12:04:52 UTC
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):

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
      (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
      (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 ;-)
Comment 7 Richard Sun (Nokia) 2009-08-05 13:46:37 UTC
Add myself in CC
Comment 8 Andre Klapper (reporter) maemo.org 2009-08-05 17:23:49 UTC
(Going to close this as FIXED after internal verification.)
Comment 9 Andre Klapper (reporter) maemo.org 2009-08-11 16:32:22 UTC
FIXED in Fremantle.
I was able to install gFTP without issues.