/ TODO.md
TODO.md
1 # Fix all bugs reported 2 3 This is the number one requirement :) 4 5 # Replace dependencies by dep formula 6 7 Dep formula is a definition of a formula where can represent requirements 8 (keyword) and packages but also can define alternatives of those: 9 10 name1 = 1.0 | name2 != 1.0, name3 > 1.0 < 2.0 != 1.5, name4 +opt1 -opt2 11 12 Difficulty: hard 13 14 # Remove sqlite calls from frontend for (r)query 15 16 sqlite should be a technical detail and thus should not be exposed by the 17 library 18 19 Difficulty: hard 20 21 # Explore a rework of the library dependencies 22 23 Would be nice to have a better mechanism that could track the symbols of the 24 libraries (including versions) 25 26 RPM already does this 27 28 # Allow duplicate package handling 29 30 Allow multiple packages having the same name as long as they don't conflict 31 32 * pkg.conf: 33 34 duplicatenumber: 2 35 duplicate: { FreeBSD-kernel-*: 3, clibs: 5 } 36 37 * Drop unique index on packages(name) or make it on name,version 38 * annotation saveme 39 * Upgrade: 40 41 * get_local_pkg() 42 43 * check saveme 44 * ensure only one 45 * in summary: check for saveme annotation, change to install 46 47 * pkg_add() 48 49 * check for saveme annotation, remove upgrade flag 50 51 # Teach pkg repo to keep a list of unavailable packages 52 53 When a build fail the package is not added to the repository. As such, a user who attempts to install the package is told that it does not exist, rather than it is just temporarily unavailable. 54 55 The repo building process could create a list of failed packages during the build, and provide that as part of the repo in the form of a UCL file. If there are no result when looking for a package, we could check the failed packages list, and provide the user with a reason why the package is not available (build failed, RESTRICTED, BROKEN, EXPIRED, etc) 56 57 A similar process may also make sense for the MOVED file. 58 59 # Add a mechanism to allow a user to know when a package no longer exists in the remote repos 60 61 pkg upgrade could grow a way to complain about packages it cannot upgrade because they no longer exist in the repo. When combined with the 'failed packages' list, and possibly the MOVED list, this could provide a reliable mechanism for the user to know that the package they have no longer exists in the ports tree. 62 63 # Add a periodic script for reporting pkg check -d output 64 65 # add a pkg wrongabi alias if possible in pkg.conf 66 67 This would allow after a major upgrade to check what packages are still on the old ABI 68 69 # Add a FreeBSD only check on FreeBSD version (which should also be added to packages) 70 71 This would allow to only install packages for the right ABI and only if the binary was built on an 72 OS version which is lower or equal that the one we are running on. 73 74 # new groupinstall concept 75 76 Add some new ucl files in the ports tree do define groups of files instead of meta ports 77 78 # Test suite 79 80 * Tests for pkg audit 81 * Improve tests for triggers 82 83 # pkg reposync/repomerge 84 85 Currently there is a race easily obtain when you pkg install blah and the remote repository 86 is synced. 87 The idea of reposync/repomerge is to address this issue by having a command that takes two 88 repository directories, one being the directory served by the webserver (named www below) and 89 the other being the newly created repository (named new below) and does: 90 91 * Open www/packagesite and rm all packages in www/All/ that aren't in it (this clean pkgs-1) 92 * Copy all new/All/* to www/All/ 93 * Copy atomically meta.conf/meta.XXX/packagesite.XXX from new/ to www/ 94 95 This leaves the new/ directory with the new packagesite, the new pkgs and the 96 pkgs-1 from the previous run. 97 98 # Alternatives 99 100 Alternatives are install in /usr/local/share/alternatives 101 For a given alternative X we have a subdirectory alternatives/X 102 Then a files with the various alternatives names for each alternative 103 alternatives/php/7.2 104 alternatives/php/7.4 105 106 A special alternatives is provided by the repo based on DEFAULT\_VERSION when 107 the alternative is version based, or a specific KNOBS when not based on version 108 this add a new file (symlink) to the package alternatives/php/default -> 7.2 109 110 The alternative file is a ucl file, with a list of symlinks: 111 112 Description: "yeah baby" 113 symlinks { 114 file1: target1 115 file2: target2 116 file3: target3 117 } 118 exec: { type = lua; script: ... }, 119 exec: { type = shell; script: ...} 120 121 The exec part is an optional script which could be use to regenerate caches if needed for example 122 123 In case pkg 2 pkg have the default symlink then the regular conflict mechanism would be used 124 By default pkg priorize user defined default before package defined repo 125 if user defined repo to not exists then it switches to the global defaut if in non interactive 126 or as the user if in interractives mode 127 128 # List of "broken builds" in pkg repo metadata 129 130 Would be nice if we could provide some notes to the repo metadata where for example 131 a builder car specify that some packages are broken and why, or failed to build and why 132 133 # pipe long message to $PAGER 134 135 It would be nice to add a way to detect if pkg is running on a terminal and 136 plans to print long messages, if so, automatically pipes the message to $PAGER