./devel/ode, Library for the simulation of Rigid Body Dynamics

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 0.16.5, Package name: ode-0.16.5, Maintainer: pkgsrc-users

ODE is a free, industrial quality library for simulating articulated
rigid body dynamics - for example ground vehicles, legged creatures,
and moving objects in VR environments. It is fast, flexible, robust
and platform independent, with advanced joints, contact with friction,
and built-in collision detection.


Required to run:
[graphics/MesaLib] [graphics/glu]

Required to build:
[pkgtools/x11-links] [x11/xcb-proto] [x11/fixesproto4] [pkgtools/cwrappers] [x11/xorgproto]

Master sites:

Filesize: 2567.529 KB

Version history: (Expand)


CVS history: (Expand)


   2025-03-11 08:52:38 by Thomas Klausner | Files touched by this commit (3) | Package updated
Log message:
ode: update to 0.16.5.

Update provided by Anthony Mallet on pkgsrc-users.

        * dJointAddPUTorques() was added to replace orphaned declaration of
          dJointAddPUTorque()
        * Fixed wrong face index being returned in convex-trimesh libCCD
          collision check routine.
        * Fixed use of potentially outdated AABBs in GIIMPACT cylinder-trimesh
          collision check routine.
        * dGeomBoxPointDepth implementation was fixed for locations outside of
          the box.
        * A fault on method call from within Joint class destructor in Python
          bindings fixed (by Tyler Limkemann)
        * A threaded job data race fixed on job release (issue #70).
        * GIMPACT math macros were changed to use standard floating point math
          rather than custom "optimized" implementations.
        * libCCD configuration description strings have been added for
          use with dGetConfiguration() and dCheckConfiguration().
        * dWorldAttachQuickStepDynamicIterationStatisticsSink public function
          was added to allow dynamic step count adjustment monitoring for
          world instances.
        * Dynamic step count adjustment was implemented for dWorldQuickStep
          with dWorldSetQuickStepDynamicIterationParameters and
          dWorldGetQuickStepDynamicIterationParameters new API functions
          to control the feature.
        * x86 targets have been changed to generate SSE2 code for calculations
          by default with possibility to explicitly configure back for FPU.
        * An incorrect optimization to Jacobian Copy building code from #1938
          that resulted in corrupt data in multi-threaded execution mode was
          fixed.
        * CMake support for project file generation has been added.
        * dxHashSpace::collide() has been changed to fault host program
          if scene gets too large and causes integer overflow.
        * Introduction of cooperative algorithms API.
          L*D*LT cooperative factorization and linear equation system
          cooperative solving have been implemented.
        * Project generation options have been changed to have built-in
          multithreaded threading implementation enabled by default.
        * dWorldStep threaded implementation has been extended to the final
          steps of constraint force applications and body position updates
          after the LCP solving. Note that body callbacks (if set) may be
          called from multiple threads if threaded execution is enabled.
        * OU atomicord32 type has been fixed to be unsigned on all supported
          platforms.
        * dGeomTriMeshDataPreprocess2() public function has been added to
          replace dGeomTriMeshDataPreprocess(). Face angles pre-computation
          for triangle meshes has been implemented.
        * dGeomTriMeshDataGetBuff and dGeomTriMeshDataSetBuff have been marked
          deprecated and their functionality implemented via
          dGeomTriMeshDataGet and dGeomTriMeshDataSet. Extra function variant
          dGeomTriMeshDataGet2() has been added to allow returning data size.
        * The implementation of OPCODE TriMesh data pre-processing
          (dGeomTriMeshDataPreprocess()) has been optimized to only contain
          a sort and a single pass over edges (used to be a sort and O(N^2)).
        * dGeomTriMeshDataPreprocess() public function has been changed to
          return a boolean status (it can fail in low memory conditions).
        * The correct handling of dJOINT_REVERSE mode for AngularMotor Joint
          implemented (issue #37).
        * A bug fixed with HashSpace calling big boxes collision twice
          (both straight and reverse geometries order) since revision #1831.
        * dJointSetHinge2Axes public function has been added and
          dJointSetHinge2Axis1/2 have been marked deprecated due to being
          unsafe.
        * ICE Container class allocation strategy fixed to avoid reserving
          excess memory with large collections.
        * dSafeNormalize3 and dSafeNormalize4 functions changed to leave the
          parameter intact instead of replacing it with the X-axis unit in case
          of fault.
        * A function to create a self-threaded threading implementation object
          has been moved back to public headers as there could be a use for it
          while running several worlds in parallel threads.
        * Hinge2 joint corected to avoid faulting asserts when the axes get
          temporarily invalid during assignments (suggested by David Mansolino)
        * An invalid memory access fixed in dxSAPSpace::BoxPruning() in case
          if there were NaN values in AABBs to be sorted.
        * Unexpected joint mode assignment (instead of comparison) fixed within
          an dUASSERT in dJointSetTransmissionAxis2() of transmission joint
        * Convex-Trimesh collider added (libccd+GIMPACT only)(by Piotr Piastucki)
        * dCreateConvex() and dGeomSetConvex() public APIs changed to expect
          their parameter arrays as const pointers
        * OPCODE mesh colliders' input coordinates have been offset to
          mesh-relative frames to decrease potential computational errors
          (suggested by luckytrashsc2@g***l.com)
        * Implemented change to return highest depth contacts subset for GIMPACT
          in cases if contacts count exceeds requested maximum (as suggested in
          the issue #36 by Piotr Piastucki)
        * Added support for using libccd from the system (if found via
          pkg-config)
        * Floating point division by zero in capsule-ray collision routine
          in case if the ray axis was parallel the cylinder and the ray started
          from within it fixed (issue #26)
        * Threading support has been extended to complete implementation
          of QuickStep
        * Added dJointSetDBallDistance
        * Built-in threading implementation compilation fixed for OSX
          (clock_gettime() is missing from the system - reported by Bram)
        * Declarations of dWorld[Get/Set]AutoDisableLinearAverageThreshold and
          dWorld[Get/Set]AutoDisableAngularAverageThreshold have been removed
          from public headers (were orphaned since rev.1052)
        * Added dODE_VERSION macro to public headers (issue #24).
   2021-10-26 12:20:11 by Nia Alarie | Files touched by this commit (3016)
Log message:
archivers: Replace RMD160 checksums with BLAKE2s checksums

All checksums have been double-checked against existing RMD160 and
SHA512 hashes

Could not be committed due to merge conflict:
devel/py-traitlets/distinfo

The following distfiles were unfetchable (note: some may be only fetched
conditionally):

./devel/pvs/distinfo pvs-3.2-solaris.tgz
./devel/eclipse/distinfo eclipse-sourceBuild-srcIncluded-3.0.1.zip
   2021-10-07 15:44:44 by Nia Alarie | Files touched by this commit (3017)
Log message:
devel: Remove SHA1 hashes for distfiles
   2020-01-26 18:32:28 by Roland Illig | Files touched by this commit (981)
Log message:
all: migrate homepages from http to https

pkglint -r --network --only "migrate"

As a side-effect of migrating the homepages, pkglint also fixed a few
indentations in unrelated lines. These and the new homepages have been
checked manually.
   2016-07-24 03:28:37 by Kamil Rytarowski | Files touched by this commit (7) | Package updated
Log message:
Upgrade from ode-0.5 to ode-0.13

pkgsrc changes:
 - set license
 - revamp build definitions
 - revamp blk3.mk and bump API_DEPENDS to 0.13 (recent software depends on new \ 
ode-config)
 - drop all local patches as not needed

upstream changes:
Changes for 0.13

New features:

    Stable, implicit gyroscopic forces (patch #185 by Joseph Cooper). Bodies \ 
with gyroscopic forces won't gain energy anymore.
    New joint: transmission joint (patch #182 by Dimitris Papavasiliou).
    Contacts now have rolling friction (patch #184 by Joseph Cooper).
    Removed the need for defining dSINGLE/dDOUBLE; this is stored now in the \ 
generated ode/precision.h header.
    New joint: Double Ball (AKA "distance joint").
    New joint: Double Hinge.
    Threaded execution support interface added. Optional built-in threading \ 
implementation added. Internal threading implementation is excluded by default \ 
and to be used, it must be enabled with configure/premake: \ 
--disable-threading-intf (--no-threading-intf for Windows/Premake). This allows \ 
disabling threading interface support.

Bug fixes

    Joint feedback forces application fixed in QuickStep implementation
    Bug #89 by Luc: (dJointAddSliderForce() adds a zero force when the parent \ 
body is NULL)
    Bug #88 by Luc: heightfield data assigned to a wrong field in \ 
dGeomHeightfieldSetHeightfieldData
    Fixed cylinder AABB computation.
    Removed ALLOCA calls from dHashSpace; it should not depend on stack size \ 
limits anymore.
    Bugs in AMotor joint (patch #181)
    Bugs in PU joint (patch #186)
    Fixed issue with friction and non-friction constraints being intermixed \ 
during constraints random reordering in QuickStep.
    Fixed matrix inversion bug (patch #183).
    Fixed issue with some kinds of joints (Ball, DBall, DHinge, Fixed) might \ 
overwrite world ERP value with their custom ERP during getInfo2() call and that \ 
inappropriate value would then be passed to subsequent joints in solver instead \ 
of world ERP.
    Fixed issues reported in patches #151 and #22 (collisions with SAPSpace and \ 
QuadTreeSpace might not work because geometries list was misused in them).
    Fixed IsPointInPolygon in convex.cpp (patch #160 by Janis Rucis)
    Fixed zero comparisons in OPCODE to use relative error instead of absolute \ 
epsilon value (found by Bill Sellers)
    Fixed dhinge's last constraint to properly handle rotations.
    Fixed plane2d joint: uninitialized variables (reported by Dimitris Papavasiliou)
    Bug #80 by Georg Martius: better handling of capsule-box with deep penetrations.
    Fixed zero-mu issues: now either mu or mu2 can be set to zero.

Other changes

    Public headers cleaned to cause less pollution of typedefs and macros.

Changes for 0.12

    Added python bindings, contributed by Gideon Klompje.
    Integrated libccd from Daniel Fiser, provides new colliders based on GJK, \ 
EPA and MPR. Now cylinders can collide with cylinders!
    New functions have been added:
        dWorldUseSharedWorkingMemory()
        dWorldCleanupWorkingMemory()
        dWorldSetStepMemoryReservationPolicy()
        dWorldSetStepMemoryManager()
        dGeomLowLevelControl(): change/query OPCODE trimesh-sphere contact \ 
merging behavior at runtime.
        dGeomGetRelPointPos() (patch #2991622)
        dGeomGetPosRelPoint() (patch #2991622)
        dGeomVectorToWorld() (patch #2991622)
        dGeomVectorFromWorld() (patch #2991622)
    dWorldStepFast1 API removed along with dWorld[Get/Set]AutoEnableDepthSF1
    dWorldStep() and dWorldQuickStep() have been changed to return boolean \ 
success status, and avoid allocation on stack.
    dInitODE2() changed to automatically call \ 
AllocateODEDataForThread(dAllocateFlagBasicData) after library initialization.
    Made sure neither dSINGLE or dDOUBLE is defined by default; the user should \ 
always explicitly specify the precision.
    Fixed a bug in dGeomCopyOffsetRotation().
    Macros changed to static inline functions in odemath.h and related files.
    Improvement for trimesh-plane collision.
    odecpp classes changed to be inheritable and easily expandable
    QuadTreeSpace implementation corrected to avoid object-block relation \ 
ambiguity due to numeric errors.
    Fixed bug affecting disabled joints and dWorldStep.
    Added extern "C" wrapper to dWorldExportDIF().
    Fixed bug #2937076: don't try to build demos if drawstuff is disabled.
    Applied patch #2931174 to make demos work for recent MacOS.
    Applied patch #2931177 to fix the demos' framerate on X11.
    Applied patch #2995450 to generate up to four contacts for box-plane \ 
collision test and fix contact depths.
    Applied patch #3030783 to fix drawstuff dimensions being ignored in OSX GLUT \ 
port.
    Applied patch #3429454: fix compilation on some platforms.
    Heightfield zone boundaries calculation code fixed to also consider whole \ 
next cell after the AABB if the AABB ends exactly at the cell boundary.
    New demo: demo_tracks.
    Fixed a box-capsule bug: more reasonable normal for deep penetrations.
    Many internal fixes to world stepping and collision detection code.

Changes for 0.11.1

    Made the new trimesh collider the default.
    Added a "-texturepath" option to drawstuff.
    Heightfield rotation fixed to avoid NaNs while rotating infinite MIN/MAX heights.
    Incorrect parameter order fixed on contact merging in Sphere-Trimesh collisions.
    Fixed bug #2685170: use the C99 __func__ instead of __FUNCTION__ when a C99 \ 
implementation is available.
    Remove unused code in demo_joints.cpp.
    Fix bug in collision categories in demo_jointPU.
    Added a possibility to initialize/close ODE multiple times recursively has \ 
been added. Also, now a call to dSpaceSetManualCleanup() is required for each \ 
space right after creation if ODE has been initialized in thread data manual \ 
cleanup mode.
    Thread local data has been cleaned up from OPCODE and OdeTls.
    New house of cards demo, which stresses the friction handling stability.

Changes for 0.11

This release contains many joint-related bug fixes, and some new features like \ 
kinematic bodies, better convex-convex collision detection and some extra \ 
functions.

    Fix bug: Fix problem when attaching no body to a joint.
    Fix problem with dJointGetUniversalAngle2 when the joint is attached to only \ 
a body 2. The sign was inverted.
    Fix bug reported by Tilman: dxJointPU::getInfo1 was setting twice the limit \ 
of limot1 to zero and not limot2.
    Fixed a bug in dSpaceCollide2: if both geoms are not in spaces they would \ 
not have valid AABBs.
    Swapped geometries returned in contacts for OPCODE Trimesh-Plane collisions \ 
as they were returned in unnatural order being different from that in GIMPACT
    Fixed an inverted sign problem on positions of joints PU and PR.
    Fix bug: when a slider, piston, pu or pr joint had only one body attached to \ 
position 2, dJointAttach(jId, 0, bId). The body was not push in the right \ 
direction to move back between the limits.
    Fix bug in dJointGetPUAxis2: the axis was not multiplied with the the \ 
rotation matrix of the good body.
    Fix bug if there is only one body on the PU joint the axis returned was not \ 
the right one.
    New functions: dJointSetUniversalAxis1Offset and dJointSetUniversalAxis2Offset.
    New functions: dJointEnable, dJointDisable, dJointIsEnabled (patch #2454764).
    New functions: dGeomTriMeshSetTriMergeCallback/dGeomTriMeshGetTriMergeCallback.
    New function: void dJointSetPUAnchorOffset (deprecating dJointSetPUAnchorDelta).
    New functions: dJointGetPRAngle and dJointGetPRAngleRate.
    New functions: dBodyGetGyroscopicMode and dBodySetGyroscopicMode (patch \ 
#2019242).
    Applied patch #2538046: Heightfield AABB bounds patch.
    Applied patch #2381592, which adds support for Kinematic Bodies.
    Applied a patch to make GIMPACT trimesh-ray collisions to be consistent with \ 
those in OPCODE (bug #2214623).
    Applied a patch to make side1, side2 fields of contact structure be always \ 
initialized.
    Applied patch #2158425: This patch enable GIMPACT to work on 64-bit machine.
    Applied patch #2080674: Improved dBodySetRotation; now exact rotation \ 
matrices are preserved until the next simulation step.
    Enable the motor on the rotoide part of the PR joint.
    Added Blender script to create ODE convex geoms under tools.
    Convex-Convex collision detection code is finally (nearly) stable.

Changes for 0.10.1

This is a bugfix release, so you shouldn't expect anything to stop working from 0.10.

    New function: dJointSetPistonAnchorOffset
    Add new function dJointSetHingeAxisDelta
    Fix problem with dJointGetPistonPosition and dJointGetPistonPositionRate \ 
when the joint is attached to only a body 2. The sign was inversed.
    Update the slider joint to have the same behavior as the other joint when \ 
there is only a body2 attached to it.
    Rename the new function dJointSetHingeAxisDelta to dJointSetHingeAxisOffset. \ 
This will remove confusion with the old function dJointSetHingeAnchorDelta.
    Bug fix: Max Correcting Vel behavior is now the same as before 0.10.

Changes for 0.10

    New functions: dInitODE2(), dAllocateODEDataForThread(), \ 
dCleanupODEAllDataForThread(). This adds support for ability to run collision \ 
detection from multiple threads for separate spaces.
    New functions: dCheckConfiguration(), dGetConfiguration(), to test how ODE \ 
was compiled.
    New function: dJointGetNumBodies (patch #1901550).
    New function: dSpaceGetClass (patch #1901637).
    New function: dSetColliderOverride(), to register custom collision handling \ 
functions.
    Added damping and MaxAngularVel() functions.
    Applied patch #1335202: Contact Joint Motion (see demo_motion.cpp).
    Applied patch #1851394: support for GIMPACT with double precision, dCollide fix.
    Applied patch #1813079 (moved callback).
    Added possibility to collide a space of lower sublevel as a geometry against \ 
another space of a higher level with dSpaceCollide2. \ 
dSpaceSetSublevel/dSpaceGetSublevel are used for sublevel assignment/retrieval.
    Fixed a bug in dJointXXXGetInfo. The value in limot.limit was not always \ 
updated. (Ex: If hi and lo limit were changed).
    New Joint: Prismatic Universal (patch #1828454).
    New Joint: Piston, with demo.
    Disabled building shared library by default with autotools. ODE shouldn't be \ 
installed as a system library.
    Fixed drawstuff build issues on OSX.
    Removed release and debug flags for configure.in: CPPFLAGS, CFLAGS, CXXFLAGS \ 
should be set by the user to their liking, respecting autotools policies.
    Added 'Sweep and Prune' collision space.
    Optimizations, many bug fixes, and code cleanup.

Changes from 0.8 to 0.9

    New Feature: CONTACTS_UNIMPORTANT flag added for dCollide() to allow \ 
canceling any contact improvements and return any contacts found as soon as \ 
possible
    New feature: Add erp/cfm parameters to fixed and ball joint. SF PATCH 1478244
    Assert on zero normalizations, add dSafeNormalize. Added boolean result for \ 
dNormalize3() and dNormalize4() so that normalization success could be checked
    SF Patch 1808007: fix gimpact compiler warning
    Apply SF patch 1800579: dGeomTriMeshSetData does not work with GIMPACT
    Fix: heightfield collision could return less contacts than was possible
    Fix: the deepest contact might be not selected if there was a lack of \ 
contact slots in trimesh-trimesh and trimesh-box cases (function exited \ 
immediately and did not check for possible contact coincidences).
    Improvement: optimizations for GIMPACT versions of trimesh-capsule, \ 
trimesh-trimesh, trimesh-plane, trimesh-sphere
    Improvement: dCollideConvexPlane optimized
    Fix: cylinder-box collision did not respect requested contact count limit
    Fix SF issue 1729096 by adding dMassSetTrimeshTotal
    Apply SF patch 1685107: Enforce 1 contact request
    Apply SF Patch 1697014: Update JointPR code
    Catch SF BUG 1621938: gimpact only does stride 12.
    patch 1769851 by Jon Watte: recalc aabb when new setting new data
    Added Richard Barrington's model loader for XNA (to be used with ODE.NET)
    1586733 collision_trimesh_trimesh.cpp OPCODE fix Added Francisco Leon's \ 
alternate trimesh-trimesh collider.
    1691402 Heighfield performance patch patch
    1696933 Fix bug in dWorldExportDIF when joint in "limbo"
    Renamed "tests" to "demos" and split out unit test \ 
project. Updated premake scripts and Visual Studio files; automake files still \ 
need to be updated.
    Make building demos optional. SF patch 1650563
    lib64 fixes, SF patch 1646598
    Warn against using double precision with gimpact
    Many more bug fixes and optimizations.

Changes from 0.7 to 0.8

    New Rotoide - Prismatic Joint
    Optimisation when dGYROSCOPIC is disabled (default)
    dJointGetUniversalAngles to efficiently get both angles at once.

Changes from 0.6 to 0.7

    New heightfield primitive for terrains.
    Trimesh-Plane collision.
    Ray-Cylinder collision.
    Integration of the plane-2d joint.
    Improved support for convex hulls.
    Fix for joint limit handling.
    Half-space optimisation for axis aligned planes.

Changes from 0.5 to 0.6

    Added flat-capped cylinders.
    CCylinder has been renamed as Capsule.
    Added support for geom offsets.
    Improved stepping function (dWorldQuickStep)
    Much improved support for trimesh collision shapes
    Added support for 64-bit systems
    Started support for convex hulls

    New and improved build system
    Lots of bug fixes, stability, and performance improvements

Geom Offset Overview

Geom offsets allow geom objects to be offset from a body's position. This is \ 
useful for cases where an object has an offset centre of mass, or is made up out \ 
of several geoms each with their own local position. Native support for geom \ 
offsets means that the geomTransform container is now obselete.

The real advantage over geomTransform is that there is a much easier interface \ 
for setting, getting, and modifying a geom's offset from its body. The \ 
elimination of geomTransform simplifies callbacks which no longer have to \ 
special case that geom class type. In terms of performance, the new code has a \ 
negligible performance difference and a memory improvement compared to using a \ 
geomTransform.
Geom Offset and Bodies

An offset only makes sense for geoms which are connected to bodies. It is an \ 
error to attempt to set an offset for a geom which is not connected to a body. \ 
When a geom is disconnected from a body, any offset will be automatically \ 
eliminated. Thus, the possible states a geom can be in are:

    Geom
    Geom on body
    Geom on body, with an offset

To create an offset, just call on of the geomSetOffset functions. The offset \ 
will be automatically created if it does not yet exist. Geom offsets are \ 
normally set by specifying the offset in local coordinates. An extra set of \ 
functions are provided to allow an offset to be determined by providing world \ 
coordinates and subtracting them from the current body position. These second \ 
set of functions, geomSetOffsetWorldPosition(),etc, allow the user to \ 
essentially say "keep the body where it is, and move its geom to this \ 
position in the world".
Geom Offset API

This is defined in the doxygen documentation.
Geom Offset affect on existing API

The following functions have been updated such that they transparently work with \ 
offsets.

   void dGeomSetPosition (dGeomID, dReal x, dReal y, dReal z)
   void dGeomSetRotation (dGeomID, const dMatrix3 R)
   void dGeomSetQuaternion (dGeomID, const dQuaternion)
   const dReal * dGeomGetPosition (dGeomID)
   const dReal * dGeomGetRotation (dGeomID)
   void dGeomGetQuaternion (dGeomID, dQuaternion result)
   void dGeomGetAABB (dGeomID, dReal aabb[6])

The functions that get a geom's position will return its final position in world \ 
coordinates. If a geom is offset, it is no longer true that \ 
dGeomGetPosition()==dBodyGetPosition(). Instead, each will return its own world \ 
position, with the geom being offset from the body.

The functions that set a geom's position will move the body to the position such \ 
that the geom will have the position passed in. So if the geom has a positional \ 
offset of (0,0,1), and we call dGeomSetPosition(g,10,10,10), the end result will \ 
be the body's position being set to (10,10,9). As such, either dGeomSetPosition \ 
or dBodySetPosition can be used, depending on which is more convenient. The \ 
other position is automatically updated.
Geom Offset and geomTransform

GeomTransforms are still supported, and all existing code transparently works. \ 
When writing new code, however, it is far easier to work with geoms and offsets.

The change eliminates a large amount of special casing needed to do when working \ 
with geomTransforms. Setting an offset is trivial, and does not require \ 
inserting or removing new GeomTransforms from spaces. There is no need to \ 
special case getting an offset geom's world position, or setting an offset \ 
geom's world position.

It is especially useful in the collide callback. The old way required getting \ 
the object as the real geom (but without being able to easily grab its \ 
Transform, or even its body!), or as its Transform (forcing special casing code \ 
to extract the real geom in that case).
   2015-11-03 04:29:40 by Alistair G. Crooks | Files touched by this commit (1995)
Log message:
Add SHA512 digests for distfiles for devel category

Issues found with existing distfiles:
	distfiles/eclipse-sourceBuild-srcIncluded-3.0.1.zip
	distfiles/fortran-utils-1.1.tar.gz
	distfiles/ivykis-0.39.tar.gz
	distfiles/enum-1.11.tar.gz
	distfiles/pvs-3.2-libraries.tgz
	distfiles/pvs-3.2-linux.tgz
	distfiles/pvs-3.2-solaris.tgz
	distfiles/pvs-3.2-system.tgz
No changes made to these distinfo files.

Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden).  All existing
SHA1 digests retained for now as an audit trail.
   2012-10-31 12:19:55 by Aleksej Saushev | Files touched by this commit (1460)
Log message:
Drop superfluous PKG_DESTDIR_SUPPORT, "user-destdir" is default these days.
   2012-05-07 03:54:16 by David A. Holland | Files touched by this commit (473)
Log message:
Set BUILDLINK_ABI_DEPENDS correctly (with +=, not ?=)
It turns out there were a lot of these.