Skip to content
  • Anna Medonosova's avatar
    Make appimages updateable · 78d8377a
    Anna Medonosova authored
    This merge request is implementing self-update capabilities for
    AppImages inside Krita. Apart from integration of the tools into Krita's
    codebase, there are also updated scripts for AppImage building and icons
    for update channels.
    
    There are multiple parts to this patch:
    
    1. C++ code for integration of AppImageUpdate and changes to previous
    update notifications Both of those options are called Updaters. There
    is:
      * The Manual Updater, which is in fact a fancy name for checking for
    new version on the website and displaying a message to the user together
    with a link to the release notes. This is the original update
    notification code, I have slightly modified version checking and moved
    the code into it's own class.
      * The AppImage Updater, which is used if
    Krita detects that it runs from an AppImage. This updater can actually
    download new version of Krita, if it is available.
    
    2. updated scripts for building appimages I have added code to bundle
    AppImageUpdate into the AppImage being built. Also, the build scripts
    infer the update channel (stable, Beta, Plus or Next) from a combination
    of Krita version and git information. This info is used for setting up
    proper update channel and selecting the right branding option. I have
    also added helper scripts for signing the already built AppImage
    (sign_appimage.sh, generate_zsync.sh; also strip_appimage_signature.sh and
    validate_appimage_signature.sh for debugging purposes) and rewriting
    update information of the built AppImage (update_updinfo.sh).
    
    3. icons for update channels I have added icons I made for myself to
    make sense of all my AppImages. The icons are in krita/pics/branding,
    together with a script for generating all icon sizes from svg
    (generate_icons.sh).
    
    Changes to building - there are two new cmake flags:
    
      * ENABLE_UPDATERS (bool, can be ON or OFF) - this flag toggles all
        updater code, both the appimage updating and update notifications
      * BRANDING (string, can be default, Beta, Plus, or Next) - this flag
        controls which app icons will be installed
    78d8377a