├── .gitattributes
├── .gitignore
├── FAQ
├── README.md
├── ROSInstaller
├── CygwinACLMapper.cs
├── CygwinTarUnpacker.cs
├── Form1.Designer.cs
├── Form1.cs
├── Form1.resx
├── FullReadAdapter.cs
├── LZMA
│ ├── CRC.cs
│ ├── ICoder.cs
│ ├── IMatchFinder.cs
│ ├── InBuffer.cs
│ ├── LzBinTree.cs
│ ├── LzInWindow.cs
│ ├── LzOutWindow.cs
│ ├── LzmaBase.cs
│ ├── LzmaDecoder.cs
│ ├── LzmaEncoder.cs
│ ├── OutBuffer.cs
│ ├── RangeCoder.cs
│ ├── RangeCoderBit.cs
│ └── RangeCoderBitTree.cs
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── ROSInstallTask.cs
├── ROSInstaller.csproj
├── ROSInstaller.sln
├── ShellLink.cs
└── app.manifest
├── autobuild
├── build_ros.sh
├── build_ros_isolated.sh
├── install_helpers
│ ├── 01_rosconsole_bridge.sh
│ ├── 02_gtest.sh
│ ├── 03_eigen.sh
│ ├── 04_tinyxml.sh
│ ├── 05_lz4.sh
│ ├── 06_libbzip2.sh
│ ├── 07_qt.sh
│ ├── 08_ogre.sh
│ ├── 09_opencv.sh
│ ├── 10_urdfdom_headers.sh
│ ├── 11_urdfdom.sh
│ ├── 12_yaml_cpp.sh
│ ├── 13_assimp.sh
│ ├── 14_sip.sh
│ ├── 15_pyqt.sh
│ ├── 16_collada_dom.sh
│ ├── 17_flann.sh
│ ├── 18_pcl.sh
│ └── 19_orocos_bfl.sh
├── linkexes.pl
├── patches
│ ├── 3rdparty
│ │ ├── assimp.patch
│ │ ├── collada_dom.patch
│ │ ├── ogre.patch
│ │ ├── opencv.patch
│ │ ├── pcl.patch
│ │ ├── pyqt.patch
│ │ ├── pyside-1.1.1.patch
│ │ ├── pyside-1.2.2.patch
│ │ ├── qt.patch
│ │ ├── tinyxml.patch
│ │ └── urdfdom.patch
│ ├── boost.patch
│ ├── ctype.patch
│ ├── features.patch
│ └── ros
│ │ ├── catkin.patch
│ │ ├── dynamic_reconfigure.patch
│ │ ├── filters.patch
│ │ ├── geometry.patch
│ │ ├── geometry2.patch
│ │ ├── image_pipeline.patch
│ │ ├── image_transport_plugins.patch
│ │ ├── interactive_markers.patch
│ │ ├── jade
│ │ ├── perception_pcl.patch
│ │ └── ros.patch
│ │ ├── laser_filters.patch
│ │ ├── laser_geometry.patch
│ │ ├── navigation.patch
│ │ ├── octomap.patch
│ │ ├── perception_pcl.patch
│ │ ├── pluginlib.patch
│ │ ├── python_qt_binding.patch
│ │ ├── qt_gui_core.patch
│ │ ├── robot_model.patch
│ │ ├── ros.patch
│ │ ├── ros_comm.patch
│ │ ├── rosconsole_bridge.patch
│ │ ├── roscpp_core.patch
│ │ ├── rqt.patch
│ │ ├── rqt_common_plugins.patch
│ │ ├── rviz.patch
│ │ ├── stage.patch
│ │ ├── vision_opencv.patch
│ │ └── visualization_tutorials.patch
├── rebase_ros.bat
└── rebase_ros.sh
└── documentation
└── overview.docx
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.patch binary
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | Debug
4 | Release (Indigo)
5 | Release (Jade)
6 |
--------------------------------------------------------------------------------
/FAQ:
--------------------------------------------------------------------------------
1 | Q: Can I create my own installation of cygwin and install the binaries to that?
2 | A: No. The build and tools are specific to a particular version of cygwin and may break if a different cygwin distro is used.
3 |
4 | Q: I have 32 bit Windows, is there something for that?
5 | A: No.
6 |
7 | Q: What versions of Windows does this support?
8 | A: Any 64 bit Windows variant should work. Most of the testing has been on Windows 10. Windows 7 should work. Earlier than that, not sure.
9 |
10 | Q:What will this install do?
11 | A:It will install cygwin along with ros binaries and environment. Installer will deploy environment to a directory of your choice.
12 | HIGHLY recommend something simple, like "c:\cygjade". If you install it in a path with spaces you are just asking for trouble.
13 | The complete ROS environment will be included there. There will be a little batch file installed to your desktop, click it, and
14 | you are in cygwin bash. From there you need to do what you would do in an UBUNTU ros installation. Modify your .bashrc to
15 | set ROS_IP, etc. Probably your first step is to say "source /opt/ros/install_isolated/setup.bash" to set your environment
16 | for you shell so you can work with ROS commands and catkin. You should set your ROS_IP and ROS_MASTER as well using the "export" command.
17 |
18 |
19 | Q: Will it change anyting on my computer
20 | A: No. It is a completely self contained directory including all things. No changes to environment, registry, etc., and
21 | no installation of dlls.
22 |
23 | Q:Why does this come with an installer and not just a zip of this directory?
24 | A:Because complicated file permissions have to be set for this to work right. That is mainly what the installer does after
25 | unzipping the archive.
26 |
27 |
28 | Q: Can I rebuild from source to leverage newer versions of Jade?
29 | A: Build scripts are included, but it is not easy nor automatic. It is recommended you stick with the version of Jade that it
30 | is compiled for for the time being.
31 |
32 | Q: What is cygwin?
33 | A: It is a linux-like subsystem for Windows. It emulates a linux-like environment and provides applications with the tools
34 | and compilation infrastructure such that *nix programs can most often be compiled and run successfully on Windows. Also, it provides
35 | a full bash shell. If you are not familiar with cygwin, you will want to become so. It is terrific.
36 |
37 | Q: There is a Windows Ubuntu initiative from Microsoft, can we use that instead?
38 | A: Hopefully, in time. At present it is missing a few key features than create problems for the ROS libraries...mainly
39 | the inability to enumerate network interfaces. But it looks promising and if/when it is complete, it may eliminate the
40 | need for this distro.
41 |
42 | Q: Can I use Microsoft Visual Studio to link against these binary libraries?
43 | A: Not directly. Compilations are done with gcc in cygwin, and these are C++ libraries so they are not binary
44 | compatible with MSVC compilers. However, it is fairly trivial to take the roscpp sources, put them in a Visual Studio project
45 | and compile the as MSVC windows dlls. This is what we use for our clients, actually: we run roscore and tools on cygwin, but our clients
46 | are MSVC applications linked against MSVC-compiled ROS binaries. Little known fact that the ROS authors put all the necessary preprocessor
47 | instructions for windows compilation in their code, so you do not need Catkin to compile MSVC windows binaries. At some point
48 | I will release the binaries we use for msvc (or if anyone asks for them) and provide a tutorial as to how to compile ROS client
49 | for MSVC using Visual Studio and no catkin. It is very straightforward.
50 |
51 | Q: What isn't here?
52 | A: Most tools are present. But many of the lesser used ones are not tested. There can be some quirks with the GUI tools due
53 | to QT on windows vs other environments. The X-windows dependent tools can work, but an x-windows server for windows needs
54 | to be installed. Roscore runs well, rostopic, rosnode, all these seem to operate. The package management tools are not really
55 | tested, but may work (or may be fixed via their python source). apt-get certainly will not work as an installation method as
56 | cygwin doesn't have this. apt-cyg is installed (like apt-get) but that system doesn't know anything about ROS. So you will need
57 | to build any ROS nodes that you want to use.
58 |
59 | Q: What issues am I likely to encounter when I try this out?
60 | A: Most likely you will encounter things that seem like cygwin issues but are really regular ROS issues. Networking can be
61 | complex: be very, very sure to set ROS_IP equal to your IP address on both cygwin bash AND as environemtnal variable on
62 | your windows machine. ROS_MASTER_URI is also critical to be set correctly on your windows machine. Use numeric ipv4
63 | addresses, don't rely on host name resolution. And you MAY want to deprioritize ipv6 as that can create issues. So many
64 | connection issues are do to to environmental variables not being set up correctly. You blame ROS, but ROS is just reading
65 | from the environment.
66 |
67 | Q: How stable is this?
68 | A: Pretty stable. Have done relatively intense messaging over prolonged periods of time.
69 |
70 | Q: Why isn't there more documentation?
71 | A: This port is part of an active project and developed for a particular use case where we only have windows hardware. It
72 | was not developed as a community tool, but rather just being released at the urging of Brian Gerkey and others at the OSF
73 | to provide a proper native environment for Windows users. Something that works well for us, and hope it can help others.
74 | But we don't have all the badwidth we'd like to support this fully...hopefully if there is continued need, this can become
75 | a proper community project.
76 |
77 | Q: Why isn't the OSF maintaining this?
78 | A: The build is complex, not automatied, and the solution is cygwin-based. We have discussed handing this over, but it would require
79 | a fair amount of work and the creation of a new, automated build process to accomodate this. That would delay the release quite a bit,
80 | so we felt it was best, at least for now, to just put the distro here and let folks use it.
81 |
82 | Q: Should I be using this at all? What about a linux VM on Windows?
83 | A: We did VMs initially and still, occasionally, use them to test. That system works very well, the downside the context
84 | switching the developer needs to do to constantly shuffle between very different environments. VMs also have add a fair bit
85 | of overhead and sometimes there can be frustrating network-related bridging issues between the host and guest OSs. But
86 | there is really nothing wrong with it and, in fact, probably the recommended path for most users, particularly beginners.
87 | However, a lot of folks don't know linux, arent comfortable with it, or just prefer the tools and environment for Windows.
88 | So this is probably a good solution for them. It is particularly nice to be running everything on one OS, nodes, tools
89 | (like rviz, rosbag, etc.) without the compilcation of switching operating systems.
90 |
91 | Q: Will you upgrade this to later version of ROS and/or cygwin
92 | A: Probably. But not often, and only if the Windows/Ubuntu initiative does not bear fruit. We are mostly concerned with
93 | applications that rely on a stable ROS platform.
94 |
95 | Q: If this is useful to me, who should I be thankful to?
96 | A: The folks at OSF who have written a tremendously great library where they anticipated the need for a windows port
97 | and put the basics of that in their stable, well-thought out environment. Also the folks at cygwin who took on the
98 | task of bringing *nix to windows and being able to map OS functionality from one to the other. Also, the folks at sysprogs
99 | who make the world's great cross-compilation tool for VS, VisualGDB. They figured out most the complex porting issues
100 | such that the ROS toolset (like rviz, rqt_) could run.
101 |
102 |
103 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ros_cygwin
2 | Cygwin port of ROS
3 |
4 | This repo contains relatively complete binary releases of ROS Jade and Indigo for the Windows environment (via Cygwin, 64 bit only).
5 |
6 | The install is very large, 2GB or thereabouts. We've had to compile all the possible dependent binaries and include them (not really the same package manager in Cygwin that there is in *nix systems) so no way around that.
7 |
8 | Setup/installs (https://github.com/codenotes/ros_cygwin/releases) are included which will install a pre-configured cygwin environment to your Windows installation. I recommend the Jade distro. The Indigo distro should be roughly equivalent, but is not as well tested. The binary installer will install the cygwin environment as well as the appropriate ROS binaries which approximate a "desktop-full" release of ROS for Windows. These include the core ROS libraries, key packages and tools (such as RVIZ/RQT) etc.
9 |
10 | Process should be turnkey and "just work." upon launching the cygwin shell after install. The goal is to create a complete working environment in cygwin for Windows that operates the same as the Ubuntu distros. Many of the tools (rqt_*, rviz, etc.) are present and work. Some tools and libraries may be present or missing and work or not work...this distro has not been heavily tested outside of my group's particular use case, so you will certainly find issues. Cygwin is terrific, but it is an imperfect linux. Take a look at the FAQ for more information.
11 |
12 | All scripts for the setup/install applicaiton as well as all patches required to create the cygwin build of the ROS binaries (including patches to various environments such as PCL and Boost) are included in this site. These are not plug and play, however, strongly suggest you just leverage the binaries.
13 |
14 | Please note that if you build from source with your own cygwin install, you are very likely to encounter build errors as Cygwin itself changes its libraries frequently. It is best to use the binaries provided along with the cygwin environment also provided via the installers.
15 |
16 | Please forgive the lack of specific documentation, this is a work in progress.
17 |
18 | Strongly suggest you read the FAQ document. A fair amount of detail in there.
19 |
20 | INSTRUCTIONS:
21 | Once it is installed, run the .bat file installed to your desktop. You will see a bash command prompt. From there type:
22 |
23 | source /opt/ros/install_isolated/setup.bash
24 |
25 | And then maybe:
26 |
27 | export ROS_IP=[your IP address]
28 |
29 | And now things should work the way they would (mostly) on ubuntu.
30 |
31 |
32 | Gregory Brill
33 |
34 |
--------------------------------------------------------------------------------
/ROSInstaller/CygwinACLMapper.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Win32.SafeHandles;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.DirectoryServices;
5 | using System.DirectoryServices.AccountManagement;
6 | using System.IO;
7 | using System.Linq;
8 | using System.Runtime.InteropServices;
9 | using System.Security.AccessControl;
10 | using System.Security.Principal;
11 | using System.Text;
12 |
13 | namespace ROSInstaller
14 | {
15 | class CygwinACLMapper
16 | {
17 | private SecurityIdentifier _WorldSID;
18 | private SecurityIdentifier _GroupSID;
19 | private SecurityIdentifier _UserSID;
20 | private readonly StreamWriter _LogStream;
21 |
22 | [DllImport("advapi32.dll", SetLastError = true)]
23 | [return: MarshalAs(UnmanagedType.Bool)]
24 | static extern bool OpenProcessToken(IntPtr ProcessHandle, UInt32 DesiredAccess, out IntPtr TokenHandle);
25 |
26 | [DllImport("kernel32.dll", SetLastError = true)]
27 | static extern IntPtr GetCurrentProcess();
28 |
29 | [DllImport("kernel32.dll", SetLastError = true)]
30 | [return: MarshalAs(UnmanagedType.Bool)]
31 | static extern bool CloseHandle(IntPtr hObject);
32 |
33 | [DllImport("advapi32.dll", SetLastError = true)]
34 | static extern bool GetTokenInformation(IntPtr TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, IntPtr TokenInformation, int TokenInformationLength, out int ReturnLength);
35 |
36 | enum TOKEN_INFORMATION_CLASS
37 | {
38 | TokenUser = 1,
39 | TokenGroups,
40 | TokenPrivileges,
41 | TokenOwner,
42 | TokenPrimaryGroup,
43 | TokenDefaultDacl,
44 | TokenSource,
45 | TokenType,
46 | TokenImpersonationLevel,
47 | TokenStatistics,
48 | TokenRestrictedSids,
49 | TokenSessionId,
50 | TokenGroupsAndPrivileges,
51 | TokenSessionReference,
52 | TokenSandBoxInert,
53 | TokenAuditPolicy,
54 | TokenOrigin
55 | }
56 |
57 | public CygwinACLMapper(StreamWriter logStream)
58 | {
59 | _LogStream = logStream;
60 | _LogStream?.WriteLine("Obtaining SIDs for user and group...");
61 | _WorldSID = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
62 |
63 | IntPtr processToken;
64 | var currentProc = GetCurrentProcess();
65 | _LogStream?.WriteLine($"Current process handle: {currentProc:x}");
66 | if (OpenProcessToken(currentProc, 8 /*TOKEN_QUERY*/, out processToken))
67 | {
68 | int bufferSize = 4096;
69 | IntPtr pBuffer = Marshal.AllocHGlobal(bufferSize);
70 | try
71 | {
72 | int done;
73 | if (GetTokenInformation(processToken, TOKEN_INFORMATION_CLASS.TokenUser, pBuffer, bufferSize, out done))
74 | {
75 | IntPtr pSid = Marshal.ReadIntPtr(pBuffer);
76 | if ((ulong)pSid >= (ulong)pBuffer && (ulong)pSid < ((ulong)pBuffer + (ulong)bufferSize))
77 | {
78 | _LogStream?.WriteLine("Creating user SecurityIdentifier from raw SID...");
79 | _UserSID = new SecurityIdentifier(pSid);
80 | _LogStream?.WriteLine("Current user SID: " + _UserSID);
81 | }
82 | else
83 | _LogStream?.WriteLine($"GetTokenInformation(TokenUser) returned an invalid SID pointer: 0x{pSid:x}, with buffer at 0x{pBuffer}, size {bufferSize}");
84 | }
85 | else
86 | _LogStream?.WriteLine("GetTokenInformation(TokenUser) failed - error " + Marshal.GetLastWin32Error());
87 |
88 | if (GetTokenInformation(processToken, TOKEN_INFORMATION_CLASS.TokenPrimaryGroup, pBuffer, bufferSize, out done))
89 | {
90 | IntPtr pSid = Marshal.ReadIntPtr(pBuffer);
91 | if ((ulong)pSid >= (ulong)pBuffer && (ulong)pSid < ((ulong)pBuffer + (ulong)bufferSize))
92 | {
93 | _LogStream?.WriteLine("Creating group SecurityIdentifier from raw SID...");
94 | _GroupSID = new SecurityIdentifier(pSid);
95 | _LogStream?.WriteLine("Current group SID: " + _GroupSID);
96 | }
97 | else
98 | _LogStream?.WriteLine($"GetTokenInformation(TokenPrimaryGroup) returned an invalid SID pointer: 0x{pSid:x}, with buffer at 0x{pBuffer}, size {bufferSize}");
99 | }
100 | else
101 | _LogStream?.WriteLine("GetTokenInformation(TokenUser) failed - error " + Marshal.GetLastWin32Error());
102 | }
103 | finally
104 | {
105 | Marshal.FreeHGlobal(pBuffer);
106 | CloseHandle(processToken);
107 | }
108 | }
109 | else
110 | _LogStream?.WriteLine("OpenProcessToken() failed - error " + Marshal.GetLastWin32Error());
111 |
112 | if (_UserSID == null)
113 | {
114 | _LogStream?.WriteLine("Retrieving current user SID via a fallback method...");
115 |
116 | var currentIdentity = WindowsIdentity.GetCurrent();
117 | if (currentIdentity == null)
118 | throw new Exception("Failed to query current user identity");
119 |
120 | _LogStream?.WriteLine($"Current user: {currentIdentity.Name}, SID = {currentIdentity.User}");
121 | _UserSID = currentIdentity.User;
122 | _GroupSID = null;
123 | }
124 | }
125 |
126 | static FileSystemRights TranslateUnixMode(uint mode, bool isOwner)
127 | {
128 | uint result = 0x120080;
129 | if (isOwner)
130 | result |= 0x0D0100;
131 | if ((mode & 1) != 0)
132 | result |= 0x000020;
133 | if ((mode & 2) != 0)
134 | result |= 0x000116;
135 | if ((mode & 4) != 0)
136 | result |= 0x000009;
137 | return (FileSystemRights)result;
138 | }
139 |
140 | public void ApplyFileMode(string targetPath, uint mode, bool isDirectory)
141 | {
142 | FileSystemSecurity security;
143 | if (isDirectory)
144 | security = new DirectorySecurity();
145 | else
146 | security = new FileSecurity();
147 |
148 | _LogStream?.WriteLine($"Creating a security object for {targetPath}...");
149 |
150 | security.SetAccessRuleProtection(true, false);
151 | _LogStream?.WriteLine($"Setting user permission...");
152 | security.AddAccessRule(new FileSystemAccessRule(_UserSID, TranslateUnixMode((mode >> 6) & 7, true), AccessControlType.Allow));
153 | if (_GroupSID != null)
154 | {
155 | _LogStream?.WriteLine($"Setting group permission...");
156 | security.AddAccessRule(new FileSystemAccessRule(_GroupSID, TranslateUnixMode((mode >> 3) & 7, false), AccessControlType.Allow));
157 | }
158 | _LogStream?.WriteLine($"Setting world permission...");
159 | security.AddAccessRule(new FileSystemAccessRule(_WorldSID, TranslateUnixMode((mode >> 0) & 7, false), AccessControlType.Allow));
160 | _LogStream?.WriteLine($"Setting owner...");
161 | security.SetOwner(_UserSID);
162 |
163 | _LogStream?.WriteLine($"Applying new permissions...");
164 |
165 | if (isDirectory)
166 | Directory.SetAccessControl(targetPath, (DirectorySecurity)security);
167 | else
168 | File.SetAccessControl(targetPath, (FileSecurity)security);
169 | _LogStream?.WriteLine($"Successfully applied permissions for {targetPath}.");
170 | }
171 | }
172 | }
173 |
--------------------------------------------------------------------------------
/ROSInstaller/Form1.cs:
--------------------------------------------------------------------------------
1 | using SevenZip;
2 | using System;
3 | using System.Collections;
4 | using System.Collections.Generic;
5 | using System.ComponentModel;
6 | using System.Data;
7 | using System.Diagnostics;
8 | using System.DirectoryServices;
9 | using System.DirectoryServices.AccountManagement;
10 | using System.Drawing;
11 | using System.IO;
12 | using System.IO.Pipes;
13 | using System.Linq;
14 | using System.Reflection;
15 | using System.Runtime.InteropServices.ComTypes;
16 | using System.Security.AccessControl;
17 | using System.Security.Principal;
18 | using System.Text;
19 | using System.Threading;
20 | using System.Windows.Forms;
21 |
22 | namespace ROSInstaller
23 | {
24 | public partial class Form1 : Form
25 | {
26 | private ROSInstallTask _InstallTask;
27 |
28 | public bool ProgressGUIVisible
29 | {
30 | set
31 | {
32 | label1.Enabled = textBox1.Enabled = btnInstall.Visible = cbOpenCygwin.Enabled = !value;
33 | btnCancel.Visible = value;
34 | }
35 | }
36 |
37 | public Form1()
38 | {
39 | InitializeComponent();
40 | #if ROS_INDIGO
41 | textBox1.Text = @"c:\cygwin.indigo";
42 | #elif ROS_JADE
43 | textBox1.Text = @"c:\cygwin.jade";
44 | #endif
45 | }
46 |
47 | class ProgressTracker : ICodeProgress
48 | {
49 | private long _Done;
50 | private readonly long _Total;
51 |
52 | public ProgressTracker(long total)
53 | {
54 | _Total = total;
55 | }
56 |
57 | public void SetProgress(long inSize, long outSize)
58 | {
59 | _Done = inSize;
60 | }
61 |
62 | public void Apply(ProgressBar bar)
63 | {
64 | if (_Total == 0)
65 | return;
66 | int val = (int)((_Done * bar.Maximum) / _Total);
67 | bar.Value = Math.Min(val, bar.Maximum);
68 | }
69 | }
70 |
71 | private void btnInstall_Click(object sender, EventArgs e)
72 | {
73 | string destDir = textBox1.Text;
74 | if (Directory.Exists(destDir))
75 | {
76 | MessageBox.Show("The target directory already exists. Please remove it first.", "ROS", MessageBoxButtons.OK, MessageBoxIcon.Error);
77 | return;
78 | }
79 | ProgressGUIVisible = true;
80 |
81 | var oldTask = Interlocked.Exchange(ref _InstallTask, new ROSInstallTask(destDir, cbLog.Checked ? Path.Combine(destDir, "ROSInstall.log") : null));
82 | if (oldTask != null)
83 | {
84 | oldTask.Abort();
85 | oldTask.Dispose();
86 | }
87 | }
88 |
89 | private void timer1_Tick(object sender, EventArgs e)
90 | {
91 | var task = _InstallTask;
92 | if (task == null)
93 | {
94 | progressBar1.Value = 0;
95 | ProgressGUIVisible = false;
96 | }
97 | else
98 | {
99 | task.ApplyProgress(progressBar1);
100 | if (task.HasExited)
101 | {
102 | _InstallTask = null;
103 | var ex = task.ErrorMessage;
104 | if (ex == null)
105 | {
106 | MessageBox.Show("Installation complete", "ROS", MessageBoxButtons.OK, MessageBoxIcon.Information);
107 | if (cbOpenCygwin.Checked)
108 | Process.Start(Path.Combine(task.DestDir, "cygwin.bat"));
109 | CreateDesktopShortcut(task.DestDir);
110 | Close();
111 | }
112 | else
113 | {
114 | MessageBox.Show(ex, "ROS", MessageBoxButtons.OK, MessageBoxIcon.Error);
115 | }
116 | }
117 | }
118 | }
119 |
120 | private void CreateDesktopShortcut(string destDir)
121 | {
122 | try
123 | {
124 | IShellLink link = (IShellLink)new ShellLink();
125 | string distroName = "";
126 | #if ROS_INDIGO
127 | distroName = @"Indigo";
128 | #elif ROS_JADE
129 | distroName = @"Jade";
130 | #endif
131 |
132 | link.SetPath(Path.Combine(destDir, "cygwin.bat"));
133 | link.SetIconLocation(Path.Combine(destDir, "cygwin.ico"), 0);
134 |
135 | IPersistFile file = (IPersistFile)link;
136 | file.Save(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "ROS " + distroName + " Cygwin Shell.lnk"), false);
137 | }
138 | catch(Exception ex)
139 | {
140 | MessageBox.Show(ex.Message, "ROS", MessageBoxButtons.OK, MessageBoxIcon.Error);
141 | }
142 | }
143 |
144 | protected override void OnClosed(EventArgs e)
145 | {
146 | base.OnClosed(e);
147 | var oldTask = Interlocked.Exchange(ref _InstallTask, null);
148 | if (oldTask != null)
149 | {
150 | oldTask.Abort();
151 | oldTask.Dispose();
152 | }
153 | }
154 |
155 | private void btnCancel_Click(object sender, EventArgs e)
156 | {
157 | var oldTask = Interlocked.Exchange(ref _InstallTask, null);
158 | if (oldTask != null)
159 | {
160 | oldTask.Abort();
161 | oldTask.Dispose();
162 | }
163 | }
164 |
165 | private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
166 | {
167 | Process.Start("https://github.com/codenotes/ros_cygwin/wiki/Release-notes");
168 | }
169 | }
170 | }
171 |
--------------------------------------------------------------------------------
/ROSInstaller/FullReadAdapter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.IO.Pipes;
5 | using System.Linq;
6 | using System.Text;
7 |
8 | namespace ROSInstaller
9 | {
10 | class FullReadAdapter : Stream
11 | {
12 | Stream _BaseStream;
13 |
14 | public FullReadAdapter(Stream stream)
15 | {
16 | _BaseStream = stream;
17 | }
18 |
19 | public override bool CanRead
20 | {
21 | get
22 | {
23 | return _BaseStream.CanRead;
24 | }
25 | }
26 |
27 | public override bool CanSeek
28 | {
29 | get
30 | {
31 | return _BaseStream.CanSeek;
32 | }
33 | }
34 |
35 | public override bool CanWrite
36 | {
37 | get
38 | {
39 | return _BaseStream.CanWrite;
40 | }
41 | }
42 |
43 | public override long Length
44 | {
45 | get
46 | {
47 | return _BaseStream.Length;
48 | }
49 | }
50 |
51 | public override long Position
52 | {
53 | get
54 | {
55 | return _BaseStream.Position;
56 | }
57 |
58 | set
59 | {
60 | _BaseStream.Position = value;
61 | }
62 | }
63 |
64 | public override void Flush()
65 | {
66 | _BaseStream.Flush();
67 | }
68 |
69 | public override int Read(byte[] buffer, int offset, int count)
70 | {
71 | int total = 0;
72 | while (total < count)
73 | {
74 | int done = _BaseStream.Read(buffer, offset + total, count - total);
75 | if (done < 0)
76 | return done;
77 | total += done;
78 | if (done == 0)
79 | break;
80 | }
81 | return total;
82 | }
83 |
84 | public override long Seek(long offset, SeekOrigin origin)
85 | {
86 | return _BaseStream.Seek(offset, origin);
87 | }
88 |
89 | public override void SetLength(long value)
90 | {
91 | _BaseStream.SetLength(value);
92 | }
93 |
94 | public override void Write(byte[] buffer, int offset, int count)
95 | {
96 | _BaseStream.Write(buffer, offset, count);
97 | }
98 |
99 | protected override void Dispose(bool disposing)
100 | {
101 | base.Dispose(disposing);
102 | _BaseStream.Dispose();
103 | }
104 |
105 | public override void Close()
106 | {
107 | _BaseStream.Close();
108 | }
109 | }
110 | }
111 |
--------------------------------------------------------------------------------
/ROSInstaller/LZMA/CRC.cs:
--------------------------------------------------------------------------------
1 | // Common/CRC.cs
2 |
3 | namespace SevenZip
4 | {
5 | class CRC
6 | {
7 | public static readonly uint[] Table;
8 |
9 | static CRC()
10 | {
11 | Table = new uint[256];
12 | const uint kPoly = 0xEDB88320;
13 | for (uint i = 0; i < 256; i++)
14 | {
15 | uint r = i;
16 | for (int j = 0; j < 8; j++)
17 | if ((r & 1) != 0)
18 | r = (r >> 1) ^ kPoly;
19 | else
20 | r >>= 1;
21 | Table[i] = r;
22 | }
23 | }
24 |
25 | uint _value = 0xFFFFFFFF;
26 |
27 | public void Init() { _value = 0xFFFFFFFF; }
28 |
29 | public void UpdateByte(byte b)
30 | {
31 | _value = Table[(((byte)(_value)) ^ b)] ^ (_value >> 8);
32 | }
33 |
34 | public void Update(byte[] data, uint offset, uint size)
35 | {
36 | for (uint i = 0; i < size; i++)
37 | _value = Table[(((byte)(_value)) ^ data[offset + i])] ^ (_value >> 8);
38 | }
39 |
40 | public uint GetDigest() { return _value ^ 0xFFFFFFFF; }
41 |
42 | static uint CalculateDigest(byte[] data, uint offset, uint size)
43 | {
44 | CRC crc = new CRC();
45 | // crc.Init();
46 | crc.Update(data, offset, size);
47 | return crc.GetDigest();
48 | }
49 |
50 | static bool VerifyDigest(uint digest, byte[] data, uint offset, uint size)
51 | {
52 | return (CalculateDigest(data, offset, size) == digest);
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/ROSInstaller/LZMA/ICoder.cs:
--------------------------------------------------------------------------------
1 | // ICoder.h
2 |
3 | using System;
4 |
5 | namespace SevenZip
6 | {
7 | ///
8 | /// The exception that is thrown when an error in input stream occurs during decoding.
9 | ///
10 | class DataErrorException : ApplicationException
11 | {
12 | public DataErrorException(): base("Data Error") { }
13 | }
14 |
15 | ///
16 | /// The exception that is thrown when the value of an argument is outside the allowable range.
17 | ///
18 | class InvalidParamException : ApplicationException
19 | {
20 | public InvalidParamException(): base("Invalid Parameter") { }
21 | }
22 |
23 | public interface ICodeProgress
24 | {
25 | ///
26 | /// Callback progress.
27 | ///
28 | ///
29 | /// input size. -1 if unknown.
30 | ///
31 | ///
32 | /// output size. -1 if unknown.
33 | ///
34 | void SetProgress(Int64 inSize, Int64 outSize);
35 | };
36 |
37 | public interface ICoder
38 | {
39 | ///
40 | /// Codes streams.
41 | ///
42 | ///
43 | /// input Stream.
44 | ///
45 | ///
46 | /// output Stream.
47 | ///
48 | ///
49 | /// input Size. -1 if unknown.
50 | ///
51 | ///
52 | /// output Size. -1 if unknown.
53 | ///
54 | ///
55 | /// callback progress reference.
56 | ///
57 | ///
58 | /// if input stream is not valid
59 | ///
60 | void Code(System.IO.Stream inStream, System.IO.Stream outStream,
61 | Int64 inSize, Int64 outSize, ICodeProgress progress);
62 | };
63 |
64 | /*
65 | public interface ICoder2
66 | {
67 | void Code(ISequentialInStream []inStreams,
68 | const UInt64 []inSizes,
69 | ISequentialOutStream []outStreams,
70 | UInt64 []outSizes,
71 | ICodeProgress progress);
72 | };
73 | */
74 |
75 | ///
76 | /// Provides the fields that represent properties idenitifiers for compressing.
77 | ///
78 | public enum CoderPropID
79 | {
80 | ///
81 | /// Specifies default property.
82 | ///
83 | DefaultProp = 0,
84 | ///
85 | /// Specifies size of dictionary.
86 | ///
87 | DictionarySize,
88 | ///
89 | /// Specifies size of memory for PPM*.
90 | ///
91 | UsedMemorySize,
92 | ///
93 | /// Specifies order for PPM methods.
94 | ///
95 | Order,
96 | ///
97 | /// Specifies Block Size.
98 | ///
99 | BlockSize,
100 | ///
101 | /// Specifies number of postion state bits for LZMA (0 <= x <= 4).
102 | ///
103 | PosStateBits,
104 | ///
105 | /// Specifies number of literal context bits for LZMA (0 <= x <= 8).
106 | ///
107 | LitContextBits,
108 | ///
109 | /// Specifies number of literal position bits for LZMA (0 <= x <= 4).
110 | ///
111 | LitPosBits,
112 | ///
113 | /// Specifies number of fast bytes for LZ*.
114 | ///
115 | NumFastBytes,
116 | ///
117 | /// Specifies match finder. LZMA: "BT2", "BT4" or "BT4B".
118 | ///
119 | MatchFinder,
120 | ///
121 | /// Specifies the number of match finder cyckes.
122 | ///
123 | MatchFinderCycles,
124 | ///
125 | /// Specifies number of passes.
126 | ///
127 | NumPasses,
128 | ///
129 | /// Specifies number of algorithm.
130 | ///
131 | Algorithm,
132 | ///
133 | /// Specifies the number of threads.
134 | ///
135 | NumThreads,
136 | ///
137 | /// Specifies mode with end marker.
138 | ///
139 | EndMarker
140 | };
141 |
142 |
143 | public interface ISetCoderProperties
144 | {
145 | void SetCoderProperties(CoderPropID[] propIDs, object[] properties);
146 | };
147 |
148 | public interface IWriteCoderProperties
149 | {
150 | void WriteCoderProperties(System.IO.Stream outStream);
151 | }
152 |
153 | public interface ISetDecoderProperties
154 | {
155 | void SetDecoderProperties(byte[] properties);
156 | }
157 | }
158 |
--------------------------------------------------------------------------------
/ROSInstaller/LZMA/IMatchFinder.cs:
--------------------------------------------------------------------------------
1 | // IMatchFinder.cs
2 |
3 | using System;
4 |
5 | namespace SevenZip.Compression.LZ
6 | {
7 | interface IInWindowStream
8 | {
9 | void SetStream(System.IO.Stream inStream);
10 | void Init();
11 | void ReleaseStream();
12 | Byte GetIndexByte(Int32 index);
13 | UInt32 GetMatchLen(Int32 index, UInt32 distance, UInt32 limit);
14 | UInt32 GetNumAvailableBytes();
15 | }
16 |
17 | interface IMatchFinder : IInWindowStream
18 | {
19 | void Create(UInt32 historySize, UInt32 keepAddBufferBefore,
20 | UInt32 matchMaxLen, UInt32 keepAddBufferAfter);
21 | UInt32 GetMatches(UInt32[] distances);
22 | void Skip(UInt32 num);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/ROSInstaller/LZMA/InBuffer.cs:
--------------------------------------------------------------------------------
1 | // InBuffer.cs
2 |
3 | namespace SevenZip.Buffer
4 | {
5 | public class InBuffer
6 | {
7 | byte[] m_Buffer;
8 | uint m_Pos;
9 | uint m_Limit;
10 | uint m_BufferSize;
11 | System.IO.Stream m_Stream;
12 | bool m_StreamWasExhausted;
13 | ulong m_ProcessedSize;
14 |
15 | public InBuffer(uint bufferSize)
16 | {
17 | m_Buffer = new byte[bufferSize];
18 | m_BufferSize = bufferSize;
19 | }
20 |
21 | public void Init(System.IO.Stream stream)
22 | {
23 | m_Stream = stream;
24 | m_ProcessedSize = 0;
25 | m_Limit = 0;
26 | m_Pos = 0;
27 | m_StreamWasExhausted = false;
28 | }
29 |
30 | public bool ReadBlock()
31 | {
32 | if (m_StreamWasExhausted)
33 | return false;
34 | m_ProcessedSize += m_Pos;
35 | int aNumProcessedBytes = m_Stream.Read(m_Buffer, 0, (int)m_BufferSize);
36 | m_Pos = 0;
37 | m_Limit = (uint)aNumProcessedBytes;
38 | m_StreamWasExhausted = (aNumProcessedBytes == 0);
39 | return (!m_StreamWasExhausted);
40 | }
41 |
42 |
43 | public void ReleaseStream()
44 | {
45 | // m_Stream.Close();
46 | m_Stream = null;
47 | }
48 |
49 | public bool ReadByte(byte b) // check it
50 | {
51 | if (m_Pos >= m_Limit)
52 | if (!ReadBlock())
53 | return false;
54 | b = m_Buffer[m_Pos++];
55 | return true;
56 | }
57 |
58 | public byte ReadByte()
59 | {
60 | // return (byte)m_Stream.ReadByte();
61 | if (m_Pos >= m_Limit)
62 | if (!ReadBlock())
63 | return 0xFF;
64 | return m_Buffer[m_Pos++];
65 | }
66 |
67 | public ulong GetProcessedSize()
68 | {
69 | return m_ProcessedSize + m_Pos;
70 | }
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/ROSInstaller/LZMA/LzInWindow.cs:
--------------------------------------------------------------------------------
1 | // LzInWindow.cs
2 |
3 | using System;
4 |
5 | namespace SevenZip.Compression.LZ
6 | {
7 | public class InWindow
8 | {
9 | public Byte[] _bufferBase = null; // pointer to buffer with data
10 | System.IO.Stream _stream;
11 | UInt32 _posLimit; // offset (from _buffer) of first byte when new block reading must be done
12 | bool _streamEndWasReached; // if (true) then _streamPos shows real end of stream
13 |
14 | UInt32 _pointerToLastSafePosition;
15 |
16 | public UInt32 _bufferOffset;
17 |
18 | public UInt32 _blockSize; // Size of Allocated memory block
19 | public UInt32 _pos; // offset (from _buffer) of curent byte
20 | UInt32 _keepSizeBefore; // how many BYTEs must be kept in buffer before _pos
21 | UInt32 _keepSizeAfter; // how many BYTEs must be kept buffer after _pos
22 | public UInt32 _streamPos; // offset (from _buffer) of first not read byte from Stream
23 |
24 | public void MoveBlock()
25 | {
26 | UInt32 offset = (UInt32)(_bufferOffset) + _pos - _keepSizeBefore;
27 | // we need one additional byte, since MovePos moves on 1 byte.
28 | if (offset > 0)
29 | offset--;
30 |
31 | UInt32 numBytes = (UInt32)(_bufferOffset) + _streamPos - offset;
32 |
33 | // check negative offset ????
34 | for (UInt32 i = 0; i < numBytes; i++)
35 | _bufferBase[i] = _bufferBase[offset + i];
36 | _bufferOffset -= offset;
37 | }
38 |
39 | public virtual void ReadBlock()
40 | {
41 | if (_streamEndWasReached)
42 | return;
43 | while (true)
44 | {
45 | int size = (int)((0 - _bufferOffset) + _blockSize - _streamPos);
46 | if (size == 0)
47 | return;
48 | int numReadBytes = _stream.Read(_bufferBase, (int)(_bufferOffset + _streamPos), size);
49 | if (numReadBytes == 0)
50 | {
51 | _posLimit = _streamPos;
52 | UInt32 pointerToPostion = _bufferOffset + _posLimit;
53 | if (pointerToPostion > _pointerToLastSafePosition)
54 | _posLimit = (UInt32)(_pointerToLastSafePosition - _bufferOffset);
55 |
56 | _streamEndWasReached = true;
57 | return;
58 | }
59 | _streamPos += (UInt32)numReadBytes;
60 | if (_streamPos >= _pos + _keepSizeAfter)
61 | _posLimit = _streamPos - _keepSizeAfter;
62 | }
63 | }
64 |
65 | void Free() { _bufferBase = null; }
66 |
67 | public void Create(UInt32 keepSizeBefore, UInt32 keepSizeAfter, UInt32 keepSizeReserv)
68 | {
69 | _keepSizeBefore = keepSizeBefore;
70 | _keepSizeAfter = keepSizeAfter;
71 | UInt32 blockSize = keepSizeBefore + keepSizeAfter + keepSizeReserv;
72 | if (_bufferBase == null || _blockSize != blockSize)
73 | {
74 | Free();
75 | _blockSize = blockSize;
76 | _bufferBase = new Byte[_blockSize];
77 | }
78 | _pointerToLastSafePosition = _blockSize - keepSizeAfter;
79 | }
80 |
81 | public void SetStream(System.IO.Stream stream) { _stream = stream; }
82 | public void ReleaseStream() { _stream = null; }
83 |
84 | public void Init()
85 | {
86 | _bufferOffset = 0;
87 | _pos = 0;
88 | _streamPos = 0;
89 | _streamEndWasReached = false;
90 | ReadBlock();
91 | }
92 |
93 | public void MovePos()
94 | {
95 | _pos++;
96 | if (_pos > _posLimit)
97 | {
98 | UInt32 pointerToPostion = _bufferOffset + _pos;
99 | if (pointerToPostion > _pointerToLastSafePosition)
100 | MoveBlock();
101 | ReadBlock();
102 | }
103 | }
104 |
105 | public Byte GetIndexByte(Int32 index) { return _bufferBase[_bufferOffset + _pos + index]; }
106 |
107 | // index + limit have not to exceed _keepSizeAfter;
108 | public UInt32 GetMatchLen(Int32 index, UInt32 distance, UInt32 limit)
109 | {
110 | if (_streamEndWasReached)
111 | if ((_pos + index) + limit > _streamPos)
112 | limit = _streamPos - (UInt32)(_pos + index);
113 | distance++;
114 | // Byte *pby = _buffer + (size_t)_pos + index;
115 | UInt32 pby = _bufferOffset + _pos + (UInt32)index;
116 |
117 | UInt32 i;
118 | for (i = 0; i < limit && _bufferBase[pby + i] == _bufferBase[pby + i - distance]; i++);
119 | return i;
120 | }
121 |
122 | public UInt32 GetNumAvailableBytes() { return _streamPos - _pos; }
123 |
124 | public void ReduceOffsets(Int32 subValue)
125 | {
126 | _bufferOffset += (UInt32)subValue;
127 | _posLimit -= (UInt32)subValue;
128 | _pos -= (UInt32)subValue;
129 | _streamPos -= (UInt32)subValue;
130 | }
131 | }
132 | }
133 |
--------------------------------------------------------------------------------
/ROSInstaller/LZMA/LzOutWindow.cs:
--------------------------------------------------------------------------------
1 | // LzOutWindow.cs
2 |
3 | namespace SevenZip.Compression.LZ
4 | {
5 | public class OutWindow
6 | {
7 | byte[] _buffer = null;
8 | uint _pos;
9 | uint _windowSize = 0;
10 | uint _streamPos;
11 | System.IO.Stream _stream;
12 |
13 | public uint TrainSize = 0;
14 |
15 | public void Create(uint windowSize)
16 | {
17 | if (_windowSize != windowSize)
18 | {
19 | // System.GC.Collect();
20 | _buffer = new byte[windowSize];
21 | }
22 | _windowSize = windowSize;
23 | _pos = 0;
24 | _streamPos = 0;
25 | }
26 |
27 | public void Init(System.IO.Stream stream, bool solid)
28 | {
29 | ReleaseStream();
30 | _stream = stream;
31 | if (!solid)
32 | {
33 | _streamPos = 0;
34 | _pos = 0;
35 | TrainSize = 0;
36 | }
37 | }
38 |
39 | public bool Train(System.IO.Stream stream)
40 | {
41 | long len = stream.Length;
42 | uint size = (len < _windowSize) ? (uint)len : _windowSize;
43 | TrainSize = size;
44 | stream.Position = len - size;
45 | _streamPos = _pos = 0;
46 | while (size > 0)
47 | {
48 | uint curSize = _windowSize - _pos;
49 | if (size < curSize)
50 | curSize = size;
51 | int numReadBytes = stream.Read(_buffer, (int)_pos, (int)curSize);
52 | if (numReadBytes == 0)
53 | return false;
54 | size -= (uint)numReadBytes;
55 | _pos += (uint)numReadBytes;
56 | _streamPos += (uint)numReadBytes;
57 | if (_pos == _windowSize)
58 | _streamPos = _pos = 0;
59 | }
60 | return true;
61 | }
62 |
63 | public void ReleaseStream()
64 | {
65 | Flush();
66 | _stream = null;
67 | }
68 |
69 | public void Flush()
70 | {
71 | uint size = _pos - _streamPos;
72 | if (size == 0)
73 | return;
74 | _stream.Write(_buffer, (int)_streamPos, (int)size);
75 | if (_pos >= _windowSize)
76 | _pos = 0;
77 | _streamPos = _pos;
78 | }
79 |
80 | public void CopyBlock(uint distance, uint len)
81 | {
82 | uint pos = _pos - distance - 1;
83 | if (pos >= _windowSize)
84 | pos += _windowSize;
85 | for (; len > 0; len--)
86 | {
87 | if (pos >= _windowSize)
88 | pos = 0;
89 | _buffer[_pos++] = _buffer[pos++];
90 | if (_pos >= _windowSize)
91 | Flush();
92 | }
93 | }
94 |
95 | public void PutByte(byte b)
96 | {
97 | _buffer[_pos++] = b;
98 | if (_pos >= _windowSize)
99 | Flush();
100 | }
101 |
102 | public byte GetByte(uint distance)
103 | {
104 | uint pos = _pos - distance - 1;
105 | if (pos >= _windowSize)
106 | pos += _windowSize;
107 | return _buffer[pos];
108 | }
109 | }
110 | }
111 |
--------------------------------------------------------------------------------
/ROSInstaller/LZMA/LzmaBase.cs:
--------------------------------------------------------------------------------
1 | // LzmaBase.cs
2 |
3 | namespace SevenZip.Compression.LZMA
4 | {
5 | internal abstract class Base
6 | {
7 | public const uint kNumRepDistances = 4;
8 | public const uint kNumStates = 12;
9 |
10 | // static byte []kLiteralNextStates = {0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5};
11 | // static byte []kMatchNextStates = {7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10};
12 | // static byte []kRepNextStates = {8, 8, 8, 8, 8, 8, 8, 11, 11, 11, 11, 11};
13 | // static byte []kShortRepNextStates = {9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11};
14 |
15 | public struct State
16 | {
17 | public uint Index;
18 | public void Init() { Index = 0; }
19 | public void UpdateChar()
20 | {
21 | if (Index < 4) Index = 0;
22 | else if (Index < 10) Index -= 3;
23 | else Index -= 6;
24 | }
25 | public void UpdateMatch() { Index = (uint)(Index < 7 ? 7 : 10); }
26 | public void UpdateRep() { Index = (uint)(Index < 7 ? 8 : 11); }
27 | public void UpdateShortRep() { Index = (uint)(Index < 7 ? 9 : 11); }
28 | public bool IsCharState() { return Index < 7; }
29 | }
30 |
31 | public const int kNumPosSlotBits = 6;
32 | public const int kDicLogSizeMin = 0;
33 | // public const int kDicLogSizeMax = 30;
34 | // public const uint kDistTableSizeMax = kDicLogSizeMax * 2;
35 |
36 | public const int kNumLenToPosStatesBits = 2; // it's for speed optimization
37 | public const uint kNumLenToPosStates = 1 << kNumLenToPosStatesBits;
38 |
39 | public const uint kMatchMinLen = 2;
40 |
41 | public static uint GetLenToPosState(uint len)
42 | {
43 | len -= kMatchMinLen;
44 | if (len < kNumLenToPosStates)
45 | return len;
46 | return (uint)(kNumLenToPosStates - 1);
47 | }
48 |
49 | public const int kNumAlignBits = 4;
50 | public const uint kAlignTableSize = 1 << kNumAlignBits;
51 | public const uint kAlignMask = (kAlignTableSize - 1);
52 |
53 | public const uint kStartPosModelIndex = 4;
54 | public const uint kEndPosModelIndex = 14;
55 | public const uint kNumPosModels = kEndPosModelIndex - kStartPosModelIndex;
56 |
57 | public const uint kNumFullDistances = 1 << ((int)kEndPosModelIndex / 2);
58 |
59 | public const uint kNumLitPosStatesBitsEncodingMax = 4;
60 | public const uint kNumLitContextBitsMax = 8;
61 |
62 | public const int kNumPosStatesBitsMax = 4;
63 | public const uint kNumPosStatesMax = (1 << kNumPosStatesBitsMax);
64 | public const int kNumPosStatesBitsEncodingMax = 4;
65 | public const uint kNumPosStatesEncodingMax = (1 << kNumPosStatesBitsEncodingMax);
66 |
67 | public const int kNumLowLenBits = 3;
68 | public const int kNumMidLenBits = 3;
69 | public const int kNumHighLenBits = 8;
70 | public const uint kNumLowLenSymbols = 1 << kNumLowLenBits;
71 | public const uint kNumMidLenSymbols = 1 << kNumMidLenBits;
72 | public const uint kNumLenSymbols = kNumLowLenSymbols + kNumMidLenSymbols +
73 | (1 << kNumHighLenBits);
74 | public const uint kMatchMaxLen = kMatchMinLen + kNumLenSymbols - 1;
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/ROSInstaller/LZMA/OutBuffer.cs:
--------------------------------------------------------------------------------
1 | // OutBuffer.cs
2 |
3 | namespace SevenZip.Buffer
4 | {
5 | public class OutBuffer
6 | {
7 | byte[] m_Buffer;
8 | uint m_Pos;
9 | uint m_BufferSize;
10 | System.IO.Stream m_Stream;
11 | ulong m_ProcessedSize;
12 |
13 | public OutBuffer(uint bufferSize)
14 | {
15 | m_Buffer = new byte[bufferSize];
16 | m_BufferSize = bufferSize;
17 | }
18 |
19 | public void SetStream(System.IO.Stream stream) { m_Stream = stream; }
20 | public void FlushStream() { m_Stream.Flush(); }
21 | public void CloseStream() { m_Stream.Close(); }
22 | public void ReleaseStream() { m_Stream = null; }
23 |
24 | public void Init()
25 | {
26 | m_ProcessedSize = 0;
27 | m_Pos = 0;
28 | }
29 |
30 | public void WriteByte(byte b)
31 | {
32 | m_Buffer[m_Pos++] = b;
33 | if (m_Pos >= m_BufferSize)
34 | FlushData();
35 | }
36 |
37 | public void FlushData()
38 | {
39 | if (m_Pos == 0)
40 | return;
41 | m_Stream.Write(m_Buffer, 0, (int)m_Pos);
42 | m_Pos = 0;
43 | }
44 |
45 | public ulong GetProcessedSize() { return m_ProcessedSize + m_Pos; }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/ROSInstaller/LZMA/RangeCoder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SevenZip.Compression.RangeCoder
4 | {
5 | class Encoder
6 | {
7 | public const uint kTopValue = (1 << 24);
8 |
9 | System.IO.Stream Stream;
10 |
11 | public UInt64 Low;
12 | public uint Range;
13 | uint _cacheSize;
14 | byte _cache;
15 |
16 | long StartPosition;
17 |
18 | public void SetStream(System.IO.Stream stream)
19 | {
20 | Stream = stream;
21 | }
22 |
23 | public void ReleaseStream()
24 | {
25 | Stream = null;
26 | }
27 |
28 | public void Init()
29 | {
30 | StartPosition = Stream.Position;
31 |
32 | Low = 0;
33 | Range = 0xFFFFFFFF;
34 | _cacheSize = 1;
35 | _cache = 0;
36 | }
37 |
38 | public void FlushData()
39 | {
40 | for (int i = 0; i < 5; i++)
41 | ShiftLow();
42 | }
43 |
44 | public void FlushStream()
45 | {
46 | Stream.Flush();
47 | }
48 |
49 | public void CloseStream()
50 | {
51 | Stream.Close();
52 | }
53 |
54 | public void Encode(uint start, uint size, uint total)
55 | {
56 | Low += start * (Range /= total);
57 | Range *= size;
58 | while (Range < kTopValue)
59 | {
60 | Range <<= 8;
61 | ShiftLow();
62 | }
63 | }
64 |
65 | public void ShiftLow()
66 | {
67 | if ((uint)Low < (uint)0xFF000000 || (uint)(Low >> 32) == 1)
68 | {
69 | byte temp = _cache;
70 | do
71 | {
72 | Stream.WriteByte((byte)(temp + (Low >> 32)));
73 | temp = 0xFF;
74 | }
75 | while (--_cacheSize != 0);
76 | _cache = (byte)(((uint)Low) >> 24);
77 | }
78 | _cacheSize++;
79 | Low = ((uint)Low) << 8;
80 | }
81 |
82 | public void EncodeDirectBits(uint v, int numTotalBits)
83 | {
84 | for (int i = numTotalBits - 1; i >= 0; i--)
85 | {
86 | Range >>= 1;
87 | if (((v >> i) & 1) == 1)
88 | Low += Range;
89 | if (Range < kTopValue)
90 | {
91 | Range <<= 8;
92 | ShiftLow();
93 | }
94 | }
95 | }
96 |
97 | public void EncodeBit(uint size0, int numTotalBits, uint symbol)
98 | {
99 | uint newBound = (Range >> numTotalBits) * size0;
100 | if (symbol == 0)
101 | Range = newBound;
102 | else
103 | {
104 | Low += newBound;
105 | Range -= newBound;
106 | }
107 | while (Range < kTopValue)
108 | {
109 | Range <<= 8;
110 | ShiftLow();
111 | }
112 | }
113 |
114 | public long GetProcessedSizeAdd()
115 | {
116 | return _cacheSize +
117 | Stream.Position - StartPosition + 4;
118 | // (long)Stream.GetProcessedSize();
119 | }
120 | }
121 |
122 | class Decoder
123 | {
124 | public const uint kTopValue = (1 << 24);
125 | public uint Range;
126 | public uint Code;
127 | // public Buffer.InBuffer Stream = new Buffer.InBuffer(1 << 16);
128 | public System.IO.Stream Stream;
129 |
130 | public void Init(System.IO.Stream stream)
131 | {
132 | // Stream.Init(stream);
133 | Stream = stream;
134 |
135 | Code = 0;
136 | Range = 0xFFFFFFFF;
137 | for (int i = 0; i < 5; i++)
138 | Code = (Code << 8) | (byte)Stream.ReadByte();
139 | }
140 |
141 | public void ReleaseStream()
142 | {
143 | // Stream.ReleaseStream();
144 | Stream = null;
145 | }
146 |
147 | public void CloseStream()
148 | {
149 | Stream.Close();
150 | }
151 |
152 | public void Normalize()
153 | {
154 | while (Range < kTopValue)
155 | {
156 | Code = (Code << 8) | (byte)Stream.ReadByte();
157 | Range <<= 8;
158 | }
159 | }
160 |
161 | public void Normalize2()
162 | {
163 | if (Range < kTopValue)
164 | {
165 | Code = (Code << 8) | (byte)Stream.ReadByte();
166 | Range <<= 8;
167 | }
168 | }
169 |
170 | public uint GetThreshold(uint total)
171 | {
172 | return Code / (Range /= total);
173 | }
174 |
175 | public void Decode(uint start, uint size, uint total)
176 | {
177 | Code -= start * Range;
178 | Range *= size;
179 | Normalize();
180 | }
181 |
182 | public uint DecodeDirectBits(int numTotalBits)
183 | {
184 | uint range = Range;
185 | uint code = Code;
186 | uint result = 0;
187 | for (int i = numTotalBits; i > 0; i--)
188 | {
189 | range >>= 1;
190 | /*
191 | result <<= 1;
192 | if (code >= range)
193 | {
194 | code -= range;
195 | result |= 1;
196 | }
197 | */
198 | uint t = (code - range) >> 31;
199 | code -= range & (t - 1);
200 | result = (result << 1) | (1 - t);
201 |
202 | if (range < kTopValue)
203 | {
204 | code = (code << 8) | (byte)Stream.ReadByte();
205 | range <<= 8;
206 | }
207 | }
208 | Range = range;
209 | Code = code;
210 | return result;
211 | }
212 |
213 | public uint DecodeBit(uint size0, int numTotalBits)
214 | {
215 | uint newBound = (Range >> numTotalBits) * size0;
216 | uint symbol;
217 | if (Code < newBound)
218 | {
219 | symbol = 0;
220 | Range = newBound;
221 | }
222 | else
223 | {
224 | symbol = 1;
225 | Code -= newBound;
226 | Range -= newBound;
227 | }
228 | Normalize();
229 | return symbol;
230 | }
231 |
232 | // ulong GetProcessedSize() {return Stream.GetProcessedSize(); }
233 | }
234 | }
235 |
--------------------------------------------------------------------------------
/ROSInstaller/LZMA/RangeCoderBit.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SevenZip.Compression.RangeCoder
4 | {
5 | struct BitEncoder
6 | {
7 | public const int kNumBitModelTotalBits = 11;
8 | public const uint kBitModelTotal = (1 << kNumBitModelTotalBits);
9 | const int kNumMoveBits = 5;
10 | const int kNumMoveReducingBits = 2;
11 | public const int kNumBitPriceShiftBits = 6;
12 |
13 | uint Prob;
14 |
15 | public void Init() { Prob = kBitModelTotal >> 1; }
16 |
17 | public void UpdateModel(uint symbol)
18 | {
19 | if (symbol == 0)
20 | Prob += (kBitModelTotal - Prob) >> kNumMoveBits;
21 | else
22 | Prob -= (Prob) >> kNumMoveBits;
23 | }
24 |
25 | public void Encode(Encoder encoder, uint symbol)
26 | {
27 | // encoder.EncodeBit(Prob, kNumBitModelTotalBits, symbol);
28 | // UpdateModel(symbol);
29 | uint newBound = (encoder.Range >> kNumBitModelTotalBits) * Prob;
30 | if (symbol == 0)
31 | {
32 | encoder.Range = newBound;
33 | Prob += (kBitModelTotal - Prob) >> kNumMoveBits;
34 | }
35 | else
36 | {
37 | encoder.Low += newBound;
38 | encoder.Range -= newBound;
39 | Prob -= (Prob) >> kNumMoveBits;
40 | }
41 | if (encoder.Range < Encoder.kTopValue)
42 | {
43 | encoder.Range <<= 8;
44 | encoder.ShiftLow();
45 | }
46 | }
47 |
48 | private static UInt32[] ProbPrices = new UInt32[kBitModelTotal >> kNumMoveReducingBits];
49 |
50 | static BitEncoder()
51 | {
52 | const int kNumBits = (kNumBitModelTotalBits - kNumMoveReducingBits);
53 | for (int i = kNumBits - 1; i >= 0; i--)
54 | {
55 | UInt32 start = (UInt32)1 << (kNumBits - i - 1);
56 | UInt32 end = (UInt32)1 << (kNumBits - i);
57 | for (UInt32 j = start; j < end; j++)
58 | ProbPrices[j] = ((UInt32)i << kNumBitPriceShiftBits) +
59 | (((end - j) << kNumBitPriceShiftBits) >> (kNumBits - i - 1));
60 | }
61 | }
62 |
63 | public uint GetPrice(uint symbol)
64 | {
65 | return ProbPrices[(((Prob - symbol) ^ ((-(int)symbol))) & (kBitModelTotal - 1)) >> kNumMoveReducingBits];
66 | }
67 | public uint GetPrice0() { return ProbPrices[Prob >> kNumMoveReducingBits]; }
68 | public uint GetPrice1() { return ProbPrices[(kBitModelTotal - Prob) >> kNumMoveReducingBits]; }
69 | }
70 |
71 | struct BitDecoder
72 | {
73 | public const int kNumBitModelTotalBits = 11;
74 | public const uint kBitModelTotal = (1 << kNumBitModelTotalBits);
75 | const int kNumMoveBits = 5;
76 |
77 | uint Prob;
78 |
79 | public void UpdateModel(int numMoveBits, uint symbol)
80 | {
81 | if (symbol == 0)
82 | Prob += (kBitModelTotal - Prob) >> numMoveBits;
83 | else
84 | Prob -= (Prob) >> numMoveBits;
85 | }
86 |
87 | public void Init() { Prob = kBitModelTotal >> 1; }
88 |
89 | public uint Decode(RangeCoder.Decoder rangeDecoder)
90 | {
91 | uint newBound = (uint)(rangeDecoder.Range >> kNumBitModelTotalBits) * (uint)Prob;
92 | if (rangeDecoder.Code < newBound)
93 | {
94 | rangeDecoder.Range = newBound;
95 | Prob += (kBitModelTotal - Prob) >> kNumMoveBits;
96 | if (rangeDecoder.Range < Decoder.kTopValue)
97 | {
98 | rangeDecoder.Code = (rangeDecoder.Code << 8) | (byte)rangeDecoder.Stream.ReadByte();
99 | rangeDecoder.Range <<= 8;
100 | }
101 | return 0;
102 | }
103 | else
104 | {
105 | rangeDecoder.Range -= newBound;
106 | rangeDecoder.Code -= newBound;
107 | Prob -= (Prob) >> kNumMoveBits;
108 | if (rangeDecoder.Range < Decoder.kTopValue)
109 | {
110 | rangeDecoder.Code = (rangeDecoder.Code << 8) | (byte)rangeDecoder.Stream.ReadByte();
111 | rangeDecoder.Range <<= 8;
112 | }
113 | return 1;
114 | }
115 | }
116 | }
117 | }
118 |
--------------------------------------------------------------------------------
/ROSInstaller/LZMA/RangeCoderBitTree.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SevenZip.Compression.RangeCoder
4 | {
5 | struct BitTreeEncoder
6 | {
7 | BitEncoder[] Models;
8 | int NumBitLevels;
9 |
10 | public BitTreeEncoder(int numBitLevels)
11 | {
12 | NumBitLevels = numBitLevels;
13 | Models = new BitEncoder[1 << numBitLevels];
14 | }
15 |
16 | public void Init()
17 | {
18 | for (uint i = 1; i < (1 << NumBitLevels); i++)
19 | Models[i].Init();
20 | }
21 |
22 | public void Encode(Encoder rangeEncoder, UInt32 symbol)
23 | {
24 | UInt32 m = 1;
25 | for (int bitIndex = NumBitLevels; bitIndex > 0; )
26 | {
27 | bitIndex--;
28 | UInt32 bit = (symbol >> bitIndex) & 1;
29 | Models[m].Encode(rangeEncoder, bit);
30 | m = (m << 1) | bit;
31 | }
32 | }
33 |
34 | public void ReverseEncode(Encoder rangeEncoder, UInt32 symbol)
35 | {
36 | UInt32 m = 1;
37 | for (UInt32 i = 0; i < NumBitLevels; i++)
38 | {
39 | UInt32 bit = symbol & 1;
40 | Models[m].Encode(rangeEncoder, bit);
41 | m = (m << 1) | bit;
42 | symbol >>= 1;
43 | }
44 | }
45 |
46 | public UInt32 GetPrice(UInt32 symbol)
47 | {
48 | UInt32 price = 0;
49 | UInt32 m = 1;
50 | for (int bitIndex = NumBitLevels; bitIndex > 0; )
51 | {
52 | bitIndex--;
53 | UInt32 bit = (symbol >> bitIndex) & 1;
54 | price += Models[m].GetPrice(bit);
55 | m = (m << 1) + bit;
56 | }
57 | return price;
58 | }
59 |
60 | public UInt32 ReverseGetPrice(UInt32 symbol)
61 | {
62 | UInt32 price = 0;
63 | UInt32 m = 1;
64 | for (int i = NumBitLevels; i > 0; i--)
65 | {
66 | UInt32 bit = symbol & 1;
67 | symbol >>= 1;
68 | price += Models[m].GetPrice(bit);
69 | m = (m << 1) | bit;
70 | }
71 | return price;
72 | }
73 |
74 | public static UInt32 ReverseGetPrice(BitEncoder[] Models, UInt32 startIndex,
75 | int NumBitLevels, UInt32 symbol)
76 | {
77 | UInt32 price = 0;
78 | UInt32 m = 1;
79 | for (int i = NumBitLevels; i > 0; i--)
80 | {
81 | UInt32 bit = symbol & 1;
82 | symbol >>= 1;
83 | price += Models[startIndex + m].GetPrice(bit);
84 | m = (m << 1) | bit;
85 | }
86 | return price;
87 | }
88 |
89 | public static void ReverseEncode(BitEncoder[] Models, UInt32 startIndex,
90 | Encoder rangeEncoder, int NumBitLevels, UInt32 symbol)
91 | {
92 | UInt32 m = 1;
93 | for (int i = 0; i < NumBitLevels; i++)
94 | {
95 | UInt32 bit = symbol & 1;
96 | Models[startIndex + m].Encode(rangeEncoder, bit);
97 | m = (m << 1) | bit;
98 | symbol >>= 1;
99 | }
100 | }
101 | }
102 |
103 | struct BitTreeDecoder
104 | {
105 | BitDecoder[] Models;
106 | int NumBitLevels;
107 |
108 | public BitTreeDecoder(int numBitLevels)
109 | {
110 | NumBitLevels = numBitLevels;
111 | Models = new BitDecoder[1 << numBitLevels];
112 | }
113 |
114 | public void Init()
115 | {
116 | for (uint i = 1; i < (1 << NumBitLevels); i++)
117 | Models[i].Init();
118 | }
119 |
120 | public uint Decode(RangeCoder.Decoder rangeDecoder)
121 | {
122 | uint m = 1;
123 | for (int bitIndex = NumBitLevels; bitIndex > 0; bitIndex--)
124 | m = (m << 1) + Models[m].Decode(rangeDecoder);
125 | return m - ((uint)1 << NumBitLevels);
126 | }
127 |
128 | public uint ReverseDecode(RangeCoder.Decoder rangeDecoder)
129 | {
130 | uint m = 1;
131 | uint symbol = 0;
132 | for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++)
133 | {
134 | uint bit = Models[m].Decode(rangeDecoder);
135 | m <<= 1;
136 | m += bit;
137 | symbol |= (bit << bitIndex);
138 | }
139 | return symbol;
140 | }
141 |
142 | public static uint ReverseDecode(BitDecoder[] Models, UInt32 startIndex,
143 | RangeCoder.Decoder rangeDecoder, int NumBitLevels)
144 | {
145 | uint m = 1;
146 | uint symbol = 0;
147 | for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++)
148 | {
149 | uint bit = Models[startIndex + m].Decode(rangeDecoder);
150 | m <<= 1;
151 | m += bit;
152 | symbol |= (bit << bitIndex);
153 | }
154 | return symbol;
155 | }
156 | }
157 | }
158 |
--------------------------------------------------------------------------------
/ROSInstaller/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Windows.Forms;
5 |
6 | namespace ROSInstaller
7 | {
8 | static class Program
9 | {
10 | ///
11 | /// The main entry point for the application.
12 | ///
13 | [STAThread]
14 | static void Main()
15 | {
16 | Application.EnableVisualStyles();
17 | Application.SetCompatibleTextRenderingDefault(false);
18 | Application.Run(new Form1());
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/ROSInstaller/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("ROSInstaller")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("ROSInstaller")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("e7aae355-267f-432d-a85f-527347b7f2b8")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/ROSInstaller/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace ROSInstaller.Properties
12 | {
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources
26 | {
27 |
28 | private static global::System.Resources.ResourceManager resourceMan;
29 |
30 | private static global::System.Globalization.CultureInfo resourceCulture;
31 |
32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
33 | internal Resources()
34 | {
35 | }
36 |
37 | ///
38 | /// Returns the cached ResourceManager instance used by this class.
39 | ///
40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
41 | internal static global::System.Resources.ResourceManager ResourceManager
42 | {
43 | get
44 | {
45 | if ((resourceMan == null))
46 | {
47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ROSInstaller.Properties.Resources", typeof(Resources).Assembly);
48 | resourceMan = temp;
49 | }
50 | return resourceMan;
51 | }
52 | }
53 |
54 | ///
55 | /// Overrides the current thread's CurrentUICulture property for all
56 | /// resource lookups using this strongly typed resource class.
57 | ///
58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
59 | internal static global::System.Globalization.CultureInfo Culture
60 | {
61 | get
62 | {
63 | return resourceCulture;
64 | }
65 | set
66 | {
67 | resourceCulture = value;
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/ROSInstaller/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/ROSInstaller/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace ROSInstaller.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/ROSInstaller/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ROSInstaller/ROSInstallTask.cs:
--------------------------------------------------------------------------------
1 | using SevenZip;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Diagnostics;
5 | using System.IO;
6 | using System.IO.Pipes;
7 | using System.Linq;
8 | using System.Reflection;
9 | using System.Text;
10 | using System.Threading;
11 | using System.Windows.Forms;
12 |
13 | namespace ROSInstaller
14 | {
15 | class ROSInstallTask : ICodeProgress, IDisposable
16 | {
17 | public readonly string DestDir;
18 | Exception _TarException, _DecompException;
19 | Thread _DecompThread, _TarThread;
20 |
21 | Stream _TarStream;
22 |
23 | long _TotalSize, _Done;
24 | private AnonymousPipeServerStream _OutPipe;
25 | private StreamWriter _LogStream;
26 |
27 | public bool HasExited
28 | {
29 | get { return !_DecompThread.IsAlive && !_TarThread.IsAlive; }
30 | }
31 |
32 | public string ErrorMessage
33 | {
34 | get
35 | {
36 | StringBuilder result = new StringBuilder();
37 | if (_DecompException != null)
38 | result.AppendLine("Decompressing failed: " + _DecompException.Message);
39 | if (_TarException != null)
40 | result.AppendLine("TAR Unpacking failed: " + _TarException.Message);
41 | return result.Length == 0 ? null : result.ToString();
42 | }
43 | }
44 |
45 | public ROSInstallTask(string destDir, string logFile)
46 | {
47 | DestDir = destDir;
48 | if (logFile != null)
49 | {
50 | Directory.CreateDirectory(Path.GetDirectoryName(logFile));
51 | _LogStream = File.CreateText(logFile);
52 | _LogStream.AutoFlush = true;
53 | }
54 |
55 | _TarThread = new Thread(TarExtractThreadBody);
56 | _DecompThread = new Thread(DecompressionThreadBody);
57 |
58 | _OutPipe = new AnonymousPipeServerStream(PipeDirection.Out);
59 | _TarStream = new FullReadAdapter(new AnonymousPipeClientStream(PipeDirection.In, _OutPipe.ClientSafePipeHandle));
60 |
61 | _DecompThread.Start();
62 | _TarThread.Start();
63 | }
64 |
65 | void TarExtractThreadBody()
66 | {
67 | try
68 | {
69 | _LogStream?.WriteLine("Initializing unpacker...");
70 | CygwinTarUnpacker unpacker = new CygwinTarUnpacker(_TarStream, DestDir, _LogStream);
71 | _LogStream?.WriteLine($"Creating {DestDir}...");
72 | Directory.CreateDirectory(DestDir);
73 | _LogStream?.WriteLine($"Unpacking...");
74 |
75 | unpacker.Unpack(false, true);
76 | _LogStream?.WriteLine($"Unpacking done. Creating cygwin.bat...");
77 |
78 | File.WriteAllText(Path.Combine(DestDir, "cygwin.bat"), "@set MYDIR=%~dp0\r\n@start %MYDIR%\\bin\\mintty.exe -i /Cygwin-Terminal.ico -\r\n");
79 |
80 | _LogStream?.WriteLine($"Unpacking done. Initializing Cygwin installation...");
81 | var bash = Path.Combine(DestDir, "bin", "bash.exe");
82 | var startInfo = new ProcessStartInfo(bash, "--login -c exit") { UseShellExecute = false, CreateNoWindow = true };
83 | var proc = Process.Start(startInfo);
84 | if (!proc.WaitForExit(20000))
85 | {
86 | _LogStream?.WriteLine($"Cygwin initializer hanging. Terminating...");
87 | proc.Kill();
88 | }
89 |
90 | _LogStream?.WriteLine($"Updating bashrc...");
91 | var profile = Path.Combine(DestDir, "home", Environment.UserName, ".bashrc");
92 | if (!File.Exists(profile))
93 | throw new Exception(profile + " not found. Please run bash and update it manually");
94 |
95 | File.AppendAllText(profile, "\ncd /opt/ros/install_isolated\nCATKIN_SHELL=sh\n. ./setup.sh\nexport PATH=$PATH:/usr/local/lib:/opt/ros/install_isolated/lib\n");
96 |
97 | _LogStream?.WriteLine($"Installation completed");
98 |
99 | //The unpacker might have returned due to reading an empty record that may be followed by some padding records.
100 | //If we close the pipe without reading the padding records, the unpacking thread will see this as an error.
101 | byte[] data = new byte[512];
102 | for (;;)
103 | {
104 | int done = _TarStream.Read(data, 0, data.Length);
105 | if (done == 0)
106 | break;
107 | for (int i = 0; i < done; i++)
108 | if (data[i] != 0)
109 | throw new Exception("Unexpected data after the end of TAR stream:" + string.Format("{0:x2}", data[i]));
110 | }
111 | }
112 | catch (Exception ex)
113 | {
114 | _LogStream?.WriteLine("Exception during unpacking: " + ex.ToString());
115 |
116 | _TarException = ex;
117 | }
118 | finally
119 | {
120 | _TarStream.Close();
121 | }
122 | }
123 |
124 | void DecompressionThreadBody()
125 | {
126 | try
127 | {
128 | FileStream inStream;
129 | var args = Environment.GetCommandLineArgs();
130 | if (args.Length > 1)
131 | {
132 | string fn = args[1];
133 | long offset = 0;
134 | int idx = fn.IndexOf('@');
135 | if (idx != -1)
136 | {
137 | offset = long.Parse(fn.Substring(idx + 1));
138 | fn = fn.Substring(0, idx);
139 | }
140 | inStream = new FileStream(fn, FileMode.Open, FileAccess.Read);
141 | inStream.Seek(offset, SeekOrigin.Begin);
142 | }
143 | else
144 | {
145 | inStream = new FileStream(Assembly.GetExecutingAssembly().Location, FileMode.Open, FileAccess.Read);
146 | inStream.Seek(94720, SeekOrigin.Begin);
147 | }
148 |
149 | byte[] properties = new byte[5];
150 | if (inStream.Read(properties, 0, 5) != 5)
151 | throw (new Exception("input .lzma is too short"));
152 |
153 | var decoder = new SevenZip.Compression.LZMA.Decoder();
154 | decoder.SetDecoderProperties(properties);
155 |
156 | long outSize = 0;
157 | for (int i = 0; i < 8; i++)
158 | {
159 | int v = inStream.ReadByte();
160 | if (v < 0)
161 | throw (new Exception("Can't Read size from LZMA header"));
162 | outSize |= ((long)(byte)v) << (8 * i);
163 | }
164 | long compressedSize = inStream.Length - inStream.Position;
165 | _TotalSize = compressedSize;
166 | decoder.Code(inStream, _OutPipe, compressedSize, outSize, this);
167 | }
168 | catch (Exception ex)
169 | {
170 | _DecompException = ex;
171 | }
172 | finally
173 | {
174 | _OutPipe.Close();
175 | }
176 | }
177 |
178 | public void SetProgress(long inSize, long outSize)
179 | {
180 | _Done = inSize;
181 | }
182 |
183 | public void ApplyProgress(ProgressBar bar)
184 | {
185 | if (_TotalSize == 0)
186 | return;
187 | try
188 | {
189 | int val = (int)((_Done * bar.Maximum) / _TotalSize);
190 | bar.Value = Math.Min(val, bar.Maximum);
191 | }
192 | catch { }
193 | }
194 |
195 | public void Dispose()
196 | {
197 | _OutPipe.Dispose();
198 | _TarStream.Dispose();
199 | _LogStream?.Close();
200 | _LogStream = null;
201 | }
202 |
203 | internal void Abort()
204 | {
205 | _DecompThread.Abort();
206 | _TarThread.Abort();
207 | _OutPipe.Close();
208 | _TarStream.Close();
209 | }
210 | }
211 | }
212 |
--------------------------------------------------------------------------------
/ROSInstaller/ROSInstaller.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {E7AAE355-267F-432D-A85F-527347B7F2B8}
8 | WinExe
9 | Properties
10 | ROSInstaller
11 | ROSInstaller
12 | v4.0
13 | 512
14 |
15 |
16 | AnyCPU
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | app.manifest
27 |
28 |
29 | bin\Release %28Jade%29\
30 | TRACE;ROS_JADE
31 | true
32 | pdbonly
33 | AnyCPU
34 | prompt
35 | MinimumRecommendedRules.ruleset
36 |
37 |
38 | bin\Release %28Indigo%29\
39 | TRACE;ROS_INDIGO
40 | true
41 | pdbonly
42 | AnyCPU
43 | prompt
44 | MinimumRecommendedRules.ruleset
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 | Form
64 |
65 |
66 | Form1.cs
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 | Form1.cs
90 |
91 |
92 | ResXFileCodeGenerator
93 | Resources.Designer.cs
94 | Designer
95 |
96 |
97 | True
98 | Resources.resx
99 |
100 |
101 |
102 | SettingsSingleFileGenerator
103 | Settings.Designer.cs
104 |
105 |
106 | True
107 | Settings.settings
108 | True
109 |
110 |
111 |
112 |
119 |
--------------------------------------------------------------------------------
/ROSInstaller/ROSInstaller.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.23107.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ROSInstaller", "ROSInstaller.csproj", "{E7AAE355-267F-432D-A85F-527347B7F2B8}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release (Indigo)|Any CPU = Release (Indigo)|Any CPU
12 | Release (Jade)|Any CPU = Release (Jade)|Any CPU
13 | EndGlobalSection
14 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
15 | {E7AAE355-267F-432D-A85F-527347B7F2B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
16 | {E7AAE355-267F-432D-A85F-527347B7F2B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
17 | {E7AAE355-267F-432D-A85F-527347B7F2B8}.Release (Indigo)|Any CPU.ActiveCfg = Release (Indigo)|Any CPU
18 | {E7AAE355-267F-432D-A85F-527347B7F2B8}.Release (Indigo)|Any CPU.Build.0 = Release (Indigo)|Any CPU
19 | {E7AAE355-267F-432D-A85F-527347B7F2B8}.Release (Jade)|Any CPU.ActiveCfg = Release (Jade)|Any CPU
20 | {E7AAE355-267F-432D-A85F-527347B7F2B8}.Release (Jade)|Any CPU.Build.0 = Release (Jade)|Any CPU
21 | EndGlobalSection
22 | GlobalSection(SolutionProperties) = preSolution
23 | HideSolutionNode = FALSE
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/ROSInstaller/ShellLink.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.InteropServices;
5 | using System.Text;
6 |
7 | namespace ROSInstaller
8 | {
9 | [ComImport]
10 | [Guid("00021401-0000-0000-C000-000000000046")]
11 | internal class ShellLink
12 | {
13 | }
14 |
15 | [ComImport]
16 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
17 | [Guid("000214F9-0000-0000-C000-000000000046")]
18 | internal interface IShellLink
19 | {
20 | void GetPath([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszFile, int cchMaxPath, out IntPtr pfd, int fFlags);
21 | void GetIDList(out IntPtr ppidl);
22 | void SetIDList(IntPtr pidl);
23 | void GetDescription([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszName, int cchMaxName);
24 | void SetDescription([MarshalAs(UnmanagedType.LPWStr)] string pszName);
25 | void GetWorkingDirectory([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszDir, int cchMaxPath);
26 | void SetWorkingDirectory([MarshalAs(UnmanagedType.LPWStr)] string pszDir);
27 | void GetArguments([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszArgs, int cchMaxPath);
28 | void SetArguments([MarshalAs(UnmanagedType.LPWStr)] string pszArgs);
29 | void GetHotkey(out short pwHotkey);
30 | void SetHotkey(short wHotkey);
31 | void GetShowCmd(out int piShowCmd);
32 | void SetShowCmd(int iShowCmd);
33 | void GetIconLocation([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszIconPath, int cchIconPath, out int piIcon);
34 | void SetIconLocation([MarshalAs(UnmanagedType.LPWStr)] string pszIconPath, int iIcon);
35 | void SetRelativePath([MarshalAs(UnmanagedType.LPWStr)] string pszPathRel, int dwReserved);
36 | void Resolve(IntPtr hwnd, int fFlags);
37 | void SetPath([MarshalAs(UnmanagedType.LPWStr)] string pszFile);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/ROSInstaller/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
52 |
59 |
60 |
61 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/autobuild/build_ros.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | CYGWIN_MIRROR="--mirror http://cygwin.mirror.gtcomm.net/"
3 | ROS_WORKSPACE=/opt/ros
4 | ROS_DEPS=/opt/rosdeps
5 | ROS_DISTRO=indigo
6 | export SOURCEFORGE_MIRROR=downloads.sourceforge.net
7 |
8 | SCRIPT_ROOT=$(dirname $(readlink -f $0))
9 |
10 | provide_prerequisite () { #Args: package name, [check command = $1 --version]
11 | testcmd=$2
12 | if [ -z "$testcmd" ]
13 | then
14 | testcmd="test -e /usr/bin/$1"
15 | fi
16 |
17 | $testcmd >/dev/null 2>&1 && return 0
18 | apt-cyg $CYGWIN_MIRROR install $1 || (echo "$1 installation failed. Run 'apt-cyg install $1' to install it manually."; return 1)
19 | $testcmd >/dev/null 2>&1 && return 0
20 | echo $testcmd
21 | echo "$1 cannot be found despite successful installation. Please investigate.";
22 | return 1
23 | }
24 |
25 | provide_pip_prerequisite () { #Args: package name, [check command = test -f /usr/bin/$1]
26 | testcmd=$2
27 | if [ -z "$testcmd" ]
28 | then
29 | testcmd="test -f /usr/bin/$1"
30 | fi
31 |
32 | $testcmd >/dev/null 2>&1 && return 0
33 | pip install -U $1 || (echo "$1 installation failed. Run 'pip install -U $1' to install it manually."; return 1)
34 | $testcmd >/dev/null 2>&1 && return 0
35 | echo $testcmd
36 | echo "$1 cannot be found despite successful installation. Please investigate.";
37 | return 1
38 | }
39 |
40 | provide_pip_library() {
41 | provide_pip_prerequisite $1 "test -d /lib/python2.7/site-packages/$1*"
42 | }
43 |
44 | install_pip () {
45 | wget https://bootstrap.pypa.io/get-pip.py || return 1
46 | python get-pip.py || (rm get-pip.py ; return 1)
47 | rm get-pip.py
48 | return 0;
49 | }
50 |
51 | patch_single_module() { #Args:
52 | test -e $SCRIPT_ROOT/patches/ros/$ROS_DISTRO/$1.patch || test -e $SCRIPT_ROOT/patches/ros/$1.patch || return 0 #No patch avilable
53 | test -e $ROS_WORKSPACE/src/$1/$1.patch && return 0 #Already patched
54 | echo "Patching $1..."
55 | if [ -e $SCRIPT_ROOT/patches/ros/$ROS_DISTRO/$1.patch ]; then
56 | PATCH_FILE=$SCRIPT_ROOT/patches/ros/$ROS_DISTRO/$1.patch
57 | else
58 | PATCH_FILE=$SCRIPT_ROOT/patches/ros/$1.patch
59 | fi
60 |
61 | patch -d $ROS_WORKSPACE/src/$1 -p2 < $PATCH_FILE || return 1
62 | cp $PATCH_FILE $ROS_WORKSPACE/src/$1/$1.patch #Just to indicate that this has already been patched
63 | }
64 |
65 | patch_system_file() { #Args: file, patch file
66 | test -e $1.patch && return 0 #Already patched
67 | patch $1 < $2 || return 1
68 | cp $2 $1.patch
69 | }
70 |
71 | add_package_to_src() { #Args: subdir, URL
72 | test -d src/$1 && echo "$1 already checked out" && return 0
73 | test -d $1 || git clone $2 src/$1 || return 1
74 | }
75 |
76 | mkdir -m 777 -p $ROS_WORKSPACE $ROS_DEPS
77 |
78 | echo "Checking tool prerequisites..."
79 | for pkg in python make cmake gdb git patch unzip pkg-config; do
80 | provide_prerequisite $pkg || exit 1
81 | done
82 | provide_prerequisite gcc-g++ "/usr/bin/g++ --version" || exit 1
83 | provide_prerequisite diffutils "/usr/bin/cmp --version" || exit 1
84 | provide_prerequisite libtool "libtool --version" || exit 1
85 | provide_prerequisite fluid "test -f /usr/bin/fluid.exe" || exit 1
86 | provide_prerequisite graphviz "test -f /usr/bin/dot.exe" || exit 1
87 | provide_prerequisite oxygen-icons "test -d /usr/share/icons/oxygen" || exit 1
88 | provide_prerequisite hicolor-icon-theme "test -d /usr/share/icons/hicolor" || exit 1
89 | provide_prerequisite gnome-icon-theme "test -d /usr/share/icons/gnome" || exit 1
90 |
91 | echo "Checking library prerequisites..."
92 | provide_prerequisite libpoco-devel "test -f /lib/libPocoData.dll.a" || exit 1
93 | provide_prerequisite libboost-devel "test -f /lib/libboost_system.dll.a" || exit 1
94 | provide_prerequisite libboost_python-devel "test -f /lib/libboost_python.dll.a" || exit 1
95 | provide_prerequisite libGLU-devel "test -f /lib/libGL.dll.a" || exit 1
96 | provide_prerequisite libgtk2.0-devel "test -f /lib/libgtk-x11-2.0.dll.a" || exit 1
97 | for lib in curl jpeg fltk X11 Xext freetype xml2 qhull SDL SDL_image ffi; do
98 | provide_prerequisite lib$lib-devel "test -f /lib/lib$lib.dll.a" || exit 1
99 | done
100 |
101 | echo "Checking python tool prerequisites..."
102 | test -f /usr/bin/pip || (install_pip || exit 1)
103 | for pkg in rosdep rosinstall_generator wstool rosinstall; do
104 | provide_pip_prerequisite $pkg || exit 1
105 | done
106 |
107 | echo "Checking python library prerequisites..."
108 | for pkg in empy; do
109 | provide_pip_library $pkg || exit 1
110 | done
111 |
112 | provide_pip_prerequisite numpy "test -d /lib/python2.7/site-packages/numpy"
113 | provide_pip_prerequisite pyparsing "test -f /lib/python2.7/site-packages/pyparsing.py"
114 | provide_pip_prerequisite pydot "test -f /lib/python2.7/site-packages/pydot.py"
115 | provide_pip_prerequisite pyqtgraph "test -d /lib/python2.7/site-packages/pyqtgraph"
116 | provide_pip_prerequisite Pillow "test -d /lib/python2.7/site-packages/PIL"
117 | provide_pip_prerequisite cairocffi "test -d /lib/python2.7/site-packages/cairocffi"
118 |
119 |
120 | if [ -z $NUMBER_OF_PROCESSORS ]; then
121 | echo "Will build external libraries in one thread"
122 | else
123 | echo "Will build external libraries in one $NUMBER_OF_PROCESSORS threads"
124 | export PARALLEL_BUILD_FLAGS=-j$NUMBER_OF_PROCESSORS
125 | fi
126 |
127 | export PATH=$PATH:$QTDIR/lib
128 |
129 | echo "Patching system files..."
130 | patch_system_file /usr/include/boost/thread/pthread/recursive_mutex.hpp $SCRIPT_ROOT/patches/boost.patch
131 | patch_system_file /usr/include/ctype.h $SCRIPT_ROOT/patches/ctype.patch
132 | patch_system_file /usr/include/sys/features.h $SCRIPT_ROOT/patches/features.patch
133 |
134 | echo "Checking buildable external packages..."
135 | for pkg in `ls -1 $SCRIPT_ROOT/install_helpers/*.sh`; do
136 | bash $pkg $ROS_DEPS || exit 1
137 | done
138 |
139 | cd $ROS_WORKSPACE || exit 1
140 | test -e $ROS_DISTRO-desktop-full-wet.rosinstall || (echo "Generating package list..."; rosinstall_generator desktop_full --rosdistro $ROS_DISTRO --deps --wet-only --tar > $ROS_DISTRO-desktop-full-wet.rosinstall)
141 | test -e src/.rosinstall || (echo "Downloading package sources..."; wstool init -j8 src $ROS_DISTRO-desktop-full-wet.rosinstall)
142 |
143 | if [ -d src/navigation_msgs ] && [ ! -d src/navigation_msgs/move_base_msgs ]; then
144 | rm -rf src/navigation_msgs
145 | fi
146 |
147 | add_package_to_src navigation https://github.com/ros-planning/navigation.git || exit 1
148 | add_package_to_src navigation_msgs https://github.com/ros-planning/navigation_msgs.git || exit 1
149 | add_package_to_src openslam_gmapping https://github.com/ros-perception/openslam_gmapping.git || exit 1
150 | add_package_to_src slam_gmapping https://github.com/ros-perception/slam_gmapping.git || exit 1
151 |
152 | echo "Patching ROS sources..."
153 | for dir in `ls -1 $ROS_WORKSPACE/src`; do
154 | patch_single_module $dir || exit 1
155 | done
156 |
157 | test -e src/map_msgs && rm -rf src/map_msgs
158 |
159 | for pkg in gazebo_ros_pkgs/gazebo_msgs gazebo_ros_pkgs/gazebo_plugins gazebo_ros_pkgs/gazebo_ros gazebo_ros_pkgs/gazebo_ros_pkgs image_transport_plugins/theora_image_transport; do
160 | echo "*** $pkg IS EXCLUDED FROM BUILD ***"
161 | test -e src/$pkg/package.xml && mv src/$pkg/package.xml src/$pkg/package.disabled
162 | done
163 |
164 | echo "Building ROS..."
165 | export PYTHONPATH=$PYTHONPATH:$ROS_WORKSPACE/install_isolated/lib/python2.7/site-packages
166 | export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
167 | src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=1 -DCMAKE_LEGACY_CYGWIN_WIN32=0 -DCATKIN_ENABLE_TESTING=0 $* || exit 1
168 |
169 | chmod 777 $ROS_WORKSPACE/install_isolated/lib/python2.7/site-packages/qt_gui_cpp/libqt_gui_cpp_sip.dll
170 |
171 | cp $SCRIPT_ROOT/linkexes.pl .
172 | perl linkexes.pl
173 | test -d /usr/share/icons/Tango || (echo "!!!! Tango icons not found !!!!" ; echo "Please copy the /usr/share/icons/Tango folder from a Linux machine with KDE")
174 | echo "ROS build complete."
175 | echo "Do not forget to rebase it by closing ALL cygwin windows and running rebase_ros.bat"
--------------------------------------------------------------------------------
/autobuild/build_ros_isolated.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | env -i HOME=$HOME USERNAME=$USERNAME NUMBER_OF_PROCESSORS=$NUMBER_OF_PROCESSORS /bin/bash --login -c "$(dirname $(readlink -f $0))/build_ros.sh $*"
--------------------------------------------------------------------------------
/autobuild/install_helpers/01_rosconsole_bridge.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/local/lib/libconsole_bridge.dll.a ]; then
3 | echo " Found console_bridge"
4 | exit 0
5 | fi
6 |
7 | test -d "$1" || (echo "Missing base directory" ; exit 1)
8 | cd $1
9 | test -d console_bridge || (git clone git://github.com/ros/console_bridge.git || exit 1)
10 | cd console_bridge || exit 1
11 | cmake . || exit 1
12 | make || exit 1
13 | make install || exit 1
14 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/02_gtest.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/include/gtest/gtest.h ]; then
3 | echo " Found gtest"
4 | exit 0
5 | fi
6 |
7 | test -d "$1" || (echo "Missing base directory" ; exit 1)
8 | cd $1
9 | PACKAGE_BASE=gtest-1.7.0
10 | test -e $PACKAGE_BASE.zip || wget https://googletest.googlecode.com/files/$PACKAGE_BASE.zip
11 | test -d $PACKAGE_BASE || unzip $PACKAGE_BASE.zip
12 | cd $PACKAGE_BASE || exit 1
13 | cmake . || exit 1
14 | make || exit 1
15 | cp -a include/gtest /usr/include
16 | cp -a *.a /usr/lib/
17 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/03_eigen.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/local/include/eigen3/Eigen ]; then
3 | echo " Found eigen"
4 | exit 0
5 | fi
6 | test -d "$1" || (echo "Missing base directory" ; exit 1)
7 | cd $1
8 | EIGEN_VERSION=3.2.1
9 | test -e $EIGEN_VERSION.tar.bz2 || wget http://bitbucket.org/eigen/eigen/get/$EIGEN_VERSION.tar.bz2
10 | test -d eigen-* || tar xf $EIGEN_VERSION.tar.bz2
11 | cd eigen-* || exit 1
12 | mkdir -p build || exit 1
13 | cd build || exit 1
14 | cmake .. || exit 1
15 | make || exit 1
16 | make install || exit 1
--------------------------------------------------------------------------------
/autobuild/install_helpers/04_tinyxml.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/lib/libtinyxml.dll.a ]; then
3 | echo " Found tinyxml"
4 | exit 0
5 | fi
6 | test -d "$1" || (echo "Missing base directory" ; exit 1)
7 | cd $1
8 | TINYXML_VERSION=2.6.2
9 | TINYXML_VERSION_PLAIN=2_6_2
10 |
11 | test -e tinyxml_$TINYXML_VERSION_PLAIN.tar.gz || wget http://$SOURCEFORGE_MIRROR/project/tinyxml/tinyxml/$TINYXML_VERSION/tinyxml_$TINYXML_VERSION_PLAIN.tar.gz || exit 1
12 | test -d tinyxml || (tar xf tinyxml_$TINYXML_VERSION_PLAIN.tar.gz && patch -d tinyxml -p1 < $(dirname $0)/../patches/3rdparty/tinyxml.patch) || exit 1
13 | cd tinyxml || exit 1
14 | make TINYXML_USE_STL=YES || exit 1
15 | g++ -shared tinystr.o tinyxml.o tinyxmlerror.o tinyxmlparser.o -o cygtinyxml.dll -Wl,--export-all-symbols -Wl,--out-implib=libtinyxml.dll.a || exit 1
16 | cp *.h /usr/include || exit 1
17 | cp libtinyxml.dll.a /usr/lib || exit 1
18 | cp cygtinyxml.dll /usr/bin || exit 1
19 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/05_lz4.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/lib/liblz4.a ]; then
3 | echo " Found lz4"
4 | exit 0
5 | fi
6 | test -d "$1" || (echo "Missing base directory" ; exit 1)
7 | cd $1
8 | LZ4_VERSION=r121
9 |
10 | test -e lz4-$LZ4_VERSION.zip || wget https://github.com/Cyan4973/lz4/archive/$LZ4_VERSION.zip -O lz4-$LZ4_VERSION.zip || exit 1
11 | test -d lz4-$LZ4_VERSION || (unzip lz4-$LZ4_VERSION.zip) || exit 1
12 | cd lz4-$LZ4_VERSION || exit 1
13 | make || echo "Build failed, but the liblz4.a needed by ROS may be usable. Checking..." #Make will fail due to unsupported _fileno() in the code that we don't need
14 | test -e liblz4.a || exit 1
15 | cp liblz4.a /usr/lib || exit 1
16 | cp *.h /usr/include
--------------------------------------------------------------------------------
/autobuild/install_helpers/06_libbzip2.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/local/lib/libbz2.a ]; then
3 | echo " Found libbzip2"
4 | exit 0
5 | fi
6 | test -d "$1" || (echo "Missing base directory" ; exit 1)
7 | cd $1
8 | BZIP2_VERSION=1.0.6
9 |
10 | test -e bzip2-$BZIP2_VERSION.tar.gz || wget http://www.bzip.org/$BZIP2_VERSION/bzip2-$BZIP2_VERSION.tar.gz || exit 1
11 | test -d bzip2-$BZIP2_VERSION || (tar xf bzip2-$BZIP2_VERSION.tar.gz) || exit 1
12 | cd bzip2-$BZIP2_VERSION || exit 1
13 | make || exit 1
14 | make install || exit 1
--------------------------------------------------------------------------------
/autobuild/install_helpers/07_qt.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | QT_VERSION=4.8.6
4 | QT_VERSION_BASE=4.8
5 |
6 | if [ -e /usr/local/lib/libQtCore.a ]; then
7 | echo " Found Qt"
8 | exit 0
9 | fi
10 | test -d "$1" || (echo "Missing base directory" ; exit 1)
11 | cd $1
12 |
13 | test -e qt-everywhere-opensource-src-$QT_VERSION.zip || wget http://download.qt.io/official_releases/qt/$QT_VERSION_BASE/$QT_VERSION/qt-everywhere-opensource-src-$QT_VERSION.zip || exit 1
14 | test -d qt-everywhere-opensource-src-$QT_VERSION || (unzip qt-everywhere-opensource-src-$QT_VERSION.zip && chown -R $USERNAME qt-everywhere-opensource-src-$QT_VERSION && patch -d qt-everywhere-opensource-src-$QT_VERSION -p1 < $(dirname $0)/../patches/3rdparty/qt.patch) || exit 1
15 | cd qt-everywhere-opensource-src-$QT_VERSION || exit 1
16 | echo Configuring Qt...
17 | set -o igncr
18 | export SHELLOPTS
19 | test -e Makefile || ./configure -opensource -no-xinput -no-accessibility -no-freetype -platform win32-cygwin-g++ -no-qt3support -confirm-license -no-sql-sqlite -no-webkit --prefix=/usr/local || exit 1
20 | echo Building Qt...
21 | make $PARALLEL_BUILD_FLAGS || exit 1
22 | echo Installing Qt...
23 | make install || exit 1
24 |
25 | echo Creating library symlinks...
26 | for lib in `ls -1 /usr/local/lib/libQt*.dll.*`; do
27 | filename=`echo $lib | sed 's/.*\(libQt.*\\.dll.*\)/\\1/'`
28 | basename=`echo $lib | sed 's/.*\(libQt.*\)\\.dll.*/\\1/'`
29 | ln -s $filename /usr/local/lib/$basename.dll
30 | ln -s $basename.dll /usr/local/lib/$basename.a
31 | done
32 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/08_ogre.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/local/lib/libOgreMain.dll.a ]; then
3 | echo " Found ogre"
4 | exit 0
5 | fi
6 |
7 | test -d "$1" || (echo "Missing base directory" ; exit 1)
8 | cd $1
9 |
10 | OGRE_VERSION=1-8-1
11 | OGRE_VERSION_BASE=1.8
12 | OGRE_VERSION_ALT=`echo $OGRE_VERSION | sed s/-/./g`
13 |
14 | test -e ogre_src_v$OGRE_VERSION.tar.bz2 || wget http://$SOURCEFORGE_MIRROR/project/ogre/ogre/$OGRE_VERSION_BASE/$OGRE_VERSION_ALT/ogre_src_v$OGRE_VERSION.tar.bz2 || exit 1
15 | test -d ogre_src_v$OGRE_VERSION || (tar xf ogre_src_v$OGRE_VERSION.tar.bz2 && patch -d ogre_src_v$OGRE_VERSION -p1 < $(dirname $0)/../patches/3rdparty/ogre.patch) || exit 1
16 | cd ogre_src_v$OGRE_VERSION || exit 1
17 | mkdir -p build
18 | cd build || exit 1
19 | test -e Makefile || cmake .. -DOGRE_BUILD_SAMPLES=FALSE || exit 1
20 | echo Building Ogre...
21 | make $PARALLEL_BUILD_FLAGS || exit 1
22 | make install || exit 1
23 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/09_opencv.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/local/lib/libopencv_core.dll.a ]; then
3 | echo " Found opencv"
4 | exit 0
5 | fi
6 |
7 | test -d "$1" || (echo "Missing base directory" ; exit 1)
8 | cd $1
9 |
10 | OPENCV_VERSION=2.4.9
11 |
12 | test -e opencv-$OPENCV_VERSION.zip || wget http://$SOURCEFORGE_MIRROR/project/opencvlibrary/opencv-unix/$OPENCV_VERSION/opencv-$OPENCV_VERSION.zip || exit 1
13 | test -d opencv-$OPENCV_VERSION || (unzip opencv-$OPENCV_VERSION.zip && patch -d opencv-$OPENCV_VERSION -p1 < $(dirname $0)/../patches/3rdparty/opencv.patch) || exit 1
14 | cd opencv-$OPENCV_VERSION || exit 1
15 | mkdir -p build
16 | cd build || exit 1
17 | test -e Makefile || cmake .. || exit 1
18 | echo Building OpenCV...
19 | make $PARALLEL_BUILD_FLAGS || exit 1
20 | make install || exit 1
21 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/10_urdfdom_headers.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -d /usr/local/share/urdfdom_headers ]; then
3 | echo " Found urdfdom_headers"
4 | exit 0
5 | fi
6 |
7 | test -d "$1" || (echo "Missing base directory" ; exit 1)
8 | cd $1
9 |
10 | test -e urdfdom_headers || git clone https://github.com/ros/urdfdom_headers.git || exit 1
11 | cd urdfdom_headers || exit 1
12 | test -e Makefile || cmake .
13 | make || exit 1
14 | make install || exit 1
15 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/11_urdfdom.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -d /usr/local/share/urdfdom ]; then
3 | echo " Found urdfdom"
4 | exit 0
5 | fi
6 |
7 | test -d "$1" || (echo "Missing base directory" ; exit 1)
8 | cd $1
9 |
10 | test -e urdfdom || (git clone https://github.com/ros/urdfdom.git && patch -d urdfdom -p1 < $(dirname $0)/../patches/3rdparty/urdfdom.patch) || exit 1
11 | cd urdfdom || exit 1
12 | test -e Makefile || cmake .
13 | make || exit 1
14 | make install || exit 1
15 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/12_yaml_cpp.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/local/lib/libyaml-cpp.a ]; then
3 | echo " Found yaml_cpp"
4 | exit 0
5 | fi
6 |
7 | test -d "$1" || (echo "Missing base directory" ; exit 1)
8 | cd $1
9 |
10 | YAML_CPP_VERSION=0.3.0 #Newer versions are not compatible as of Fall 2014
11 | test -e yaml-cpp-$YAML_CPP_VERSION.tar.gz || wget https://yaml-cpp.googlecode.com/files/yaml-cpp-$YAML_CPP_VERSION.tar.gz || exit 1
12 | test -d yaml-cpp || (tar xf yaml-cpp-$YAML_CPP_VERSION.tar.gz) || exit 1
13 | cd yaml-cpp || exit 1
14 | mkdir -p build
15 | cd build || exit 1
16 | test -e Makefile || cmake .. || exit 1
17 | make || exit 1
18 | make install || exit 1
19 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/13_assimp.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/local/lib/libassimp.dll.a ]; then
3 | echo " Found assimp"
4 | exit 0
5 | fi
6 |
7 | test -d "$1" || (echo "Missing base directory" ; exit 1)
8 | cd $1
9 |
10 | ASSIMP_VERSION=2.0.863
11 | ASSIMP_VERSION_BASE=2.0
12 |
13 | test -e assimp--$ASSIMP_VERSION-sdk.zip || wget http://$SOURCEFORGE_MIRROR/project/assimp/assimp-$ASSIMP_VERSION_BASE/assimp--$ASSIMP_VERSION-sdk.zip
14 | test -d assimp--$ASSIMP_VERSION-sdk || (unzip assimp--$ASSIMP_VERSION-sdk.zip && patch -d assimp--$ASSIMP_VERSION-sdk -p1 < $(dirname $0)/../patches/3rdparty/assimp.patch) || exit 1
15 | cd assimp--$ASSIMP_VERSION-sdk || exit 1
16 | test -e code/ByteSwap2.h || mv code/ByteSwap.h code/ByteSwap2.h || exit 1 #Conflict with another instance of ByteSwap.h from a different module
17 | mkdir -p build
18 | cd build || exit 1
19 | test -e Makefile || cmake .. || exit 1
20 | make $PARALLEL_BUILD_FLAGS || exit 1
21 | make install || exit 1
22 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/14_sip.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/lib/python2.7/site-packages/sipdistutils.py ]; then
3 | echo " Found sip"
4 | exit 0
5 | fi
6 |
7 | test -d "$1" || (echo "Missing base directory" ; exit 1)
8 | cd $1
9 |
10 | #SIP_VERSION=4.15.5
11 | SIP_VERSION=4.16.2
12 |
13 | test -e sip-$SIP_VERSION.tar.gz || wget http://$SOURCEFORGE_MIRROR/project/pyqt/sip/sip-$SIP_VERSION/sip-$SIP_VERSION.tar.gz
14 | test -d sip-$SIP_VERSION || tar xf sip-$SIP_VERSION.tar.gz || exit 1
15 | cd sip-$SIP_VERSION|| exit 1
16 | test -e Makefile || python configure.py || exit 1
17 | make || exit 1
18 | make install || exit 1
19 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/15_pyqt.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/lib/python2.7/site-packages/PyQt4/pyqtconfig.py ]; then
3 | echo " Found pyqt"
4 | exit 0
5 | fi
6 |
7 | test -d "$1" || (echo "Missing base directory" ; exit 1)
8 | cd $1
9 |
10 | PYQT_VERSION=4.11.1
11 |
12 | test -e PyQt-win-gpl-$PYQT_VERSION.zip || wget http://$SOURCEFORGE_MIRROR/project/pyqt/PyQt4/PyQt-$PYQT_VERSION/PyQt-win-gpl-$PYQT_VERSION.zip
13 | test -d PyQt-win-gpl-$PYQT_VERSION || (unzip PyQt-win-gpl-$PYQT_VERSION.zip && patch -d PyQt-win-gpl-$PYQT_VERSION -p1 < $(dirname $0)/../patches/3rdparty/pyqt.patch) || exit 1
14 | cd PyQt-win-gpl-$PYQT_VERSION || exit 1
15 | export PATH=$PATH:/usr/local/lib
16 | test -e Makefile || python configure-ng.py --confirm-license || exit 1
17 |
18 | make $PARALLEL_BUILD_FLAGS || exit 1
19 | make install || exit 1
20 |
21 | #Looks like configure.py is the legacy configuration script that does not produce valid code anymore, but the new configure-ng.py script does not generate pyqtconfig.py needed by ROS.
22 | #We work around this by patching configure.py to ONLY produce the pyqtconfig.py and NOT touch any other files (see related patch)
23 | test -e pyqtconfig.py || python configure.py --confirm-license || exit 1
24 | cp pyqtconfig.py /usr/lib/python2.7/site-packages/PyQt4/pyqtconfig.py
25 |
26 | cd /usr/lib/python2.7/site-packages/PyQt4 || exit 1
27 | for module in `ls -1 *.pyd`; do
28 | renamed_module=`echo $module | sed s/\\.pyd/\\.dll/`
29 | test -e $renamed_module || (echo Copying $module to $renamed_module... && cp $module $renamed_module) || exit 1
30 | done
31 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/16_collada_dom.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | COLLADA_DOM_VERSION=2.4.0
4 | COLLADA_DOM_VERSION_BASE=2.4
5 |
6 | if [ -d /usr/local/include/collada-dom2.4 ]; then
7 | echo " Found collada_dom"
8 | exit 0
9 | fi
10 |
11 | test -d "$1" || (echo "Missing base directory" ; exit 1)
12 | cd $1
13 |
14 |
15 | test -e collada-dom-$COLLADA_DOM_VERSION.tgz || wget http://$SOURCEFORGE_MIRROR/project/collada-dom/Collada%20DOM/Collada%20DOM%20$COLLADA_DOM_VERSION_BASE/collada-dom-$COLLADA_DOM_VERSION.tgz || exit 1
16 | test -d collada-dom-$COLLADA_DOM_VERSION || (tar xf collada-dom-$COLLADA_DOM_VERSION.tgz && patch -d collada-dom-$COLLADA_DOM_VERSION -p1 < $(dirname $0)/../patches/3rdparty/collada_dom.patch) || exit 1
17 | cd collada-dom-$COLLADA_DOM_VERSION || exit 1
18 |
19 | mkdir -p build
20 | cd build || exit 1
21 | test -e Makefile || cmake .. || exit 1
22 | make $PARALLEL_BUILD_FLAGS || exit 1
23 | make install || exit 1
24 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/17_flann.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if [ -e /usr/local/lib/libflann.dll.a ]; then
4 | echo " Found flann"
5 | exit 0
6 | fi
7 |
8 | FLANN_VERSION=1.8.4
9 | test -d "$1" || (echo "Missing base directory" ; exit 1)
10 | cd $1
11 |
12 | test -e flann-$FLANN_VERSION-src.zip || wget http://www.cs.ubc.ca/research/flann/uploads/FLANN/flann-$FLANN_VERSION-src.zip || exit 1
13 | test -d flann-$FLANN_VERSION-src || unzip flann-$FLANN_VERSION-src.zip || exit 1
14 | cd flann-$FLANN_VERSION-src || exit 1
15 |
16 | mkdir -p build
17 | cd build || exit 1
18 | test -e Makefile || cmake .. || exit 1
19 | make $PARALLEL_BUILD_FLAGS || exit 1
20 | make install || exit 1
21 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/18_pcl.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if [ -e /usr/local/lib/libpcl_common.dll.a ]; then
4 | echo " Found pcl"
5 | exit 0
6 | fi
7 |
8 | test -d "$1" || (echo "Missing base directory" ; exit 1)
9 | cd $1
10 |
11 | PCL_VERSION=1.7.1
12 |
13 | test -e pcl-$PCL_VERSION.zip || wget https://github.com/PointCloudLibrary/pcl/archive/pcl-$PCL_VERSION.zip || exit 1
14 | test -d pcl-pcl-$PCL_VERSION || (unzip pcl-$PCL_VERSION.zip && patch -d pcl-pcl-$PCL_VERSION -p1 < $(dirname $0)/../patches/3rdparty/pcl.patch) || exit 1
15 | cd pcl-pcl-$PCL_VERSION || exit 1
16 |
17 | mkdir -p build
18 | cd build || exit 1
19 | test -e Makefile || cmake .. -DCMAKE_BUILD_TYPE=Release || exit 1 #Building a version with debug symbols reults in a "too many sections" error for sac_segmentation.cpp
20 | make $PARALLEL_BUILD_FLAGS || exit 1
21 | make install || exit 1
22 |
--------------------------------------------------------------------------------
/autobuild/install_helpers/19_orocos_bfl.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ -e /usr/local/lib/liborocos-bfl.dll.a ]; then
3 | echo " Found orocos_bfl"
4 | exit 0
5 | fi
6 |
7 | test -d "$1" || (echo "Missing base directory" ; exit 1)
8 | cd $1
9 |
10 | OROCOS_BFL_VERSION=0.8.0
11 | test -e orocos-bfl-$OROCOS_BFL_VERSION-src.tar.bz2 || wget http://people.mech.kuleuven.be/~tdelaet/bfl_tar/orocos-bfl-$OROCOS_BFL_VERSION-src.tar.bz2 || exit 1
12 | test -d orocos-bfl-$OROCOS_BFL_VERSION || (tar xf orocos-bfl-$OROCOS_BFL_VERSION-src.tar.bz2) || exit 1
13 | cd orocos-bfl-$OROCOS_BFL_VERSION || exit 1
14 | mkdir -p build
15 | cd build || exit 1
16 | test -e Makefile || cmake .. || exit 1
17 | make || exit 1
18 | make install || exit 1
19 |
--------------------------------------------------------------------------------
/autobuild/linkexes.pl:
--------------------------------------------------------------------------------
1 | #!/usr/bin/perl
2 | $suffix = '_isolated' if -d "build_isolated" && -d "install_isolated";
3 |
4 | die "build$suffix folder does not exist." unless -d "build$suffix";
5 | die "install$suffix folder does not exist." unless -d "install$suffix";
6 |
7 | print "Scanning packages...\n";
8 | foreach $pkg (`ls -1 devel$suffix`)
9 | {
10 | chomp $pkg;
11 | $bindir = "devel$suffix/$pkg/bin";
12 | next unless -d $bindir;
13 | foreach $exe(`ls -1 $bindir`)
14 | {
15 | chomp $exe;
16 | $exe_to_pkg{$exe} = $pkg;
17 | }
18 | }
19 |
20 | print "Symlinking executables...";
21 | foreach $exe (`ls -1 install$suffix/bin`)
22 | {
23 | chomp $exe;
24 | $pkg = $exe_to_pkg{$exe};
25 | if ($pkg ne '')
26 | {
27 | mkdir "install$suffix/share/$pkg";
28 | symlink("../../bin/$exe", "install$suffix/share/$pkg/$exe");
29 | }
30 | }
31 | print " done\n";
--------------------------------------------------------------------------------
/autobuild/patches/3rdparty/assimp.patch:
--------------------------------------------------------------------------------
1 | diff -ur assimp--2.0.863-sdk/code/CMakeLists.txt assimp--2.0.fixed/code/CMakeLists.txt
2 | --- assimp--2.0.863-sdk/code/CMakeLists.txt 2010-11-21 13:40:41.715911000 -0800
3 | +++ assimp--2.0.fixed/code/CMakeLists.txt 2014-08-08 18:31:56.976187100 -0700
4 | @@ -85,7 +85,7 @@
5 | BaseImporter.h
6 | BaseProcess.cpp
7 | BaseProcess.h
8 | - ByteSwap.h
9 | + ByteSwap2.h
10 | ProcessHelper.h
11 | DefaultProgressHandler.h
12 | DefaultIOStream.cpp
13 | @@ -475,7 +475,7 @@
14 | BaseImporter.h
15 | BaseProcess.cpp
16 | BaseProcess.h
17 | - ByteSwap.h
18 | + ByteSwap2.h
19 | CalcTangentsProcess.cpp
20 | CalcTangentsProcess.h
21 | ColladaHelper.h
22 | diff -ur assimp--2.0.863-sdk/code/IFF.h assimp--2.0.fixed/code/IFF.h
23 | --- assimp--2.0.863-sdk/code/IFF.h 2010-11-21 13:40:41.715911000 -0800
24 | +++ assimp--2.0.fixed/code/IFF.h 2014-08-08 18:31:57.083208500 -0700
25 | @@ -7,7 +7,7 @@
26 | #ifndef AI_IFF_H_INCLUDED
27 | #define AI_IFF_H_INCLUDED
28 |
29 | -#include "ByteSwap.h"
30 | +#include "ByteSwap2.h"
31 |
32 | namespace Assimp {
33 | namespace IFF {
34 | diff -ur assimp--2.0.863-sdk/code/LWOLoader.cpp assimp--2.0.fixed/code/LWOLoader.cpp
35 | --- assimp--2.0.863-sdk/code/LWOLoader.cpp 2010-11-21 13:40:41.715911000 -0800
36 | +++ assimp--2.0.fixed/code/LWOLoader.cpp 2014-08-08 18:31:57.916875200 -0700
37 | @@ -51,7 +51,7 @@
38 | #include "MaterialSystem.h"
39 | #include "StringComparison.h"
40 | #include "SGSpatialSort.h"
41 | -#include "ByteSwap.h"
42 | +#include "ByteSwap2.h"
43 | #include "ProcessHelper.h"
44 | #include "ConvertToLHProcess.h"
45 |
46 | diff -ur assimp--2.0.863-sdk/code/LWOMaterial.cpp assimp--2.0.fixed/code/LWOMaterial.cpp
47 | --- assimp--2.0.863-sdk/code/LWOMaterial.cpp 2010-11-21 13:40:41.715911000 -0800
48 | +++ assimp--2.0.fixed/code/LWOMaterial.cpp 2014-08-08 18:31:57.924876800 -0700
49 | @@ -48,7 +48,7 @@
50 | // internal headers
51 | #include "LWOLoader.h"
52 | #include "MaterialSystem.h"
53 | -#include "ByteSwap.h"
54 | +#include "ByteSwap2.h"
55 |
56 | using namespace Assimp;
57 |
58 | Only in assimp--2.0.863-sdk/code: makefile
59 | Only in assimp--2.0.fixed/code: Makefile
60 | diff -ur assimp--2.0.863-sdk/code/MD2Loader.cpp assimp--2.0.fixed/code/MD2Loader.cpp
61 | --- assimp--2.0.863-sdk/code/MD2Loader.cpp 2010-11-21 13:40:41.715911000 -0800
62 | +++ assimp--2.0.fixed/code/MD2Loader.cpp 2014-08-08 18:31:57.954882800 -0700
63 | @@ -45,7 +45,7 @@
64 | /** @file Implementation of the MD2 importer class */
65 | #include "MD2Loader.h"
66 | #include "MaterialSystem.h"
67 | -#include "ByteSwap.h"
68 | +#include "ByteSwap2.h"
69 | #include "MD2NormalTable.h" // shouldn't be included by other units
70 |
71 | using namespace Assimp;
72 | diff -ur assimp--2.0.863-sdk/code/MD3Loader.cpp assimp--2.0.fixed/code/MD3Loader.cpp
73 | --- assimp--2.0.863-sdk/code/MD3Loader.cpp 2010-11-21 13:40:41.715911000 -0800
74 | +++ assimp--2.0.fixed/code/MD3Loader.cpp 2014-08-08 18:31:57.967885400 -0700
75 | @@ -52,7 +52,7 @@
76 | #ifndef ASSIMP_BUILD_NO_MD3_IMPORTER
77 |
78 | #include "MD3Loader.h"
79 | -#include "ByteSwap.h"
80 | +#include "ByteSwap2.h"
81 | #include "SceneCombiner.h"
82 | #include "GenericProperty.h"
83 | #include "RemoveComments.h"
84 | diff -ur assimp--2.0.863-sdk/code/MD3Loader.h assimp--2.0.fixed/code/MD3Loader.h
85 | --- assimp--2.0.863-sdk/code/MD3Loader.h 2010-11-21 13:40:41.715911000 -0800
86 | +++ assimp--2.0.fixed/code/MD3Loader.h 2014-08-08 18:31:57.972886400 -0700
87 | @@ -45,7 +45,7 @@
88 | #define AI_MD3LOADER_H_INCLUDED
89 |
90 | #include "BaseImporter.h"
91 | -#include "ByteSwap.h"
92 | +#include "ByteSwap2.h"
93 |
94 | #include "../include/aiTypes.h"
95 |
96 | diff -ur assimp--2.0.863-sdk/code/MDCLoader.h assimp--2.0.fixed/code/MDCLoader.h
97 | --- assimp--2.0.863-sdk/code/MDCLoader.h 2010-11-21 13:40:41.715911000 -0800
98 | +++ assimp--2.0.fixed/code/MDCLoader.h 2014-08-08 18:31:57.997891400 -0700
99 | @@ -48,7 +48,7 @@
100 |
101 | #include "BaseImporter.h"
102 | #include "MDCFileData.h"
103 | -#include "ByteSwap.h"
104 | +#include "ByteSwap2.h"
105 |
106 | namespace Assimp {
107 | using namespace MDC;
108 | diff -ur assimp--2.0.863-sdk/code/StreamReader.h assimp--2.0.fixed/code/StreamReader.h
109 | --- assimp--2.0.863-sdk/code/StreamReader.h 2010-11-21 13:40:41.715911000 -0800
110 | +++ assimp--2.0.fixed/code/StreamReader.h 2014-08-08 18:31:58.285448900 -0700
111 | @@ -45,7 +45,7 @@
112 | #ifndef AI_STREAMREADER_H_INCLUDED
113 | #define AI_STREAMREADER_H_INCLUDED
114 |
115 | -#include "ByteSwap.h"
116 | +#include "ByteSwap2.h"
117 | namespace Assimp {
118 | namespace Intern {
119 |
--------------------------------------------------------------------------------
/autobuild/patches/3rdparty/collada_dom.patch:
--------------------------------------------------------------------------------
1 | diff -ur collada-dom-2.4.0-orig/dom/external-libs/minizip-1.1/ioapi.c collada-dom-2.4.0/dom/external-libs/minizip-1.1/ioapi.c
2 | --- collada-dom-2.4.0-orig/dom/external-libs/minizip-1.1/ioapi.c 2011-02-21 19:54:41.000000000 -0800
3 | +++ collada-dom-2.4.0/dom/external-libs/minizip-1.1/ioapi.c 2015-02-27 15:16:06.262468900 -0800
4 | @@ -16,6 +16,12 @@
5 |
6 | #include "ioapi.h"
7 |
8 | +#if defined(__LP64__) && defined(__CYGWIN__)
9 | +#define _fopen64 fopen
10 | +#define _fseeko64 fseeko
11 | +#define _ftello64 ftello
12 | +#endif
13 | +
14 | voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)
15 | {
16 | if (pfilefunc->zfile_func64.zopen64_file != NULL)
17 | @@ -112,7 +118,7 @@
18 | mode_fopen = "wb";
19 |
20 | if ((filename!=NULL) && (mode_fopen != NULL))
21 | - file = fopen64((const char*)filename, mode_fopen);
22 | + file = _fopen64((const char*)filename, mode_fopen);
23 | return file;
24 | }
25 |
26 | @@ -142,7 +148,7 @@
27 | static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
28 | {
29 | ZPOS64_T ret;
30 | - ret = ftello64((FILE *)stream);
31 | + ret = _ftello64((FILE *)stream);
32 | return ret;
33 | }
34 |
35 | @@ -188,7 +194,7 @@
36 | }
37 | ret = 0;
38 |
39 | - if(fseeko64((FILE *)stream, offset, fseek_origin) != 0)
40 | + if(_fseeko64((FILE *)stream, offset, fseek_origin) != 0)
41 | ret = -1;
42 |
43 | return ret;
44 | diff -ur collada-dom-2.4.0-orig/dom/src/dae/daeUtils.cpp collada-dom-2.4.0/dom/src/dae/daeUtils.cpp
45 | --- collada-dom-2.4.0-orig/dom/src/dae/daeUtils.cpp 2011-02-26 19:42:47.000000000 -0800
46 | +++ collada-dom-2.4.0/dom/src/dae/daeUtils.cpp 2015-02-27 15:03:11.764645400 -0800
47 | @@ -159,7 +159,7 @@
48 | #elif defined __CELLOS_LV2__
49 | #error tmp dir for your system unknown
50 | #else
51 | -#error tmp dir for your system unknown
52 | + static string tmpDir = "/tmp/";
53 | #endif
54 | return tmpDir;
55 | }
56 | @@ -178,7 +178,7 @@
57 | #elif defined __CELLOS_LV2__
58 | #error usage of tmpnam() for your system unknown
59 | #else
60 | -#error usage of tmpnam() for your system unknown
61 | + randomSegment = tmp.substr(tmp.find_last_of('/')+1);
62 | #endif
63 | return randomSegment;
64 | }
65 |
--------------------------------------------------------------------------------
/autobuild/patches/3rdparty/opencv.patch:
--------------------------------------------------------------------------------
1 | filter.cpp opencv-2.4.9.fixed/modules/legacy/src/calibfilter.cpp
2 | --- opencv-2.4.9/modules/legacy/src/calibfilter.cpp 2014-04-11 03:15:26.000000000 -0700
3 | +++ opencv-2.4.9.fixed/modules/legacy/src/calibfilter.cpp 2015-02-25 15:10:23.852749500 -0800
4 | @@ -42,7 +42,9 @@
5 | #include "precomp.hpp"
6 | #include
7 |
8 | +#ifndef __CYGWIN__
9 | #undef quad
10 | +#endif
11 |
12 | CvCalibFilter::CvCalibFilter()
13 | {
14 | diff -ur opencv-2.4.9/modules/legacy/src/epilines.cpp opencv-2.4.9.fixed/modules/legacy/src/epilines.cpp
15 | --- opencv-2.4.9/modules/legacy/src/epilines.cpp 2014-04-11 03:15:26.000000000 -0700
16 | +++ opencv-2.4.9.fixed/modules/legacy/src/epilines.cpp 2015-02-25 15:10:43.990749500 -0800
17 | @@ -46,7 +46,9 @@
18 |
19 | /* Valery Mosyagin */
20 |
21 | +#ifndef __CYGWIN__
22 | #undef quad
23 | +#endif
24 |
25 | #define EPS64D 1e-9
26 |
--------------------------------------------------------------------------------
/autobuild/patches/3rdparty/pcl.patch:
--------------------------------------------------------------------------------
1 | diff -urN pcl-pcl-1.7.1-orig/CMakeLists.txt pcl-pcl-1.7.1/CMakeLists.txt
2 | --- pcl-pcl-1.7.1-orig/CMakeLists.txt 2013-10-07 06:09:35.000000000 -0700
3 | +++ pcl-pcl-1.7.1/CMakeLists.txt 2015-09-03 12:15:14.895069400 -0700
4 | @@ -91,9 +91,9 @@
5 | endif ()
6 | endif()
7 |
8 | - if(NOT ANDROID)
9 | + if(NOT ANDROID AND NOT CYGWIN)
10 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
11 | - endif(NOT ANDROID)
12 | + endif(NOT ANDROID AND NOT CYGWIN)
13 |
14 | if(WIN32)
15 | if(PCL_SHARED_LIBS)
16 | diff -urN pcl-pcl-1.7.1-orig/io/src/lzf_image_io.cpp pcl-pcl-1.7.1/io/src/lzf_image_io.cpp
17 | --- pcl-pcl-1.7.1-orig/io/src/lzf_image_io.cpp 2013-10-07 06:09:35.000000000 -0700
18 | +++ pcl-pcl-1.7.1/io/src/lzf_image_io.cpp 2015-09-03 12:40:25.103069400 -0700
19 | @@ -59,6 +59,17 @@
20 |
21 | #define LZF_HEADER_SIZE 37
22 |
23 | +
24 | +// The signature of boost::property_tree::xml_parser::write_xml() changed in Boost 1.56
25 | +// See https://github.com/PointCloudLibrary/pcl/issues/864
26 | +#include
27 | +#if (BOOST_VERSION >= 105600)
28 | + typedef boost::property_tree::xml_writer_settings xml_writer_settings;
29 | +#else
30 | + typedef boost::property_tree::xml_writer_settings xml_writer_settings;
31 | +#endif
32 | +
33 | +
34 | //////////////////////////////////////////////////////////////////////////////
35 | bool
36 | pcl::io::LZFImageWriter::saveImageBlob (const char* data,
37 | @@ -198,9 +209,8 @@
38 | catch (std::exception& e)
39 | {}
40 |
41 | - boost::property_tree::xml_writer_settings settings ('\t', 1);
42 | pt.put (tag, parameter);
43 | - write_xml (filename, pt, std::locale (), settings);
44 | + write_xml (filename, pt, std::locale (), xml_writer_settings ('\t', 1));
45 |
46 | return (true);
47 | }
48 | @@ -218,13 +228,12 @@
49 | catch (std::exception& e)
50 | {}
51 |
52 | - boost::property_tree::xml_writer_settings settings ('\t', 1);
53 | pt.put ("depth.focal_length_x", parameters.focal_length_x);
54 | pt.put ("depth.focal_length_y", parameters.focal_length_y);
55 | pt.put ("depth.principal_point_x", parameters.principal_point_x);
56 | pt.put ("depth.principal_point_y", parameters.principal_point_y);
57 | pt.put ("depth.z_multiplication_factor", z_multiplication_factor_);
58 | - write_xml (filename, pt, std::locale (), settings);
59 | + write_xml (filename, pt, std::locale (), xml_writer_settings ('\t', 1));
60 |
61 | return (true);
62 | }
63 | @@ -279,12 +288,11 @@
64 | catch (std::exception& e)
65 | {}
66 |
67 | - boost::property_tree::xml_writer_settings settings ('\t', 1);
68 | pt.put ("rgb.focal_length_x", parameters.focal_length_x);
69 | pt.put ("rgb.focal_length_y", parameters.focal_length_y);
70 | pt.put ("rgb.principal_point_x", parameters.principal_point_x);
71 | pt.put ("rgb.principal_point_y", parameters.principal_point_y);
72 | - write_xml (filename, pt, std::locale (), settings);
73 | + write_xml (filename, pt, std::locale (), xml_writer_settings ('\t', 1));
74 |
75 | return (true);
76 | }
77 |
--------------------------------------------------------------------------------
/autobuild/patches/3rdparty/pyqt.patch:
--------------------------------------------------------------------------------
1 | diff -ur PyQt-win-gpl-4.11.1-orig/configure.py PyQt-win-gpl-4.11.1/configure.py
2 | --- PyQt-win-gpl-4.11.1-orig/configure.py 2014-07-03 16:03:00.000000000 -0700
3 | +++ PyQt-win-gpl-4.11.1/configure.py 2015-03-01 17:00:20.176385000 -0800
4 | @@ -1445,6 +1445,8 @@
5 | # Handle the platform tag.
6 | if sys.platform == 'win32':
7 | plattag = "WS_WIN"
8 | + elif sys.platform == "cygwin":
9 | + plattag = "WS_WIN"
10 | elif sys.platform == "darwin":
11 | if "__USE_WS_X11__" in sipcfg.build_macros()["DEFINES"]:
12 | plattag = "WS_X11"
13 | @@ -2269,7 +2271,7 @@
14 | check_license()
15 |
16 | # Check which modules to build.
17 | - pyqt.check_modules()
18 | + #pyqt.check_modules()
19 |
20 | # Check for the VendorID package.
21 | check_vendorid()
22 | @@ -2281,27 +2283,27 @@
23 | inform_user()
24 |
25 | # Embed the sip flags.
26 | - sipconfig.inform("Embedding sip flags...")
27 | - in_f = open(os.path.join(src_dir, "qpy", "QtCore", "qpycore_post_init.cpp.in"))
28 | - out_f = open(os.path.join(src_dir, "qpy", "QtCore", "qpycore_post_init.cpp"), "wt")
29 | -
30 | - for line in in_f:
31 | - line = line.replace("@@PYQT_SIP_FLAGS@@", sip_flags)
32 | - out_f.write(line)
33 | + #sipconfig.inform("Embedding sip flags...")
34 | + #in_f = open(os.path.join(src_dir, "qpy", "QtCore", "qpycore_post_init.cpp.in"))
35 | + #out_f = open(os.path.join(src_dir, "qpy", "QtCore", "qpycore_post_init.cpp"), "wt")
36 | +
37 | + #for line in in_f:
38 | + # line = line.replace("@@PYQT_SIP_FLAGS@@", sip_flags)
39 | + # out_f.write(line)
40 |
41 | - in_f.close()
42 | - out_f.close()
43 | + #in_f.close()
44 | + #out_f.close()
45 |
46 | # Generate the code.
47 | - pyqt.code()
48 | + #pyqt.code()
49 |
50 | # Create the additional Makefiles.
51 | - sipconfig.inform("Creating top level Makefile...")
52 | + #sipconfig.inform("Creating top level Makefile...")
53 |
54 | - installs=[(pyqt.module_installs(), pyqt_modroot)]
55 | + #installs=[(pyqt.module_installs(), pyqt_modroot)]
56 |
57 | - if opts.api:
58 | - installs.append(("PyQt4.api", os.path.join(opts.qscidir, "api", "python")))
59 | + #if opts.api:
60 | + # installs.append(("PyQt4.api", os.path.join(opts.qscidir, "api", "python")))
61 |
62 | xtra_modules = ["Qt"]
63 |
64 | @@ -2314,11 +2316,11 @@
65 | if opts.mwg_qwt_dir:
66 | xtra_modules.append("Qwt5")
67 |
68 | - sipconfig.ParentMakefile(
69 | - configuration=sipcfg,
70 | - subdirs=pyqt.qpy_libs() + pyqt_modules + xtra_modules + pyqt.tools(),
71 | - installs=installs
72 | - ).generate()
73 | + #sipconfig.ParentMakefile(
74 | + # configuration=sipcfg,
75 | + # subdirs=pyqt.qpy_libs() + pyqt_modules + xtra_modules + pyqt.tools(),
76 | + # installs=installs
77 | + #).generate()
78 |
79 | # Install the configuration module.
80 | create_config("pyqtconfig.py", os.path.join(src_dir, "pyqtconfig.py.in"),
81 | diff -ur PyQt-win-gpl-4.11.1-orig/configure-ng.py PyQt-win-gpl-4.11.1/configure-ng.py
82 | --- PyQt-win-gpl-4.11.1-orig/configure-ng.py 2014-07-03 16:03:00.000000000 -0700
83 | +++ PyQt-win-gpl-4.11.1/configure-ng.py 2015-02-26 12:57:27.111359700 -0800
84 | @@ -2091,7 +2091,7 @@
85 | sip_flags.append('PyQt_Deprecated_5_0')
86 |
87 | # Handle the platform tag.
88 | - if target_config.py_platform == 'win32':
89 | + if target_config.py_platform == 'cygwin':
90 | plattag = 'WS_WIN'
91 | elif target_config.py_platform == 'darwin':
92 | plattag = 'WS_MACX'
93 | @@ -2283,10 +2283,11 @@
94 | link = get_win32_python_library(target_config)
95 |
96 | shared = '''
97 | -win32 {
98 | +win32|cygwin-win32 {
99 | PY_MODULE = %s%s.pyd
100 | target.files = %s%s.pyd
101 | LIBS += %s
102 | + QMAKE_CXXFLAGS += -fpermissive
103 | } else {
104 | PY_MODULE = %s.so
105 | target.files = %s.so
106 | @@ -2634,7 +2635,7 @@
107 | py_major, py_minor = get_py_major_minor(target_config)
108 | debug_suffix = get_win32_debug_suffix(target_config.debug)
109 |
110 | - return '%s -lpython%d%d%s' % (lib_dir, py_major, py_minor, debug_suffix)
111 | + return '%s -lpython%d.%d%s' % (lib_dir, py_major, py_minor, debug_suffix)
112 |
113 |
114 | def get_win32_debug_suffix(debug):
115 | diff -ur PyQt-win-gpl-4.11.1-orig/pylupdate/translator.cpp PyQt-win-gpl-4.11.1/pylupdate/translator.cpp
116 | --- PyQt-win-gpl-4.11.1-orig/pylupdate/translator.cpp 2014-07-03 16:03:22.000000000 -0700
117 | +++ PyQt-win-gpl-4.11.1/pylupdate/translator.cpp 2015-02-26 12:43:03.709118300 -0800
118 | @@ -326,7 +326,7 @@
119 | QString prefix;
120 |
121 | if (filename[0] == QLatin1Char('/')
122 | -#ifdef Q_WS_WIN
123 | +#ifdef Q_OS_WIN
124 | || (filename[0].isLetter() && filename[1] == QLatin1Char(':')) || filename[0] == QLatin1Char('\\')
125 | #endif
126 | )
127 |
128 | diff -ur PyQt-win-gpl-4.11.1-orig/qpy/QtCore/qpycore_qabstracteventdispatcher.cpp PyQt-win-gpl-4.11.1/qpy/QtCore/qpycore_qabstracteventdispatcher.cpp
129 | --- PyQt-win-gpl-4.11.1-orig/qpy/QtCore/qpycore_qabstracteventdispatcher.cpp 2014-07-03 16:03:22.000000000 -0700
130 | +++ PyQt-win-gpl-4.11.1/qpy/QtCore/qpycore_qabstracteventdispatcher.cpp 2015-02-26 12:43:03.714123300 -0800
131 | @@ -97,7 +97,7 @@
132 |
133 | SIP_BLOCK_THREADS
134 |
135 | -#if defined(Q_WS_WIN)
136 | +#if defined(Q_OS_WIN)
137 | PyObject *msg_obj = sipConvertFromType(reinterpret_cast(message),
138 | sipType_MSG, 0);
139 | #else
140 | diff -ur PyQt-win-gpl-4.11.1-orig/sip/QtGui/qevent.sip PyQt-win-gpl-4.11.1/sip/QtGui/qevent.sip
141 | --- PyQt-win-gpl-4.11.1-orig/sip/QtGui/qevent.sip 2014-07-03 16:03:20.000000000 -0700
142 | +++ PyQt-win-gpl-4.11.1/sip/QtGui/qevent.sip 2015-02-26 13:06:10.408085400 -0800
143 | @@ -138,16 +138,6 @@
144 | sipType = sipType_QStatusTipEvent;
145 | break;
146 |
147 | - case QEvent::TabletMove:
148 | - case QEvent::TabletPress:
149 | - case QEvent::TabletRelease:
150 | - #if QT_VERSION >= 0x040200
151 | - case QEvent::TabletEnterProximity:
152 | - case QEvent::TabletLeaveProximity:
153 | - #endif
154 | - sipType = sipType_QTabletEvent;
155 | - break;
156 | -
157 | case QEvent::ToolTip:
158 | case QEvent::WhatsThis:
159 | sipType = sipType_QHelpEvent;
160 | @@ -401,77 +391,6 @@
161 | %If (Qt_5_0_0 -)
162 | const QPointF &posF() const;
163 | %End
164 | -%If (Qt_5_0_0 -)
165 | - const QPointF &globalPosF() const;
166 | -%End
167 | -};
168 | -
169 | -class QTabletEvent : QInputEvent
170 | -{
171 | -%TypeHeaderCode
172 | -#include
173 | -%End
174 | -
175 | -public:
176 | - enum TabletDevice
177 | - {
178 | - NoDevice,
179 | - Puck,
180 | - Stylus,
181 | - Airbrush,
182 | - FourDMouse,
183 | - XFreeEraser,
184 | - RotationStylus,
185 | - };
186 | -
187 | - enum PointerType
188 | - {
189 | - UnknownPointer,
190 | - Pen,
191 | - Cursor,
192 | - Eraser,
193 | - };
194 | -
195 | -%If (Qt_5_0_0 -)
196 | - QTabletEvent(QEvent::Type t, const QPointF &pos, const QPointF &globalPos, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID);
197 | -%End
198 | -%If (- Qt_5_0_0)
199 | - QTabletEvent(QEvent::Type t, const QPoint &pos, const QPoint &globalPos, const QPointF &hiResGlobalPos, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID);
200 | -%End
201 | - virtual ~QTabletEvent();
202 | -%If (Qt_5_0_0 -)
203 | - QPoint pos() const;
204 | -%End
205 | -%If (- Qt_5_0_0)
206 | - const QPoint &pos() const;
207 | -%End
208 | -%If (Qt_5_0_0 -)
209 | - QPoint globalPos() const;
210 | -%End
211 | -%If (- Qt_5_0_0)
212 | - const QPoint &globalPos() const;
213 | -%End
214 | -%If (PyQt_Deprecated_5_0)
215 | - const QPointF &hiResGlobalPos() const;
216 | -%End
217 | - int x() const;
218 | - int y() const;
219 | - int globalX() const;
220 | - int globalY() const;
221 | - qreal hiResGlobalX() const;
222 | - qreal hiResGlobalY() const;
223 | - QTabletEvent::TabletDevice device() const;
224 | - QTabletEvent::PointerType pointerType() const;
225 | - qint64 uniqueId() const;
226 | - qreal pressure() const;
227 | - int z() const;
228 | - qreal tangentialPressure() const;
229 | - qreal rotation() const;
230 | - int xTilt() const;
231 | - int yTilt() const;
232 | -%If (Qt_5_0_0 -)
233 | - const QPointF &posF() const;
234 | -%End
235 | %If (Qt_5_0_0 -)
236 | const QPointF &globalPosF() const;
237 | %End
238 | diff -ur PyQt-win-gpl-4.11.1-orig/sip/QtGui/qwidget.sip PyQt-win-gpl-4.11.1/sip/QtGui/qwidget.sip
239 | --- PyQt-win-gpl-4.11.1-orig/sip/QtGui/qwidget.sip 2014-07-03 16:03:22.000000000 -0700
240 | +++ PyQt-win-gpl-4.11.1/sip/QtGui/qwidget.sip 2015-02-26 12:49:27.538407200 -0800
241 | @@ -356,7 +356,6 @@
242 | virtual void resizeEvent(QResizeEvent *);
243 | virtual void closeEvent(QCloseEvent *);
244 | virtual void contextMenuEvent(QContextMenuEvent *);
245 | - virtual void tabletEvent(QTabletEvent *);
246 | virtual void actionEvent(QActionEvent *);
247 | virtual void dragEnterEvent(QDragEnterEvent *);
248 | virtual void dragMoveEvent(QDragMoveEvent *);
249 |
--------------------------------------------------------------------------------
/autobuild/patches/3rdparty/pyside-1.1.1.patch:
--------------------------------------------------------------------------------
1 | diff -ur PySide-1.1.1-orig/setup.py PySide-1.1.1/setup.py
2 | --- PySide-1.1.1-orig/setup.py 2012-06-06 23:52:57.000000000 -0700
3 | +++ PySide-1.1.1/setup.py 2015-03-01 10:07:25.885951100 -0800
4 | @@ -218,6 +218,9 @@
5 | if sys.platform == "win32":
6 | py_library = os.path.join(py_libdir, "python%s%s.lib" % \
7 | (py_version.replace(".", ""), dbgPostfix))
8 | + elif sys.platform == "cygwin":
9 | + py_library = os.path.join("/usr/bin", "libpython%s%s.dll" % \
10 | + (py_version, dbgPostfix))
11 | else:
12 | py_library = os.path.join(py_libdir, "libpython%s%s.so" % \
13 | (py_version, dbgPostfix))
14 | @@ -412,14 +415,14 @@
15 | os.chdir(self.script_dir)
16 | if sys.platform == "win32":
17 | return self.prepare_packages_win32(vars)
18 | - return self.prepare_packages_linux(vars)
19 | + return self.prepare_packages_cygwin(vars)
20 |
21 | - def prepare_packages_linux(self, vars):
22 | + def prepare_packages_cygwin(self, vars):
23 | # patchelf -> PySide/patchelf
24 | - copyfile(
25 | - "${setup_dir}/patchelf",
26 | - "${setup_dir}/PySide/patchelf",
27 | - logger=log, vars=vars)
28 | +# copyfile(
29 | +# "${setup_dir}/patchelf",
30 | +# "${setup_dir}/PySide/patchelf",
31 | +# logger=log, vars=vars)
32 | # /lib/site-packages/PySide/* -> /PySide
33 | copydir(
34 | "${install_dir}/lib/python${py_version}/site-packages/PySide",
35 | @@ -445,16 +448,17 @@
36 | filter=[
37 | "pyside-lupdate",
38 | "pyside-rcc",
39 | - "shiboken",
40 | + "shiboken.exe",
41 | + "cyg*.dll",
42 | ],
43 | recursive=False, logger=log, vars=vars)
44 | # /lib/lib* -> PySide/
45 | copydir(
46 | - "${install_dir}/lib/",
47 | + "${install_dir}/lib",
48 | "${setup_dir}/PySide",
49 | filter=[
50 | - "libpyside*.so.*",
51 | - "libshiboken*.so.*",
52 | + "cygpyside*.dll*",
53 | + "cygshiboken*dll*",
54 | ],
55 | recursive=False, logger=log, vars=vars)
56 | # /share/PySide/typesystems/* -> /PySide/typesystems
57 | @@ -487,13 +491,13 @@
58 | # /lib/* -> /PySide
59 | copydir("${qt_lib_dir}", "${setup_dir}/PySide",
60 | filter=[
61 | - "libQt*.so.?",
62 | - "libphonon.so.?",
63 | + "libQt*.dll*",
64 | + "libphonon.dll*",
65 | ],
66 | recursive=False, logger=log, vars=vars)
67 | # /plugins/* -> /PySide/plugins
68 | copydir("${qt_plugins_dir}", "${setup_dir}/PySide/plugins",
69 | - filter=["*.so"],
70 | + filter=["*.dll"],
71 | logger=log, vars=vars)
72 | # /imports/* -> /PySide/imports
73 | if float(vars["qt_version"][:3]) > 4.6:
74 | diff -ur PySide-1.1.1-orig/sources/pyside/PySide/QtCore/typesystem_core_common.xml PySide-1.1.1/sources/pyside/PySide/QtCore/typesystem_core_common.xml
75 | --- PySide-1.1.1-orig/sources/pyside/PySide/QtCore/typesystem_core_common.xml 2012-06-06 23:56:43.000000000 -0700
76 | +++ PySide-1.1.1/sources/pyside/PySide/QtCore/typesystem_core_common.xml 2015-03-01 09:31:18.660447100 -0800
77 | @@ -206,7 +206,7 @@
78 | // cast as Py_UNICODE can be a different type
79 | %out = QString::fromUcs4((const uint*)unicode);
80 | #else
81 | - %out = QString::fromUtf16(unicode, PyUnicode_GET_SIZE(%in));
82 | + %out = QString::fromUtf16((const ushort*)unicode, PyUnicode_GET_SIZE(%in));
83 | #endif
84 |
85 |
86 | @@ -3109,7 +3109,7 @@
87 |
88 | long result;
89 | #ifdef WIN32
90 | - _PROCESS_INFORMATION* procInfo = %CPPSELF.%FUNCTION_NAME();
91 | + _PROCESS_INFORMATION* procInfo = (_PROCESS_INFORMATION*)%CPPSELF.%FUNCTION_NAME();
92 | result = procInfo ? procInfo->dwProcessId : 0;
93 | #else
94 | result = %CPPSELF.%FUNCTION_NAME();
95 | diff -ur PySide-1.1.1-orig/sources/pyside/PySide/QtGui/CMakeLists.txt PySide-1.1.1/sources/pyside/PySide/QtGui/CMakeLists.txt
96 | --- PySide-1.1.1-orig/sources/pyside/PySide/QtGui/CMakeLists.txt 2012-06-06 23:53:52.000000000 -0700
97 | +++ PySide-1.1.1/sources/pyside/PySide/QtGui/CMakeLists.txt 2015-03-01 08:45:01.669612100 -0800
98 | @@ -98,7 +98,6 @@
99 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstracttextdocumentlayout_paintcontext_wrapper.cpp
100 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstracttextdocumentlayout_selection_wrapper.cpp
101 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstracttextdocumentlayout_wrapper.cpp
102 | -${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qaccessibleevent_wrapper.cpp
103 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qactionevent_wrapper.cpp
104 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qactiongroup_wrapper.cpp
105 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qaction_wrapper.cpp
106 | @@ -332,7 +331,6 @@
107 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qstyle_wrapper.cpp
108 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qsyntaxhighlighter_wrapper.cpp
109 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtabbar_wrapper.cpp
110 | -${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtabletevent_wrapper.cpp
111 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtableview_wrapper.cpp
112 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtablewidgetitem_wrapper.cpp
113 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtablewidgetselectionrange_wrapper.cpp
114 |
--------------------------------------------------------------------------------
/autobuild/patches/3rdparty/pyside-1.2.2.patch:
--------------------------------------------------------------------------------
1 | diff -ur PySide-1.2.2-orig/pyside_postinstall.py PySide-1.2.2/pyside_postinstall.py
2 | --- PySide-1.2.2-orig/pyside_postinstall.py 2014-04-24 01:38:38.000000000 -0700
3 | +++ PySide-1.2.2/pyside_postinstall.py 2015-02-28 19:42:03.711242700 -0800
4 | @@ -194,18 +194,18 @@
5 | pyside_path = os.path.abspath(os.path.dirname(PySide.__file__))
6 | print("PySide package found in %s..." % pyside_path)
7 |
8 | - executables = ['shiboken']
9 | - if sys.platform.startswith('linux'):
10 | - executables.append('patchelf')
11 | - patchelf_path = os.path.join(pyside_path, "patchelf")
12 | + executables = ['shiboken.exe']
13 | + if sys.platform.startswith('cygwin'):
14 | + #executables.append('patchelf')
15 | + #patchelf_path = os.path.join(pyside_path, "patchelf")
16 | from distutils.spawn import spawn
17 |
18 | - def rpath_cmd(pyside_path, srcpath):
19 | - cmd = [patchelf_path, '--set-rpath', pyside_path, srcpath]
20 | - spawn(cmd, search_path=False, verbose=1)
21 | + #def rpath_cmd(pyside_path, srcpath):
22 | + #cmd = [patchelf_path, '--set-rpath', pyside_path, srcpath]
23 | + #spawn(cmd, search_path=False, verbose=1)
24 |
25 | pyside_libs = [lib for lib in os.listdir(pyside_path) if filter_match(
26 | - lib, ["Qt*.so", "phonon.so", "shiboken"])]
27 | + lib, ["Qt*.dll", "phonon.dll", "shiboken.exe"])]
28 | elif sys.platform == 'darwin':
29 | pyside_libs = [lib for lib in os.listdir(pyside_path) if filter_match(
30 | lib, ["*.so", "*.dylib", "shiboken"])]
31 | @@ -227,8 +227,8 @@
32 | if os.path.isdir(srcname):
33 | continue
34 | srcpath = os.path.join(pyside_path, srcname)
35 | - rpath_cmd(pyside_path, srcpath)
36 | - print("Patched rpath in %s to %s." % (srcpath, pyside_path))
37 | + #rpath_cmd(pyside_path, srcpath)
38 | + #print("Patched rpath in %s to %s." % (srcpath, pyside_path))
39 |
40 | # Check PySide installation status
41 | try:
42 | Only in PySide-1.2.2: qtinfo.pyc
43 | diff -ur PySide-1.2.2-orig/setup.py PySide-1.2.2/setup.py
44 | --- PySide-1.2.2-orig/setup.py 2014-04-24 01:38:38.000000000 -0700
45 | +++ PySide-1.2.2/setup.py 2015-02-28 19:43:48.157686300 -0800
46 | @@ -383,7 +383,7 @@
47 | py_library = os.path.join(py_libdir, "python%s%s.lib" % \
48 | (py_version.replace(".", ""), dbgPostfix))
49 | else:
50 | - lib_exts = ['.so']
51 | + lib_exts = ['.dll']
52 | if sys.platform == 'darwin':
53 | lib_exts.append('.dylib')
54 | if sys.version_info[0] > 2:
55 | @@ -392,6 +392,7 @@
56 | lib_suff = ''
57 | lib_exts.append('.so.1')
58 | lib_exts.append('.a') # static library as last gasp
59 | + lib_exts.append('.dll.a') # static library as last gasp
60 |
61 | if sys.version_info[0] == 2 and dbgPostfix:
62 | # For Python2 add a duplicate set of extensions combined with
63 | @@ -647,6 +648,8 @@
64 | return self.prepare_packages_posix(vars)
65 |
66 | def prepare_packages_posix(self, vars):
67 | + so_ext = '.dll'
68 | + so_star = '.dll'
69 | if sys.platform.startswith('linux'):
70 | # patchelf -> PySide/patchelf
71 | copyfile(
72 | @@ -670,8 +673,8 @@
73 | vars=vars)
74 | # /lib/site-packages/shiboken.so -> /PySide/shiboken.so
75 | copyfile(
76 | - "{site_packages_dir}/shiboken.so",
77 | - "{dist_dir}/PySide/shiboken.so",
78 | + "{site_packages_dir}/shiboken.dll",
79 | + "{dist_dir}/PySide/shiboken.dll",
80 | vars=vars)
81 | # /lib/site-packages/pysideuic/* -> /pysideuic
82 | copydir(
83 | @@ -697,7 +700,9 @@
84 | filter=[
85 | "pyside-lupdate",
86 | "pyside-rcc",
87 | - "shiboken",
88 | + "shiboken.exe",
89 | + "cygpyside*" + so_star,
90 | + "cygshiboken*" + so_star,
91 | ],
92 | recursive=False, vars=vars)
93 | # /lib/lib* -> PySide/
94 | @@ -755,12 +760,12 @@
95 | recursive=False, vars=vars)
96 | # /plugins/* -> /PySide/plugins
97 | copydir("{qt_plugins_dir}", "{dist_dir}/PySide/plugins",
98 | - filter=["*.so"],
99 | + filter=["*.dll"],
100 | vars=vars)
101 | # /imports/* -> /PySide/imports
102 | if float(vars["qt_version"][:3]) > 4.6:
103 | copydir("{qt_imports_dir}", "{dist_dir}/PySide/imports",
104 | - filter=["qmldir", "*.so"],
105 | + filter=["qmldir", "*.dll"],
106 | force=False, vars=vars)
107 | # /translations/* -> /PySide/translations
108 | copydir("{qt_translations_dir}", "{dist_dir}/PySide/translations",
109 | diff -ur PySide-1.2.2-orig/sources/pyside/PySide/QtCore/typesystem_core_common.xml PySide-1.2.2/sources/pyside/PySide/QtCore/typesystem_core_common.xml
110 | --- PySide-1.2.2-orig/sources/pyside/PySide/QtCore/typesystem_core_common.xml 2014-04-24 04:46:53.000000000 -0700
111 | +++ PySide-1.2.2/sources/pyside/PySide/QtCore/typesystem_core_common.xml 2015-02-28 19:11:59.528897700 -0800
112 | @@ -3123,7 +3123,7 @@
113 |
114 | long result;
115 | #ifdef WIN32
116 | - _PROCESS_INFORMATION* procInfo = %CPPSELF.%FUNCTION_NAME();
117 | + _PROCESS_INFORMATION* procInfo = (_PROCESS_INFORMATION *)%CPPSELF.%FUNCTION_NAME();
118 | result = procInfo ? procInfo->dwProcessId : 0;
119 | #else
120 | result = %CPPSELF.%FUNCTION_NAME();
121 | diff -ur PySide-1.2.2-orig/sources/pyside/PySide/QtGui/CMakeLists.txt PySide-1.2.2/sources/pyside/PySide/QtGui/CMakeLists.txt
122 | --- PySide-1.2.2-orig/sources/pyside/PySide/QtGui/CMakeLists.txt 2014-04-24 04:47:14.000000000 -0700
123 | +++ PySide-1.2.2/sources/pyside/PySide/QtGui/CMakeLists.txt 2015-02-28 19:11:59.652897700 -0800
124 | @@ -98,7 +98,6 @@
125 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstracttextdocumentlayout_paintcontext_wrapper.cpp
126 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstracttextdocumentlayout_selection_wrapper.cpp
127 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstracttextdocumentlayout_wrapper.cpp
128 | -${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qaccessibleevent_wrapper.cpp
129 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qactionevent_wrapper.cpp
130 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qactiongroup_wrapper.cpp
131 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qaction_wrapper.cpp
132 | @@ -332,7 +331,6 @@
133 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qstyle_wrapper.cpp
134 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qsyntaxhighlighter_wrapper.cpp
135 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtabbar_wrapper.cpp
136 | -${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtabletevent_wrapper.cpp
137 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtableview_wrapper.cpp
138 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtablewidgetitem_wrapper.cpp
139 | ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtablewidgetselectionrange_wrapper.cpp
140 | diff -ur PySide-1.2.2-orig/sources/shiboken/ApiExtractor/abstractmetabuilder.cpp PySide-1.2.2/sources/shiboken/ApiExtractor/abstractmetabuilder.cpp
141 | --- PySide-1.2.2-orig/sources/shiboken/ApiExtractor/abstractmetabuilder.cpp 2014-04-24 04:47:20.000000000 -0700
142 | +++ PySide-1.2.2/sources/shiboken/ApiExtractor/abstractmetabuilder.cpp 2015-03-01 10:45:54.240657900 -0800
143 | @@ -219,6 +219,9 @@
144 | AbstractMetaClass* baseoperandClass;
145 | bool firstArgumentIsSelf = true;
146 | bool unaryOperator = false;
147 | +
148 | + if (arguments.size() == 0)
149 | + return;
150 |
151 | baseoperandClass = argumentToClass(arguments.at(0));
152 |
153 |
--------------------------------------------------------------------------------
/autobuild/patches/3rdparty/tinyxml.patch:
--------------------------------------------------------------------------------
1 | diff -ur orig/tinyxml.h new/tinyxml.h
2 | --- orig/tinyxml.h 2011-05-14 19:24:57.000000000 -0700
3 | +++ new/tinyxml.h 2015-02-24 16:43:59.157514200 -0800
4 | @@ -32,6 +32,8 @@
5 | #pragma warning( disable : 4786 )
6 | #endif
7 |
8 | +#define TIXML_USE_STL
9 | +
10 | #include
11 | #include
12 | #include
13 |
--------------------------------------------------------------------------------
/autobuild/patches/3rdparty/urdfdom.patch:
--------------------------------------------------------------------------------
1 | diff -urN urdfdom.orig/urdf_parser/include/urdf_parser/exportdecl.h urdfdom/urdf_parser/include/urdf_parser/exportdecl.h
2 | --- urdfdom.orig/urdf_parser/include/urdf_parser/exportdecl.h 2016-05-24 17:29:06.600369600 -0700
3 | +++ urdfdom/urdf_parser/include/urdf_parser/exportdecl.h 2016-05-24 11:31:04.413365700 -0700
4 | @@ -1,4 +1,4 @@
5 | -/*********************************************************************
6 | + /*********************************************************************
7 | * Software License Agreement (BSD License)
8 | *
9 | * Copyright (c) 2008, Willow Garage, Inc.
10 | @@ -74,7 +74,7 @@
11 | # else
12 | // Depending on whether one is building or using the
13 | // library define DLLAPI to import or export.
14 | -# ifdef URDFDOM_EXPORTS
15 | +# if defined(urdfdom_model_EXPORTS) || defined(urdfdom_world_EXPORTS)
16 | # define URDFDOM_DLLAPI URDFDOM_DLLEXPORT
17 | # else
18 | # define URDFDOM_DLLAPI URDFDOM_DLLIMPORT
19 |
--------------------------------------------------------------------------------
/autobuild/patches/boost.patch:
--------------------------------------------------------------------------------
1 | --- recursive_mutex.hpp.orig 2015-11-19 14:57:11.568821900 -0800
2 | +++ recursive_mutex.hpp 2015-11-19 15:00:12.397821900 -0800
3 | @@ -62,7 +62,7 @@
4 | recursive_mutex()
5 | {
6 | #ifdef BOOST_THREAD_HAS_PTHREAD_MUTEXATTR_SETTYPE
7 | - pthread_mutexattr_t attr;
8 | + pthread_mutexattr_t attr = {0, };
9 |
10 | int const init_attr_res=pthread_mutexattr_init(&attr);
11 | if(init_attr_res)
12 |
--------------------------------------------------------------------------------
/autobuild/patches/ctype.patch:
--------------------------------------------------------------------------------
1 | --- ctype.old 2014-11-13 06:45:52.000000000 -0800
2 | +++ ctype.h 2015-02-24 16:05:14.931693100 -0800
3 | @@ -30,14 +30,17 @@
4 | #define _toupper(__c) ((unsigned char)(__c) - 'a' + 'A')
5 | #endif
6 |
7 | -#define _U 01
8 | -#define _L 02
9 | -#define _N 04
10 | -#define _S 010
11 | -#define _P 020
12 | -#define _C 040
13 | -#define _X 0100
14 | -#define _B 0200
15 | +enum
16 | +{
17 | + _U = 01,
18 | + _L = 02,
19 | + _N = 04,
20 | + _S = 010,
21 | + _P = 020,
22 | + _C = 040,
23 | + _X = 0100,
24 | + _B = 0200
25 | +};
26 |
27 | #ifndef _MB_CAPABLE
28 | _CONST
29 |
--------------------------------------------------------------------------------
/autobuild/patches/features.patch:
--------------------------------------------------------------------------------
1 | --- features.h.orig 2016-04-21 13:14:57.000000000 -0700
2 | +++ features.h 2016-05-24 11:06:02.556195000 -0700
3 | @@ -21,6 +21,26 @@
4 | #ifndef _SYS_FEATURES_H
5 | #define _SYS_FEATURES_H
6 |
7 | +#ifndef _POSIX_C_SOURCE
8 | +#define _POSIX_C_SOURCE 200809L
9 | +#endif
10 | +
11 | +#ifndef _ATFILE_SOURCE
12 | +#define _ATFILE_SOURCE 1
13 | +#endif
14 | +
15 | +#ifndef _POSIX_SOURCE
16 | +#define _POSIX_SOURCE 1
17 | +#endif
18 | +
19 | +#ifndef _DEFAULT_SOURCE
20 | +#define _DEFAULT_SOURCE 1
21 | +#endif
22 | +
23 | +#ifndef _GNU_SOURCE
24 | +#define _GNU_SOURCE 1
25 | +#endif
26 | +
27 | #ifdef __cplusplus
28 | extern "C" {
29 | #endif
30 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/catkin.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/catkin/cmake/all.cmake src/catkin/cmake/all.cmake
2 | --- src.orig/catkin/cmake/all.cmake 2016-03-18 14:31:08.000000000 -0700
3 | +++ src/catkin/cmake/all.cmake 2016-05-24 14:48:01.753981600 -0700
4 | @@ -200,5 +200,10 @@
5 | catkin_add_env_hooks(05.catkin_make_isolated SHELLS bash DIRECTORY ${catkin_EXTRAS_DIR}/env-hooks ${catkin_skip_install_env_hooks})
6 | endif()
7 |
8 | +if(CYGWIN)
9 | + include_directories(/usr/local/include)
10 | + link_directories(/usr/local/lib)
11 | +endif()
12 | +
13 | # requires stamp and environment files
14 | include(${catkin_EXTRAS_DIR}/catkin_python_setup.cmake)
15 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/catkin/cmake/catkin_destinations.cmake src/catkin/cmake/catkin_destinations.cmake
16 | --- src.orig/catkin/cmake/catkin_destinations.cmake 2016-03-18 14:31:08.000000000 -0700
17 | +++ src/catkin/cmake/catkin_destinations.cmake 2016-05-24 14:48:01.754981700 -0700
18 | @@ -43,7 +43,11 @@
19 | set(_${PROJECT_NAME}_CATKIN_DESTINATIONS TRUE)
20 |
21 | # set project specific install destinations
22 | - set(CATKIN_PACKAGE_BIN_DESTINATION ${CATKIN_GLOBAL_LIBEXEC_DESTINATION}/${PROJECT_NAME})
23 | + if (CYGWIN)
24 | + set(CATKIN_PACKAGE_BIN_DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}) #DLLs get copied here by default. Put them together to avoid putting every directory in PATH
25 | + else()
26 | + set(CATKIN_PACKAGE_BIN_DESTINATION ${CATKIN_GLOBAL_LIBEXEC_DESTINATION}/${PROJECT_NAME})
27 | + endif()
28 | set(CATKIN_PACKAGE_ETC_DESTINATION ${CATKIN_GLOBAL_ETC_DESTINATION}/${PROJECT_NAME})
29 | set(CATKIN_PACKAGE_INCLUDE_DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}/${PROJECT_NAME})
30 | set(CATKIN_PACKAGE_LIB_DESTINATION ${CATKIN_GLOBAL_LIB_DESTINATION})
31 | Binary files src.orig/catkin/python/catkin/__init__.pyc and src/catkin/python/catkin/__init__.pyc differ
32 | Binary files src.orig/catkin/python/catkin/builder.pyc and src/catkin/python/catkin/builder.pyc differ
33 | Binary files src.orig/catkin/python/catkin/cmake.pyc and src/catkin/python/catkin/cmake.pyc differ
34 | Binary files src.orig/catkin/python/catkin/environment_cache.pyc and src/catkin/python/catkin/environment_cache.pyc differ
35 | Binary files src.orig/catkin/python/catkin/find_in_workspaces.pyc and src/catkin/python/catkin/find_in_workspaces.pyc differ
36 | Binary files src.orig/catkin/python/catkin/terminal_color.pyc and src/catkin/python/catkin/terminal_color.pyc differ
37 | Binary files src.orig/catkin/python/catkin/workspace.pyc and src/catkin/python/catkin/workspace.pyc differ
38 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/dynamic_reconfigure.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/dynamic_reconfigure/cmake/dynamic_reconfigure-macros.cmake src/dynamic_reconfigure/cmake/dynamic_reconfigure-macros.cmake
2 | --- src.orig/dynamic_reconfigure/cmake/dynamic_reconfigure-macros.cmake 2016-03-19 11:37:11.000000000 -0700
3 | +++ src/dynamic_reconfigure/cmake/dynamic_reconfigure-macros.cmake 2016-05-24 14:48:01.770983300 -0700
4 | @@ -52,12 +52,21 @@
5 |
6 | #file(WRITE ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_PYTHON_DESTINATION}/cfg/__init__.py)
7 |
8 | + if(CYGWIN AND "${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
9 | add_custom_command(OUTPUT
10 | ${_output_cpp} ${_output_dox} ${_output_usage} ${_output_py} ${_output_wikidoc}
11 | - COMMAND ${_cmd}
12 | + COMMAND ${_cmd} || echo Ignoring dynamic_reconfigure failure...
13 | DEPENDS ${_input} ${gencfg_build_files}
14 | COMMENT "Generating dynamic reconfigure files from ${_cfg}: ${_output_cpp} ${_output_py}"
15 | )
16 | + else()
17 | + add_custom_command(OUTPUT
18 | + ${_output_cpp} ${_output_dox} ${_output_usage} ${_output_py} ${_output_wikidoc}
19 | + COMMAND ${_cmd}
20 | + DEPENDS ${_input} ${gencfg_build_files}
21 | + COMMENT "Generating dynamic reconfigure files from ${_cfg}: ${_output_cpp} ${_output_py}"
22 | + )
23 | + endif()
24 |
25 | list(APPEND ${PROJECT_NAME}_generated
26 | ${_output_cpp} ${_output_py}
27 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/dynamic_reconfigure/test/CMakeLists.txt src/dynamic_reconfigure/test/CMakeLists.txt
28 | --- src.orig/dynamic_reconfigure/test/CMakeLists.txt 2016-03-19 11:37:11.000000000 -0700
29 | +++ src/dynamic_reconfigure/test/CMakeLists.txt 2016-05-24 14:48:01.771983400 -0700
30 | @@ -4,4 +4,6 @@
31 |
32 | add_dependencies(tests dynamic_reconfigure-ref_server)
33 |
34 | +if(CATKIN_ENABLE_TESTING)
35 | add_rostest(test_python_simple_client.launch)
36 | +endif()
37 | \ No newline at end of file
38 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/filters.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/filters/CMakeLists.txt src/filters/CMakeLists.txt
2 | --- src.orig/filters/CMakeLists.txt 2014-03-02 07:10:58.000000000 -0800
3 | +++ src/filters/CMakeLists.txt 2016-05-24 14:48:01.786984900 -0700
4 | @@ -43,30 +43,42 @@
5 | # Test median filter
6 | add_executable(median_test EXCLUDE_FROM_ALL test/test_median.cpp )
7 | target_link_libraries(median_test median ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${GTEST_LIBRARIES})
8 | +if (CATKIN_ENABLE_TESTING)
9 | add_rostest(test/test_median.launch)
10 | +endif()
11 |
12 | # Test transfer function filter
13 | add_executable(transfer_function_test EXCLUDE_FROM_ALL test/test_transfer_function.cpp)
14 | target_link_libraries(transfer_function_test transfer_function ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${GTEST_LIBRARIES})
15 | +if (CATKIN_ENABLE_TESTING)
16 | add_rostest(test/test_transfer_function.launch)
17 | +endif()
18 |
19 | # Test mean filter
20 | add_executable(mean_test EXCLUDE_FROM_ALL test/test_mean.cpp)
21 | target_link_libraries(mean_test mean ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${GTEST_LIBRARIES})
22 | +if (CATKIN_ENABLE_TESTING)
23 | add_rostest(test/test_mean.launch)
24 | +endif()
25 |
26 | # Test params filter
27 | add_executable(params_test EXCLUDE_FROM_ALL test/test_params.cpp)
28 | target_link_libraries(params_test params ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${GTEST_LIBRARIES})
29 | +if (CATKIN_ENABLE_TESTING)
30 | add_rostest(test/test_params.launch)
31 | +endif()
32 |
33 | # Test plugin loading into filter chain
34 | add_executable(chain_test EXCLUDE_FROM_ALL test/test_chain.cpp)
35 | target_link_libraries(chain_test increment ${Boost_libraries} ${catkin_LIBRARIES} ${GTEST_LIBRARIES}) # Needed for OSX
36 | +if (CATKIN_ENABLE_TESTING)
37 | add_rostest(test/test_chain.launch)
38 | +endif()
39 |
40 | # Test realtime safe buffer class
41 | +if (CATKIN_ENABLE_TESTING)
42 | catkin_add_gtest(realtime_buffer_test EXCLUDE_FROM_ALL test/test_realtime_circular_buffer.cpp)
43 | +endif()
44 |
45 | ##############################################################################
46 | # Install
47 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/geometry.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/geometry/tf/CMakeLists.txt src/geometry/tf/CMakeLists.txt
2 | --- src.orig/geometry/tf/CMakeLists.txt 2016-03-04 12:12:26.000000000 -0800
3 | +++ src/geometry/tf/CMakeLists.txt 2016-05-24 14:48:01.802986500 -0700
4 | @@ -127,7 +127,7 @@
5 | add_dependencies(pytf_py ${PROJECT_NAME}_gencpp)
6 |
7 | find_package(PythonLibs REQUIRED)
8 | -set_target_properties(pytf_py PROPERTIES OUTPUT_NAME tf PREFIX "_" SUFFIX ".so"
9 | +set_target_properties(pytf_py PROPERTIES OUTPUT_NAME _tf PREFIX ""
10 | LIBRARY_OUTPUT_DIRECTORY ${CATKIN_DEVEL_PREFIX}/${PYTHON_INSTALL_DIR}/tf)
11 |
12 |
13 | @@ -151,9 +151,15 @@
14 |
15 | if(NOT ANDROID)
16 | install(TARGETS pytf_py
17 | - LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PYTHON_INSTALL_DIR}/tf)
18 | + LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PYTHON_INSTALL_DIR}/tf
19 | + RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/${PYTHON_INSTALL_DIR}/tf)
20 | endif()
21 |
22 | +if(CYGWIN)
23 | +install(TARGETS ${PROJECT_NAME}
24 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
25 | +endif(CYGWIN)
26 | +
27 | # Install rosrun-able scripts
28 | install(PROGRAMS
29 | scripts/bullet_migration_sed.py
30 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/geometry/tf/include/tf/tf.h src/geometry/tf/include/tf/tf.h
31 | --- src.orig/geometry/tf/include/tf/tf.h 2016-03-04 12:12:26.000000000 -0800
32 | +++ src/geometry/tf/include/tf/tf.h 2016-05-24 14:48:01.803986600 -0700
33 | @@ -47,6 +47,10 @@
34 |
35 | #include
36 |
37 | +#ifdef NO_ERROR
38 | +#undef NO_ERROR
39 | +#endif
40 | +
41 | namespace tf
42 | {
43 | /** \brief resolve tf names */
44 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/geometry2.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/geometry2/tf2_py/CMakeLists.txt src/geometry2/tf2_py/CMakeLists.txt
2 | --- src.orig/geometry2/tf2_py/CMakeLists.txt 2016-03-04 11:57:32.000000000 -0800
3 | +++ src/geometry2/tf2_py/CMakeLists.txt 2016-05-24 15:45:12.529024800 -0700
4 | @@ -94,11 +94,12 @@
5 | target_link_libraries(tf2_py ${catkin_LIBRARIES})
6 | add_dependencies(tf2_py tf2_msgs_gencpp)
7 |
8 | -set_target_properties(tf2_py PROPERTIES OUTPUT_NAME tf2 PREFIX "_" SUFFIX ".so")
9 | +set_target_properties(tf2_py PROPERTIES OUTPUT_NAME tf2 PREFIX "_" SUFFIX ".dll")
10 | set_target_properties(tf2_py PROPERTIES COMPILE_FLAGS "-g -Wno-missing-field-initializers")
11 | set_target_properties(tf2_py PROPERTIES
12 | ARCHIVE_OUTPUT_DIRECTORY ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_PYTHON_DESTINATION}
13 | LIBRARY_OUTPUT_DIRECTORY ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_PYTHON_DESTINATION}
14 | + RUNTIME_OUTPUT_DIRECTORY ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_PYTHON_DESTINATION}
15 | )
16 | #!! rosbuild_add_compile_flags(tf2_py ${SSE_FLAGS}) #conditionally adds sse flags if available
17 |
18 | @@ -138,7 +139,7 @@
19 | # DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
20 | # )
21 |
22 | -install(FILES ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_PYTHON_DESTINATION}/_tf2.so
23 | +install(FILES ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_PYTHON_DESTINATION}/_tf2.dll
24 | DESTINATION ${CATKIN_PACKAGE_PYTHON_DESTINATION}
25 | )
26 |
27 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/image_pipeline.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/image_pipeline/depth_image_proc/CMakeLists.txt src/image_pipeline/depth_image_proc/CMakeLists.txt
2 | --- src.orig/image_pipeline/depth_image_proc/CMakeLists.txt 2016-03-19 01:56:49.000000000 -0700
3 | +++ src/image_pipeline/depth_image_proc/CMakeLists.txt 2016-05-24 16:06:47.094468400 -0700
4 | @@ -26,7 +26,7 @@
5 | src/nodelets/point_cloud_xyzi_radial.cpp
6 | src/nodelets/register.cpp
7 | )
8 | -target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})
9 | +target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES})
10 |
11 | install(DIRECTORY include/${PROJECT_NAME}/
12 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
13 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/image_pipeline/image_proc/CMakeLists.txt src/image_pipeline/image_proc/CMakeLists.txt
14 | --- src.orig/image_pipeline/image_proc/CMakeLists.txt 2016-03-19 01:56:40.000000000 -0700
15 | +++ src/image_pipeline/image_proc/CMakeLists.txt 2016-05-24 15:53:02.539021100 -0700
16 | @@ -30,7 +30,7 @@
17 | src/nodelets/crop_non_zero.cpp
18 | )
19 | add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_gencfg)
20 | -target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${OpenCV_LIBRARIES})
21 | +target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${Boost_LIBRARIES})
22 |
23 | install(TARGETS ${PROJECT_NAME}
24 | DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
25 | @@ -44,7 +44,7 @@
26 |
27 | # Standalone node
28 | add_executable(image_proc_exe src/nodes/image_proc.cpp)
29 | -target_link_libraries(image_proc_exe ${PROJECT_NAME} ${Boost_LIBRARIES} ${OpenCV_LIBRARIES})
30 | +target_link_libraries(image_proc_exe ${PROJECT_NAME} ${Boost_LIBRARIES})
31 | SET_TARGET_PROPERTIES(image_proc_exe PROPERTIES OUTPUT_NAME image_proc)
32 | install(TARGETS image_proc_exe
33 | DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
34 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/image_pipeline/image_view/CMakeLists.txt src/image_pipeline/image_view/CMakeLists.txt
35 | --- src.orig/image_pipeline/image_view/CMakeLists.txt 2016-03-19 01:56:42.000000000 -0700
36 | +++ src/image_pipeline/image_view/CMakeLists.txt 2016-05-24 14:48:01.827989000 -0700
37 | @@ -42,12 +42,15 @@
38 | add_definitions(-DHAVE_GTK)
39 | include_directories(SYSTEM ${GTK2_INCLUDE_DIRS})
40 |
41 | +if(CYGWIN)
42 | +include_directories(/usr/include/gtk-2.0)
43 | +endif()
44 | +
45 | # Nodelet library
46 | add_library(image_view src/nodelets/image_nodelet.cpp src/nodelets/disparity_nodelet.cpp src/nodelets/window_thread.cpp)
47 | target_link_libraries(image_view ${catkin_LIBRARIES}
48 | ${GTK_LIBRARIES}
49 | ${GTK2_LIBRARIES}
50 | - ${OpenCV_LIBRARIES}
51 | ${Boost_LIBRARIES}
52 | )
53 | install(TARGETS image_view
54 | @@ -73,7 +76,6 @@
55 | ${catkin_LIBRARIES}
56 | ${GTK_LIBRARIES}
57 | ${GTK2_LIBRARIES}
58 | - ${OpenCV_LIBRARIES}
59 | )
60 |
61 | install(TARGETS disparity_view image_view_exe stereo_view
62 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/image_pipeline/stereo_image_proc/CMakeLists.txt src/image_pipeline/stereo_image_proc/CMakeLists.txt
63 | --- src.orig/image_pipeline/stereo_image_proc/CMakeLists.txt 2016-03-19 01:56:47.000000000 -0700
64 | +++ src/image_pipeline/stereo_image_proc/CMakeLists.txt 2016-05-24 14:48:01.828989100 -0700
65 | @@ -23,7 +23,6 @@
66 | # Nodelet library
67 | add_library(${PROJECT_NAME} src/libstereo_image_proc/processor.cpp src/nodelets/disparity.cpp src/nodelets/point_cloud2.cpp)
68 | target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES}
69 | - ${OpenCV_LIBRARIES}
70 | )
71 | add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_gencfg)
72 | install(TARGETS ${PROJECT_NAME}
73 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/image_transport_plugins.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/image_transport_plugins/compressed_depth_image_transport/CMakeLists.txt src/image_transport_plugins/compressed_depth_image_transport/CMakeLists.txt
2 | --- src.orig/image_transport_plugins/compressed_depth_image_transport/CMakeLists.txt 2016-01-17 14:52:42.000000000 -0800
3 | +++ src/image_transport_plugins/compressed_depth_image_transport/CMakeLists.txt 2016-05-24 14:48:01.843990600 -0700
4 | @@ -19,7 +19,7 @@
5 |
6 | add_library(${PROJECT_NAME} src/compressed_depth_publisher.cpp src/compressed_depth_subscriber.cpp src/manifest.cpp src/codec.cpp)
7 | add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_gencfg)
8 | -target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})
9 | +target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES})
10 |
11 | class_loader_hide_library_symbols(${PROJECT_NAME})
12 |
13 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/interactive_markers.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/interactive_markers/CMakeLists.txt src/interactive_markers/CMakeLists.txt
2 | --- src.orig/interactive_markers/CMakeLists.txt 2014-12-16 13:21:50.000000000 -0800
3 | +++ src/interactive_markers/CMakeLists.txt 2016-05-24 14:48:01.868993100 -0700
4 | @@ -31,7 +31,8 @@
5 |
6 | install(TARGETS ${PROJECT_NAME}
7 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
8 | - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
9 | + LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
10 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
11 | install(DIRECTORY include/interactive_markers/
12 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
13 | FILES_MATCHING PATTERN "*.h")
14 | @@ -60,9 +61,14 @@
15 | # Test program to simulate Interactive Marker with missing tf information
16 | add_executable(bursty_tf EXCLUDE_FROM_ALL src/test/bursty_tf.cpp)
17 | target_link_libraries(bursty_tf ${PROJECT_NAME})
18 | -add_dependencies(tests bursty_tf)
19 | +if(GTEST_FOUND)
20 | + add_dependencies(tests bursty_tf)
21 | +endif()
22 |
23 | # Test program to simulate Interactive Marker with wrong tf information
24 | add_executable(missing_tf EXCLUDE_FROM_ALL src/test/missing_tf.cpp)
25 | target_link_libraries(missing_tf ${PROJECT_NAME})
26 | -add_dependencies(tests missing_tf)
27 | +
28 | +if(GTEST_FOUND)
29 | + add_dependencies(tests missing_tf)
30 | +endif()
31 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/jade/perception_pcl.patch:
--------------------------------------------------------------------------------
1 | diff -urN src/perception_pcl/pcl_ros/CMakeLists.txt src.new/perception_pcl/pcl_ros/CMakeLists.txt
2 | --- src/perception_pcl/pcl_ros/CMakeLists.txt 2015-06-22 14:18:02.000000000 -0700
3 | +++ src.new/perception_pcl/pcl_ros/CMakeLists.txt 2015-09-12 13:11:31.395571300 -0700
4 | @@ -4,7 +4,7 @@
5 | ## Find system dependencies
6 | find_package(cmake_modules REQUIRED)
7 | find_package(Boost REQUIRED COMPONENTS system filesystem thread)
8 | -find_package(Eigen3 REQUIRED)
9 | +find_package(Eigen REQUIRED)
10 | find_package(PCL REQUIRED)
11 |
12 | ## Find catkin packages
13 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/jade/ros.patch:
--------------------------------------------------------------------------------
1 | diff -urN src.orig/ros/rosbash/scripts/rosrun src/ros/rosbash/scripts/rosrun
2 | --- src.orig/ros/rosbash/scripts/rosrun 2015-10-13 11:51:24.000000000 -0700
3 | +++ src/ros/rosbash/scripts/rosrun 2015-11-19 09:07:06.432666100 -0800
4 | @@ -68,7 +68,7 @@
5 | _perm="/111"
6 | fi
7 | debug "Searching for $2 with permissions $_perm"
8 | - exepathlist="`find -L "${catkin_package_libexec_dirs[@]}" "$pkgdir" -name "$2" -type f -perm "$_perm" ! -regex ".*$pkgdir\/build\/.*" | uniq`"
9 | + exepathlist="`find -L "${catkin_package_libexec_dirs[@]}" "$pkgdir" \( -name "$2" -o -name "$2.exe" \) -type f -perm "$_perm" ! -regex ".*$pkgdir\/build\/.*" | uniq`"
10 | IFS=$'\n'
11 | exepathlist=($exepathlist)
12 | unset IFS
13 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/laser_filters.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/laser_filters/CMakeLists.txt src/laser_filters/CMakeLists.txt
2 | --- src.orig/laser_filters/CMakeLists.txt 2016-05-20 20:10:19.000000000 -0700
3 | +++ src/laser_filters/CMakeLists.txt 2016-05-24 14:49:13.275133000 -0700
4 | @@ -44,9 +44,10 @@
5 |
6 | if (CATKIN_ENABLE_TESTING)
7 | find_package(rostest)
8 | + find_package(GTEST REQUIRED)
9 | add_executable(test_scan_filter_chain test/test_scan_filter_chain.cpp)
10 | - target_link_libraries(test_scan_filter_chain laser_scan_filters ${rostest_LIBRARIES} gtest)
11 | - add_dependencies(test_scan_filter_chain gtest)
12 | + target_link_libraries(test_scan_filter_chain laser_scan_filters ${rostest_LIBRARIES} ${GTEST_LIBRARIES})
13 | + add_dependencies(test_scan_filter_chain ${GTEST_LIBRARIES})
14 |
15 | add_rostest(test/test_scan_filter_chain.launch)
16 | endif()
17 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/laser_filters/test/test_scan_filter_chain.cpp src/laser_filters/test/test_scan_filter_chain.cpp
18 | --- src.orig/laser_filters/test/test_scan_filter_chain.cpp 2016-05-20 20:10:19.000000000 -0700
19 | +++ src/laser_filters/test/test_scan_filter_chain.cpp 2016-05-24 14:48:01.885994800 -0700
20 | @@ -60,8 +60,8 @@
21 | */
22 | void expect_ranges_eq(const std::vector &a, const std::vector &b) {
23 | for( int i=0; i<10; i++) {
24 | - if(isnan(a[i])) {
25 | - EXPECT_TRUE(isnan(a[i]));
26 | + if(std::isnan(a[i])) {
27 | + EXPECT_TRUE(std::isnan(a[i]));
28 | }
29 | else {
30 | EXPECT_NEAR(a[i], b[i], 1e-6);
31 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/laser_geometry.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/laser_geometry/CMakeLists.txt src/laser_geometry/CMakeLists.txt
2 | --- src.orig/laser_geometry/CMakeLists.txt 2015-05-17 23:51:16.000000000 -0700
3 | +++ src/laser_geometry/CMakeLists.txt 2016-05-24 14:48:01.902996500 -0700
4 | @@ -41,7 +41,8 @@
5 |
6 | install(TARGETS laser_geometry
7 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
8 | - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
9 | + LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
10 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
11 | install(DIRECTORY include/laser_geometry/
12 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
13 | FILES_MATCHING PATTERN "*.h")
14 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/navigation.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/navigation/base_local_planner/CMakeLists.txt src/navigation/base_local_planner/CMakeLists.txt
2 | --- src.orig/navigation/base_local_planner/CMakeLists.txt 2016-05-24 17:20:07.240439000 -0700
3 | +++ src/navigation/base_local_planner/CMakeLists.txt 2016-05-24 14:48:01.918998100 -0700
4 | @@ -116,6 +116,7 @@
5 | trajectory_planner_ros
6 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
7 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
8 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
9 | )
10 |
11 | install(FILES blp_plugin.xml
12 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/navigation/costmap_2d/CMakeLists.txt src/navigation/costmap_2d/CMakeLists.txt
13 | --- src.orig/navigation/costmap_2d/CMakeLists.txt 2016-05-24 17:20:07.272442200 -0700
14 | +++ src/navigation/costmap_2d/CMakeLists.txt 2016-05-24 14:48:01.919998200 -0700
15 | @@ -198,6 +198,7 @@
16 | layers
17 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
18 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
19 | + RUNTIME DESTINATION DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
20 | )
21 |
22 | install(FILES costmap_plugins.xml
23 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/navigation/navfn/CMakeLists.txt src/navigation/navfn/CMakeLists.txt
24 | --- src.orig/navigation/navfn/CMakeLists.txt 2016-05-24 17:20:07.327447700 -0700
25 | +++ src/navigation/navfn/CMakeLists.txt 2016-05-24 14:48:01.920998300 -0700
26 | @@ -68,7 +68,7 @@
27 | install(TARGETS navfn navfn_node
28 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
29 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
30 | - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
31 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
32 | )
33 |
34 | install(DIRECTORY include/navfn/
35 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/navigation/voxel_grid/CMakeLists.txt src/navigation/voxel_grid/CMakeLists.txt
36 | --- src.orig/navigation/voxel_grid/CMakeLists.txt 2016-05-24 17:20:07.358450800 -0700
37 | +++ src/navigation/voxel_grid/CMakeLists.txt 2016-05-24 14:48:01.920998300 -0700
38 | @@ -23,6 +23,7 @@
39 | install(TARGETS voxel_grid
40 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
41 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
42 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
43 | )
44 |
45 | install(DIRECTORY include/${PROJECT_NAME}/
46 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/octomap.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/octomap/octomap/CMakeLists.txt src/octomap/octomap/CMakeLists.txt
2 | --- src.orig/octomap/octomap/CMakeLists.txt 2016-01-13 14:00:55.000000000 -0800
3 | +++ src/octomap/octomap/CMakeLists.txt 2016-05-24 14:48:01.935999800 -0700
4 | @@ -34,7 +34,7 @@
5 | SET( BASE_DIR ${CMAKE_SOURCE_DIR} )
6 | SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BASE_DIR}/lib )
7 | SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${BASE_DIR}/lib )
8 | -SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BASE_DIR}/bin )
9 | +SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BASE_DIR}/lib )
10 |
11 | set(INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include")
12 | INCLUDE_DIRECTORIES(${INCLUDE_DIRS})
13 | @@ -44,7 +44,7 @@
14 | # Installation
15 |
16 | set(INSTALL_TARGETS_DEFAULT_ARGS
17 | - RUNTIME DESTINATION bin
18 | + RUNTIME DESTINATION lib
19 | LIBRARY DESTINATION lib
20 | ARCHIVE DESTINATION lib
21 | )
22 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/octomap/octomap/octomap-config.cmake.in src/octomap/octomap/octomap-config.cmake.in
23 | --- src.orig/octomap/octomap/octomap-config.cmake.in 2016-01-13 14:00:55.000000000 -0800
24 | +++ src/octomap/octomap/octomap-config.cmake.in 2016-05-24 14:48:01.936999900 -0700
25 | @@ -26,9 +26,16 @@
26 | set(OCTOMAP_INCLUDE_DIRS "@OCTOMAP_INCLUDE_DIRS@")
27 | set(OCTOMAP_LIBRARY_DIRS "@OCTOMAP_LIB_DIR@")
28 |
29 | -
30 | # Set library names as absolute paths:
31 | +
32 | +if(CYGWIN)
33 | +set(OCTOMAP_LIBRARIES
34 | + "@OCTOMAP_LIB_DIR@/cygoctomap-@OCTOMAP_SOVERSION@@CMAKE_SHARED_LIBRARY_SUFFIX@"
35 | + "@OCTOMAP_LIB_DIR@/cygoctomath-@OCTOMAP_SOVERSION@@CMAKE_SHARED_LIBRARY_SUFFIX@"
36 | +)
37 | +else()
38 | set(OCTOMAP_LIBRARIES
39 | "@OCTOMAP_LIB_DIR@/liboctomap@CMAKE_SHARED_LIBRARY_SUFFIX@"
40 | "@OCTOMAP_LIB_DIR@/liboctomath@CMAKE_SHARED_LIBRARY_SUFFIX@"
41 | -)
42 | \ No newline at end of file
43 | +)
44 | +endif()
45 | \ No newline at end of file
46 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/perception_pcl.patch:
--------------------------------------------------------------------------------
1 | Binary files src.orig/perception_pcl/pcl_ros/cfg/common.pyc and src/perception_pcl/pcl_ros/cfg/common.pyc differ
2 | Binary files src.orig/perception_pcl/pcl_ros/cfg/SACSegmentation_common.pyc and src/perception_pcl/pcl_ros/cfg/SACSegmentation_common.pyc differ
3 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/pluginlib.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/pluginlib/include/pluginlib/class_loader_imp.h src/pluginlib/include/pluginlib/class_loader_imp.h
2 | --- src.orig/pluginlib/include/pluginlib/class_loader_imp.h 2016-03-18 09:48:20.000000000 -0700
3 | +++ src/pluginlib/include/pluginlib/class_loader_imp.h 2016-05-24 14:48:01.953001500 -0700
4 | @@ -239,6 +239,33 @@
5 | //TODO: This needs to be replaced with an api call
6 | return(parseToStringVector(callCommandLine("catkin_find --lib")));
7 | }
8 | +
9 | + static inline void addFullLibraryPath(std::vector &all_paths, const std::string &library)
10 | + {
11 | + all_paths.push_back(library);
12 | +
13 | +#if __CYGWIN__
14 | + off_t off = library.rfind('/') + 1;
15 | + std::string bestCygwinPath = library;
16 | + if (!strncasecmp(library.c_str() + off, "lib", 3))
17 | + {
18 | + //Fallback #1 - replace libXXX.dll with cygXXX.dll
19 | + bestCygwinPath = library.substr(0, off) + "cyg" + (library.c_str() + off + 3);
20 | + all_paths.push_back(bestCygwinPath);
21 | + }
22 | +
23 | + off_t dirOff = off ? off - 1 : 0;
24 | + while (dirOff > 0 && bestCygwinPath[dirOff - 1] == '/')
25 | + dirOff--;
26 | +
27 | + if (dirOff >= 4 && !strncasecmp(bestCygwinPath.c_str() + dirOff - 4, "/lib/", 5))
28 | + {
29 | + //Fallback #2 - additionally to searching for xxx/lib/cygYYY.dll, search for xxx/bin/cygYYY.dll in case it got deployed to 'bin' instead of 'lib'
30 | + //There is no point of searching for xxx/bin/libYYY.dll, as cygwin always prefixes the libraries with 'lib'
31 | + all_paths.push_back(bestCygwinPath.substr(0, dirOff - 4) + "/bin/" + (bestCygwinPath.c_str() + dirOff + 1));
32 | + }
33 | +#endif
34 | + }
35 |
36 | template
37 | std::vector ClassLoader::getAllLibraryPathsToTry(const std::string& library_name, const std::string& exporting_package_name)
38 | @@ -268,12 +295,13 @@
39 | for(unsigned int c = 0; c < all_paths_without_extension.size(); c++)
40 | {
41 | std::string current_path = all_paths_without_extension.at(c);
42 | - all_paths.push_back(current_path + path_separator + library_name_with_extension);
43 | - all_paths.push_back(current_path + path_separator + stripped_library_name_with_extension);
44 | + addFullLibraryPath(all_paths, current_path + path_separator + library_name_with_extension);
45 | + addFullLibraryPath(all_paths, current_path + path_separator + stripped_library_name_with_extension);
46 | +
47 | // We're in debug mode, try debug libraries as well
48 | if(debug_library_suffix) {
49 | - all_paths.push_back(current_path + path_separator + library_name + class_loader::systemLibrarySuffix());
50 | - all_paths.push_back(current_path + path_separator + stripped_library_name + class_loader::systemLibrarySuffix());
51 | + addFullLibraryPath(all_paths, current_path + path_separator + library_name + class_loader::systemLibrarySuffix());
52 | + addFullLibraryPath(all_paths, current_path + path_separator + stripped_library_name + class_loader::systemLibrarySuffix());
53 | }
54 | }
55 |
56 | @@ -328,13 +356,21 @@
57 | ROS_DEBUG_NAMED("pluginlib.ClassLoader","Class %s maps to library %s in classes_available_.", lookup_name.c_str(), library_name.c_str());
58 |
59 | std::vector paths_to_try = getAllLibraryPathsToTry(library_name, it->second.package_);
60 | + const char *pDebugDlls = getenv("ROS_DEBUG_PLUGIN_DLLS");
61 | + if (pDebugDlls && pDebugDlls[0])
62 | + printf("ROS pluginlib: Searching for %s...\n", library_name.c_str());
63 |
64 | ROS_DEBUG_NAMED("pluginlib.ClassLoader","Iterating through all possible paths where %s could be located...", library_name.c_str());
65 | for(std::vector::const_iterator it = paths_to_try.begin(); it != paths_to_try.end(); it++)
66 | {
67 | ROS_DEBUG_NAMED("pluginlib.ClassLoader","Checking path %s ", it->c_str());
68 | + if (pDebugDlls && pDebugDlls[0])
69 | + printf("ROS pluginlib: Checking %s...\n", it->c_str());
70 | +
71 | if (boost::filesystem::exists(*it))
72 | {
73 | + if (pDebugDlls && pDebugDlls[0])
74 | + printf("ROS pluginlib: Found %s!\n", it->c_str());
75 | ROS_DEBUG_NAMED("pluginlib.ClassLoader","Library %s found at explicit path %s.", library_name.c_str(), it->c_str());
76 | return *it;
77 | }
78 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/python_qt_binding.patch:
--------------------------------------------------------------------------------
1 | Binary files src.orig/python_qt_binding/dist/python_qt_binding-0.2.19-py2.7.egg and src/python_qt_binding/dist/python_qt_binding-0.2.19-py2.7.egg differ
2 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/python_qt_binding/src/python_qt_binding.egg-info/dependency_links.txt src/python_qt_binding/src/python_qt_binding.egg-info/dependency_links.txt
3 | --- src.orig/python_qt_binding/src/python_qt_binding.egg-info/dependency_links.txt 1969-12-31 16:00:00.000000000 -0800
4 | +++ src/python_qt_binding/src/python_qt_binding.egg-info/dependency_links.txt 2016-05-24 15:00:56.384436900 -0700
5 | @@ -0,0 +1 @@
6 | +
7 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/python_qt_binding/src/python_qt_binding.egg-info/PKG-INFO src/python_qt_binding/src/python_qt_binding.egg-info/PKG-INFO
8 | --- src.orig/python_qt_binding/src/python_qt_binding.egg-info/PKG-INFO 1969-12-31 16:00:00.000000000 -0800
9 | +++ src/python_qt_binding/src/python_qt_binding.egg-info/PKG-INFO 2016-05-24 15:00:56.383436800 -0700
10 | @@ -0,0 +1,32 @@
11 | +Metadata-Version: 1.1
12 | +Name: python-qt-binding
13 | +Version: 0.2.19
14 | +Summary: This stack provides Python bindings for Qt.
15 | + There are two providers: pyside and pyqt. PySide is released under
16 | + the LGPL. PyQt is released under the GPL.
17 | +
18 | + Both the bindings and tools t...
19 | +Home-page: http://ros.org/wiki/python_qt_binding
20 | +Author: Dirk Thomas
21 | +Author-email: dthomas@osrfoundation.org
22 | +License: BSD
23 | +Description: This stack provides Python bindings for Qt.
24 | + There are two providers: pyside and pyqt. PySide is released under
25 | + the LGPL. PyQt is released under the GPL.
26 | +
27 | + Both the bindings and tools to build bindings are included from each
28 | + available provider. For PySide, it is called "Shiboken". For PyQt,
29 | + this is called "SIP".
30 | +
31 | + Also provided is adapter code to make the user's Python code
32 | + independent of which binding provider was actually used which makes
33 | + it very easy to switch between these.
34 | +Platform: UNKNOWN
35 | +Classifier: Development Status :: 5 - Production/Stable
36 | +Classifier: Intended Audience :: Developers
37 | +Classifier: Operating System :: OS Independent
38 | +Classifier: Programming Language :: Python
39 | +Classifier: Topic :: Software Development :: Libraries :: Python Modules
40 | +Classifier: License :: OSI Approved :: BSD License
41 | +Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
42 | +Classifier: License :: OSI Approved :: GNU General Public License (GPL)
43 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/python_qt_binding/src/python_qt_binding.egg-info/SOURCES.txt src/python_qt_binding/src/python_qt_binding.egg-info/SOURCES.txt
44 | --- src.orig/python_qt_binding/src/python_qt_binding.egg-info/SOURCES.txt 1969-12-31 16:00:00.000000000 -0800
45 | +++ src/python_qt_binding/src/python_qt_binding.egg-info/SOURCES.txt 2016-05-24 15:00:56.390437500 -0700
46 | @@ -0,0 +1,13 @@
47 | +MANIFEST.in
48 | +package.xml
49 | +setup.py
50 | +cmake/shiboken_helper.cmake
51 | +cmake/sip_configure.py
52 | +cmake/sip_helper.cmake
53 | +src/python_qt_binding/QtBindingHelper.py
54 | +src/python_qt_binding/__init__.py
55 | +src/python_qt_binding/binding_helper.py
56 | +src/python_qt_binding.egg-info/PKG-INFO
57 | +src/python_qt_binding.egg-info/SOURCES.txt
58 | +src/python_qt_binding.egg-info/dependency_links.txt
59 | +src/python_qt_binding.egg-info/top_level.txt
60 | \ No newline at end of file
61 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/python_qt_binding/src/python_qt_binding.egg-info/top_level.txt src/python_qt_binding/src/python_qt_binding.egg-info/top_level.txt
62 | --- src.orig/python_qt_binding/src/python_qt_binding.egg-info/top_level.txt 1969-12-31 16:00:00.000000000 -0800
63 | +++ src/python_qt_binding/src/python_qt_binding.egg-info/top_level.txt 2016-05-24 15:00:56.383436800 -0700
64 | @@ -0,0 +1 @@
65 | +python_qt_binding
66 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/qt_gui_core.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/qt_gui_core/qt_gui_cpp/src/qt_gui_cpp/CMakeLists.txt src/qt_gui_core/qt_gui_cpp/src/qt_gui_cpp/CMakeLists.txt
2 | --- src.orig/qt_gui_core/qt_gui_cpp/src/qt_gui_cpp/CMakeLists.txt 2016-03-30 13:29:26.000000000 -0700
3 | +++ src/qt_gui_core/qt_gui_cpp/src/qt_gui_cpp/CMakeLists.txt 2016-05-24 14:48:01.979004100 -0700
4 | @@ -39,4 +39,5 @@
5 |
6 | install(TARGETS ${PROJECT_NAME}
7 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
8 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
9 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
10 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/robot_model.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/robot_model/collada_parser/CMakeLists.txt src/robot_model/collada_parser/CMakeLists.txt
2 | --- src.orig/robot_model/collada_parser/CMakeLists.txt 2016-02-23 10:48:10.000000000 -0800
3 | +++ src/robot_model/collada_parser/CMakeLists.txt 2016-05-24 14:48:02.005006700 -0700
4 | @@ -18,7 +18,7 @@
5 |
6 | set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake-extensions/)
7 | find_package(PkgConfig)
8 | -find_package(COLLADA_DOM 2.3 COMPONENTS 1.5)
9 | +find_package(COLLADA_DOM 2.4 COMPONENTS 1.5)
10 | if(COLLADA_DOM_FOUND)
11 | include_directories(${COLLADA_DOM_INCLUDE_DIRS})
12 | link_directories(${COLLADA_DOM_LIBRARY_DIRS})
13 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/robot_model/collada_urdf/CMakeLists.txt src/robot_model/collada_urdf/CMakeLists.txt
14 | --- src.orig/robot_model/collada_urdf/CMakeLists.txt 2016-02-23 10:48:32.000000000 -0800
15 | +++ src/robot_model/collada_urdf/CMakeLists.txt 2016-05-24 14:48:02.006006800 -0700
16 | @@ -4,6 +4,7 @@
17 | find_package(catkin REQUIRED COMPONENTS angles collada_parser resource_retriever urdf geometric_shapes tf cmake_modules)
18 |
19 | find_package(TinyXML REQUIRED)
20 | +find_package(octomap REQUIRED)
21 |
22 | catkin_package(
23 | LIBRARIES ${PROJECT_NAME}
24 | @@ -13,7 +14,7 @@
25 | include_directories(include)
26 |
27 | find_package(assimp QUIET)
28 | -if ( NOT ASSIMP_FOUND )
29 | +if ( NOT ASSIMP_FOUND AND NOT CYGWIN )
30 | find_package(Assimp QUIET)
31 | if ( NOT ASSIMP_FOUND )
32 | find_package(PkgConfig REQUIRED)
33 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/robot_model/collada_urdf/src/collada_to_urdf.cpp src/robot_model/collada_urdf/src/collada_to_urdf.cpp
34 | --- src.orig/robot_model/collada_urdf/src/collada_to_urdf.cpp 2016-02-23 10:48:32.000000000 -0800
35 | +++ src/robot_model/collada_urdf/src/collada_to_urdf.cpp 2016-05-24 14:48:02.007006900 -0700
36 | @@ -13,12 +13,12 @@
37 | #include
38 | #include
39 | #else
40 | -#include
41 | +#include
42 | #if defined(ASSIMP_EXPORT_API)
43 | #include
44 | #endif
45 | -#include
46 | -#include
47 | +#include
48 | +#include
49 | #endif
50 |
51 | #include
52 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/robot_model/collada_urdf/src/collada_urdf.cpp src/robot_model/collada_urdf/src/collada_urdf.cpp
53 | --- src.orig/robot_model/collada_urdf/src/collada_urdf.cpp 2016-02-23 10:48:32.000000000 -0800
54 | +++ src/robot_model/collada_urdf/src/collada_urdf.cpp 2016-05-24 14:48:02.008007000 -0700
55 | @@ -71,12 +71,12 @@
56 | #include
57 | #include
58 | #else
59 | -#include
60 | -#include
61 | -#include
62 | -#include
63 | -#include
64 | -#include
65 | +#include
66 | +#include
67 | +#include
68 | +#include
69 | +#include
70 | +#include
71 | #endif
72 |
73 | #include
74 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/robot_model/urdf/CMakeLists.txt src/robot_model/urdf/CMakeLists.txt
75 | --- src.orig/robot_model/urdf/CMakeLists.txt 2016-02-23 10:48:15.000000000 -0800
76 | +++ src/robot_model/urdf/CMakeLists.txt 2016-05-24 14:48:02.009007100 -0700
77 | @@ -51,7 +51,7 @@
78 | install(TARGETS ${PROJECT_NAME}
79 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
80 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
81 | - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
82 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
83 |
84 | install(DIRECTORY include/${PROJECT_NAME}/
85 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION})
86 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/ros.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/ros/rosbash/scripts/rosrun src/ros/rosbash/scripts/rosrun
2 | --- src.orig/ros/rosbash/scripts/rosrun 2016-03-10 15:08:26.000000000 -0800
3 | +++ src/ros/rosbash/scripts/rosrun 2016-05-24 14:50:47.935598100 -0700
4 | @@ -68,7 +68,7 @@
5 | _perm="/111"
6 | fi
7 | debug "Searching for $2 with permissions $_perm"
8 | - exepathlist="`find -L "${catkin_package_libexec_dirs[@]}" "$pkgdir" -name "$2" -type f -perm "$_perm" ! -regex ".*$pkgdir\/build\/.*" | uniq`"
9 | + exepathlist="`find -L "${catkin_package_libexec_dirs[@]}" "$pkgdir" \( -name "$2" -o -name "$2.exe" \) -type f -perm "$_perm" ! -regex ".*$pkgdir\/build\/.*" | uniq`"
10 | IFS=$'\n'
11 | exepathlist=($exepathlist)
12 | unset IFS
13 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/ros_comm.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/ros_comm/rosbag_storage/CMakeLists.txt src/ros_comm/rosbag_storage/CMakeLists.txt
2 | --- src.orig/ros_comm/rosbag_storage/CMakeLists.txt 2016-04-19 10:11:43.000000000 -0700
3 | +++ src/ros_comm/rosbag_storage/CMakeLists.txt 2016-05-24 14:48:02.033009500 -0700
4 | @@ -43,7 +43,7 @@
5 | install(TARGETS rosbag_storage
6 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
7 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
8 | - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
9 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
10 | )
11 |
12 | install(DIRECTORY include/
13 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/ros_comm/roslz4/CMakeLists.txt src/ros_comm/roslz4/CMakeLists.txt
14 | --- src.orig/ros_comm/roslz4/CMakeLists.txt 2016-04-19 10:11:23.000000000 -0700
15 | +++ src/ros_comm/roslz4/CMakeLists.txt 2016-05-24 14:48:02.034009600 -0700
16 | @@ -43,7 +43,7 @@
17 | src/_roslz4module.c
18 | PROPERTIES COMPILE_FLAGS "-Wno-missing-field-initializers -Wno-unused-variable")
19 | set_target_properties(
20 | - roslz4_py PROPERTIES OUTPUT_NAME roslz4 PREFIX "_" SUFFIX ".so"
21 | + roslz4_py PROPERTIES OUTPUT_NAME _roslz4 PREFIX ""
22 | LIBRARY_OUTPUT_DIRECTORY ${CATKIN_DEVEL_PREFIX}/${PYTHON_INSTALL_DIR}/roslz4)
23 | target_link_libraries(roslz4_py roslz4 ${catkin_LIBRARIES} ${PYTHON_LIBRARIES})
24 | endif()
25 | @@ -51,12 +51,14 @@
26 | install(TARGETS roslz4
27 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
28 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
29 | - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
30 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
31 | )
32 |
33 | if(NOT ANDROID)
34 | install(TARGETS roslz4_py
35 | - LIBRARY DESTINATION ${CATKIN_PACKAGE_PYTHON_DESTINATION})
36 | + LIBRARY DESTINATION ${CATKIN_PACKAGE_PYTHON_DESTINATION}
37 | + ARCHIVE DESTINATION ${CATKIN_PACKAGE_PYTHON_DESTINATION}
38 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_PYTHON_DESTINATION})
39 | endif()
40 |
41 | install(DIRECTORY include/${PROJECT_NAME}
42 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/ros_comm/rosout/CMakeLists.txt src/ros_comm/rosout/CMakeLists.txt
43 | --- src.orig/ros_comm/rosout/CMakeLists.txt 2016-04-19 10:11:13.000000000 -0700
44 | +++ src/ros_comm/rosout/CMakeLists.txt 2016-05-24 14:48:02.035009700 -0700
45 | @@ -14,5 +14,10 @@
46 | add_executable(rosout rosout.cpp)
47 | target_link_libraries(rosout ${catkin_LIBRARIES})
48 |
49 | +if (CYGWIN)
50 | +install(TARGETS rosout
51 | + RUNTIME DESTINATION ${CATKIN_GLOBAL_LIB_DESTINATION}/rosout)
52 | +else()
53 | install(TARGETS rosout
54 | RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
55 | +endif()
56 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/rosconsole_bridge.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/rosconsole_bridge/CMakeLists.txt src/rosconsole_bridge/CMakeLists.txt
2 | --- src.orig/rosconsole_bridge/CMakeLists.txt 2016-04-18 14:37:05.000000000 -0700
3 | +++ src/rosconsole_bridge/CMakeLists.txt 2016-05-24 14:51:10.536858000 -0700
4 | @@ -22,6 +22,7 @@
5 | TARGETS ${PROJECT_NAME}
6 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
7 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
8 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
9 | )
10 |
11 | install(
12 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/roscpp_core.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/roscpp_core/cpp_common/include/ros/types.h src/roscpp_core/cpp_common/include/ros/types.h
2 | --- src.orig/roscpp_core/cpp_common/include/ros/types.h 2016-03-09 11:06:39.000000000 -0800
3 | +++ src/roscpp_core/cpp_common/include/ros/types.h 2016-05-24 14:48:02.059012100 -0700
4 | @@ -44,5 +44,8 @@
5 | #include
6 | #endif
7 |
8 | +#ifdef DELETE
9 | +#undef DELETE
10 | +#endif
11 |
12 | #endif // ROSCPP_TYPES_H
13 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/rqt.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/rqt/rqt_gui_cpp/CMakeLists.txt src/rqt/rqt_gui_cpp/CMakeLists.txt
2 | --- src.orig/rqt/rqt_gui_cpp/CMakeLists.txt 2014-05-21 10:25:58.000000000 -0700
3 | +++ src/rqt/rqt_gui_cpp/CMakeLists.txt 2016-05-24 14:48:02.075013700 -0700
4 | @@ -38,6 +38,7 @@
5 | install(TARGETS ${PROJECT_NAME}
6 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
7 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
8 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
9 | )
10 |
11 | install(DIRECTORY include/${PROJECT_NAME}/
12 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/rqt/rqt_gui_cpp/plugin.xml src/rqt/rqt_gui_cpp/plugin.xml
13 | --- src.orig/rqt/rqt_gui_cpp/plugin.xml 2014-05-21 10:25:58.000000000 -0700
14 | +++ src/rqt/rqt_gui_cpp/plugin.xml 2016-05-24 14:48:02.076013800 -0700
15 | @@ -1,4 +1,4 @@
16 | -
17 | +
18 |
19 |
20 | A C++ plugin provider for the ROS GUI integrating plugins using roscpp client library.
21 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/rqt_common_plugins.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/rqt_common_plugins/rqt_bag_plugins/src/rqt_bag_plugins/image_helper.py src/rqt_common_plugins/rqt_bag_plugins/src/rqt_bag_plugins/image_helper.py
2 | --- src.orig/rqt_common_plugins/rqt_bag_plugins/src/rqt_bag_plugins/image_helper.py 2016-03-08 17:30:41.000000000 -0800
3 | +++ src/rqt_common_plugins/rqt_bag_plugins/src/rqt_bag_plugins/image_helper.py 2016-05-24 14:48:02.091015300 -0700
4 | @@ -36,7 +36,7 @@
5 |
6 | from PIL import Image
7 | from PIL import ImageOps
8 | -import cairo
9 | +import cairocffi as cairo
10 |
11 |
12 | def imgmsg_to_pil(img_msg, rgba=True):
13 |
--------------------------------------------------------------------------------
/autobuild/patches/ros/rviz.patch:
--------------------------------------------------------------------------------
1 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/rviz/CMakeLists.txt src/rviz/CMakeLists.txt
2 | --- src.orig/rviz/CMakeLists.txt 2016-04-03 17:06:44.000000000 -0700
3 | +++ src/rviz/CMakeLists.txt 2016-05-24 14:48:02.107016900 -0700
4 | @@ -17,12 +17,16 @@
5 | thread
6 | )
7 |
8 | -find_package(PkgConfig REQUIRED)
9 | +if (NOT CYGWIN)
10 | + find_package(PkgConfig REQUIRED)
11 | +endif()
12 |
13 | find_package(ASSIMP QUIET)
14 | -if (NOT ASSIMP_FOUND)
15 | +
16 | +if (NOT ASSIMP_FOUND AND NOT CYGWIN)
17 | pkg_check_modules(ASSIMP assimp)
18 | endif()
19 | +
20 | if (ASSIMP_FOUND)
21 | if( NOT ${ASSIMP_VERSION} VERSION_LESS "2.0.1150" )
22 | add_definitions(-DASSIMP_UNIFIED_HEADER_NAMES)
23 | @@ -42,14 +46,22 @@
24 | set(ASSIMP_INCLUDE_DIRS)
25 | endif()
26 |
27 | -pkg_check_modules(OGRE_OV OGRE OGRE-Overlay)
28 | +if (CYGWIN)
29 | +set(OGRE_OV_INCLUDE_DIRS "/usr/local/include/OGRE")
30 | +set(OGRE_OV_LIBRARY_DIRS "/usr/local/lib")
31 | +set(OGRE_OV_LIBRARIES "OgreMain")
32 | +endif()
33 | +
34 | +if (NOT CYGWIN)
35 | + pkg_check_modules(OGRE_OV OGRE OGRE-Overlay)
36 | +endif()
37 |
38 | # Old versions of OGRE (pre 1.9) included OGRE-Overlay in the main package
39 | # (i.e. there was no OGRE-Overlay component). So if the above
40 | # pkg_check_modules() failed, try looking for just OGRE.
41 | -if(NOT OGRE_OV_FOUND)
42 | - pkg_check_modules(OGRE_OV REQUIRED OGRE)
43 | -endif(NOT OGRE_OV_FOUND)
44 | +if(NOT OGRE_OV_FOUND AND NOT CYGWIN)
45 | + pkg_check_modules(OGRE_OV REQUIRED OGRE AND NOT CYGWIN)
46 | +endif(NOT OGRE_OV_FOUND AND NOT CYGWIN)
47 |
48 | ## Find OGRE Plugin path (not necessarily platform-independent, I guess)
49 | execute_process(COMMAND
50 | @@ -84,6 +96,7 @@
51 | CACHE FILEPATH "Pathname of library ${_lib}")
52 | endif(NOT DEFINED OGRE_OV_LIBRARIES_ABS)
53 |
54 | +
55 | if(APPLE)
56 | FIND_LIBRARY(Cocoa_LIBRARIES Cocoa)
57 | set(rviz_ADDITIONAL_LIBRARIES ${Cocoa_LIBRARIES})
58 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/rviz/plugin_description.xml src/rviz/plugin_description.xml
59 | --- src.orig/rviz/plugin_description.xml 2016-04-03 17:06:44.000000000 -0700
60 | +++ src/rviz/plugin_description.xml 2016-05-24 14:48:02.108017000 -0700
61 | @@ -1,4 +1,4 @@
62 | -
63 | +
64 |
65 |
66 | Displays an axis at the Target Frame's origin. <a href="http://www.ros.org/wiki/rviz/DisplayTypes/Axes">More Information</a>.
67 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/rviz/src/python_bindings/sip/CMakeLists.txt src/rviz/src/python_bindings/sip/CMakeLists.txt
68 | --- src.orig/rviz/src/python_bindings/sip/CMakeLists.txt 2016-04-03 17:06:44.000000000 -0700
69 | +++ src/rviz/src/python_bindings/sip/CMakeLists.txt 2016-05-24 14:48:02.109017100 -0700
70 | @@ -41,7 +41,7 @@
71 |
72 | # maintain context for different named target
73 | set(rviz_sip_INCLUDE_DIRS ${rviz_INCLUDE_DIRS} "${PROJECT_SOURCE_DIR}/src" ${catkin_INCLUDE_DIRS})
74 | -set(rviz_sip_LIBRARIES ${rviz_LIBRARIES} ${PROJECT_NAME})
75 | +set(rviz_sip_LIBRARIES ${rviz_LIBRARIES} ${PROJECT_NAME} boost_system)
76 | set(rviz_sip_LIBRARY_DIRS ${rviz_LIBRARY_DIRS} ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_LIB_DESTINATION})
77 | set(rviz_sip_LDFLAGS_OTHER ${rviz_LDFLAGS_OTHER} -Wl,-rpath,\\"${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_LIB_DESTINATION}\\")
78 |
79 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/rviz/src/rviz/CMakeLists.txt src/rviz/src/rviz/CMakeLists.txt
80 | --- src.orig/rviz/src/rviz/CMakeLists.txt 2016-04-03 17:06:44.000000000 -0700
81 | +++ src/rviz/src/rviz/CMakeLists.txt 2016-05-24 14:48:02.110017200 -0700
82 | @@ -156,7 +156,8 @@
83 | PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
84 |
85 | install(TARGETS executable ${PROJECT_NAME}
86 | - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
87 | + ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
88 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
89 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
90 | )
91 | install(DIRECTORY ./
92 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/rviz/src/rviz/default_plugin/CMakeLists.txt src/rviz/src/rviz/default_plugin/CMakeLists.txt
93 | --- src.orig/rviz/src/rviz/default_plugin/CMakeLists.txt 2016-04-03 17:06:44.000000000 -0700
94 | +++ src/rviz/src/rviz/default_plugin/CMakeLists.txt 2016-05-24 14:48:02.111017300 -0700
95 | @@ -77,7 +77,9 @@
96 |
97 | install(TARGETS ${rviz_DEFAULT_PLUGIN_LIBRARY_TARGET_NAME}
98 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
99 | - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
100 | + LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
101 | + RUNTIME DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
102 | + )
103 |
104 | # Generate to the devel space so the extras file can include it from the devel space.
105 | add_custom_command(
106 | diff '--exclude=.git' '--exclude=*.patch' -urN src.orig/rviz/src/rviz/default_plugin/interactive_marker_display.h src/rviz/src/rviz/default_plugin/interactive_marker_display.h
107 | --- src.orig/rviz/src/rviz/default_plugin/interactive_marker_display.h 2016-04-03 17:06:44.000000000 -0700
108 | +++ src/rviz/src/rviz/default_plugin/interactive_marker_display.h 2016-05-24 16:46:06.265361900 -0700
109 | @@ -33,6 +33,14 @@
110 | #include