OpenMandrivaSoftware / abf-console-client

https://openmandriva.org
2 stars 6 forks source link

abf put does not work #13

Closed mikhailnov closed 4 years ago

mikhailnov commented 4 years ago

В спеке: Source0: https://github.com/carlobaldassi/liblqr/archive/v%{version}.tar.gz?/liblqr-%{version}.tar.gz делаю abf put клиентом из ОМА (rpm4), пишет: File liblqr-0.4.2.tar.gz not found or empty, URL will be used instead. Skipping. через rosa2016.1 работает Что он хочет?

mikhailnov commented 4 years ago

spectool скачивает нормально.

fedya commented 4 years ago

Это разные программы. abf put берет файл liblqr-%{version}.tar.gz лежащий в директории проекта и отправляет его на файлс-тор.

File liblqr-0.4.2.tar.gz not found or empty, URL will be used instead. Skipping.

Вот это означает, что нужного файла в директории текущей не существует. Вот собственно сама проверка. Файла нет, заливать нечего, появляется сообщение. https://github.com/OpenMandrivaSoftware/abf-console-client/blob/master/abf/console/misc.py#L548

spectool эта штуковина для того чтобы скачать файлы не с АБФ, а из Source

mikhailnov commented 4 years ago

Я на rosa2016.1 всегда делал так: менял цифры в спеке, делал abf put (при этом файла не лежало в папке), он сам все скачивал и закачивал на файлостор, без лишних телодвижений

mikhailnov commented 4 years ago

Можно такое вернуть/сделать?

fedya commented 4 years ago

попробуй такое сначала echo '%_disable_source_fetch 0' >>~/.rpmmacros

dsilakov commented 4 years ago

А это не вызвано тем, что в rosa2016.1 rpmbuild умеет сам скачать из инета исходники? В текущем rpm4 этого нет.

fedya commented 4 years ago

А это не вызвано тем, что в rosa2016.1 rpmbuild умеет сам скачать из инета исходники? В текущем rpm4 этого нет.

Скорее всего это так и есть, за скачивание исходников из сети отвечает %_disable_source_fetch 0'

itchka commented 4 years ago

abf-put Broken rubygem-glib2]$ abf put -v Initializing models for https://abf.openmandriva.org 2020-02-14 02:24:50,598 DEBUG in abf:put:805: PUT started 2020-02-14 02:24:50,598 DEBUG in abf:_update_location:1546: Updating project location for /home/colin/Development/rubygem-gtk2/rubygem-glib2 2020-02-14 02:24:50,599 DEBUG in misc.py:execute_command:367: Executing command: ['git', 'remote', 'show', 'origin', '-n'] 2020-02-14 02:24:50,605 DEBUG in misc.py:execute_command:408: Child returncode was: 0 2020-02-14 02:24:50,605 DEBUG in misc.py:upload_files:497: Uploading files for directory /home/colin/Development/rubygem-gtk2/rubygem-glib2 2020-02-14 02:24:50,618 DEBUG in misc.py:is_text_file:462: Magic type of file glib2-3.4.1.gem is application/x-tar; charset=binary 2020-02-14 02:24:50,618 DEBUG in jsn.py:upload_file:256: Looking for "glib2-3.4.1.gem" in file-store... 2020-02-14 02:24:50,618 DEBUG in jsn.py:upload_file:258: File hash is 48f8b780bb83b72762e9d762d916e3ccbb63c787 2020-02-14 02:24:50,618 DEBUG in jsn.py:get_url_contents:145: Fetching url https://file-store.openmandriva.org/api/v1/file_stores.json?hash=48f8b780bb83b72762e9d762d916e3ccbb63c787 2020-02-14 02:24:50,619 DEBUG in jsn.py:get_url_contents:165: It was cached! ETag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" 2020-02-14 02:24:50,966 DEBUG in jsn.py:get_url_contents:177: Getting cached result (cache was validated) 2020-02-14 02:24:50,979 INFO in jsn.py:upload_file:281: Uploading glib2-3.4.1.gem (145.0K) Traceback (most recent call last): File "/usr/bin/abf", line 1772, in command_line.func() File "/usr/bin/abf", line 820, in put error_count = upload_files(models, min_size, remove_files=not command_line.do_not_remove_files, path=path, upload_all=command_line.upload_all) File "/usr/lib/python3.8/site-packages/abf/console/misc.py", line 574, in upload_files sha_hash = models.jsn.upload_file(source) File "/usr/lib/python3.8/site-packages/abf/api/jsn.py", line 285, in upload_file conn.request('POST', '/api/v1/upload', body, headers) File "/usr/lib64/python3.8/http/client.py", line 1230, in request self._send_request(method, url, body, headers, encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1276, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1225, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1004, in _send_output self.send(msg) File "/usr/lib64/python3.8/http/client.py", line 944, in send self.connect() File "/usr/lib64/python3.8/http/client.py", line 915, in connect self.sock = self._create_connection( File "/usr/lib64/python3.8/socket.py", line 787, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): File "/usr/lib64/python3.8/socket.py", line 918, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno -2] Name or service not known

