Npkg

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(New page: This package manager was created to replace opkg in low memory environments. (openmoko/slugos/more?) It will hopefully be both memory efficient and fast, though the emphasis is on memory ...)
 
m (wish added)
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This package manager was created to replace opkg in low memory environments. (openmoko/slugos/more?)
+
This package manager was created to replace [[opkg]] in low memory environments. (openmoko/slugos/more?)
  
 
It will hopefully be both memory efficient and fast, though the emphasis is on memory efficiency, since we have unlimited time though not unlimited memory.
 
It will hopefully be both memory efficient and fast, though the emphasis is on memory efficiency, since we have unlimited time though not unlimited memory.
Line 6: Line 6:
  
 
Please read the introduction section
 
Please read the introduction section
 +
source code: git://github.com/tasn/npkg.git
  
 
=Introduction=
 
=Introduction=
Line 18: Line 19:
  
 
Should be able to:
 
Should be able to:
  # Install
+
# Install
  # Remove
+
# Remove
  # Upgrade
+
# Upgrade
  # Update
+
# Update
  # Handle configuration files changes
+
# Handle configuration files changes
  # Ignore dependencies
+
# Run without stopping and asking questions, like overwriting config files (save new config as <pkg.conf>.new resp. <pkg.conf>.old)
  # Restrict certain packages upgrades
+
# Ignore dependencies
  # Check if a new version of itself exists before installing other packages.
+
# Restrict certain packages upgrades
  # List all/installed/upgradeable packages
+
# Check if a new version of itself exists before installing other packages.
  # search for a package by name/description
+
# List all/installed/upgradeable packages
  # download only
+
# search for a package by name/description
  # probe all info about a package
+
# download only
  # be able to set different config file
+
# probe all info about a package
  # be able to set different root dir
+
# be able to set different config file
  # be able to force downgrade
+
# be able to set different root dir
  # be able to tell whether to cache or not to cache packages
+
# be able to force downgrade
  # be able to do a "dry run"
+
# be able to tell whether to cache or not to cache packages
  # ignore restrictions (like deps/conflicts and such)
+
# be able to do a "dry run"
  # progress indication!
+
# ignore restrictions (like deps/conflicts and such)
 +
# progress indication!
 +
# multi repos?
 +
# install from repo/url/local
 +
# when upgrading, confirm the list of pkgs to be upgraded before actually doing the upgrade.
 +
# Enable removing of Packages (dependencies) which aren't needed anymore (depclean)
 +
 
 +
=API=
 +
The basic design is a library, this section lists the needed api.
  
 
=Design choices=
 
=Design choices=
 
It seems like using sqlite3 and libcurl are the best solutions for our purposes.
 
It seems like using sqlite3 and libcurl are the best solutions for our purposes.
 
I'm considering using glib as well for data structures, though about that I'm still not sure and would like someone to help me think about pros and cons.
 
I'm considering using glib as well for data structures, though about that I'm still not sure and would like someone to help me think about pros and cons.
 +
 +
It'll probably be written in C and maybe at first will use shell (bash?) scripts for help when needed. (although target is C only).
  
 
In conclusion:
 
In conclusion:
  
 
Probable dependencies:
 
Probable dependencies:
  # sqlite3
+
# sqlite3
  # libcurl
+
# libcurl
 +
 
 +
=Volunteers=
 +
Please add yourself to this list if you think you'd like to give us a hand (specify nick/name, area of expertise and a way to contact)
 +
 
 +
# tasn - programmer - #openmoko-cdevel@freenode
 +
 
 +
[[Category:Package management]]

Latest revision as of 08:31, 29 July 2009

This package manager was created to replace opkg in low memory environments. (openmoko/slugos/more?)

It will hopefully be both memory efficient and fast, though the emphasis is on memory efficiency, since we have unlimited time though not unlimited memory.

It is not yet in development, it's in the characterization stage. Please feel free to help, as this is the most important part.

Please read the introduction section source code: git://github.com/tasn/npkg.git

Contents

[edit] Introduction

npkg (Nano pkg) conforms to the following coding convention: Coding Conventions Please read and follow.

Please help and add ideas to the projects wiki pages. (for instance the features page)

[edit] Features

This list includes all the actions it should be able to do (even trivial ones)

Should be able to:

  1. Install
  2. Remove
  3. Upgrade
  4. Update
  5. Handle configuration files changes
  6. Run without stopping and asking questions, like overwriting config files (save new config as <pkg.conf>.new resp. <pkg.conf>.old)
  7. Ignore dependencies
  8. Restrict certain packages upgrades
  9. Check if a new version of itself exists before installing other packages.
  10. List all/installed/upgradeable packages
  11. search for a package by name/description
  12. download only
  13. probe all info about a package
  14. be able to set different config file
  15. be able to set different root dir
  16. be able to force downgrade
  17. be able to tell whether to cache or not to cache packages
  18. be able to do a "dry run"
  19. ignore restrictions (like deps/conflicts and such)
  20. progress indication!
  21. multi repos?
  22. install from repo/url/local
  23. when upgrading, confirm the list of pkgs to be upgraded before actually doing the upgrade.
  24. Enable removing of Packages (dependencies) which aren't needed anymore (depclean)

[edit] API

The basic design is a library, this section lists the needed api.

[edit] Design choices

It seems like using sqlite3 and libcurl are the best solutions for our purposes. I'm considering using glib as well for data structures, though about that I'm still not sure and would like someone to help me think about pros and cons.

It'll probably be written in C and maybe at first will use shell (bash?) scripts for help when needed. (although target is C only).

In conclusion:

Probable dependencies:

  1. sqlite3
  2. libcurl

[edit] Volunteers

Please add yourself to this list if you think you'd like to give us a hand (specify nick/name, area of expertise and a way to contact)

  1. tasn - programmer - #openmoko-cdevel@freenode
Personal tools

This package manager was created to replace opkg in low memory environments. (openmoko/slugos/more?)

It will hopefully be both memory efficient and fast, though the emphasis is on memory efficiency, since we have unlimited time though not unlimited memory.

It is not yet in development, it's in the characterization stage. Please feel free to help, as this is the most important part.

Please read the introduction section

Introduction

npkg (Nano pkg) conforms to the following coding convention: Coding Conventions Please read and follow.

Please help and add ideas to the projects wiki pages. (for instance the features page)

Features

This list includes all the actions it should be able to do (even trivial ones)

Should be able to:

 # Install
 # Remove
 # Upgrade
 # Update
 # Handle configuration files changes
 # Ignore dependencies
 # Restrict certain packages upgrades
 # Check if a new version of itself exists before installing other packages.
 # List all/installed/upgradeable packages
 # search for a package by name/description
 # download only
 # probe all info about a package
 # be able to set different config file
 # be able to set different root dir
 # be able to force downgrade
 # be able to tell whether to cache or not to cache packages
 # be able to do a "dry run"
 # ignore restrictions (like deps/conflicts and such)
 # progress indication!

Design choices

It seems like using sqlite3 and libcurl are the best solutions for our purposes. I'm considering using glib as well for data structures, though about that I'm still not sure and would like someone to help me think about pros and cons.

In conclusion:

Probable dependencies:

 # sqlite3
 # libcurl