Skip to content
This repository
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 332 lines (319 sloc) 11.385 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331
 - Coding standard:
 - Handle appropriate exceptions
 - Log all relevant events
 - Specify a public API (via __all___)
 - PEP 0008

Pylint:
 - enable pylint E0611,W0404
 - verify module level names (e.g. libpb/events)

Low Handing Fruit:
 - fine tune queue lengths
 - manual page
 - wiki page

Future release:
 - Speed up port_version()
 - Add options for either individually executing make targets or in baulk
 - Check spelling for all documentation
 - Increase level of logging
 - Move to the python 2.6 naming and styles (and make compatible with 3)
 - Implement proper recording of ports installation (i.e. when they fail)
 - Refactor:
   - Break ports into its own libraries
   - Try isolate system and ports dependent code
 - move DependHandler to using signals (for status changed)
 - support DESTDIR...
 - handle alternative dependencies
 - update @pkgdep lines
 - add `-x` (and `-X` recursive) to exclude ports
 - directly call pkg_delete when uninstalling port (install/pkginstall?)
 - rework DependHandlers to use sets, dictionaries
 - build-only dependencies:
   - uninstall after use
   - install from packages

0.1.9 - Milestone 9 (Sundry modules):
 - modules:
   - cache
   - cache/cachedb
   - env
 - Refine and condense code
 - Implement proper and complete logging (and comments)
 - Add all assertions
 - Logging infrastructure (for messages for user)
 - Rename logging files for ports based on their unique-name
 - manual page(s)
 - ensure only one instance of portbuilder builds per chroot

0.1.8 - Milestone 8 (Finish command line controller):
 - modules:
   - exit
   - monitor
 - Refine and condense code
 - Implement proper and complete logging (and comments)
 - Add all assertions
 - Get relative option parity with portupgrade
 - Improve logging settings (such as location, level)
 - index_builder:
   - Add option to direct file output (or just to stdout)
   - Add appropriate checks for duplicate port names...
   - Do we need to sort per category, overall, if at all?
   - Check for 100% compatibility
 - monitor:
   - Show information about failed ports
   - Split into separate modules
   - Stat:
     - Make options a class variable
   - Top:
     - Add option to:
       - Exit program
       - Change update rate
       - Filter viewed ports (i.e. only active and or pending...)
       - A help menu
     - Add some colour???
     - View output of port (via a window)
     - Mouse support
     - Improve output when rendering to small screens
     - Remove /[workers] from output
 - report on failures
 - pypkg:
   - Allow fuzzy port specification
   - Implement most of portupgrade
   - Handle passwords properly
   - Allow option for no-interactive
   - Add no cache option

0.1.7 - Milestone 7 (Finish Target Builders):
 - modules:
   - queue
   - target
 - Refine and condense code
 - Implement proper and complete logging (and comments)

0.1.6 - Milestone 6 (Finish Dependent Handling):
 - modules:
   - port/dependhandler
 - Refine and condense code
 - Implement proper and complete logging (and comments)
 - DependHandler:
   - Ensure _count is done properly
   - Handle depenancies with fetch_only
   - Fix check (with ref to usage)
   - DependHandler must handle the case when a dependency fails unresolved
   - Check for cyclic dependencies
   - _verify:
     - Add caching of dependencies (no need to check them multiple times)
   - Implement type specific checking (bin vs lib) [mimic ports]
   - Handle stale dependencies (with a dummy PortDepend)
   - Handle a port having failed and still satisfy its dependents
   - Add a concurrent implementation (and probably a cache of sorts)
   - When doing individual checks, cache as they can be duplicated
   - Check for conflicts (and handle)

0.1.5 - Milestone 5 (Finish basic ports infrastructure):
 - modules:
   - make
   - port/arch
   - port/arch/freebsd_ports
   - port/cache
   - port/port
 - Refine and condense code
 - Implement proper and complete logging (and comments)
 - Add all assertions
 - Find proper $HOME
 - CacheDB:
   - When user, synchronise db with master
   - Add --no-cache option for pypkg (the functionality)
   - Add fallback when bsddb not installed
 - env:
   - Set db dirs according to user (aka root->/var/db/pypkg)
 - Port:
   - Add logging of port targets
   - Handle pkg-message
   - Check need for status
   - Attributes:
     - Check for a need of PATCHFILES
     - ALWAYS_KEEP_DISTFILES
     - Extend attributes for NO_-
     - FORBIDDEN, BROKEN and IGNORE
     - ONLY_FOR_ARCHS and NOT_FOR_ARCHS
     - DEPRECIATION...
     - NO_BUILD option (and implement)
     - IS_INTERACTIVE
     - NO_CHECKSUM
     - Restrictions
     - etc
   - Handlers:
     - Provide output stream (as work in progress)
 - make:
   - Have logging of build commands (with archival)
   - Add a command prefix (such as for socksify?)
   - Add sudo support
   - Make to class
   - Fix the use of prefexing...

0.1.4 - Milestone 4 (Command line controller):
 - Create target to build INDEX
 - Port:
   - Add the describe method (same as the ports make version)
 - Create progress monitor type 2 (aka stat mode)
 - Implement build logging for the ports
 - Fix preparation for stages
 - Check all logging tags are correct
 - Use Port when refering to defined flags (i.e. INSTALL, BUILD)
 - Use MOVED for port.mk.status (fallback)
 - make port/mk to using pkg_* interface (vs direct file inspection)
 - make compatible with pkgng
 - display skipped ports (with toggle)
 - add -j options to control queue loads
 - create a clean_builder
 - clean ports before trying other depend methods

0.1.3 - Milestone 3 (Target Builders):
 * Finish call documentation
 * Move type() checks to isinstance
 * pypkg:
   * Add ability to update/install ports (basic)
   * Add package ability
   * Allow environment variables to be settable (like ports_dir)
   * Add fetch only option
   * Add -n option (only display commands, don't execute anything)
 * Port:
   * Getter for origin
   * Move targets to queue (not build directly)
   * Fix filtering (for dependencies) [actually remove, miss-placed]
   * Implement proper cleaning
   * Make install status to late initialise
   * Move internal references to external checks (install status)
   * Add clean target (and have a failed port clean itself...)
   * Use batch mode for all stages except config
   * Precleaning
   * Only clean port (don't do recursive cleaning)
   * Handles ports that do not exist
   * Move prepare/finalise to a private method?
   * Efficient version of pkg_version
   * Handler:
     * config:
       * Allow forcing of config options
     * fetch:
       * Add a cache for fetching
       * Check the -distfiles- and subdirs are correct
       * Add cache across ports (on a per file basis)
       * Handle fetching of the same source files (concurrency)
     * install:
       * Update port install status properly
       * Handle when a port is already installed
   * Separate package building
   * Add MAKE_JOBS flags
   * Support stalling of build (interactive)
  * DependHandler:
   * Allow constructor to initialise dependencies
   * Rename to be more descriptive
   * Add getters for dependencies and dependants (ports and/or field)
   * Do not do cyclic dependency allocation (or move to late)
 * queue:
   * Add installer queue
   * Handle stalling of a worker
   * Support loaded jobs
 * make:
   * Handle pipes properly
   * Add logging support (pipe redirection)
   * Condense functionality
   * Fix no opt command displaying
 * Converge common functionality into Monitor (such as start time)
 * Rename TargetBuilder to StageBuilder
 * Move fetch_builder to subclassed of StageBuilder
 * Create progress monitor for the build process (aka top mode)
   * add user interaction
 * Create ordering logic for building (and resolving dependents)
 * Remove make_target from global import
 * Fix PORTSDIR not having a trailing /
 * Rename all Popen return status to 'SUCCESS'
 * Cleanup the use of tools
 * Improve monitor interface, move to classes
 * Allow KeyboardInterrupt to terminate program
 * Move exit handling code to own module
 * Create proper statistical handling of data (with easy collection methods)
 * Implement proper system shutdown
   * Create interrupt handlers
   * Create exit handlers
 * signal based updates of builders and queues:
   * make top monitor use signals
 * fully implement setup (distutils) script (distutils/apiref)
 * procedures
 * improve port/mk.py
 * unset environ flags from make (gmake)
 * only reset port if it has progressed beyond DEPEND
 * spell check
 * s/ependen/ependen/g
 * Split port into its subcomponents:
   * Port
   * PortCache
   * DependHandler
   * System interface (and apply appropriate abstraction)
   * Develop proper API for the library
 * PortCache:
   * Minimise duplicate job requests
 * Fix pkg_version (when some data has corrupted)
 * Add pause and resume support
 * Add documentation FetchLock
 * Make sure ports configured before creating DependHandler
 * Use relative imports
 * Add recursive command:
   * config
   * fetch
   * install
   * package
 * StageBuilder:
   * Handle stage stalls
   * Support loaded jobs
 * Queues:
 * Ensure graceful handling of failed ports (does not appear to work)
 * Make config_builder API compatible with the other Builders?
 * Catch exceptions from callback (all callbacks)
 * Use port's stage_builder (than calling directly)
 * Extend port's stage_builder for non_blocking version
 * Add checks for already fetched files
 * Add labels for queues (active, queued, pending, failed)
 * Add failed queue
 * Add force config option
 * Prevent multiple fetches of the same file!!!
 * When segterm, make sure logging is done properly
 * profile (and make it easy to do so)
 * speed up port.mk.attr (reduce subcalls from make -V)
 * add package support (install from package)
 * create custom Popen class (without exceptions on bad fork)
 * Document all classes, methods, functions and (global|class) variables

0.1.2 - Milestone 2 (Dependent Handler):
 * Port:
   * Complete attribute tables and fixes
   * Proper dependent handling (mimic what ports does)
     * Create class for depends
     * Late allocation (with a check that port is config)
   * Create handlers for various make targets (stages):
     * config
       * Reget attr after config
     * fetch
     * build
     * install
       * Notify all dependants of our success
   * Refactor startup code for stages
     * All previous stages build (without failure)
     * Handle stage depends
   * Refactor cleanup code for stages
 * ports:
   * Make ports_dir settable from the env
 * make:
   * Add handler for environment variables
   * Generic handler for executing make targets
 * python based setup/build script
 * FreeBSD port
 * add `-a` options (aka `pkg_info -aoq`)
 * describe top interface

0.1.1 - Milestone 1 (Basic Port infrastructure):
 * Expand documentation for ports library
 * Add exception handling
 * Add logging
 * Add queuing logic
   * Filter multiple items (prevent duplicates?)
   * Handle different queue items (build, info)
 * Add a Port's cache (memory)
 * Port:
   * Add generic method for getting arbitrary items of information
   * Add port status
   * Add a port filter (for resolving information and calling dependants to be
     constructed)
 * Add a dependency resolver
 * queue: Provide defaults for queue sizes
Something went wrong with that request. Please try again.