Related
I have cloned the kubespray repo and I am attempting to create a container from the Dockerfile in order to run my deploys. It gets through steps 1-5 of the Dockerfile without issue but fails on step 6 every time when downloading the ansible base tar. Here is the output:
docker build --no-cache --force-rm=true --tag=kubespray-builder .
=> ERROR [6/7] RUN /usr/bin/python3 -m pip install pip -U && /usr/bin/python3 -m pip install -r tests/requirements.txt && python3 -m 29.1s
------
> [6/7] RUN /usr/bin/python3 -m pip install pip -U && /usr/bin/python3 -m pip install -r tests/requirements.txt && python3 -m pip install -r requirements.txt && update-alternatives --install /usr/bin/python python /usr/bin/python3 1:
#11 1.615 Collecting pip
#11 1.988 Downloading https://files.pythonhosted.org/packages/ca/bf/4133a0e05eac641ec270bbcef30512b5ad307d7838adb994acd652cc30e3/pip-21.2.3-py3-none-any.whl (1.6MB)
#11 2.965 Installing collected packages: pip
#11 2.965 Found existing installation: pip 9.0.1
#11 2.972 Not uninstalling pip at /usr/lib/python3/dist-packages, outside environment /usr
#11 3.788 Successfully installed pip-21.2.3
#11 4.623 Collecting ansible==3.4.0
#11 4.771 Downloading ansible-3.4.0.tar.gz (31.9 MB)
#11 26.29 Collecting ansible-base==2.10.11
#11 26.31 Downloading ansible-base-2.10.11.tar.gz (6.0 MB)
#11 27.38 ERROR: Exception:
#11 27.38 Traceback (most recent call last):
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/cli/base_command.py", line 173, in _main
#11 27.38 status = self.run(options, args)
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/cli/req_command.py", line 203, in wrapper
#11 27.38 return func(self, options, args)
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/commands/install.py", line 316, in run
#11 27.38 reqs, check_supported_wheels=not options.target_dir
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 95, in resolve
#11 27.38 collected.requirements, max_rounds=try_to_avoid_resolution_too_deep
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 472, in resolve
#11 27.38 state = resolution.resolve(requirements, max_rounds=max_rounds)
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 341, in resolve
#11 27.38 self._add_to_criteria(self.state.criteria, r, parent=None)
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 172, in _add_to_criteria
#11 27.38 if not criterion.candidates:
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_vendor/resolvelib/structs.py", line 151, in __bool__
#11 27.38 return bool(self._sequence)
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 140, in __bool__
#11 27.38 return any(self)
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 128, in <genexpr>
#11 27.38 return (c for c in iterator if id(c) not in self._incompatible_ids)
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 32, in _iter_built
#11 27.38 candidate = func()
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 209, in _make_candidate_from_link
#11 27.38 version=version,
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 301, in __init__
#11 27.38 version=version,
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__
#11 27.38 self.dist = self._prepare()
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 227, in _prepare
#11 27.38 dist = self._prepare_distribution()
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 306, in _prepare_distribution
#11 27.38 self._ireq, parallel_builds=True
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/operations/prepare.py", line 508, in prepare_linked_requirement
#11 27.38 return self._prepare_linked_requirement(req, parallel_builds)
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/operations/prepare.py", line 552, in _prepare_linked_requirement
#11 27.38 self.download_dir, hashes
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/operations/prepare.py", line 249, in unpack_url
#11 27.38 unpack_file(file.path, location, file.content_type)
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/utils/unpacking.py", line 256, in unpack_file
#11 27.38 untar_file(filename, location)
#11 27.38 File "/usr/local/lib/python3.6/dist-packages/pip/_internal/utils/unpacking.py", line 226, in untar_file
#11 27.38 with open(path, "wb") as destfp:
#11 27.38 UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 117: ordinal not in range(128)
------
executor failed running [/bin/sh -c /usr/bin/python3 -m pip install pip -U && /usr/bin/python3 -m pip install -r tests/requirements.txt && python3 -m pip install -r requirements.txt && update-alternatives --install /usr/bin/python python /usr/bin/python3 1]: exit code: 2
Any help is appreciated, I have not run into this issue previously, and have built this container plenty of times with a previous version of kubespray.
I don't understand how laziness / eagerness works in Raku. More precisely how to force eagerness.
I get that Infinite List are lazy. What I don't understand is that some List that have an end are lazy, and why the eager method doesn't work in my case.
I have this example
raku -e 'say (1..*).grep({ .is-prime })[^100]'
which works fine when I want to obtain the first 100 elements. But when I want more, say 200, I can't manage to get these 200 elements.
I know I can iterate over them with a for loop. Like this
raku -e 'for (1..*).grep({ .is-prime })[0..200] { .say }'
raku -e '.say for (1..*).grep({ .is-prime })[0..200]'
What I want to do is get the elements with the same functional syntax as above. (the one without the for loop)
I tried those but none works
raku -e 'say (1..*).grep({ .is-prime })[^200].eager'
raku -e 'say (1..*).grep({ .is-prime })[eager ^200]'
raku -e 'say eager (1..*).grep({ .is-prime })[^200]'
raku -e 'say (1..*).grep({ .is-prime })[0..200].eager'
raku -e 'say (1..*).grep({ .is-prime })[eager 0..200]'
raku -e 'say eager (1..*).grep({ .is-prime })[0..200]'
Can someone please tell me how to do it ?
This has nothing todo with grep or eager, but everything to do with the .gist method that creates a string representation of an object, and which is called by say. Since gists are intended for human consumption, they are intentionally not always complete: of Iterables, .gist only shows the first 100 elements:
my #a = ^100;
say #a;
# [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 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]
my #a = ^101;
say #a;
# [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 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 ...]
There are various solutions: you could use put instead of say, which will call the Str method, which generally will show all elements:
my #a = ^101;
put #a;
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 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
Or if you want to get a technically correct representation, you can call the .raku method:
my #a = ^101;
say #a.raku;
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 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]
So, to get back to your examples:
put (1..*).grep({ .is-prime })[^200];
# 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997 1009 1013 1019 1021 1031 1033 1039 1049 1051 1061 1063 1069 1087 1091 1093 1097 1103 1109 1117 1123 1129 1151 1153 1163 1171 1181 1187 1193 1201 1213 1217 1223
say (1..*).grep({ .is-prime })[^200].raku;
# (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223)
Fortunately, there's a shorter way to get the .raku representation: dd
dd (1..*).grep({ .is-prime })[^200];
# (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223)
dd calls .raku on whatever it is given, and also collects some extra debugging information when possible, and prints that on STDERR.
I initially use the git module to download a repo as root user and then need to change the ownership from root to jenkins.
The entire git repo and its contents are owned by root
jenkins#ebdfa64dcac0:/usr/share/kaniko$ ls -tlrh
total 172K
drwxr-xr-x 9 root root 4.0K Apr 25 19:12 vendor
-rwxr-xr-x 1 root root 1.4K Apr 25 19:12 test.sh
drwxr-xr-x 15 root root 4.0K Apr 25 19:12 pkg
drwxr-xr-x 2 root root 4.0K Apr 25 19:12 logo
-rwxr-xr-x 1 root root 1.6K Apr 25 19:12 integration-test.sh
drwxr-xr-x 4 root root 4.0K Apr 25 19:12 hack
drwxr-xr-x 2 root root 4.0K Apr 25 19:12 files
drwxr-xr-x 2 root root 4.0K Apr 25 19:12 examples
drwxr-xr-x 2 root root 4.0K Apr 25 19:12 docs
drwxr-xr-x 2 root root 4.0K Apr 25 19:12 deploy
-rw-r--r-- 1 root root 4.4K Apr 25 19:12 code-of-conduct.md
drwxr-xr-x 4 root root 4.0K Apr 25 19:12 cmd
-rwxr-xr-x 1 root root 757 Apr 25 19:12 benchmark.sh
-rw-r--r-- 1 root root 1.9K Apr 25 19:12 Makefile
-rw-r--r-- 1 root root 107 Apr 25 19:12 MAINTAINERS
-rw-r--r-- 1 root root 12K Apr 25 19:12 LICENSE
-rw-r--r-- 1 root root 4.8K Apr 25 19:12 DEVELOPMENT.md
-rw-r--r-- 1 root root 2.8K Apr 25 19:12 CONTRIBUTING.md
-rw-r--r-- 1 root root 12K Apr 25 19:12 CHANGELOG.md
drwxr-xr-x 2 root root 4.0K Apr 25 19:12 testutil
-rwxr-xr-x 1 root root 1.2K Apr 25 19:12 run_in_docker.sh
drwxr-xr-x 5 root root 4.0K Apr 25 19:12 integration
-rw-r--r-- 1 root root 20K Apr 25 19:12 README.md
-rw-r--r-- 1 root root 1020 Apr 25 19:12 Gopkg.toml
-rw-r--r-- 1 root root 33K Apr 25 19:12 Gopkg.lock
So I want to use ansible to change the ownership of /usr/share/kaniko and its contents to jenkins
So this is what ive done
- name: Fix /usr/share/kaniko permissions.
file:
path: /usr/share/kaniko
owner: jenkins
group: jenkins
recurse: yes
If I omit recurse: yes, the ownership of the folder only changes and not its contents. But when I use recurse: yes, I get :
TASK [kaniko : Fix /usr/share/kaniko permissions.] *****************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: OSError: [Errno 36] File name too long: '/usr/share/kaniko/vendor/github.com/coreos/etcd/cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../raft/raftpb/raft.pb.go'
fatal: [localhost]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n File \"/root/.ansible/tmp/ansible-tmp-1556219696.49-253376871940545/AnsiballZ_file.py\", line 113, in \n _ansiballz_main()\n File \"/root/.ansible/tmp/ansible-tmp-1556219696.49-253376871940545/AnsiballZ_file.py\", line 105, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/root/.ansible/tmp/ansible-tmp-1556219696.49-253376871940545/AnsiballZ_file.py\", line 48, in invoke_module\n imp.load_module('main', mod, module, MOD_DESC)\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 885, in \n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 871, in main\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 593, in ensure_directory\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 310, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/main.py\", line 294, in recursive_set_attributes\n File \"/tmp/ansible_file_payload_DACkt8/ansible_file_payload.zip/ansible/module_utils/basic.py\", line 1541, in set_fs_attributes_if_different\n File \"/tmp/ansible_file_payload_DACkt8/ansible_file_payload.zip/ansible/module_utils/basic.py\", line 1193, in set_owner_if_different\n File \"/tmp/ansible_file_payload_DACkt8/ansible_file_payload.zip/ansible/module_utils/basic.py\", line 1088, in user_and_group\nOSError: [Errno 36] File name too long: '/usr/share/kaniko/vendor/github.com/coreos/etcd/cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/../cmd/
What am I missing here ?
It looks like there is a circular link on your filesystem. By default, Ansible follows all symlinks when you have recurse: true. You probably want to set follow: false:
- name: Fix /usr/share/kaniko permissions.
file:
path: /usr/share/kaniko
owner: jenkins
group: jenkins
recurse: true
follow: false
If you'd like more detail, consider this simple example. Create a directory named topdir, cd into it, and then create a link named topdir to ..:
mkdir topdir
cd topdir
ln -s .. topdir
Now, try this:
cd topdir
Or this:
cd topdir/topdir
Or this:
cd topdir/topdir/topdir/topdir/topdir/topdir/topdir/topdir
That is what Ansible has encountered (and this is why many tools by default do not follow symlinks).
I want to give the Reference popup tool window a wider default width to show more information. I've done this before on another machine but I don't know how. Is it a registry hack?
Thanks in advance because it's very annoying that this toolwindow can't be resized. It obscures certain information which cannot be viewed otherwise.
(Since the other answer doesn't actually describe what to do - I've copied it here in case the external link goes dead).
A process to do this is described in the following article, excerpted here:
(from https://visualstudiomagazine.com/articles/2010/03/02/redesign-ide-dialogs.aspx)
Redesign IDE Dialogs
By Karl E. Peterson 03/02/2010
...Well, there's a tool you can use to do modify these sorts of
settings to your heart's content. Resource Hacker is a freeware
utility to view, modify, rename, add, delete and extract resources in
32-bit Windows executables and resource files.
ResHacker offers a dialog tool that's extremely similar to Classic
VB's -- you just drag the dialog elements around, resizing them to
suit. Or you can edit the raw resource script, and watch the changes
play out in the dialog designer. Simply open the "Dialog" node in the
treeview, find the dialog you want to edit, and go to town. When
you're happy with the new design, press the "Compile Script" button,
then just do a File | Save to write the changes to disk. (Be sure to
make a backup of the original file, first...)
To modify the Classic VB Project-References dialog, open the
VB6IDE.DLL (or VB5IDE.DLL) file in ResHacker, find Dialog #4040 and
get to work.
The article also included two resource scripts - the modified, wider version, and also the original as a reference / backup.
Modified:
4040 DIALOG 0, 0, 455, 305
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "References"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "Tahoma"
{
CONTROL "&Available References:", -1, STATIC, SS_LEFTNOWORDWRAP | WS_CHILD | WS_VISIBLE, 7, 7, 73, 8
CONTROL "", 5050, LISTBOX, LBS_NOTIFY | LBS_MULTIPLESEL | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_GROUP | WS_TABSTOP, 7, 19, 382, 235
CONTROL "OK", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 398, 18, 50, 14
CONTROL "Cancel", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 398, 40, 50, 14
CONTROL "&Browse...", 5051, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 398, 61, 50, 14
CONTROL "&Help", 5052, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 398, 240, 50, 14
CONTROL "Result", 5055, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 8, 260, 442, 37
CONTROL "Location:", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE, 14, 271, 32, 8
CONTROL "", 5053, STATIC, SS_LEFTNOWORDWRAP | SS_NOPREFIX | WS_CHILD | WS_VISIBLE, 52, 271, 390, 8
CONTROL "Language:", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE, 14, 282, 36, 8
CONTROL "", 5054, STATIC, SS_LEFTNOWORDWRAP | SS_NOPREFIX | WS_CHILD | WS_VISIBLE, 52, 282, 390, 8
CONTROL "&U", 4528, BUTTON, BS_OWNERDRAW | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 416, 122, 14, 14
CONTROL "&D", 4529, BUTTON, BS_OWNERDRAW | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 416, 149, 14, 14
CONTROL "Priority", -1, STATIC, SS_LEFTNOWORDWRAP | SS_NOPREFIX | WS_CHILD | WS_VISIBLE, 411, 139, 24, 8
}
Original:
4040 DIALOG 0, 0, 295, 204
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "References"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "Tahoma"
{
CONTROL "&Available References:", -1, STATIC, SS_LEFTNOWORDWRAP | WS_CHILD | WS_VISIBLE, 7, 7, 73, 8
CONTROL "", 5050, LISTBOX, LBS_NOTIFY | LBS_MULTIPLESEL | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_GROUP | WS_TABSTOP, 7, 24, 193, 123
CONTROL "OK", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 238, 6, 50, 14
CONTROL "Cancel", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 238, 23, 50, 14
CONTROL "&Browse...", 5051, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 238, 45, 50, 14
CONTROL "&Help", 5052, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 238, 84, 50, 14
CONTROL "Result", 5055, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 7, 154, 281, 43
CONTROL "Location:", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE, 35, 168, 32, 8
CONTROL "", 5053, STATIC, SS_LEFTNOWORDWRAP | SS_NOPREFIX | WS_CHILD | WS_VISIBLE, 75, 168, 198, 8
CONTROL "Language:", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE, 35, 180, 36, 8
CONTROL "", 5054, STATIC, SS_LEFTNOWORDWRAP | SS_NOPREFIX | WS_CHILD | WS_VISIBLE, 77, 180, 196, 8
CONTROL "&U", 4528, BUTTON, BS_OWNERDRAW | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 211, 62, 14, 14
CONTROL "&D", 4529, BUTTON, BS_OWNERDRAW | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 211, 96, 14, 14
CONTROL "Priority", -1, STATIC, SS_LEFTNOWORDWRAP | SS_NOPREFIX | WS_CHILD | WS_VISIBLE, 206, 82, 24, 8
}
I've just tried this and it worked correctly. (Using VB6 Enterprise Edition + SP6.)
The tool (Resource Hacker) works very well and not only for VB6 ;-).
Thanks Brian !
Question closed.
I am constructing my own color selection dialog, and I have finished laying out all the controls in my dialog template. However, there is one weird thing I'm noticing:
Notice how there's extra vertical space between the H and S edit controls, and the R and G edit controls, than there are between any other two edit controls.
The H, S, and V edits in my resource file are
EDITTEXT rcH, 238, 78, 30, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
EDITTEXT rcS, 238, 92, 30, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
EDITTEXT rcV, 238, 106, 30, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
so I would assume they would tightly hug. Why don't they? Is it a rounding issue with the dialog unit conversion? I tried different font sizes but didn't notice a change.
And in fact, why do the edges of all the edit fields overlap slightly? I would assume two edit controls next to each other wouldn't overlap; if I change the font from Segoe 9 to Segoe 8 the text fields actually flicker when tabbing between them due to the overlap.
This is on Windows 7 x64, which is my minimum requirement. This dialog will most likely be run with the DialogBoxParam() function, but I doubt which function I use would be the issue...? Right now I'm just using DialogBox().
Thanks!
#define rcColorDialog 102
#define rcFontSamplePlacement 1003
#define rcColorSVChooser 1100
#define rcColorHSlider 1101
#define rcPreview 1102
#define rcOpacitySlider 1103
#define rcH 1104
#define rcS 1105
#define rcV 1106
#define rcRDouble 1107
#define rcRInt 1108
#define rcGDouble 1109
#define rcGInt 1110
#define rcBDouble 1111
#define rcBInt 1112
#define rcADouble 1113
#define rcAInt 1114
#define rcHex 1115
#define rcHLabel 1116
#define rcSLabel 1117
#define rcVLabel 1118
#define rcRLabel 1119
#define rcGLabel 1120
#define rcBLabel 1121
#define rcALabel 1122
#define rcHexLabel 1123
rcColorDialog DIALOGEX 13, 54, 344, 209
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_3DLOOK
CAPTION "Color"
FONT 9, "Segoe UI"
BEGIN
// this size should be big enough to get at least 256x256 on font sizes >= 8 pt
CTEXT "AaBbYyZz", rcColorSVChooser, 7, 7, 195, 195, SS_NOPREFIX | SS_BLACKRECT
// width is the suggested slider height since this is vertical
CTEXT "AaBbYyZz", rcColorHSlider, 206, 7, 15, 195, SS_NOPREFIX | SS_BLACKRECT
LTEXT "Preview:", -1, 230, 7, 107, 9, SS_NOPREFIX
CTEXT "AaBbYyZz", rcPreview, 230, 16, 107, 20, SS_NOPREFIX | SS_BLACKRECT
LTEXT "Opacity:", -1, 230, 45, 107, 9, SS_NOPREFIX
CTEXT "AaBbYyZz", rcOpacitySlider, 230, 54, 107, 15, SS_NOPREFIX | SS_BLACKRECT
LTEXT "&H:", rcHLabel, 230, 81, 8, 8
EDITTEXT rcH, 238, 78, 30, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
LTEXT "&S:", rcSLabel, 230, 95, 8, 8
EDITTEXT rcS, 238, 92, 30, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
LTEXT "&V:", rcVLabel, 230, 109, 8, 8
EDITTEXT rcV, 238, 106, 30, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
LTEXT "&R:", rcRLabel, 277, 81, 8, 8
EDITTEXT rcRDouble, 285, 78, 30, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
EDITTEXT rcRInt, 315, 78, 20, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
LTEXT "&G:", rcGLabel, 277, 95, 8, 8
EDITTEXT rcGDouble, 285, 92, 30, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
EDITTEXT rcGInt, 315, 92, 20, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
LTEXT "&B:", rcBLabel, 277, 109, 8, 8
EDITTEXT rcBDouble, 285, 106, 30, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
EDITTEXT rcBInt, 315, 106, 20, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
LTEXT "&A:", rcALabel, 277, 123, 8, 8
EDITTEXT rcADouble, 285, 120, 30, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
EDITTEXT rcAInt, 315, 120, 20, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
LTEXT "He&x:", rcHexLabel, 269, 146, 16, 8
EDITTEXT rcHex, 285, 143, 50, 14, ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, WS_EX_CLIENTEDGE
DEFPUSHBUTTON "OK", IDOK, 243, 188, 45, 14, WS_GROUP
PUSHBUTTON "Cancel", IDCANCEL, 292, 188, 45, 14, WS_GROUP
END