fedya commented 4 years ago

Itchka it's different issues your is fixed, @mikhailnov issue related to RPMv4 behaviour.

mikhailnov commented 4 years ago

12.02.2020 16:46, Alexander Stefanov пишет:

попробуй такое сначала echo '%_disable_source_fetch 0' >>~/.rpmmacros

Не помогает.

mikhailnov commented 4 years ago

С %_disable_source_fetch 0 по abf rpmbuild тарболл стал скачиваться, но abf put не работает.

fedya commented 4 years ago

abf put всё-таки работает как задумано. Здесь в коде нет ничего что бы скачивало исходник из SourceХ https://github.com/OpenMandrivaSoftware/abf-console-client/blob/master/abf/console/misc.py#L496 как нет и вызова rpm Попробуй стрейсом выловить кто именно скачивает source при abf put в дистре с rpm5

mikhailnov commented 4 years ago
180   stat("asciidoc-py3-986f99d.tar.gz", 0x7ffccbc58590) = -1 ENOENT (Нет такого файла или каталога)
180   stat("/home/user/rpmbuild/SOURCES/asciidoc-py3-986f99d.tar.gz", {st_mode=S_IFREG|0644, st_size=576929, ...}) = 0
180   stat("/home/user/rpmbuild/SOURCES/asciidoc-py3-986f99d.tar.gz", {st_mode=S_IFREG|0644, st_size=576929, ...}) = 0
180   stat("/home/user/rpmbuild/SOURCES/asciidoc-py3-986f99d.tar.gz", {st_mode=S_IFREG|0644, st_size=576929, ...}) = 0
180   stat("/home/user/.magic.mgc", 0x7ffccbc57f60) = -1 ENOENT (Нет такого файла или каталога)
180   stat("/home/user/.magic", 0x7ffccbc57f60) = -1 ENOENT (Нет такого файла или каталога)
180   access("/usr/share/misc/magic.mime.mgc", R_OK) = -1 ENOENT (Нет такого файла или каталога)
180   open("/usr/share/misc/magic.mgc", O_RDONLY) = 3
180   fstat(3, {st_mode=S_IFREG|0644, st_size=4936744, ...}) = 0
180   mmap(NULL, 4936744, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0x7fb9474d9000
180   close(3)                          = 0
180   mprotect(0x7fb9474d9000, 4936744, PROT_READ) = 0
180   lstat("/home/user/rpmbuild/SOURCES/asciidoc-py3-986f99d.tar.gz", {st_mode=S_IFREG|0644, st_size=576929, ...}) = 0
180   stat("/home/user/rpmbuild/SOURCES/asciidoc-py3-986f99d.tar.gz", {st_mode=S_IFREG|0644, st_size=576929, ...}) = 0
180   open("/home/user/rpmbuild/SOURCES/asciidoc-py3-986f99d.tar.gz", O_RDONLY) = 3
180   fcntl(3, F_GETFL)                 = 0x8000 (flags O_RDONLY|O_LARGEFILE)
180   fcntl(3, F_SETFL, O_RDONLY|O_LARGEFILE) = 0
180   read(3, "\37\213\10\0\0\0\0\0\0\3\354[ko\333H\226\355\317\372\25\0054\260\2643\221\314\247(\32\223"..., 1048576) = 576929
180   close(3)                          = 0
180   open("/home/user/rpmbuild/SOURCES/asciidoc-py3-986f99d.tar.gz", O_RDONLY) = 3
180   fstat(3, {st_mode=S_IFREG|0644, st_size=576929, ...}) = 0
180   fstat(3, {st_mode=S_IFREG|0644, st_size=576929, ...}) = 0
180   read(3, "\37\213\10\0\0\0\0\0\0\3\354[ko\333H\226\355\317\372\25\0054\260\2643\221\314\247(\32\223"..., 1048576) = 576929
180   read(3, "", 471040)               = 0
180   read(3, "", 1048576)              = 0
180   close(3)                          = 0
180   open("/tmp/abf_cache/etags/7/75/751ebf2d42780d2581ffd420d6a310f866cdcc67.lock", O_RDONLY|O_CREAT, 0777) = 3
180   flock(3, LOCK_SH)                 = 0
180   access("/tmp/abf_cache/etags/container_file/7/75/751ebf2d42780d2581ffd420d6a310f866cdcc67.cache", F_OK) = 0
180   open("/tmp/abf_cache/etags/container_file/7/75/751ebf2d42780d2581ffd420d6a310f866cdcc67.cache", O_RDONLY) = 4
180   fstat(4, {st_mode=S_IFREG|0644, st_size=188, ...}) = 0
180   fstat(4, {st_mode=S_IFREG|0644, st_size=188, ...}) = 0
180   read(4, "(dp1\nS'http://file-store.rosalin"..., 4096) = 188
180   close(4)                          = 0
180   flock(3, LOCK_UN)                 = 0
180   close(3)                          = 0
180   open("/tmp/abf_cache/etags/7/75/751ebf2d42780d2581ffd420d6a310f866cdcc67.lock", O_RDONLY|O_CREAT, 0777) = 3
180   flock(3, LOCK_SH)                 = 0
180   access("/tmp/abf_cache/etags/container_file/7/75/751ebf2d42780d2581ffd420d6a310f866cdcc67.cache", F_OK) = 0
180   open("/tmp/abf_cache/etags/container_file/7/75/751ebf2d42780d2581ffd420d6a310f866cdcc67.cache", O_RDONLY) = 4
180   fstat(4, {st_mode=S_IFREG|0644, st_size=188, ...}) = 0
180   fstat(4, {st_mode=S_IFREG|0644, st_size=188, ...}) = 0
180   read(4, "(dp1\nS'http://file-store.rosalin"..., 4096) = 188
180   close(4)                          = 0
180   flock(3, LOCK_UN)                 = 0
180   close(3)                          = 0
180   open("/tmp/abf_cache/etag_data/6/60/60b2b47d44f655217211982812790417f31ae2a9.lock", O_RDONLY|O_CREAT, 0777) = 3
180   flock(3, LOCK_SH)                 = 0
180   access("/tmp/abf_cache/etag_data/container_file/6/60/60b2b47d44f655217211982812790417f31ae2a9.cache", F_OK) = 0
180   open("/tmp/abf_cache/etag_data/container_file/6/60/60b2b47d44f655217211982812790417f31ae2a9.cache", O_RDONLY) = 4
180   fstat(4, {st_mode=S_IFREG|0644, st_size=90, ...}) = 0
180   fstat(4, {st_mode=S_IFREG|0644, st_size=90, ...}) = 0
180   read(4, "(dp1\nS'W/\"4f53cda18c2baa0c0354bb"..., 4096) = 90
180   close(4)                          = 0
180   flock(3, LOCK_UN)                 = 0
180   close(3)                          = 0

PID 180 был у основного процесса abf.

mikhailnov commented 4 years ago

Это, похоже, https://github.com/OpenMandrivaSoftware/abf-console-client/blob/master/abf/api/jsn.py#L135 , не то

mikhailnov commented 4 years ago

Вот скачивание:

212   execve("/usr/bin/wget", ["wget", "https://github.com/asciidoc/asci"..., "-O", "/home/user/rpmbuild/SOURCES/asci"...], 0x267a4d0 /* 22 vars */) = 0

pstree показал так: bash(1)---sudo(614)---abf(615)---sh(642)---sh(646)---wget(647)-+-grep(649) Один sh здесь лишний, потому что я сделал:

mv -v /usr/bin/wget /usr/bin/wget.bin
nano /usr/bin/wget
chmod +x /usr/bin/wget
$ cat /usr/bin/wget
#!/bin/sh
pstree -hp | grep wget >> /tmp/log
/usr/bin/wget.bin "$@"

т.е. rpm нет в цепочке вызова wget

fedya commented 4 years ago

Ну в abf-c-c wget совершенно точно нигде не вызывается есть вот такое https://github.com/OpenMandrivaSoftware/abf-console-client/blob/master/abf.py#L856 но это легайси и никогда не использовалось, можно спокойно выкинуть.

mikhailnov commented 4 years ago

В rpm5 есть такое:

macros/mandriva.in:35:%__urlgetfile(url, dest) (test -f `basename %1` && cp `basename %1` %2) || (wget %1 -O %2 || (rm -f %2 && exit 1))

rosa-2016 asciidoc (rosa2019.1) # rpm -E %__urlgetfile
(test -f `basename %1` && cp `basename %1` %2) || (wget %1 -O %2 || (rm -f %2 && exit 1))

Как раз форк шелла, о чем в выводе pstree выше есть.

Но я написал %__urlgetfile %nil в /etc/rpm/macros, а abf put все равно сработал.

mikhailnov commented 4 years ago

Да, это скачивает rpm5:

Breakpoint 1, urlGetFile (url=0x2441b40 "https://github.com/asciidoc/asciidoc-py3/archive/986f99d743d0b6ddc2014bdc8dcfa991ab9b4863/asciidoc-py3-986f99d.tar.gz", dest=dest@entry=0xc40650 "/home/user/rpmbuild/SOURCES/asciidoc-py3-986f99d.tar.gz") at url.c:621
621     cmd = rpmExpand("%{?__urlgetfile:%{__urlgetfile ", url, " ", dest, "}}", NULL);
(gdb) 

Вот здесь брейк сработал: https://abf.io/soft/rpm5/blob/master/rpmio/url.c#lc-621

В таком случае очень жаль терять такой удобный функционал при переходе на rpm4.