Code Monkey home page Code Monkey logo

pkgchkxx's Introduction

What's this

pkgchkxx and pkgrrxx are complete rewrites of pkgsrc pkg_chk and pkg_rolling-replace respectively. These are functionally compatible but run faster:

  • pkgrrxx -u runs roughly N times faster than pkg_rolling-replace -u where N is the number of CPUs you have.
  • pkgrrxx -sn runs 14.8x faster than pkg_rolling-replace -sn.
  • pkgchkxx -aur -b runs 11x faster than pkg_chk -aur -b when pkg_summary(5) file is available.
  • pkgchkxx -aur -s runs 3x faster than pkg_chk -aur -s.
  • pkgchkxx -l runs 185x faster than pkg_chk -l when pkg_summary(5) file is available, and runs 24.8x faster when it's unavailable (and needs to scan archives).
  • pkgchkxx -p runs 1.3x faster than pkg_chk -p.
  • pkgchkxx -g runs 1.6x faster than pkg_chk -g.
  • pkgchkxx -N runs 22x faster than pkg_chk -N.

This implementation achieves better performance by using a faster language, better algorithms, and making use of more than a single CPU whenever possible. The last one is the primary reason why a complete rewrite was needed: doing it in POSIX shell was simply not feasible.

External dependencies

  • A C++17 compiler. For GCC it has to be GCC 8 or later.
  • GNU Make, only needed for building the programs.
  • pkg_install, obviously.
  • pkg-config for determining what pkg_chk tags to predefine. This is a run-time dependency.
  • bzip2 for reading bzip2-compressed pkg_summary(5) files.
  • zlib for reading gzip-compressed pkg_summary(5) files.
  • libfetch for fetching pkg_summary(5) files from a remote host.

Release notes

See NEWS.

Building and installation

% ./configure
% gmake
% sudo gmake install

You may need to give ./configure the path to your compiler if the system compiler doesn't support C++17:

% ./configure CXX=/path/to/cxx

Hacking

See HACKING.

License

BSD-2-Clause AND BSD-3-Clause. See COPYING.

Author

The NetBSD Foundation

pkgchkxx's People

Contributors

bsiegert avatar depressed-pho avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

bsiegert

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.