Skip to content

Remote package management #69

@uael

Description

@uael

A package manager or package management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer's operating system in a consistent manner.

A package manager deals with packages, distributions of software and data in archive files. Packages contain metadata, such as the software's name, description of its purpose, version number, vendor, checksum, and a list of dependencies necessary for the software to run properly. Upon installation, metadata is stored in a local package database. Package managers typically maintain a database of software dependencies and version information to prevent software mismatches and missing prerequisites. They work closely with software repositories, binary repository managers, and app stores.

Source: package manager

Remote package management roadmap:

  • detect tools and environment and wrap them
    • git
    • curl
    • wget
    • unzip/tar/7z/gzip
    • ping (test speed)
  • Extractor wrapper
    • tar
    • unzip
    • gzip
    • 7z
  • Cache management
  • semver
    • parse
    • satisfies
    • select
  • Multi language
    • asm/c/c++
    • objc/c++
    • swift
    • rust
    • dlang
  • Multi platform
    • linux
    • macOS
    • windows
      • git
      • downloader (http[s], ftp ..)
      • extractor (zip, tar.gz, 7z .. )
  • Command line tools
    • require task
      • install
        • parse require info
        • parse and load packages from repositories
        • download package
          • optimization: select the fastest url if exists multiple urls
        • extract package
        • build package
          • xmake.lua
            • linux/macos
            • windows
          • makefile
            • linux/macos
            • windows
          • configure/make
            • linux/macos
          • cmakelists.txt
            • linux/macos
            • windows (in progress ..)
          • *.vcproj
            • windows
        • install package
        • install basic dependent tools (git, curl, unzip ...)
      • search
      • clear
      • remove
      • list
    • repo task
      • add repository
      • remove repository
      • list all repositories
      • clear all repositories and cache
      • global or local repositories
  • xmake lua api
    • add_requires: add package require info
    • add_repositories: add repository url
    • add_packages: add package dependencies to target
    • package: package definition
      • set_urls
      • add_versions
      • set_homepage
      • set_description
      • add_deps
      • [on|before|after]_load: custom load script
      • [on|before|after]_install: custom install script
      • [on|before|after]_test: custom test script
      • add_patches
      • add_links
      • add_defines
      • add_includedirs

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions