Closed 130s closed 8 years ago
rtm.py is installed under /pt/ros/lib/python2.7/dist-packages.... but test-hrpsysconf.py is isntalled under /opt/ros/share/...., which is different from patch files asuming ./python/rtm.py and ./test/test-hrpsys....
◉ Kei Okada
On Tue, Apr 19, 2016 at 6:31 PM, Isaac I.Y. Saito notifications@github.com wrote:
This may be basically the same issue with #4 https://github.com/tork-a/88_tools/issues/4, but I'm not sure so opening a new issue.
./hot_fix.sh fkanehiro/hrpsys-base 978 /opt/ros/indigo/lib/python2.7/dist-packages/hrpsys 0 : |diff --git a/python/rtm.py b/python/rtm.py |index c36bf47..1239c83 100644 |--- a/python/rtm.py
|+++ b/python/rtm.py
No file to patch. Skipping patch. 1 out of 1 hunk ignored can't find file to patch at input line 18 Perhaps you used the wrong -p or --strip option?
I tried to change -p / --strip= value from 0 to 8 ( /opt/ros/indigo/lib/python2.7/dist-packages/hrpsys/rtm.py has 8 slashes) but got all the same result.
I noticed that the paths of the targetted file and one up directory are different:
- in .diff file: python/rtm.py
- of installed version: hrpsys/rtm.py
Longer log:
./hot_fix.sh fkanehiro/hrpsys-base 978 /opt/ros/indigo/lib/python2.7/dist-packages/hrpsys 0
�[32m;; download patch file https://github.com/fkanehiro/hrpsys-base/pull/978.diff�[0m �[33m diff --git a/python/rtm.py b/python/rtm.py index c36bf47..1239c83 100644 --- a/python/rtm.py +++ b/python/rtm.py @@ -538,7 +538,7 @@ def connectPorts(outP, inPs, subscription="flush", dataflow="Push", bufferlength print('[rtm.py] \033[31m Failed to connect %s to %s(%s)\033[0m' % \ (outP.get_port_profile().name, inP, inPs)) continue
- if isConnected(outP, inP) == True and False:
if isConnected(outP, inP) == True: print('[rtm.py] %s and %s are already connected' % \ (outP.get_port_profile().name, inP.get_port_profile().name)) continue
diff --git a/test/test-hrpsysconf.py b/test/test-hrpsysconf.py index a84e360..aa501e5 100755 --- a/test/test-hrpsysconf.py +++ b/test/test-hrpsysconf.py @@ -23,12 +23,29 @@ def init(self, robotname="SampleRobot(Robot)0", url=""):
class TestHrpsysConfig(unittest.TestCase): global h
- rh = None
seq = None
def test_import_waitinput(self):
https://github.com/start-jsk/rtmros_hironx/blob/groovy-devel/hironx_ros_bridge/src/hironx_ros_bridge/hironx_client.py
from waitInput import waitInputConfirm, waitInputSelect self.assertTrue(True)
- def test_createcomp(self):
- global h
- self.seq = h.createComp("SequencePlayer",'seq')[0] +
- def test_connectcomp(self):
- global h
- if self.seq == None or self.rh == None:
- self.test_createcomp()
- connectPorts(self.rh.port("q"), self.seq.port("qInit"))
check number of connection
- assert(len(self.seq.port("qInit").get_connector_profiles()) == 1)
check do not connect again if already connected for https://github.com/fkanehiro/hrpsys-base/issues/979
- connectPorts(self.rh.port("q"), self.seq.port("qInit"))
assert(len(self.seq.port("qInit").get_connector_profiles()) == 1)
+ def test_findcomp(self): global h h.findComps() @@ -46,6 +63,13 @@ def setUp(self): rtm.nsport = args.port h = SampleHrpsysConfigurator()
h.waitForRTCManager()
look for name
- for c in h.ms.get_components():
- if '(Robot)' in c.name() or 'RobotHardware' in c.name():
- h.waitForRobotHardware(c.name()) # get robot hardware name
- break;
self.rh = h.rh
unittest.main()
if name == 'main': �[0m ./hot_fix.sh: line 31: cd: 2: No such file or directory �[32msudo patch -fN -p1 < /tmp/20024.patch�[0m can't find file to patch at input line 5 Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
|diff --git a/python/rtm.py b/python/rtm.py |index c36bf47..1239c83 100644 |--- a/python/rtm.py
|+++ b/python/rtm.py
No file to patch. Skipping patch. 1 out of 1 hunk ignored can't find file to patch at input line 18 Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
|diff --git a/test/test-hrpsysconf.py b/test/test-hrpsysconf.py |index a84e360..aa501e5 100755 |--- a/test/test-hrpsysconf.py
|+++ b/test/test-hrpsysconf.py
No file to patch. Skipping patch. 2 out of 2 hunks ignored can't find file to patch at input line 5 Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
|diff --git a/python/rtm.py b/python/rtm.py |index c36bf47..1239c83 100644 |--- a/python/rtm.py
|+++ b/python/rtm.py
No file to patch. Skipping patch. 1 out of 1 hunk ignored can't find file to patch at input line 18 Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
|diff --git a/test/test-hrpsysconf.py b/test/test-hrpsysconf.py |index a84e360..aa501e5 100755 |--- a/test/test-hrpsysconf.py
|+++ b/test/test-hrpsysconf.py
No file to patch. Skipping patch. 2 out of 2 hunks ignored �[31mERROR: failed to patch�[0m
— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/tork-a/88_tools/issues/12
tl;dr I can't think of a way to apply multiple patch files that are included in a github pull request. Using patch
command for each patch files work as expected.
I was aware that the two commits change files in different paths. But even so, either patch should be applied with correct command. I tried manually:
$ wget https://patch-diff.githubusercontent.com/raw/fkanehiro/hrpsys-base/pull/978.patch
$ sudo patch -fN -p2 -d /opt/ros/indigo/lib/python2.7/dist-packages/hrpsys < 978.patch
:
2 out of 2 hunks ignored
patching file rtm.py
Hunk #1 FAILED at 538.
1 out of 1 hunk FAILED -- saving rejects to file rtm.py.rej
(Even though the patch for rtm.py is indicated as failure) the patch is applied to rtm.py
.
So my plan was to run the hot_fix.sh
twice to apply changes in files in 2 different locations. But against expectation, not even a single patch gets applied.
I confirmed that using patch
command works with patch files of each separately.
python/rtm.py
test/test-hrpsysconf.py
Using each diff file,
Worked1
$ patch -fN -p2 < rtm.patch
$ tree -L 2
.
├── hot_fix.sh
├── python
├── rtm.diff
├── rtm.patch
├── rtm.py
└── wget.log
Worked2
patch -fN -p2 -d ./python/ < rtm.patch
$ tree -L 2
.
├── hot_fix.sh
├── python
│ └── rtm.py
├── rtm.diff
├── rtm.patch
└── wget.log
1 directory, 5 files
$ patch -fN -p2 -d ./python/ < rtm.patch
patching file rtm.py
Worked3
$ sudo patch -fN -p2 -d /opt/ros/indigo/lib/python2.7/dist-packages/hrpsys < ./rtm.patch
please look at https://github.com/tork-a/88_tools/pull/6#issuecomment-211821655 for workaround, for cleaner solution see https://github.com/k-okada/88_tools/tree/set_index or https://github.com/k-okada/88_tools/tree/multiple_files
please look at #6 (comment) for workaround,
Already tried and reported https://github.com/tork-a/88_tools/issues/12#issue-149403152
I tried to change -p / --strip= value from 0 to 8 (/opt/ros/indigo/lib/python2.7/dist-packages/hrpsys/rtm.py has 8 slashes) but got all the same result.
for cleaner solution see https://github.com/k-okada/88_tools/tree/set_index or https://github.com/k-okada/88_tools/tree/multiple_files
Thank you for the patch. I opened a PR using https://github.com/k-okada/88_tools/tree/multiple_files in #14
i'm afraind multiple files solution will not work for some condition, specially for the cases like hrpsys-base 978...
◉ Kei Okada
On Mon, Apr 25, 2016 at 12:53 PM, Isaac I.Y. Saito <notifications@github.com
wrote:
please look at #6 https://github.com/tork-a/88_tools/pull/6 (comment) for workaround,
Already tried and reported #12 (comment) https://github.com/tork-a/88_tools/issues/12#issue-149403152
I tried to change -p / --strip= value from 0 to 8 (/opt/ros/indigo/lib/python2.7/dist-packages/hrpsys/rtm.py has 8 slashes) but got all the same result.
for cleaner solution see https://github.com/k-okada/88_tools/tree/set_index or https://github.com/k-okada/88_tools/tree/multiple_files
Thank you for the patch. I opened a PR using https://github.com/k-okada/88_tools/tree/multiple_files in #14 https://github.com/tork-a/88_tools/pull/14
— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/tork-a/88_tools/issues/12#issuecomment-214117574
ros package have different directory structure for source tree and installed tree, this make this problem very difficult
ros package have different directory structure for source tree and installed tree, this make this problem very difficult
何か対策しないとまずい状態ですか?
いや,ぼくだったら,
./hot_fix.sh fkanehiro/hrpsys-base 983 /opt/ros/indigo/lib/python2.7/dist-packages/hrpsys 2
でいいと思っています.983はタイポではなくて,これが正しい.
https://github.com/fkanehiro/hrpsys-base/pull/978
https://github.com/fkanehiro/hrpsys-base/pull/983
は違うもの.というのがコメント.でも,ちゃんと987のPRを使いたいなら
https://github.com/k-okada/88_tools/tree/set_index
ものをつかって
./hot_fix.sh fkanehiro/hrpsys-base 973 /opt/ros/indigo/lib/python2.7/dist-packages/hrpsys 2 0
が今出来る範囲でしょうか.https://github.com/tork-a/88_tools/pull/14
でPRを作られていますが,こっちはだいぶ難易度は高いはずです.
頑張ってもいいけど,あまり頑張る理由はないんじゃないでしょうか.
あと,やっぱtravisとおってないのにマージするのは良くないんじゃないかなぁ....少くとも一発で通る状態ではなかったです.
https://github.com/tork-a/88_tools/pull/16/files
ということは現状は Pull Request が複数ファイルで成る場合は 88_tools でパッチは当てられない,#14 (これ私は PR しただけで私の作ではないです) を頑張れば複数ファイルできるが頑張る価値はない,ということと理解しました.
複数ファイルパッチ充てる必要がある場合は,ファイル1個のみ含む PR に小分けするか,従来通りソースビルドですかね
僕が話が理解できているかわからないですが,https://github.com/tork-a/88_tools/issues/12#issuecomment-212208448 にある https://github.com/tork-a/88_tools/pull/16 (https://github.com/k-okada/88_tools/tree/set_index) と https://github.com/tork-a/88_tools/pull/14 (https://github.com/k-okada/88_tools/commits/multiple_files) は別物で, 前者は複数の変更が含まれているPRのうちの1つだけを取り出してパッチをあてるもので, 後者は全ての変更のパッチを当てるもの,です.
この問題が難しいのはROSがファイルをインストールするときに,ソースツリーと違うディレクトリ構成にすることで, なので,引数でインストールディレクトリのルートを設定できるようにしていますが,
patch_dir=${3:-/opt/ros/hydro/share}
patch_prefix=${4:-1}
あくまでもここで指定したディレクトリ(インストールディレクトリ)相対で,ソースツリーでつくられたパッチを当てる ということになって,複数のファイルで異なるディレクトリ相対で指定はできませんね.という話です.
ディレクトリ相対を指示するようにできるようになっています.なので, ./hot_fix.sh fkanehiro/hrpsys-base 973 /opt/ros/indigo/lib/python2.7/dist-packages/hrpsys 2 0 としたら複数ファイルが入っているPRから1つのファイルだけ取り出してパッチをあてることができます.
一方で#14は惜しいのは,
https://github.com/130s/88_tools/blob/bb16f71dddf836c2db118f0b2c3f311e4e1acc50/hotfixer/hot_fix.sh#L31
で,もしpythonファイルだったら,
/opt/ros/indigo/lib/python2.7/dist-packages
相対でパッチをあてて,そうでなければ,
/opt/ros/indigo/share
相対でファイルをあてる,ということで,
pythonファイルの変更が
なので,複数のファイルが含まれていても#16を使うことでパッチをアテられるようになっています.
◉ Kei Okada
2016-05-11 9:45 GMT+09:00 Isaac I.Y. Saito notifications@github.com:
ということは現状は Pull Request が複数ファイルで成る場合は 88_tools でパッチは当てられない,#14 (これ私は PR しただけで私の作ではないです) を頑張れば複数ファイルできるが頑張る価値はない,ということと理解しました.
複数ファイルパッチ充てる必要がある場合は,ファイル1個のみ含む PR に小分けするか,従来通りソースビルドですかね
— You are receiving this because you modified the open/close state. Reply to this email directly or view it on GitHub
ちなみに, https://github.com/tork-a/rtmros_nextage/pull/245/files みたいなPRだったら,pythonのファイルはなく,また,ソースツリーの構造とインスト−ル先のディレクトリ構造が同じになるような ファイルのパッチしか含まれていないので,複数のファイルが入っているPRでも,以前のスクリプトでもそのままパッチがあたるので
◉ Kei Okada
2016-05-11 11:14 GMT+09:00 Kei Okada k-okada@jsk.t.u-tokyo.ac.jp:
僕が話が理解できているかわからないですが,https://github.com/tork-a/88_tools/issues/12#issuecomment-212208448 にある https://github.com/tork-a/88_tools/pull/16 (https://github.com/k-okada/88_tools/tree/set_index) と https://github.com/tork-a/88_tools/pull/14 (https://github.com/k-okada/88_tools/commits/multiple_files) は別物で, 前者は複数の変更が含まれているPRのうちの1つだけを取り出してパッチをあてるもので, 後者は全ての変更のパッチを当てるもの,です.
この問題が難しいのはROSがファイルをインストールするときに,ソースツリーと違うディレクトリ構成にすることで, なので,引数でインストールディレクトリのルートを設定できるようにしていますが,
patch_dir=${3:-/opt/ros/hydro/share} patch_prefix=${4:-1}
あくまでもここで指定したディレクトリ(インストールディレクトリ)相対で,ソースツリーでつくられたパッチを当てる ということになって,複数のファイルで異なるディレクトリ相対で指定はできませんね.という話です.
16は複数のファイルが入っていた場合に1つのファイルだけ取り出してパッチをあてるので,そのファイルに対して,
ディレクトリ相対を指示するようにできるようになっています.なので, ./hot_fix.sh fkanehiro/hrpsys-base 973 /opt/ros/indigo/lib/python2.7/dist-packages/hrpsys 2 0 としたら複数ファイルが入っているPRから1つのファイルだけ取り出してパッチをあてることができます.
一方で#14は惜しいのは, https://github.com/130s/88_tools/blob/bb16f71dddf836c2db118f0b2c3f311e4e1acc50/hotfixer/hot_fix.sh#L31 で,もしpythonファイルだったら, /opt/ros/indigo/lib/python2.7/dist-packages 相対でパッチをあてて,そうでなければ, /opt/ros/indigo/share 相対でファイルをあてる,ということで, pythonファイルの変更が
/src/ /.py だけで,それがそのままlib/pytnon2.7/dist-packages/ / .py に入る だけのもので,それ以外のファイルは全部pythonではなくて,share/の変更だったら上手く行くところまではできたけど, 今回みたいにpythonのスクリプトファイルがあると,ディレクトリを指定しないとlib/python2.7/dist-packages/にパッチをあてにいくし, ディレクトリを指定すると,今度はpython以外のファイルもそのディレクトリ相対で見に行こうとするし,困ったもんですね, という話で,たいがいは上手く行きそうですが,今回のケースだと上手くいかないので,こちらのケースを採用するなら,もうしこし 頑張る必要があります,という話です. なので,複数のファイルが含まれていても#16を使うことでパッチをアテられるようになっています.
◉ Kei Okada
2016-05-11 9:45 GMT+09:00 Isaac I.Y. Saito notifications@github.com:
ということは現状は Pull Request が複数ファイルで成る場合は 88_tools でパッチは当てられない,#14 (これ私は PR しただけで私の作ではないです) を頑張れば複数ファイルできるが頑張る価値はない,ということと理解しました.
複数ファイルパッチ充てる必要がある場合は,ファイル1個のみ含む PR に小分けするか,従来通りソースビルドですかね
— You are receiving this because you modified the open/close state. Reply to this email directly or view it on GitHub
This may be basically the same issue with https://github.com/tork-a/88_tools/issues/4, but I'm not sure so opening a new issue.
I tried to change
-p / --strip=
value from 0 to 8 (/opt/ros/indigo/lib/python2.7/dist-packages/hrpsys/rtm.py
has 8 slashes) but got all the same result.I noticed that the paths of the targetted file and one up directory are different:
.diff
file:python/rtm.py
hrpsys/rtm.py
Longer log: