ros-infrastructure / buildfarm Goto Github PK
View Code? Open in Web Editor NEWBuild scripts and notes for catkin debian build pipeline.
Build scripts and notes for catkin debian build pipeline.
Otherwise we can't sync the repos effectively.
both source and binary
So that we know what's not building at all easily.
Create Debian packages for all PIP stuff. Update doc to reflect that change and send announcement how to update / clean up.
They are only in the building repo at the moment.
Create prerelease jobs.
We should start doing this in the future. Not just the repo.
Output below. We should make scripts which block and wait for the lock, or block on an outer lock.
'''
Possibly make the speedy one, just resave after doing system dependency installations.
While the debbuilds and prereleases are going to want strict dependencies beforehand to make sure there's not missing dependencies declared.
postfix is required for dput and is misconfiguring
Nathan gave me this invocation
export DEBIAN_FRONTEND=noninteractive ; apt-get --option Dpkg::Options::=--force-confold -q -y --force-yes
Right now if the distro file removes an entry, the job will persist on jenkins despite it having been delisted.
This should probably get a html view too.
If called while building it causes the rebuild of anything already building. And potentially one stage downstream if it doesn't do the dependency blocking in time.
It's probably the asterisks. This happens at the end of the build of the ros stack
cmd = "/usr/bin/reprepro -b /var/www/repos/building -T deb -V removefilter lucid "Package (% ros-* ), Architecture (== amd64 ), Depends (% ros-fuerte-ros )" "
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('50.28.27.175', username='rosbuild')
stdin, stdout, stderr = ssh.exec_command(cmd)
print "Invalidation results:", stdout.readlines()
ssh.close()
I think only wet invalidates at the moment.
In the debbuilds. If the sourcedebs are reuploaded with the same filename the transparent proxy provides the old copy causing hash mismatches.
+ git clone git://github.com/willowgarage/catkin-debs.git
Initialized empty Git repository in /home/rosbuild/hudson/workspace/ros-fuerte-genpy_binarydeb_lucid_i386/catkin-debs/.git/
+ sudo /home/rosbuild/hudson/workspace/ros-fuerte-genpy_binarydeb_lucid_i386/catkin-debs/scripts/jenkins/apt_env/setup_apt_root.py lucid i386 /var/cache/pbuilder-fuerte-lucid-i386/apt-conf-0 --local-conf-dir /home/rosbuild/hudson/workspace/ros-fuerte-genpy_binarydeb_lucid_i386
+ sudo /home/rosbuild/hudson/workspace/ros-fuerte-genpy_binarydeb_lucid_i386/catkin-debs/scripts/jenkins/apt_env/assert_package_dependencies_present.py /var/cache/pbuilder-fuerte-lucid-i386/apt-conf-0 /home/rosbuild/hudson/workspace/ros-fuerte-genpy_binarydeb_lucid_i386/apt.conf ros-fuerte-genpy -u
Reading package lists...
Building dependency tree...
Need to get 52.5kB of source archives.
Get:1 http://50.28.27.175/repos/building/ lucid/main ros-fuerte-genpy 0.2.3-0lucid (dsc) [896B]
Get:2 http://50.28.27.175/repos/building/ lucid/main ros-fuerte-genpy 0.2.3-0lucid (tar) [49.8kB]
Get:3 http://50.28.27.175/repos/building/ lucid/main ros-fuerte-genpy 0.2.3-0lucid (diff) [1814B]
Failed to fetch http://50.28.27.175/repos/building/pool/main/r/ros-fuerte-genpy/ros-fuerte-genpy_0.2.3-0lucid.dsc Hash Sum mismatch
Failed to fetch http://50.28.27.175/repos/building/pool/main/r/ros-fuerte-genpy/ros-fuerte-genpy_0.2.3-0lucid.debian.tar.gz Hash Sum mismatch
Fetched 52.5kB in 0s (0B/s)
E: Failed to fetch some archives.
Exception processing package ros-fuerte-genpy: Command '['apt-get', 'source', 'ros-fuerte-genpy', '-c', '/home/rosbuild/hudson/workspace/ros-fuerte-genpy_binarydeb_lucid_i386/apt.conf']' returned non-zero exit status 100
Dependencies not satisfied for packages: ['ros-fuerte-genpy']
Notifying upstream projects of job completion
Finished: FAILURE
Using the script from #31
Replacing this job: http://build.willowgarage.com/job/rosinstall-fuerte/
/tmp/generate_wet_rosinstall.py $DISTRO -v ros-base -o /tmp/$DISTRO-ros-base.rosinstall
/tmp/generate_wet_rosinstall.py $DISTRO -v ros-full -o /tmp/$DISTRO-ros-full.rosinstall
scp /tmp/$DISTRO-ros-base.rosinstall wgs32:/var/www/www.ros.org/html/rosinstalls
scp /tmp/$DISTRO-ros-full.rosinstall wgs32:/var/www/www.ros.org/html/rosinstalls
create_meta_pkg from https://code.ros.org/svn/ros/stacks/ros_release/trunk/rosdeb/scripts/build_debs.py should do most of it.
Then it needs to be uploaded to the repo.
This will probably want to be a job on it's own just like the binary debs.
It can be suppressed here: http://www.mail-archive.com/[email protected]/msg13470.html
Or we can figure out why our code names for the standard distributions are not recognized.
I think the "newer-standards-version" should just be suppressed.
Our current sourcedeb builds all yield this. regardless of the distribution.
Now running lintian...
E: ros-groovy-catkin_0.4.5-0oneiric_source.changes: bad-distribution-in-changes-file oneiric
W: ros-groovy-catkin source: newer-standards-version 3.9.2 (current is 3.8.4)
Finished running lintian.
smtplib.SMTPRecipientsRefused: {'[email protected]': (554, '5.7.1 [email protected]: Relay access denied')}
I've added an exception catch for now so it won't break the build.
This will save us build time when things are turning slowly. And also make it more up to date when things are going faster.
It will also let us have a whitelist to let it list missing packages.
seems like default behavior should ensure that upstream is correctly tagged; one can easily push tags to upstream that don't correspond at all to the package versions. Seems like default behavior should be pretty strict (and perhaps assume that upstream is actually under the packager's control), but overridable. See also #1; possibility:
catkin_release.py git://gbp_repo upstream_tagname prefix-name-
which:
Right now things like invalidation happen in many places, and aggregating the console outputs is impractical. When debugging something it is very helpful to have a single place where all the logs go. I expect we might be able to find a Jenkins plugin for this.
So that we can roll back releases without requiring changing the tags. Also this will get rid of the need for regexp logic which is ticketed at https://github.com/willowgarage/catkin/issues/129
It fails inside pbuilder warning of a virtual package
This will be much quicker and simpler. And it has the same information already correlated and maintained by reprepro
Create Debian packages for all PIP stuff. Update doc to reflect that change and send announcement how to update / clean up.
This should not error, just not upload.
From testing it returns 254 for reuploading.
This will let us have green balls more often. Though we need to make sure the binary builds don't rebuild if triggered with the same version.
The job generation script outputs tons of information. An error about a wrong entry in the yaml file is just not visible to the user. Therefore the errors (and warnings?) should be summarized clearly at the end.
But use our shallow checkout instead of the github API. This usage of the github API is already broken.
Triggering all devel jobs might be convenient after releasing a bunch of upstream packages.
It just requires an if statement to pass the qemu chroot binaries as an argument if build arch is armel.
One distro/arch should be pulling from SCM. The others should be triggered as downstream projects if the first one suceeds.
This will alleviate the issue of forgetting to update the yaml file.
It seems to go through, but reports an error:
We have some trailing artifact and it's cding to the wrong directory
+ cd /tmp/buildd/ros-fuerte-object-recognition-core-0.3.5-0lucid-20120607-1654/ /tmp/buildd/ros-fuerte-object-recognition-linemod-0.2.0/
+ echo 1111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111
+ pwd
/tmp/buildd/ros-fuerte-object-recognition-core-0.3.5-0lucid-20120607-1654
+ ls
obj-x86_64-linux-gnu
+ echo 2222222222222222222222222222222222222222222222
2222222222222222222222222222222222222222222222
This appears to be a bug in the released code, but we should be more robust.
The job generation should contain the timestamp and the username when and by who the job was (re-)generated last time.
Otherwise as we remove packages or distros, we leave a lot of cruft around.
It fails inside pbuilder warning of a virtual package
If two packages are uploading at the same time, the changes can get uploaded by the other job's process incoming.
{{{
/var/www/repos/building/queue/oneiric/ros-fuerte-roscpp-core_0.2.5-0oneiric-20120612-0113-+0000_i386.deb': No such file or directory chmod: cannot access
/var/www/repos/building/queue/oneiric/ros-fuerte-roscpp-core_0.2.5-0oneiric-20120612-0113-+0000_i386.changes': No such file or directoryIt will crash them if it hits them at the wrong time. Previously we just poll waiting for the job to be idle before reconfiguring.
We need to upgrade pbuilder and the new pbuilder is more strict with signing.
This will allow use to not duplicate pbuilder create or pbuilder update logic across jobs.
i run catkin_release.py /path/to/local/source fuerte which looks inside stack.yaml which contains a github url where the packaging is which is then cloned
possible:
Useful when you commit and dev builds are generated, or when you release the ros stack and a lot of stacks are already in the queue.
Preferentially they should only detect changes to tags. I think that a refspec like this might do the trick, but I'll need to be able to do both positive and negative tests to confirm.
+refs/tags/debian/:refs/remotes/origin/
It's a little bit of a hack as you will end up with tags as branches in your local tree, but it just might work. And we clean up the git workspace so I hope it won't muck things up when repeatedly polling.
Also we should setup git triggering mechanisms: http://kohsuke.org/2011/12/01/polling-must-die-triggering-jenkins-builds-from-a-git-hook/
Add a post-install test where the just built package is installed. This catches errors where a released package becomes non-installable due to non-existing depends. Wrong depends or wrong entries in the global rosdep key database can easily lead to this. Erroneous build-depends should be caught during the build process.
This is a problem for RC releases.
Corner cases:
1.0.0-RC1 is older than 1.0.0
1.0.0-RC9 is older than 1.0.0-RC10
In general we need a version policy for this.
And the regex needs to agree
#TODO make this regex better...
regex_str = 'debian/%s_(\d+\.\d+\.\d+[^_]*)_.+'%package_name
This is in catkin_build.py
It would be great to move this outside the source dir. We ran into a problem with a * match in the install rule trying to install the debian subdirectory. Which constituted a recursive call as it was installing into the directory it was installing.
As long as the install rules don't include the debian subdir this is fine.
I watched debs be invalidated which had been build against what appeared to be incomplete trees. This could be an unnecessary dependency or a retriggered build too.
{{{
package : fuerte| lucid_amd64| lucid_i386| oneiric_amd64| oneiric_i386| precise_amd64| precise_i386|
ros-fuerte-actionlib : 1.8.6 | 1.8.6-0luci> 1.8.6-0luc> 1.8.6-0oneiri> 1.8.6-0oneir> 1.8.6-0precis> 1.8.6-0preci>
ros-fuerte-catkin : 0.4.4 | 0.4.4-0luci> 0.4.4-0luc> 0.4.4-0oneiri> 0.4.4-0oneir> 0.4.4-0precis> 0.4.4-0preci>
ros-fuerte-common-msgs : 1.8.7 | 1.8.7-0luci> 1.8.7-0luc> 1.8.7-0oneiri> 1.8.7-0oneir> 1.8.7-0precis> 1.8.7-0preci>
ros-fuerte-ecto : 0.4.0 | 0.4.0-0luci> 0.4.0-0luc> 0.4.0-0oneiri> 0.4.0-0oneir> 0.4.0-0precis> 0.4.0-0preci>
ros-fuerte-ecto-image-pipeline : 0.4.1 | 0.4.1-1luci> 0.4.1-1luc> 0.4.1-1oneiri> 0.4.1-1oneir> 0.4.1-1precis> 0.4.1-1preci>
ros-fuerte-ecto-opencv : 0.4.1 | 0.4.1-0luci> 0.4.1-0luc> 0.4.1-0oneiri> 0.4.1-0oneir> 0.4.1-0precis> 0.4.1-0preci>
ros-fuerte-ecto-openni : 0.3.3 | 0.3.3-0luci> 0.3.3-0luc> 0.3.3-0oneiri> 0.3.3-0oneir> 0.3.3-0precis> 0.3.3-0preci>
ros-fuerte-ecto-pcl : 0.3.5 | 0.3.5-0luci> 0.3.5-0luc> 0.3.5-0oneiri> | 0.3.5-0precis> 0.3.5-0preci>
ros-fuerte-ecto-ros : 0.3.11 | 0.3.11-0luc> 0.3.11-0lu> 0.3.11-0oneir> 0.3.11-0onei> 0.3.11-0preci> 0.3.11-0prec>
ros-fuerte-fcl : 0.1.2 | 0.1.2-5luci> 0.1.2-5luc> 0.1.2-5oneiri> 0.1.2-5oneir> 0.1.2-5precis> 0.1.2-5preci>
ros-fuerte-flann : 1.7.1 | 1.7.1-8luci> 1.7.1-8luc> 1.7.1-8oneiri> 1.7.1-8oneir> 1.7.1-8precis> 1.7.1-8preci>
ros-fuerte-gencpp : 0.3.4 | 0.3.4-0luci> 0.3.4-0luc> 0.3.4-0oneiri> 0.3.4-0oneir> 0.3.4-0precis> 0.3.4-0preci>
ros-fuerte-genlisp : 0.3.3 | 0.3.3-0luci> 0.3.3-0luc> 0.3.3-0oneiri> 0.3.3-0oneir> 0.3.3-0precis> 0.3.3-0preci>
ros-fuerte-genmsg : 0.3.10 | 0.3.10-0luc> 0.3.10-0lu> 0.3.10-0oneir> 0.3.10-0onei> 0.3.10-0preci> 0.3.10-0prec>
ros-fuerte-genpy : 0.3.7 | 0.3.7-0luci> 0.3.7-0luc> 0.3.7-0oneiri> 0.3.7-0oneir> 0.3.7-0precis> 0.3.7-0preci>
ros-fuerte-langs : 0.3.2 | 0.3.2-0luci> 0.3.2-0luc> 0.3.2-0oneiri> 0.3.2-0oneir> 0.3.2-0precis> 0.3.2-0preci>
ros-fuerte-libccd : 1.2.0 | 1.2.0-4luci> 1.2.0-4luc> 1.2.0-4oneiri> 1.2.0-4oneir> 1.2.0-4precis> 1.2.0-4preci>
ros-fuerte-libg2o : 0.0.26 | 0.0.26-0luc> 0.0.26-0lu> 0.0.26-0oneir> 0.0.26-0onei> 0.0.26-0preci> 0.0.26-0prec>
ros-fuerte-object-recognition-capture : 0.2.10 | 0.2.10-0luc> 0.2.10-0lu> 0.2.10-0oneir> 0.2.10-0onei> 0.2.10-0preci> 0.2.10-0prec>
ros-fuerte-object-recognition-core : 0.3.6 | 0.3.6-0luci> 0.3.6-0luc> 0.3.6-0oneiri> | 0.3.6-0precis> 0.3.6-0preci>
ros-fuerte-object-recognition-linemod : 0.2.0 | 0.2.0-0luci> 0.2.0-0luc> 0.2.0-0oneiri> 0.2.0-0oneir> 0.2.0-0precis> 0.2.0-0preci>
ros-fuerte-object-recognition-msgs : 0.3.2 | 0.3.2-0luci> 0.3.2-0luc> 0.3.2-0oneiri> 0.3.2-0oneir> 0.3.2-0precis> 0.3.2-0preci>
ros-fuerte-object-recognition-reconstruction : 0.2.8 | 0.2.8-0luci> 0.2.8-0luc> 0.2.8-0oneiri> 0.2.8-0oneir> 0.2.8-0precis> 0.2.8-0preci>
ros-fuerte-object-recognition-tabletop : 0.2.4 | | | | | | |
ros-fuerte-object-recognition-tod : 0.3.1 | 0.3.1-0luci> 0.3.1-0luc> 0.3.1-0oneiri> 0.3.1-0oneir> 0.3.1-0precis> 0.3.1-0preci>
ros-fuerte-object-recognition-transparent-objects : 0.2.6 | 0.2.6-0luci> 0.2.6-0luc> 0.2.6-0oneiri> 0.2.6-0oneir> 0.2.6-0precis> 0.2.6-0preci>
ros-fuerte-octomap : 1.4.2 | 1.4.2-0luci> 1.4.2-0luc> 1.4.2-0oneiri> 1.4.2-0oneir> 1.4.2-0precis> 1.4.2-0preci>
ros-fuerte-octovis : 1.4.2 | 1.4.2-0luci> 1.4.2-0luc> 1.4.2-0oneiri> 1.4.2-0oneir> 1.4.2-0precis> 1.4.2-0preci>
ros-fuerte-ompl : 0.10.20> 0.10.200195> 0.10.20019> 0.10.2001950-> 0.10.2001950> 0.10.2001950-> 0.10.2001950>
ros-fuerte-opencv2 : 2.4.1 | 2.4.1-2luci> 2.4.1-2luc> 2.4.1-2oneiri> 2.4.1-2oneir> 2.4.1-2precis> 2.4.1-2preci>
ros-fuerte-pcl : 1.5.2 | 1.5.2-7luci> 1.5.2-7luc> 1.5.2-7oneiri> | 1.5.2-7precis> 1.5.2-7preci>
ros-fuerte-ros : 1.8.9 | 1.8.9-0luci> 1.8.9-0luc> 1.8.9-0oneiri> 1.8.9-0oneir> 1.8.9-0precis> 1.8.9-0preci>
ros-fuerte-ros-comm : 1.8.12 | 1.8.12-0luc> 1.8.12-0lu> 1.8.12-0oneir> 1.8.12-0onei> 1.8.12-0preci> 1.8.12-0prec>
ros-fuerte-ros-tutorials : 0.2.18 | 0.2.18-5luc> 0.2.18-5lu> 0.2.18-5oneir> 0.2.18-5onei> 0.2.18-5preci> 0.2.18-5prec>
ros-fuerte-roscpp-core : 0.2.5 | 0.2.5-0luci> 0.2.5-0luc> 0.2.5-0oneiri> 0.2.5-0oneir> 0.2.5-0precis> 0.2.5-0preci>
ros-fuerte-rospack : 2.0.13 | 2.0.13-1luc> 2.0.13-1lu> 2.0.13-1oneir> 2.0.13-1onei> 2.0.13-1preci> 2.0.13-1prec>
ros-fuerte-rx : 1.8.8 | 1.8.8-1luci> 1.8.8-1luc> 1.8.8-1oneiri> 1.8.8-1oneir> 1.8.8-1precis> 1.8.8-1preci>
ros-fuerte-sbpl : 1.1.0 | 1.1.0-5luci> 1.1.0-5luc> 1.1.0-5oneiri> 1.1.0-5oneir> 1.1.0-5precis> 1.1.0-5preci>
ros-fuerte-shape-msgs : 0.1.3 | 0.1.3-0luci> 0.1.3-0luc> 0.1.3-0oneiri> 0.1.3-0oneir> 0.1.3-0precis> 0.1.3-0preci>
ros-fuerte-shape-tools : 0.1.2 | 0.1.2-0luci> 0.1.2-0luc> 0.1.2-0oneiri> 0.1.2-0oneir> 0.1.2-0precis> 0.1.2-0preci>
ros-fuerte-std-msgs : 0.4.8 | 0.4.8-0luci> 0.4.8-0luc> 0.4.8-0oneiri> 0.4.8-0oneir> 0.4.8-0precis> 0.4.8-0preci>
ros-fuerte-swig-wx : 1.3.29 | 1.3.29-3luc> 1.3.29-3lu> 1.3.29-3oneir> 1.3.29-3onei> 1.3.29-3preci> 1.3.29-3prec>
ros-fuerte-urdfdom : 0.1.3 | 0.1.3-3luci> 0.1.3-3luc> 0.1.3-3oneiri> 0.1.3-3oneir> 0.1.3-3precis> 0.1.3-3preci>
tfoote@bis:/home/tfoote/catkin-debs$ ./scripts/list_all.py --root /tmp/rootdir/
/home/tfoote/catkin-debs/src/buildfarm/apt_root.py:5: UserWarning: Module argparse was already imported from /usr/lib/pymodules/python2.6/argparse.pyc, but /usr/local/lib/python2.6/dist-packages is being added to sys.path
import pkg_resources
Fetching https://raw.github.com/ros/rosdistro/master/releases/targets.yaml
setup rootdir /tmp/rootdir/precise_i386
setup rootdir /tmp/rootdir/precise_amd64
setup rootdir /tmp/rootdir/oneiric_i386
setup rootdir /tmp/rootdir/oneiric_amd64
setup rootdir /tmp/rootdir/lucid_i386
setup rootdir /tmp/rootdir/lucid_amd64
package : fuerte| lucid_amd64| lucid_i386| oneiric_amd64| oneiric_i386| precise_amd64| precise_i386|
ros-fuerte-actionlib : 1.8.6 | 1.8.6-0luci> 1.8.6-0luc> 1.8.6-0oneiri> 1.8.6-0oneir> 1.8.6-0precis> 1.8.6-0preci>
ros-fuerte-catkin : 0.4.4 | 0.4.4-0luci> 0.4.4-0luc> 0.4.4-0oneiri> 0.4.4-0oneir> 0.4.4-0precis> 0.4.4-0preci>
ros-fuerte-common-msgs : 1.8.7 | 1.8.7-0luci> 1.8.7-0luc> 1.8.7-0oneiri> 1.8.7-0oneir> 1.8.7-0precis> 1.8.7-0preci>
ros-fuerte-ecto : 0.4.0 | 0.4.0-0luci> 0.4.0-0luc> 0.4.0-0oneiri> 0.4.0-0oneir> 0.4.0-0precis> 0.4.0-0preci>
ros-fuerte-ecto-image-pipeline : 0.4.1 | 0.4.1-1luci> 0.4.1-1luc> 0.4.1-1oneiri> | 0.4.1-1precis> 0.4.1-1preci>
ros-fuerte-ecto-opencv : 0.4.1 | 0.4.1-0luci> 0.4.1-0luc> 0.4.1-0oneiri> 0.4.1-0oneir> 0.4.1-0precis> 0.4.1-0preci>
ros-fuerte-ecto-openni : 0.3.3 | 0.3.3-0luci> 0.3.3-0luc> 0.3.3-0oneiri> 0.3.3-0oneir> 0.3.3-0precis> 0.3.3-0preci>
ros-fuerte-ecto-pcl : 0.3.5 | 0.3.5-0luci> 0.3.5-0luc> 0.3.5-0oneiri> | 0.3.5-0precis> 0.3.5-0preci>
ros-fuerte-ecto-ros : 0.3.11 | 0.3.11-0luc> 0.3.11-0lu> 0.3.11-0oneir> 0.3.11-0onei> 0.3.11-0preci> 0.3.11-0prec>
ros-fuerte-fcl : 0.1.2 | 0.1.2-5luci> 0.1.2-5luc> 0.1.2-5oneiri> 0.1.2-5oneir> 0.1.2-5precis> 0.1.2-5preci>
ros-fuerte-flann : 1.7.1 | 1.7.1-8luci> 1.7.1-8luc> 1.7.1-8oneiri> 1.7.1-8oneir> 1.7.1-8precis> 1.7.1-8preci>
ros-fuerte-gencpp : 0.3.4 | 0.3.4-0luci> 0.3.4-0luc> 0.3.4-0oneiri> 0.3.4-0oneir> 0.3.4-0precis> 0.3.4-0preci>
ros-fuerte-genlisp : 0.3.3 | 0.3.3-0luci> 0.3.3-0luc> 0.3.3-0oneiri> 0.3.3-0oneir> 0.3.3-0precis> 0.3.3-0preci>
ros-fuerte-genmsg : 0.3.10 | 0.3.10-0luc> 0.3.10-0lu> 0.3.10-0oneir> 0.3.10-0onei> 0.3.10-0preci> 0.3.10-0prec>
ros-fuerte-genpy : 0.3.7 | 0.3.7-0luci> 0.3.7-0luc> 0.3.7-0oneiri> 0.3.7-0oneir> 0.3.7-0precis> 0.3.7-0preci>
ros-fuerte-langs : 0.3.2 | 0.3.2-0luci> 0.3.2-0luc> 0.3.2-0oneiri> 0.3.2-0oneir> 0.3.2-0precis> 0.3.2-0preci>
ros-fuerte-libccd : 1.2.0 | 1.2.0-4luci> 1.2.0-4luc> 1.2.0-4oneiri> 1.2.0-4oneir> 1.2.0-4precis> 1.2.0-4preci>
ros-fuerte-libg2o : 0.0.26 | 0.0.26-0luc> 0.0.26-0lu> 0.0.26-0oneir> 0.0.26-0onei> 0.0.26-0preci> 0.0.26-0prec>
ros-fuerte-object-recognition-capture : 0.2.10 | 0.2.10-0luc> 0.2.10-0lu> 0.2.10-0oneir> 0.2.10-0onei> 0.2.10-0preci> 0.2.10-0prec>
ros-fuerte-object-recognition-core : 0.3.6 | 0.3.6-0luci> 0.3.6-0luc> 0.3.6-0oneiri> | 0.3.6-0precis> 0.3.6-0preci>
ros-fuerte-object-recognition-linemod : 0.2.0 | 0.2.0-0luci> 0.2.0-0luc> 0.2.0-0oneiri> 0.2.0-0oneir> 0.2.0-0precis> 0.2.0-0preci>
ros-fuerte-object-recognition-msgs : 0.3.2 | 0.3.2-0luci> 0.3.2-0luc> 0.3.2-0oneiri> 0.3.2-0oneir> 0.3.2-0precis> 0.3.2-0preci>
ros-fuerte-object-recognition-reconstruction : 0.2.8 | 0.2.8-0luci> 0.2.8-0luc> 0.2.8-0oneiri> | 0.2.8-0precis> 0.2.8-0preci>
ros-fuerte-object-recognition-tabletop : 0.2.4 | | | | | | |
ros-fuerte-object-recognition-tod : 0.3.1 | 0.3.1-0luci> 0.3.1-0luc> 0.3.1-0oneiri> | 0.3.1-0precis> 0.3.1-0preci>
ros-fuerte-object-recognition-transparent-objects : 0.2.6 | 0.2.6-0luci> 0.2.6-0luc> 0.2.6-0oneiri> | 0.2.6-0precis> 0.2.6-0preci>
ros-fuerte-octomap : 1.4.2 | 1.4.2-0luci> 1.4.2-0luc> 1.4.2-0oneiri> 1.4.2-0oneir> 1.4.2-0precis> 1.4.2-0preci>
ros-fuerte-octovis : 1.4.2 | 1.4.2-0luci> 1.4.2-0luc> 1.4.2-0oneiri> 1.4.2-0oneir> 1.4.2-0precis> 1.4.2-0preci>
ros-fuerte-ompl : 0.10.20> 0.10.200195> 0.10.20019> 0.10.2001950-> 0.10.2001950> 0.10.2001950-> 0.10.2001950>
ros-fuerte-opencv2 : 2.4.1 | 2.4.1-2luci> 2.4.1-2luc> 2.4.1-2oneiri> 2.4.1-2oneir> 2.4.1-2precis> 2.4.1-2preci>
ros-fuerte-pcl : 1.5.2 | 1.5.2-7luci> 1.5.2-7luc> 1.5.2-7oneiri> 1.5.2-7oneir> 1.5.2-7precis> 1.5.2-7preci>
ros-fuerte-ros : 1.8.9 | 1.8.9-0luci> 1.8.9-0luc> 1.8.9-0oneiri> 1.8.9-0oneir> 1.8.9-0precis> 1.8.9-0preci>
ros-fuerte-ros-comm : 1.8.12 | 1.8.12-0luc> 1.8.12-0lu> 1.8.12-0oneir> 1.8.12-0onei> 1.8.12-0preci> 1.8.12-0prec>
ros-fuerte-ros-tutorials : 0.2.18 | 0.2.18-5luc> 0.2.18-5lu> 0.2.18-5oneir> 0.2.18-5onei> 0.2.18-5preci> 0.2.18-5prec>
ros-fuerte-roscpp-core : 0.2.5 | 0.2.5-0luci> 0.2.5-0luc> 0.2.5-0oneiri> 0.2.5-0oneir> 0.2.5-0precis> 0.2.5-0preci>
ros-fuerte-rospack : 2.0.13 | 2.0.13-1luc> 2.0.13-1lu> 2.0.13-1oneir> 2.0.13-1onei> 2.0.13-1preci> 2.0.13-1prec>
ros-fuerte-rx : 1.8.8 | 1.8.8-1luci> 1.8.8-1luc> 1.8.8-1oneiri> 1.8.8-1oneir> 1.8.8-1precis> 1.8.8-1preci>
ros-fuerte-sbpl : 1.1.0 | 1.1.0-5luci> 1.1.0-5luc> 1.1.0-5oneiri> 1.1.0-5oneir> 1.1.0-5precis> 1.1.0-5preci>
ros-fuerte-shape-msgs : 0.1.3 | 0.1.3-0luci> 0.1.3-0luc> 0.1.3-0oneiri> 0.1.3-0oneir> 0.1.3-0precis> 0.1.3-0preci>
ros-fuerte-shape-tools : 0.1.2 | 0.1.2-0luci> 0.1.2-0luc> 0.1.2-0oneiri> 0.1.2-0oneir> 0.1.2-0precis> 0.1.2-0preci>
ros-fuerte-std-msgs : 0.4.8 | 0.4.8-0luci> 0.4.8-0luc> 0.4.8-0oneiri> 0.4.8-0oneir> 0.4.8-0precis> 0.4.8-0preci>
ros-fuerte-swig-wx : 1.3.29 | 1.3.29-3luc> 1.3.29-3lu> 1.3.29-3oneir> 1.3.29-3onei> 1.3.29-3preci> 1.3.29-3prec>
ros-fuerte-urdfdom : 0.1.3 | 0.1.3-3luci> 0.1.3-3luc> 0.1.3-3oneiri> 0.1.3-3oneir> 0.1.3-3precis> 0.1.3-3preci>
}}}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.