Compare commits

...

239 Commits

Author SHA1 Message Date
d0b8d56db4 Release 1.3.3 2023-10-09 19:56:57 +02:00
0bc98d2bf8 autodist-inpsect: new tool added 2023-10-09 19:56:45 +02:00
10e566b640 update-specfile: sync with current build server changes 2023-10-09 19:54:26 +02:00
8b6c1367f0 Release 1.3.2 2023-09-19 15:42:55 +02:00
8be0311320 Makefile: install forgotten autodist-launcher 2023-09-19 15:42:37 +02:00
aecf691938 autoport: rebuild dependant mode: do not add empty epoch value if empty 2023-08-20 13:13:55 +02:00
fcc2302ac9 Release 1.3.1 2023-08-17 11:33:36 +02:00
096b6d6f69 autoport: fetch repfiles for all archs but only if local files are older than 60 minutes 2023-08-17 11:30:12 +02:00
0d5bc034b1 Release 1.3 2023-08-16 18:41:00 +02:00
92246206dc Update repository from devel to base and other changes for devel to rolling distribution 2023-08-16 18:38:48 +02:00
519f8d5656 Release 1.2 2023-08-11 10:55:44 +02:00
cafae574a8 40-autodist-cleanold: minor fix for chroot environments 2023-08-11 10:49:49 +02:00
88643910fb autoport: update with current production changes 2023-08-11 10:35:50 +02:00
ceea7ef522 autodist-repository: change default destination repository from devel to base 2023-08-11 10:32:33 +02:00
d85e5aae68 telegram/openmamba_bot.py: update repositories list 2022-10-08 13:01:52 +02:00
e4fcd8d6cf openmambabot: update service and add requirements to run in virtualenv (/var/autodist/env) 2022-10-02 14:56:26 +02:00
ac040bff56 Release 1.1 2022-10-02 13:15:47 +02:00
af92aad66e 65-autoport: minor changes 2022-10-02 13:05:28 +02:00
702d3cfe09 autodist-launcher: move code in 60-autodist-update to /usr/bin script 2022-10-02 13:02:40 +02:00
8794727a6a 40-autodist-cleanold: sync with current build server 2022-10-02 12:57:49 +02:00
78c85dcc7d etc/autodist/blacklist: update to current production build server 2022-10-02 12:53:11 +02:00
6b784c66d3 update-specfile: update to current production 2022-10-02 12:51:43 +02:00
4902ab352f autodist, autoport: update to current production code 2022-10-02 12:47:45 +02:00
193a41413a repology-openmamba.py: update to current production code 2022-10-02 12:43:26 +02:00
e9c5cbbdbf Makefile: update systemd unitdir path 2022-10-02 12:41:04 +02:00
3013fcd2d1 autoport: fix check for -devel suffix in rebuild dependant mode 2022-06-25 14:28:23 +02:00
5bbf2f8715 webbuild-cgi: check for zero length cache files (disk full); add -b descriptive argument to patches 2022-06-11 11:03:08 +02:00
5c9a10871d autoport: added epoch support for added BuildRequirements in rebuild mode 2022-06-08 15:40:24 +02:00
de810c1bd7 automaint: update to current build server usage 2022-01-25 14:28:23 +01:00
f32788002f telegram/openmamba_bot: added support for arch aarch64 2022-01-25 14:27:38 +01:00
a7cbefbe18 autoport-launcher, 65-autoport: new launcher and single cron script to improve background processes launch with systemd 2021-12-19 15:00:23 +01:00
f852838441 automaint: update with changes from current operating version 2021-09-04 14:56:26 +02:00
33c3a3ca36 webbuild/webbuild-functions: pipe iconv to build outputs to fix invalid UTF-8 characters 2021-06-05 10:57:06 +02:00
70def57d53 Merge branch 'master' of ssh://gitlab.mambasoft.it:4424/openmamba/autodist 2021-05-15 13:42:29 +02:00
b451ee800b repology-openmamba.py: support for ignore json list; autodist-upstream-updates: replace usage of obsolete tempfile with mktemp 2021-05-15 13:41:26 +02:00
f97c3c4598 webbuild-cgi: add free space information from any chroot environment 2021-05-08 22:42:42 +02:00
acd4178c8b webbuild-cgi: filter out invalid characters from some responses 2021-05-08 22:40:25 +02:00
b6d3b83d1e autodist-upstream-updates: add support to fetch updates from repology API (repology.org) 2021-03-14 11:55:11 +01:00
9d003905df autodist, webbuild-cgi: add -b to autospec command to update build requrements in specfiles; other fixes to webbuild-cgi 2021-03-14 11:51:42 +01:00
27d32d110e autoport: add safety check that .spec version matches srcpkglist to fix packages sent in wrong repositories when the latter file is not up to date 2021-02-20 17:28:14 +01:00
7dcd16b2ca autoport: use all archs as base arch to find packages to port 2020-12-16 20:40:35 +01:00
dab56b358f webbuild-cgi: fix for lost messages in social log 2020-12-16 20:39:46 +01:00
51a0c3a449 More aarch64 support 2020-11-26 19:09:06 +01:00
b95cb79e69 aarch64 support 2020-11-25 19:18:24 +01:00
d4241631f2 autoport: fix after uname change: use uname -m instead of uname -i 2020-11-25 19:18:02 +01:00
8fda5d4d82 telegram: update to Telegram Bot api v.13.0 2020-11-19 14:43:39 +01:00
a69962724a telegram: switch to python3 2020-11-19 12:34:53 +01:00
64394b8110 Release 1.0.3 2020-09-27 18:02:04 +02:00
9ad95404ec Other old fixes on server applied 2020-09-27 15:59:08 +02:00
ac8340c0d6 Switch from using smart to dnf and integrate other old changes 2020-09-27 15:56:38 +02:00
f23570f228 Release 1.2 (formerly released) 2020-09-27 15:49:51 +02:00
79af8764e1 webbuild-cgi: css fixes 2019-07-30 19:39:22 +02:00
94f1ffcf9a webbuild: more css support for output boxes 2019-07-28 21:57:52 +02:00
1c15fcfb25 webbuild: fixes for sociallog from webbuild.db 2019-07-28 20:40:09 +02:00
5a0fa63a96 webbuild-sudo: switch to using rpmspec from rpm4 instead of rpm --specedit 2019-07-21 11:37:20 +02:00
bbcfce5260 Release 1.0.1 2019-07-15 17:54:01 +02:00
db0354041e webbuild: minor updates synced from running build server 2019-07-15 17:42:52 +02:00
c7d8a76d80 autodist: minor updates synced from running server installation 2019-07-15 17:39:27 +02:00
058a0baa7e Added openmamba bot for telegram 2017-12-30 23:14:48 +01:00
38c75eea33 autoport-fix-environment: fix a syntax error in sed 2017-07-04 19:04:08 +02:00
4cee459385 Release 1.0.0 2017-06-19 15:18:07 +02:00
f47b80b1cc autodist-update: disable icecc to workaround some problems 2017-06-19 14:49:40 +02:00
092e90e004 autoport-native: only upgrade native packages on first loop cycle 2017-06-19 14:49:12 +02:00
e53a62198a automaint: minor fixes 2017-06-19 14:48:35 +02:00
68bacbc599 autodist-upstream-updates: added support for blacklisting 2017-06-19 14:48:01 +02:00
681b2e5ec7 autodist: added --rebuild-srpms 2017-06-19 14:47:30 +02:00
a6d6fd03e4 webbuild: login fix for problem when password is changed on main site 2017-06-19 14:39:08 +02:00
c3cbf7c0e8 webbuild: switch social_log to sqlite3 db; display status also when there are no processes to display 2016-10-30 13:41:46 +01:00
ced497545e webbuild: support for different archs in downloads and some fixes 2016-10-17 12:57:27 +02:00
ee1a94af6f webbuild-functions: some optimizations of sed parsing functions 2016-07-04 21:39:40 +02:00
2c09744bbd Webbuild: support for running a console command from web interface input 2016-05-29 00:23:38 +02:00
7d21e2fa60 webbuild-cgi: red color for Updating indicator in jobs panel 2016-05-04 15:51:41 +02:00
7e78d60c90 webbuild-cgi: fix for files upload and minor cosmetic changes to rebuild deps function 2016-03-11 14:46:59 +01:00
537b80a4c4 update-specfile: remove Requires: kde-workspace from many kde4->kde5 packages and fix kde download url 2016-02-21 14:41:58 +01:00
db8fa88b9b autoport: apply strict repository check at first step only
This means check is applied to command-line passed packages only
2016-02-19 12:06:41 +01:00
f93a093134 40-autodist-cleanold: refresh with currently in use modifications 2016-02-16 13:45:18 +01:00
a49c4ec447 autodist: add --repository-string to limit autoport of pacakges from specified repository
autoport: update accordingly
2016-02-15 08:07:58 +01:00
1c8a7cbbdf webbuild-cgi: add icon button to refresh spec list 2016-01-10 17:10:57 +01:00
73f032afda webbuild-cgi: use https for gravatar 2015-12-08 14:59:48 +01:00
8b9ee4a7b2 webbuild-cgi: alway exit early on refreshsocial request 2015-09-19 23:15:48 +02:00
c3c5a9009e webbuild: fully div based layout and responsive support 2015-08-23 15:59:13 +02:00
4fba9537b5 webbuild: split css adding webbuild-standalone.css and webbuild-post.css 2015-08-22 18:44:38 +02:00
a191ef0eb3 webbuild: fixes to matching autodist jobs with package name and other small fixes 2015-08-22 17:58:14 +02:00
5f2e54f58a webbuild-cgi: small refining of rpmbuild processes detection 2015-05-16 14:28:02 +02:00
90a0d85269 webbuild-cgi: display live server stats in first line of jobs window 2015-05-14 17:13:34 +02:00
6e6d92d5a2 webbuild: redesign of operation panel in maintainance mode 2015-05-07 00:14:06 +02:00
8f2eb49563 webbuild.css: float maintainer panel to the left 2015-05-04 20:46:37 +02:00
4ee59fdbd2 Sync with current server files before releasing 2015-04-18 16:33:42 +02:00
d1493a2edf webbuild: create uploads directory 2015-04-18 15:56:38 +02:00
c6db4b05c9 autodist-cgi: fix showing last log file 2015-04-14 22:08:31 +02:00
3f8d3fb9b2 webbuild: change error background color from red to darkred 2015-04-13 23:16:34 +02:00
77ecc7566d webbuild: implement a var2html function to filter for security variable to html
Currently used in chat messages
2015-04-04 18:49:49 +02:00
aca1323856 webbuild-cgi: fixes for rpm manager install/upgrade from repositories 2015-01-30 11:11:23 +01:00
a6b14a1aa9 autoport: port packages also in milestone rebuild mode and display fetched files in verbose mode (-v) 2015-01-04 10:58:10 +01:00
2e6f2dd33e autoport: don't increment first release number in REBUILD_MILESTONE mode 2014-12-31 14:52:23 +01:00
fe8a60addd Release 0.9.22 2014-12-04 14:42:44 +01:00
ef649ef1c4 webbuild-cgi: some more milestone3 support 2014-12-04 14:41:33 +01:00
a044057f9f webbuild-cgi: fix for distroquery usage while searching for already existing package 2014-11-24 12:48:02 +01:00
8623f8bfd8 autodist-cgi: small changes after wordpress integration 2014-11-23 22:18:37 +01:00
f47f80416d Release 0.9.21 2014-11-22 23:00:08 +01:00
177629094c webbuild: other layout changes 2014-11-22 22:57:12 +01:00
f5a01c61a6 webbuild: move most rpm buttons below the editor plus some other layout adjustements 2014-11-22 19:51:49 +01:00
f492d02d7d webbuild: reallow html tags in processtail to display colors, only filter <[/]pre> tags for now 2014-11-22 12:35:08 +01:00
367e2f7dee webbuild-cgi: fix support for multiple words queries 2014-11-16 16:08:06 +01:00
144f1b0eb6 Release 0.9.20
Added forgotten autodist-tmpfilesd new file
2014-11-13 14:58:59 +01:00
faa153d41e Move pid directory to /run/autodist providing systemd tmpfiles.d configuration 2014-11-13 14:57:50 +01:00
d435051d50 webbuild-cgi: fixes to existing package check through distroquery 2014-11-13 14:30:28 +01:00
9afdb96444 40-autodist-cleanold cron: minor adjustments 2014-11-13 14:29:50 +01:00
eaf4e0220c cgi_getvars(): fix warning when empty key is received 2014-11-13 14:28:19 +01:00
3b032d1d8c webbuild: use distroquery to check and warn about already extisting package when creating a new package 2014-10-31 22:27:05 +01:00
6032d80cdb webbuild: fix autodist prepare and update; run ldconfig in build requirements; support version in autodist update 2014-10-29 22:36:58 +01:00
66ce879682 webbuild.html, autobuilds.html: restrict xmlhttp to fix too many sockets pending in chromium bug 2014-10-12 23:18:14 +02:00
3b15ee14b7 40-autodist-cleanold: improvements in daily file cleaning cron file 2014-10-09 16:14:39 +02:00
949a4c35df webbuild-cgi: support target arch in rpm prepare 2014-10-05 19:27:35 +02:00
d77d29fd37 webbuild: support adding BASE_URL to search result links 2014-10-05 19:26:55 +02:00
4d8a804eee webbuild-cgi: add remote fetch for maintainer recent packages and distromatic log plus add caching support 2014-09-28 12:34:41 +02:00
60f8e3cff0 webbuild: increase logs size before cutting; cache environment info, update every 5 minutes 2014-09-21 02:34:47 +02:00
73791f2c58 Release 0.9.19 2014-09-05 22:39:23 +02:00
8aaf239342 webbuild-cgi: honour selected target arch when sending package 2014-09-05 22:36:46 +02:00
9ab37c25c2 autodist-upstream-updates: only accept even numbers (also 1.x and 2.x) as stable from Gnome upstream list 2014-09-05 19:10:42 +02:00
491357aebb autodist-repository: new "install" option to install packages with rpm directly from local repositories 2014-09-05 19:08:34 +02:00
bf3085f435 autodist-cgi: check if host is up before fetching cgi data from secondary sites 2014-08-23 13:30:45 +02:00
f6543e78fa Release 0.9.18 2014-08-21 13:26:47 +02:00
ea098185e1 autoport: check if source is present in target arch, not source, before rebuilding 2014-08-21 13:13:36 +02:00
52f9b3e9e0 autodist-upstream-updates: try to detect and remove unstable releases in parse_gnome() 2014-07-27 13:49:10 +02:00
55224a3ecb webbuild-cgi: other adjustements using binary calls to webbuild-sudo 2014-07-10 13:31:20 +02:00
bbcc9460b4 webbuild-cgi: need to pass binary to some SUDO_WRAPPER calls after previous change 2014-07-08 18:55:58 +02:00
8e4e790104 webbuild-sudo: pipe send output to parse_generic_output 2014-07-08 17:56:49 +02:00
487dbb2824 autodist: maybe fix for packages being sent to wrong repositories 2014-07-08 02:08:53 +02:00
f05b31368f webbuild: add support for mass rebuild of dependant packages 2014-07-06 23:23:55 +02:00
fa602e75e0 autoport: add -ud option to rebuild dependant packages of given package(s) using new distromatic pkg_needrebuild info 2014-07-06 22:18:49 +02:00
45b347da76 webbuild: add mass rebuilt build requirement update box; redesign and move chat box 2014-07-05 23:54:48 +02:00
5927784c85 Release 0.9.16 2014-07-05 23:53:15 +02:00
59a1ad0317 autodist,autoport: allow to pass arguments to update-specfile script
update-specfile: accept --buildreq multiple arguments to edit build requirements with version
2014-07-05 17:50:53 +02:00
3e0f261856 webbuild: add apache configuration file with 'Timeout 600'; not installed for now 2014-06-28 18:51:12 +02:00
85e7950c4e webbuild-functions: silence a warning which should be harmful and can't fix on client side 2014-06-28 18:50:15 +02:00
58d61d51e3 Release 0.9.15 2014-06-24 11:38:48 +02:00
b59c024914 webbuild: show build host on title and in environment panel 2014-06-18 13:15:44 +02:00
82c5f79f27 webbuild: allow modified autodist ports is AUTOPORT_PORT_REPOSITORY is set 2014-06-18 13:09:29 +02:00
5241fa7e82 webbuild-cgi: need to call specinfo in speccreate to set $SPECVAR_WORKINGHOME variable 2014-06-14 16:01:54 +02:00
a89e2b9a13 autodist: fix manual version update and autoupdate script management 2014-06-13 14:35:54 +02:00
f72d0b3663 Release 0.9.14 2014-06-13 12:53:58 +02:00
56f41ede80 autodist-tool: use autodist --list-jobs instead of directly reading DISTDB 2014-06-13 12:47:16 +02:00
a59ea180af 66-autoport-chroot: fix trivial mistake in previous change 2014-06-11 00:31:45 +02:00
e3e4104f4e autodist: add support for running <pkgname>-autoupdate script in /SOURCES after version update if found 2014-06-10 14:21:02 +02:00
4f12cc4969 Release 0.9.13 2014-06-10 14:15:13 +02:00
1da0a6d971 40-autodist-upstream-updates daily cron: don't run if AUTOPORT_UPDATE_NO_DISTROMATIC is set 2014-06-10 01:52:14 +02:00
a66a8f8029 66-autoport-chroot: fix finding log path for autodist user special case 2014-06-10 01:44:26 +02:00
2dd4d2632d webbuild-cgi: fix rpmbuild -bs and other rpmbuild calls by passing correct %_topdir according to environment 2014-06-10 00:19:26 +02:00
6dd2bb37bc Release 0.9.12 2014-06-10 00:18:03 +02:00
79c00b9f50 66-autoport-chroot: fix chroot command to start/stop icecream 2014-06-07 19:30:39 +02:00
f4dbf4b5c2 autodist-repository, webbuild-cgi: use 'ls --color=none' to access local repository to speed up when using NFS 2014-06-07 19:20:56 +02:00
13e52f18d5 60-autodist-update cron: add AUTOPORT_UPDATE_NO_AUTOMAINT and AUTOPORT_UPDATE_NO_DISTROMATIC configuration settings
These variables are set to 1 by default
2014-06-07 19:13:48 +02:00
1979751f33 autodist-repository: make sure to return 0 if import_package() succeeds 2014-06-05 10:51:55 +02:00
ed2de4963a autodist-repository: set return code as the number of import or release errors 2014-06-05 10:36:47 +02:00
ae9e5c3be5 autodist: return error code when package to be imported does not exist any longer 2014-06-05 10:24:49 +02:00
457d02194c Release 0.9.11 2014-06-05 10:09:03 +02:00
7107f7884f autodist: don't raise error for missing $SYSCONFDIR/distdb*
First use repository distdb* if available or load $SYSCONFDIR/distdb*
Use $SYSCONFDIR/distdb.d/*.db for adding local custom definitions.
2014-06-04 22:39:38 +02:00
159432b669 Remove configuration files that have been moved to repository in a previous commit 2014-06-04 18:13:33 +02:00
c73ba35d74 autodist-upstream-updates: fix exiting with an error message if srcpkglist is bad 2014-06-04 18:03:36 +02:00
2d950512e4 autoport: add AUTOPORT_UNSTAGE_ARCHS to globally define unstaged archs (current default: i586) 2014-06-04 15:37:41 +02:00
30e8c88970 webbuild.html: don't set expire date for cookies 2014-05-31 15:30:20 +02:00
eff79c5bf8 autodist, autoport: support for distdb.*, legacy.*, unstage.* from repository 2014-05-31 14:43:42 +02:00
e6ee8dbd5b autodist-repository: direct error and warning message to stderr 2014-05-29 15:35:40 +02:00
9643cf4103 webbuild.html, autobuilds.html: added favicon 2014-05-29 14:35:20 +02:00
bb64fe0188 Release 0.9.10 2014-05-29 14:13:08 +02:00
1617e30950 Add .bashrc and .bash_profile to autodist home 2014-05-28 14:07:37 +02:00
f0eaac941b autodist-repository: allow reading secret settings from file config-secret if it is readable 2014-05-28 10:49:15 +02:00
c0b7304aa4 autodist: make --list-jobs and --list-pkgs faster by running before reading unneeded package status from repository 2014-05-27 21:58:37 +02:00
7a268ce0c8 /etc/sysconfig/autoport: add ICECREAM_MONITOR_HOST to configuration template 2014-05-27 19:26:15 +02:00
49a1ed773b webbuild: add logrotate file 2014-05-27 19:11:16 +02:00
99ab1fe252 autodist-repository: manage merging of packages without relying on base arch (i586) 2014-05-27 13:13:47 +02:00
112abc68c6 webbuild: fix for forwarding requests 2014-05-27 01:40:53 +02:00
f2bb820de8 webbuild: check if WEBBUILD_URL is localhost to avoid recursive request to itself 2014-05-27 00:05:15 +02:00
0f96bedecd automaint: fixes to support any architecture build instead of base arch (i586) 2014-05-25 16:18:35 +02:00
70548ea687 automaint: support importing from any architecture, not just base arch (i586) 2014-05-24 20:17:44 +02:00
67497d1d4f Release 0.9.9 2014-05-24 18:29:08 +02:00
50d38312db webbuild.html: restore setting cookies 2014-05-24 17:26:59 +02:00
82ab9d49c9 65-autoport-native cron: fix detecting home dir for log 2014-05-24 16:43:32 +02:00
24f57a4cd4 unstage.x86_64: update 2014-05-24 16:36:05 +02:00
0c9f7b442e autodist cgi: support for REP variable to fix multiple log windows showing bug 2014-05-24 16:35:05 +02:00
03d939419c Add local autobuild interface autobuilds.html and other fixes 2014-05-24 16:05:40 +02:00
ea9bd6e623 Default config update for latest changes 2014-05-23 21:28:22 +02:00
6fc6b0bda6 Added autodist-repository tool, further fixes to support a central sociallog and more fixes 2014-05-23 21:17:27 +02:00
2979f8d61b Release 0.9.8 2014-05-23 21:07:05 +02:00
25b48ad735 Latest fix to make webbuild work on new installation 2014-05-22 19:10:42 +02:00
5df925c70b Sync to current status before releasing 2014-05-22 18:20:42 +02:00
34796d0b38 Updates to distd.i586 and legacy autodist files 2014-04-25 12:16:17 +02:00
9076297743 autodist/autoport: minor fixes 2014-04-25 12:12:07 +02:00
49f415f364 webbuild: sync recent minor fixes 2014-04-25 12:10:30 +02:00
bdc9145d01 webbuild.js: detect package as Python if name starting with 'py' 2014-02-01 15:12:03 +01:00
49bda1c6c3 webbuild: change matrix to single column and vertical scrolling 2014-02-01 15:10:56 +01:00
82337b4343 webbuild-functions-private: use stdbuf to prevent buffering in processtail 2014-02-01 15:00:21 +01:00
9ab269e0f7 webbuild-functions: fix killtree function to avoid killing http server 2014-02-01 14:57:30 +01:00
d73319d4ea webbuild: fixes in processes list management 2014-02-01 14:56:17 +01:00
aee7f737b1 webbuild-sudo: fix getting job pid in background mode 2014-02-01 14:55:11 +01:00
14d27be655 autoport: find_requirements(): fix parsing for 'is needed by' 2014-01-12 19:58:00 +01:00
f5d91a52fc webbuild: sync to current running version:
- refine socialbox refresh to avoid high browser cpu usage
- support for ruby specfile creation template and fixes for source creation from git
- make processes list a scroll-pane scrollbox
- other small webbuild fixes
2013-12-14 11:57:03 +01:00
ecc3ed74a2 autoport cron: added support for running icecream in chroot environment 2013-12-14 11:51:37 +01:00
dd9fb71c1b autodist-upstream-updates: fixes and some code rework 2013-11-09 14:34:49 +01:00
094174a2b6 cron files: sync to current running code with some changes 2013-11-09 14:33:39 +01:00
a939e6217a webbuild: sync to current running files with lots of fixes and small changes 2013-11-09 14:31:17 +01:00
10b3f8eff0 autoport: more checks on releases, repository fetch code reworked and more 2013-11-09 14:21:25 +01:00
4cf07b63e5 autodist: fix for rebuild and other small fixes 2013-11-09 14:19:34 +01:00
0669999e60 automaint: added verbose output (-v) and test mode (-t); skip package with same release as upstream 2013-07-13 13:52:23 +02:00
a6bcf08a21 automaint: added -v option to display explainatory messages on skipped packages 2013-07-12 02:03:09 +02:00
77cfdacce8 automaint: new tool for automatic (cron based) maintainance 2013-07-12 01:55:29 +02:00
1815ade013 Release 0.9.7 2013-07-11 11:39:14 +02:00
374848a5a0 autoport: use rpm to eval specdir if autospec doesn't return it 2013-07-11 11:24:58 +02:00
c35c462647 autodist-upstream-updates: case insensitive search for pkgs in manualver db 2013-07-11 11:15:30 +02:00
ea17d50b69 autodist: config files updates 2013-07-11 11:12:51 +02:00
ef98426c64 autodist: added --user option to notify invoking user via webbuild social messages
- implement older packages autorebuild in batch mode
2013-07-11 11:07:15 +02:00
cbe63c0c85 webbuild: improvement in RPM manager and lots of other changes and fixes 2013-07-11 11:03:09 +02:00
ee91237d64 webbuild-cgi: minor fix on variable check 2013-06-05 18:52:41 +02:00
0febe8f777 webbuild: local webbuild page support for RPM manager 2013-06-05 18:51:00 +02:00
fd294840b1 autodist: sync to latest cron and /etc/autodist configuration 2013-06-05 18:35:07 +02:00
aeec210b02 webbuild: added RPM manager 2013-06-05 18:31:55 +02:00
24f394ce84 autodist,webbuild: support for different update return codes in automatic updates logging 2013-06-05 14:03:56 +02:00
becb15708b webbuild: source files upload support 2013-06-04 02:46:14 +02:00
0e2960e708 webbuild.html: center cointainer and simplify code for heading image and message 2013-06-03 14:09:15 +02:00
92a3d43064 webbuild.js: improved 'Start from URL' filename parsing 2013-06-03 13:57:58 +02:00
16b2ff1ce9 webbuild-cgi: debugging comments removed to clean previous commit 2013-06-03 13:49:37 +02:00
07e9b8a75d webbuild: move show autodist logs section from right sidebar to central area below editor controls ..
- add environment information in some social_log messages
- improve automatic checks and output log in patches add function
2013-06-03 13:46:04 +02:00
56923432c9 webbuild: improve patch management and minor bash code changes 2013-06-01 00:30:05 +02:00
74876ce852 autodist: don't update package version when --rebuild is passed 2013-05-30 13:19:38 +02:00
272860e5fe autoport: just call 'autospec -a4 --rebuild ..' in REBUILD_MILESTONE mode 2013-05-26 13:57:34 +02:00
c0f51ea3ac autoport: restore reworked code for selecting milestone rebuild packages 2013-05-25 22:33:43 +02:00
dc7de5b07c autoport: force rebuild (don't update) in rebuild mode 2013-05-25 22:22:17 +02:00
641029e7ec webbuild: use sudo wrapper to sort list of log files to take the most recent 2013-05-23 15:44:13 +02:00
9cfdccccc0 webbuild: support automatic local environments when none is set in configuration 2013-05-23 13:02:22 +02:00
19233fce7d webbuild.js: support for "Start from URL" related fields autocompletion 2013-05-23 12:06:28 +02:00
dd369356c5 webbuild: support for getting repository list from configuration 2013-05-22 12:09:19 +02:00
0315d1a69d autospec: syntax fix for previous --nosrpm check 2013-05-22 10:36:21 +02:00
8751a555bc webbuild-functions: fixes to previous change 2013-05-22 00:31:57 +02:00
d7fa8c819b webbuild-functions: (re)implement log dir special case for autodist user in chroot environment 2013-05-22 00:21:18 +02:00
d99d231b47 autodist: avoid calling autospec send with --nosrpm --norpm (for autoport) 2013-05-22 00:02:14 +02:00
8fa299b2f2 webbuild-functions: filter web server REMOTE_* variables in cgi_getvars function for security 2013-05-21 16:40:40 +02:00
e0f9129ac5 webbuilnd interface: added progress icon for process box 2013-05-21 16:18:30 +02:00
2b8d183d22 webbuild: support for admin user and access from localhost; support enter key in user and password input 2013-05-21 16:12:02 +02:00
61 changed files with 5029 additions and 2898 deletions

View File

@ -1,34 +1,34 @@
# Makefile for autodist
# Copyright (C) 2006-2009 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Copyright (C) 2006-2021 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
PACKAGE = autodist
include VERSION
prefix = /usr
exec_prefix = ${prefix}
sysconfdir = /etc
sbindir = ${exec_prefix}/sbin
bindir = ${exec_prefix}/bin
datadir = ${prefix}/share
initrddir = ${sysconfdir}/rc.d/init.d
libexecdir = ${prefix}/libexec
mandir = ${prefix}/usr/share/man
sysconfigdir= ${sysconfdir}/sysconfig
configdir = ${sysconfdir}/autodist
localstatedir= /var
piddir= ${localstatedir}/run/autodist
cgidir = ${localstatedir}/www/cgi-bin
htmldir = ${localstatedir}/www/html
prefix := /usr
exec_prefix := ${prefix}
sysconfdir := /etc
sbindir := ${exec_prefix}/sbin
bindir := ${exec_prefix}/bin
datadir := ${prefix}/share
unitdir := ${prefix}/lib/systemd/system
libexecdir := ${prefix}/libexec
mandir := ${prefix}/usr/share/man
sysconfigdir := ${sysconfdir}/sysconfig
configdir := ${sysconfdir}/autodist
localstatedir := /var
piddir := /run/autodist
cgidir := ${localstatedir}/www/cgi-bin
htmldir := ${localstatedir}/www/html
srcdir = .
DESTDIR =
INSTALL = /usr/bin/install
INSTALL_PROGRAM = ${INSTALL} -m 755
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_DIR = ${INSTALL} -d -m 755
INSTALL_SCRIPT = ${INSTALL_PROGRAM}
INSTALL := /usr/bin/install
INSTALL_PROGRAM := ${INSTALL} -m 755
INSTALL_DATA := ${INSTALL} -m 644
INSTALL_DIR := ${INSTALL} -d -m 755
INSTALL_SCRIPT := ${INSTALL_PROGRAM}
pck_datadir = $(datadir)/$(PACKAGE)
pck_statedir = $(localstatedir)/$(PACKAGE)
@ -47,10 +47,12 @@ install-dirs:
@$(INSTALL_DIR) $(DESTDIR)$(sysconfdir)/cron.hourly
@$(INSTALL_DIR) $(DESTDIR)$(sysconfdir)/cron.daily
@$(INSTALL_DIR) $(DESTDIR)$(sysconfdir)/sysconfig
@$(INSTALL_DIR) $(DESTDIR)$(sysconfdir)/logrotate.d
@$(INSTALL_DIR) $(DESTDIR)$(bindir)
@$(INSTALL_DIR) $(DESTDIR)$(sbindir)
@$(INSTALL_DIR) $(DESTDIR)$(cgidir)
@$(INSTALL_DIR) $(DESTDIR)$(htmldir)
@$(INSTALL_DIR) $(DESTDIR)$(unitdir)
@$(INSTALL_DIR) $(DESTDIR)$(pck_datadir)
@$(INSTALL_DIR) $(DESTDIR)$(pck_statedir)
@$(INSTALL_DIR) $(DESTDIR)$(pck_statedir)/template/autoupdate/spec-patches-build/old
@ -60,16 +62,21 @@ install-dirs:
@$(INSTALL_DIR) $(DESTDIR)$(pck_logdir)/build/{ok,failed}
@$(INSTALL_DIR) $(DESTDIR)$(pck_logdir)/install/{ok,failed}
@$(INSTALL_DIR) $(DESTDIR)$(pck_logdir)/send/{ok,failed}
@$(INSTALL_DIR) $(DESTDIR)$(pck_statedir)/RPM/{SPECS,SRPMS,BUILD,SOURCES,RPMS/{noarch,i586,ppc,x86_64,arm}}
@$(INSTALL_DIR) $(DESTDIR)$(piddir)
@$(INSTALL_DIR) $(DESTDIR)$(pck_statedir)/RPM/{SPECS,SRPMS,BUILD,SOURCES,RPMS/{noarch,i586,x86_64,arm,aarch64}}
@$(INSTALL_DIR) $(DESTDIR)$(libexecdir)
@$(INSTALL_DIR) $(DESTDIR)$(localstatedir)/webbuild/{cache,home,notes,tmp,users}
@$(INSTALL_DIR) $(DESTDIR)$(localstatedir)/webbuild/{cache,home,notes,tmp,users,uploads}
@$(INSTALL_DIR) $(DESTDIR)$(prefix)/lib/tmpfiles.d/
install-programs:
@$(INSTALL_SCRIPT) autodist $(DESTDIR)$(bindir)/autodist
@$(INSTALL_SCRIPT) autodist-tool $(DESTDIR)$(bindir)/autodist-tool
@$(INSTALL_SCRIPT) autodist-launcher $(DESTDIR)$(bindir)/autodist-launcher
@$(INSTALL_SCRIPT) autoport $(DESTDIR)$(bindir)/autoport
@$(INSTALL_SCRIPT) autoport-launcher $(DESTDIR)$(bindir)/autoport-launcher
@$(INSTALL_SCRIPT) autoport-chroot $(DESTDIR)$(sbindir)/autoport-chroot
@$(INSTALL_SCRIPT) automaint $(DESTDIR)$(sbindir)/automaint
@$(INSTALL_SCRIPT) autodist-inspect $(DESTDIR)$(bindir)/autodist-inspect
@$(INSTALL_SCRIPT) autodist-repository $(DESTDIR)$(sbindir)/autodist-repository
@$(INSTALL_SCRIPT) autodist-upstream-updates $(DESTDIR)$(sbindir)/autodist-upstream-updates
@$(INSTALL_SCRIPT) autoport-fix-environment $(DESTDIR)$(bindir)/autoport-fix-environment
@$(INSTALL_SCRIPT) etc/autodist/scripts/* $(DESTDIR)$(configdir)/scripts/
@ -79,33 +86,29 @@ install-programs:
@$(INSTALL_SCRIPT) webbuild/webbuild-checkpassword $(DESTDIR)$(libexecdir)/webbuild-checkpassword
@$(INSTALL_SCRIPT) webbuild/webbuild-functions $(DESTDIR)$(pck_datadir)/webbuild-functions
@$(INSTALL_SCRIPT) webbuild/webbuild-functions-private $(DESTDIR)$(pck_datadir)/webbuild-functions-private
@$(INSTALL_SCRIPT) telegram/openmamba_bot.py $(DESTDIR)$(pck_datadir)/openmamba_bot.py
@$(INSTALL_SCRIPT) telegram/requirements.txt $(DESTDIR)$(pck_datadir)/requirements.txt
@$(INSTALL_SCRIPT) repology-openmamba.py $(DESTDIR)$(pck_datadir)/repology-openmamba.py
@cp -a webbuild/html/* $(DESTDIR)$(htmldir)
install-data:
@$(INSTALL_DATA) etc/autodist/config $(DESTDIR)$(configdir)/config
@$(INSTALL_DATA) etc/autodist/distdb $(DESTDIR)$(configdir)/distdb
@$(INSTALL_DATA) etc/autodist/distdb.i586 $(DESTDIR)$(configdir)/distdb.i586
@$(INSTALL_DATA) etc/autodist/distdb.arm $(DESTDIR)$(configdir)/distdb.arm
@$(INSTALL_DATA) etc/autodist/distdb.x86_64 $(DESTDIR)$(configdir)/distdb.x86_64
@$(INSTALL_DATA) etc/autodist/distdb.ppc $(DESTDIR)$(configdir)/distdb.ppc
@$(INSTALL_DATA) etc/autodist/legacy $(DESTDIR)$(configdir)/legacy
@$(INSTALL_DATA) etc/autodist/unstage $(DESTDIR)$(configdir)/unstage
@$(INSTALL_DATA) etc/autodist/unstage.i586 $(DESTDIR)$(configdir)/unstage.i586
@$(INSTALL_DATA) etc/autodist/unstage.arm $(DESTDIR)$(configdir)/unstage.arm
@$(INSTALL_DATA) etc/autodist/unstage.x86_64 $(DESTDIR)$(configdir)/unstage.x86_64
@$(INSTALL_DATA) etc/autodist/unstage.ppc $(DESTDIR)$(configdir)/unstage.ppc
@$(INSTALL_DATA) etc/autodist/distdb.d/*.db $(DESTDIR)$(configdir)/distdb.d/
@$(INSTALL_DATA) etc/autodist/blacklist $(DESTDIR)$(configdir)/blacklist
@$(INSTALL_DATA) etc/autodist/distdb.d/* $(DESTDIR)$(configdir)/distdb.d/
@$(INSTALL_DATA) etc/sudoers.d/autoport $(DESTDIR)$(sysconfdir)/sudoers.d/autoport
@$(INSTALL_DATA) webbuild/webbuild-sudoers $(DESTDIR)$(sysconfdir)/sudoers.d/webbuild
@$(INSTALL_DATA) webbuild/webbuild-admin $(DESTDIR)$(localstatedir)/webbuild/users/admin.conf
@$(INSTALL_SCRIPT) etc/sysconfig/autoport $(DESTDIR)$(sysconfdir)/sysconfig/autoport
@$(INSTALL_SCRIPT) etc/cron.hourly/60-autodist-update $(DESTDIR)$(sysconfdir)/cron.hourly/
@$(INSTALL_SCRIPT) etc/cron.hourly/65-autoport-native $(DESTDIR)$(sysconfdir)/cron.hourly/
@$(INSTALL_SCRIPT) etc/cron.hourly/66-autoport-chroot $(DESTDIR)$(sysconfdir)/cron.hourly/
@$(INSTALL_SCRIPT) etc/cron.hourly/65-autoport $(DESTDIR)$(sysconfdir)/cron.hourly/
@$(INSTALL_SCRIPT) etc/cron.daily/40-autodist-cleanold $(DESTDIR)$(sysconfdir)/cron.daily/
@$(INSTALL_SCRIPT) etc/cron.daily/40-autodist-upstream-updates $(DESTDIR)$(sysconfdir)/cron.daily/
@$(INSTALL_SCRIPT) etc/logrotate.d/webbuild $(DESTDIR)$(sysconfdir)/logrotate.d/webbuild
@$(INSTALL_DATA) autospec-conf $(DESTDIR)$(pck_statedir)/.autospec
@$(INSTALL_DATA) autodist-bashrc $(DESTDIR)$(pck_statedir)/.bashrc
@$(INSTALL_DATA) autodist-bash_profile $(DESTDIR)$(pck_statedir)/.bash_profile
@$(INSTALL_DATA) autodist-tmpfilesd $(DESTDIR)$(prefix)/lib/tmpfiles.d/autodist.conf
@$(INSTALL_DATA) telegram/openmambabot.service $(DESTDIR)$(unitdir)/openmambabot.service
@touch $(DESTDIR)$(pck_statedir)/template/autoupdate/auto.success
@touch $(DESTDIR)$(pck_statedir)/template/autoupdate/auto.skip

View File

@ -1 +1 @@
VERSION = 0.9.6
VERSION = 1.3.3

388
autodist
View File

@ -1,24 +1,24 @@
#!/bin/bash
#
# Autodist -- batch build tool for RPM based distributions
# Copyright (C) 2006-2013 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Copyright (C) 2006-2016 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
# Released under the terms of the GNU GPL release 3 license
#
VERSION=0.9.6
me=(${0##*/} $VERSION "Sat Aug 20 2010")
VERSION=1.3.3
me=(${0##*/} $VERSION "Tue Jan 26 2016")
exec 3>`readlink /proc/self/fd/0`
function usage() {
echo "\
${me[0]} ${me[1]}
"$"Copyright (C) 2006-2012 Silvan Calarco <silvan.calarco@mambasoft.it>""
"$"Copyright (C) 2006-2016 Silvan Calarco <silvan.calarco@mambasoft.it>""
"$"Released under the terms of the GNU GPL v3 license"
echo "
"$"Batch build tool for bulding a whole distribution and much more.""
"$"Usage"":
$me [operations ...] [options ...] [job ...] [-- autospec_args]
$me [operations ...] [options ...] [job ...] [-- autospec_args] [--- script_args]
"$"Operations"":
-a,--autobuild "$"Start batch build operations (implies -p -u -b -s --severity 1)""
@ -40,37 +40,37 @@ ${me[0]} ${me[1]}
-v,--verbose "$"Be verbose""
--force "$"Pass force parameter to autospec""
--repository "$"Pass given repository as base for operations""
--repository-strict "$"Only prepare packages from base repository specified with --repository""
--server num "$"Pass given server number to autospec for send operation""
--severity num "$"Error handling level:
0: don't stop (default)
1: skip current job on error
0: don't stop
1: skip current job on error (default)
2: abort on error""
--arch "$"Build packages for specified target architecture""
--user user "$"Pass calling user name for Webbuild social messages""
--rebuild-srpms "$"Rebuild SRPMs when sending""
job "$"Job specification in the form pkg#version, job#version, job/pkg#version, examples:
glibc#2.11.1
kernel-extra
kernel-packages/lirc""
autospec_args "$"Send specified arguments to autospec""
script_args "$"Send specified arguments to update-specfile script""
"
}
function fetch_repository_list() {
local REPOLIST=$1
if [ -r ${LOCAL_REPS_BASE_DIR}/$REPOLIST ]; then
echo ${LOCAL_REPS_BASE_DIR}/$REPOLIST
function fetch_repository_file() {
local REPOFILE=$1
if [ -r ${LOCAL_REPS_BASE_DIR}/$REPOFILE ]; then
echo ${LOCAL_REPS_BASE_DIR}/$REPOFILE
return 0
else
if [ ! -r $USERCONFDIR/$REPOLIST -o "`find $USERCONFDIR/$REPOLIST -mmin +60 2>/dev/null`" ]; then
mkdir -p `dirname $USERCONFDIR/$REPOLIST`
curl -s $REPS_BASE_URL/$REPOLIST -o $USERCONFDIR/$REPOLIST || {
echo "Error: unable to fetch $REPS_BASE_DIR/$REPOLIST"
exit 1
}
if [ ! -r $USERCONFDIR/$REPOFILE -o "`find $USERCONFDIR/$REPOFILE -mmin +60 2>/dev/null`" ]; then
mkdir -p `dirname $USERCONFDIR/$REPOFILE`
curl -f -L -s $REPS_BASE_URL/$REPOFILE -o $USERCONFDIR/$REPOFILE || return 1
fi
echo $USERCONFDIR/$REPOLIST
echo $USERCONFDIR/$REPOFILE
return 0
fi
}
@ -94,8 +94,9 @@ BUILDARCH=`rpm --eval %{_build_cpu}`
TARGETARCH=$BUILDARCH
CONFIGFILE=$SYSCONFDIR/config
SCRIPT_UPDATE_SPECFILE=$SCRIPTDIR/update-specfile
SCRIPT_UPDATE_SPECFILE_CUSTOM=$SCRIPTDIR/update-specfile-custom
AUTOSPEC_CMD="/usr/bin/autospec"
PIDFILE="/var/run/autodist/autodist.pid"
PIDFILE="/run/autodist/autodist.pid"
# Configuration defaults normally overriden in configuration file
AUTOBUILD_MAXNUM=50
@ -122,14 +123,6 @@ for ((i=1; i<=$#; i++)); do
do_build=1;
do_send=1;
SEVERITY=1
[ -e $PIDFILE ] && {
PIDCHECK=`cat $PIDFILE`
[ "$PIDCHECK" -a -e /proc/$PIDCHECK -a ! "$DISABLE_PID_CHECK" ] && {
echo "Error: autodist -a already running with PID=$PIDCHECK.Aborting."
exit 1
}
}
;;
-c|--cleanlogs) do_cleanlogs=1 ;;
-h|--help) usage
@ -159,66 +152,97 @@ for ((i=1; i<=$#; i++)); do
;;
--server) let i+=1
[ "${!i}" ] || {
echo "Error: server parameter not given, aborting."
echo "Error: --server parameter not given, aborting."
exit 1
}
SEND_SERVER="${!i}"
;;
--repository) let i+=1
[ "${!i}" ] || {
echo "Error: repository parameter not given, aborting."
echo "Error: --repository parameter not given, aborting."
exit 1
}
AUTODIST_REPOSITORY="${!i}"
;;
--repository-strict)
REPOSITORY_STRICT=1
;;
--severity) let i+=1
[ "${!i}" ] || {
echo "Error: severity parameter not given, aborting."
echo "Error: --severity parameter not given, aborting."
exit 1
}
SEVERITY=${!i}
;;
--arch) let i+=1
[ "${!i}" ] || {
echo "Error: arch parameter not given, aborting."
echo "Error: --arch parameter not given, aborting."
exit 1
}
TARGETARCH=${!i}
;;
--user) let i+=1
[ "${!i}" ] || {
echo "Error: --user parameter not given, aborting."
exit 1
}
WEBBUILD_USER_CMDLINE="${!i}"
;;
--rebuild-srpms)
REBUILD_SRPMS=1
;;
-*) if [ "${!i}" = "--" ]; then
AUTOSPEC_ARGS_MODE=1
SCRIPT_ARGS_MODE=
elif [ "${!i}" = "---" ]; then
SCRIPT_ARGS_MODE=1
AUTOSPEC_ARGS_MODE=
elif [ "$AUTOSPEC_ARGS_MODE" ]; then
AUTOSPEC_ARGS="$AUTOSPEC_ARGS ${!i}"
elif [ "$SCRIPT_ARGS_MODE" ]; then
SCRIPT_ARGS="$SCRIPT_ARGS ${!i}"
else
echo "ERROR: invalid option \`${!i}'; aborting."
exit 1
fi
;;
*) if [ "$AUTOSPEC_ARGS_MODE" != "1" ]; then
JOBNAME[${#JOBNAME[@]}]="${!i/\#*}"
[ "${!i/*\#}" != "${!i}" ] && JOBVER[${#JOBNAME[@]}]="+${!i/*\#}"
else
*) if [ "$AUTOSPEC_ARGS_MODE" ]; then
if [ "${!i/ }" != "${!i}" ]; then
# pass multiple word arguments inside quotation marks
AUTOSPEC_ARGS="$AUTOSPEC_ARGS \"${!i}\""
else
AUTOSPEC_ARGS="$AUTOSPEC_ARGS ${!i}"
fi
elif [ "$SCRIPT_ARGS_MODE" ]; then
if [ "${!i/ }" != "${!i}" ]; then
# pass multiple word arguments inside quotation marks
SCRIPT_ARGS="$SCRIPT_ARGS \"${!i}\""
else
SCRIPT_ARGS="$SCRIPT_ARGS ${!i}"
fi
else
JOBIDX=${#JOBNAME[@]}
JOBNAME[$JOBIDX]="${!i/\#*}"
[ "${!i/*\#}" != "${!i}" ] && JOBVER[$JOBIDX]="+${!i/*\#}"
fi
;;
esac
done
if [ "$do_autobuild" ]; then
if [ -e $PIDFILE ]; then
PIDCHECK=`cat $PIDFILE`
if [ "$PIDCHECK" -a -e /proc/$PIDCHECK -a ! "$DISABLE_PID_CHECK" ]; then
echo "Error: autodist -a already running with PID=$PIDCHECK.Aborting."
exit 0
fi
fi
fi
[ "$AUTODIST_REPOSITORY" ] || AUTODIST_REPOSITORY=devel-autodist
[ "$SEND_SERVER" ] || SEND_SERVER=$AUTODIST_REPOSITORY
SEND_SERVER_CMD="--server $SEND_SERVER"
AUTOUPDATEDIR=${LOCAL_REPS_BASE_DIR}/$AUTODIST_REPOSITORY/autoupdate/
[ -r $AUTOUPDATEDIR ] || {
AUTOUPDATEDIR=$USERCONFDIR/$AUTODIST_REPOSITORY/autoupdate
mkdir -p $AUTOUPDATEDIR
}
# perform arch names conversions
case $BUILDARCH in
@ -229,34 +253,6 @@ case $TARGETARCH in
i386|i486|i686) TARGETARCH=i586 ;;
esac
SOURCESDIR=$AUTOUPDATEDIR/sources/
SUCCESSLISTDIR=$AUTOUPDATEDIR
SKIPPEDLISTDIR=$AUTOUPDATEDIR
SRCPKGLIST=`fetch_repository_list $AUTODIST_REPOSITORY/srcpkglist`
[ "$AUTODIST_DELAYED_REPOSITORY" ] && SRCPKGLIST_DELAYED=`fetch_repository_list $AUTODIST_DELAYED_REPOSITORY/srcpkglist`
BUILDSLIST=`fetch_repository_list distromatic/$AUTODIST_REPOSITORY/builds-$TARGETARCH`
[ "$AUTODIST_DELAYED_REPOSITORY" ] && BUILDSLIST_DELAYED=`fetch_repository_list distromatic/$AUTODIST_DELAYED_REPOSITORY/builds-$TARGETARCH`
[ -e "$DISTDB" ] || {
echo "ERROR: missing distdb file $DISTDB; aborting."
exit 1
}
[ -e $LOGBASEDIR ] || {
mkdir -p $LOGBASEDIR/prepare/{ok,failed}
mkdir -p $LOGBASEDIR/update/{ok,failed}
mkdir -p $LOGBASEDIR/build/{ok,failed}
mkdir -p $LOGBASEDIR/install/{ok,failed}
mkdir -p $LOGBASEDIR/send/{ok,failed}
}
#[ "$PACKAGE" ] || {
# echo "ERROR: missing target; aborting."
# usage
# exit 1
#}
# for webbuild message
function cgi_encodevar() {
@ -520,12 +516,12 @@ function launch_pkgs_loop() {
JOB_ARGS="$JOB_ARGS$DEFINES_STRING"
[ "$patch_operation" = "buildinstall" ] && patch_operation=build
[ "$patch_operation" = "autoupdate" ] && patch_operation=update
[ "$patch_operation" = "autoupdate" -o "$patch_operation" = "rebuild" ] && patch_operation=update
# launch loop for each package
for pkg in ${JOB_PKGS[*]}; do
unset LOGFILE_SUFFIX
unset LOGFILE_SUFFIX AUTOUPDATE_SCRIPT_ALREADY_RUN
for a in ${JOB_VALUES[*]}; do
tr_job=`echo $a | tr / _`
LOGFILE_SUFFIX=${LOGFILE_SUFFIX}__$tr_job
@ -543,12 +539,12 @@ function launch_pkgs_loop() {
rm -f ${LOGDIR}/failed/${LOGFILE_PKG_NAME}-${LOGFILE_SUFFIX}
case $operation in
autoupdate|update|build|buildinstall)
autoupdate|update|build|rebuild|buildinstall)
[ -e $spec_dir/$pkg.spec ] || {
case $SEVERITY in
0) ;;
1) echo "!! Error: spec filename must be the same as package name or invalid job name; skipping $pkg package."
[ "$do_autobuild" ] && autobuild_log $pkg $operation failed $JOB_NAME $LOGDIR/failed/${LOGFILE_PKG_NAME}
[ "$do_autobuild" ] && autobuild_log $pkg $operation 240 $JOB_NAME $LOGDIR/failed/${LOGFILE_PKG_NAME}
continue ;;
*) echo "!! Error: spec filename must be the same as package name or invalid job name; aborting."
exit 1 ;;
@ -565,7 +561,7 @@ function launch_pkgs_loop() {
case $SEVERITY in
0) ;;
1) echo "%! Error: could not apply patch to specfile; skipping $pkg package."
[ "$do_autobuild" ] && autobuild_log $pkg $operation failed $JOB_NAME $LOGDIR/failed/${LOGFILE_PKG_NAME}
[ "$do_autobuild" ] && autobuild_log $pkg $operation 241 $JOB_NAME $LOGDIR/failed/${LOGFILE_PKG_NAME}
ret=1
continue ;;
*) echo "!! Error: could not apply patch to specfile; aborting."
@ -575,8 +571,31 @@ function launch_pkgs_loop() {
[ "$operation" = "update" -o "$operation" = "autoupdate" ] && continue
fi
fi
$SCRIPT_UPDATE_SPECFILE $spec_dir/$pkg.spec
;;
if [ -x $SCRIPT_UPDATE_SPECFILE ]; then
$SCRIPT_UPDATE_SPECFILE $spec_dir/$pkg.spec $SCRIPT_ARGS || {
case $SEVERITY in
0) ;;
1) echo "%! Error: update-specfile script returned $?; skipping $pkg package."
ret=1
continue ;;
*) echo "!! Error: update-specfile script returned $?; aborting."
exit 1 ;;
esac
}
fi
if [ -x $SCRIPT_UPDATE_SPECFILE_CUSTOM ]; then
$SCRIPT_UPDATE_SPECFILE_CUSTOM $spec_dir/$pkg.spec $SCRIPT_ARGS || {
case $SEVERITY in
0) ;;
1) echo "%! Error: update-specfile-custom script returned $?; skipping $pkg package."
ret=1
continue ;;
*) echo "!! Error: update-specfile-custom script returned $?; aborting."
exit 1 ;;
esac
}
fi
;;
esac
[ -e $spec_dir/$pkg.spec ] && {
@ -619,6 +638,15 @@ function launch_pkgs_loop() {
if [ "$PKGLINE" ]; then
set -- $PKGLINE
[[ $4 =~ "^[0-9]+$" ]] && REPNAME=${AUTODIST_REPOSITORIES[$4]} || REPNAME="$4"
if [ "$REPNAME" != "$AUTODIST_REPOSITORY" -a "$REPOSITORY_STRICT" ]; then
case $SEVERITY in
0) echo "!! Warning: package comes from $REPNAME instead of $AUTODIST_REPOSITORY" ;;
1) echo "!! Error: package comes from $REPNAME instead of $AUTODIST_REPOSITORY; skipping $pkg package."
continue ;;
*) echo "!! Error: package comes from $REPNAME instead of $AUTODIST_REPOSITORY; aborting."
exit 1 ;;
esac
fi
if [ "$REPNAME" ]; then
command_opts="$command_opts --server ${REPNAME}"
else
@ -635,7 +663,7 @@ function launch_pkgs_loop() {
if [ "$PKGLINE" ]; then
set -- $PKGLINE
pkglinever=$2
# warning: asasuming version is passed first
# warning: assuming version is passed first
version_find_bigger "${passed_arguments/ *}" "$pkglinever"
[ $? -eq 1 ] || {
echo "!! Warning: skipping ${pkg} package already up to date ($pkglinever >= ${passed_arguments/ *})."
@ -645,6 +673,11 @@ function launch_pkgs_loop() {
continue
}
fi
if [ -e $source_dir/$pkg-autoupdate ]; then
echo "?= Running $pkg-autoupdate script with version ${passed_arguments/ *}"
(cd $source_dir; sh ./$pkg-autoupdate ${passed_arguments/ *} >/dev/null)
AUTOUPDATE_SCRIPT_ALREADY_RUN=1
fi
command_opts="-a3:4" ;;
build)
# skip package in job if it is in the delayed repository
@ -658,7 +691,9 @@ function launch_pkgs_loop() {
continue
fi
fi
command_opts="-a5:6" ;;
command_opts="-a5:6 -b" ;;
buildsrpm)
command_opts="-a5:6 --norpm" ;;
buildinstall)
# skip package in job if up to date
if [ "$PKGLINE" -a "$BUILDSLINE" ]; then
@ -731,7 +766,7 @@ function launch_pkgs_loop() {
echo "Command: $command"
else
# eval "$command 2>&1 && echo '0'>$tmpfile1 || echo '1'>$tmpfile1" | tail_file $tmpfile "== $pkg (${JOB_VALUES[*]})..."
(export LANG=C; $command 2>&1; echo $? >$tmpfile1) | tail_file $tmpfile "== $pkg (${JOB_VALUES[*]})..."
(export LANG=en_US.UTF-8; $command 2>&1; echo $? >$tmpfile1) | tail_file $tmpfile "== $pkg (${JOB_VALUES[*]})..."
if [ -e $tmpfile1 ]; then
ret=`cat $tmpfile1`
rm -f $tmpfile1
@ -756,7 +791,7 @@ function launch_pkgs_loop() {
}
mv $LOGFILE_PKG $LOGDIR/failed/
echo "?= See $LOGDIR/failed/${LOGFILE_PKG_NAME}"
[ "$do_autobuild" ] && autobuild_log $pkg $operation failed $JOB_NAME $LOGDIR/failed/${LOGFILE_PKG_NAME}
[ "$do_autobuild" ] && autobuild_log $pkg $operation $ret $JOB_NAME $LOGDIR/failed/${LOGFILE_PKG_NAME}
case $operation in
autoupdate|update)
;;
@ -816,6 +851,11 @@ function launch_pkgs_loop() {
}
fi
fi
if [ "$2" != "$SPEC_VERSION" -a -e $source_dir/$pkg-autoupdate -a ! "$AUTOUPDATE_SCRIPT_ALREADY_RUN" ]; then
echo "?= Running $pkg-autoupdate script with version ${passed_arguments/ *}"
(cd $source_dir; sh ./$pkg-autoupdate ${passed_arguments/ *} >/dev/null)
AUTOUPDATE_SCRIPT_ALREADY_RUN=1
fi
fi
;;
buildinstall|send)
@ -836,8 +876,13 @@ function launch_pkgs_loop() {
# send operation: check for --norpm (source send) to avoid sending notification twice
[ "$WEBBUILD_URL" -a "$WEBBUILD_USER" ] && {
SPEC_VERSION=`grep -m1 "^Version:" $spec_dir/$pkg.spec | sed "s|Version:[[:space:]]*||"`
curl -s "$WEBBUILD_URL?REQUEST=message&USER=$WEBBUILD_USER&SECRET=$WEBBUILD_SECRET&USER_EMAIL=$WEBBUILD_EMAIL&\
MESSAGE=`cgi_encodevar \"sent <b>$pkg $SPEC_VERSION</b> for ${TARGETARCH} to <b>$SEND_SERVER</b>\"`" >/dev/null
if [ "$WEBBUILD_USER_CMDLINE" ]; then
curl -s "$WEBBUILD_URL?REQUEST=message&USER=$WEBBUILD_USER&SECRET=$WEBBUILD_SECRET&USER_EMAIL=$WEBBUILD_EMAIL&\
MESSAGE=`cgi_encodevar \"(invoked by $WEBBUILD_USER_CMDLINE) sent <b>$pkg $SPEC_VERSION-$SPEC_RELEASE</b> for ${TARGETARCH} to <b>$SEND_SERVER</b>\"`" >/dev/null
else
curl -s "$WEBBUILD_URL?REQUEST=message&USER=$WEBBUILD_USER&SECRET=$WEBBUILD_SECRET&USER_EMAIL=$WEBBUILD_EMAIL&\
MESSAGE=`cgi_encodevar \"sent <b>$pkg $SPEC_VERSION-$SPEC_RELEASE</b> for ${TARGETARCH} to <b>$SEND_SERVER</b>\"`" >/dev/null
fi
}
fi
;;
@ -868,10 +913,32 @@ function log_date() {
echo -n `LANG=C date +%Y%m%d@%H%M%S`
}
DISTDBFILES="$DISTDB"
[ -e $DISTDB.$TARGETARCH ] && DISTDBFILES="$DISTDBFILES $DISTDB.$TARGETARCH"
[ -e ~/.autodist/distdb ] && DISTDBFILES="$DISTDBFILES ~/.autodist/distdb"
[ -e ~/.autodist/distdb.$TARGETARCH ] && DISTDBFILES="$DISTDBFILES ~/.autodist/distdb.$TARGETARCH"
[ -e $LOGBASEDIR ] || {
mkdir -p $LOGBASEDIR/prepare/{ok,failed}
mkdir -p $LOGBASEDIR/update/{ok,failed}
mkdir -p $LOGBASEDIR/build/{ok,failed}
mkdir -p $LOGBASEDIR/install/{ok,failed}
mkdir -p $LOGBASEDIR/send/{ok,failed}
}
#
# Main
#
DISTDBFILES=
DISTDB=`fetch_repository_file ${AUTODIST_REPOSITORY/-*}/distdb`
[ "$DISTDB" ] && DISTDBFILES="$DISTDB"
DISTDBARCH=`fetch_repository_file ${AUTODIST_REPOSITORY/-*}/distdb.$TARGETARCH`
if [ "$DISTDBARCH" ]; then
DISTDBFILES="$DISTDBFILES $DISTDBARCH"
fi
if [ ! "$DISTDBFILES" ]; then
[ -e $SYSCONFDIR/distdb ] && DISTDBFILES="$SYSCONFDIR/distdb"
[ -e $SYSCONFDIR/distdb.$TARGETARCH ] && DISTDBFILES="$DISTDBFILES $SYSCONFDIR/distdb.$TARGETARCH"
fi
if [ "$do_listjobs" ]; then
for f in $DISTDBFILES; do
@ -919,6 +986,30 @@ for a in $LOGBASEDIR/{,prepare/{,ok,failed},update/{,ok,failed},build/{,ok,faile
done
AUTOUPDATEDIR=${LOCAL_REPS_BASE_DIR}/$AUTODIST_REPOSITORY/autoupdate/
[ -r $AUTOUPDATEDIR ] || {
AUTOUPDATEDIR=$USERCONFDIR/$AUTODIST_REPOSITORY/autoupdate
mkdir -p $AUTOUPDATEDIR
}
SOURCESDIR=$AUTOUPDATEDIR/sources/
SUCCESSLISTDIR=$AUTOUPDATEDIR
SKIPPEDLISTDIR=$AUTOUPDATEDIR
SRCPKGLIST=`fetch_repository_file $AUTODIST_REPOSITORY/srcpkglist`
[ $? -eq 0 ] || echo "Warning: unable to fetch $SRCPKGLIST">&2
[ "$AUTODIST_DELAYED_REPOSITORY" ] && SRCPKGLIST_DELAYED=`fetch_repository_file $AUTODIST_DELAYED_REPOSITORY/srcpkglist`
[ $? -eq 0 ] || echo "Warning: unable to fetch $SRCPKGLIST_DELAYED">&2
BUILDSLIST=`fetch_repository_file distromatic/$AUTODIST_REPOSITORY/builds-$TARGETARCH`
[ "$AUTODIST_DELAYED_REPOSITORY" ] && BUILDSLIST_DELAYED=`fetch_repository_file distromatic/$AUTODIST_DELAYED_REPOSITORY/builds-$TARGETARCH`
[ $? -eq 0 ] || echo "Warning: unable to fetch $BUILDSLIST">&2
LEGACYLIST=`fetch_repository_file ${AUTODIST_REPOSITORY/-*}/legacy`
[ "$LEGACYLIST" ] || LEGACYLIST=$SYSCONFDIR/legacy
[ $? -eq 0 ] || echo "Warning: unable to fetch $LEGACYLIST">&2
echo "%% Autodist started with PID $$ @ `LANG=C date`"
# autobuild: add jobs ordered by oldest builds
@ -948,6 +1039,7 @@ if [ "$do_autobuild" = "1" ]; then
SKIPPEDCOUNT=0
BLACKLISTCOUNT=0
SUCCESSLISTCOUNT=0
REBUILDOLDCOUNT=0
> $pkgtmpfile
@ -971,29 +1063,37 @@ if [ "$do_autobuild" = "1" ]; then
continue
}
# check skippedlist (but ignore for scheduled updates)
if [ "${VERSION:0:1}" != "+" ]; then
SKIPPEDLINE=`awk '{ print $1" "$2 }' $SKIPPEDLISTDIR/*.skip | grep -m1 "^$PKGNAME "`
if [ "$SKIPPEDLINE" ]; then
set -- $SKIPPEDLINE
SKIPPEDTIME=$2
SKIPPEDDAYS=`expr \( $DATE_NOW - $SKIPPEDTIME \) / 86400`
if [ "$SKIPPEDDAYS" -le "$AUTOBUILD_SKIP_DAYS" ]; then
SKIPPEDCOUNT=`expr $SKIPPEDCOUNT + 1`
#echo "?= Package $PKGNAME has been in the skippedlist for $SKIPPEDDAYS days; skipping"
continue
else
sed -i "/^$PKGNAME /d" $SKIPPEDLISTDIR/*.skip
if [ $REBUILDOLDCOUNT -lt $AUTODIST_REBUILDOLD_MAX -a $BUILDDATE -ge $AUTODIST_REBUILDOLD_FROMDATE ]; then
# rebuilt oldest packages
REBUILDOLDCOUNT=$(($REBUILDOLDCOUNT + 1))
VERSION=+0
else
# check skippedlist (but ignore for scheduled updates)
SKIPPEDLINE=`awk '{ print $1" "$2 }' $SKIPPEDLISTDIR/*.skip | grep -m1 "^$PKGNAME "`
if [ "$SKIPPEDLINE" ]; then
set -- $SKIPPEDLINE
SKIPPEDTIME=$2
SKIPPEDDAYS=`expr \( $DATE_NOW - $SKIPPEDTIME \) / 86400`
if [ "$SKIPPEDDAYS" -le "$AUTOBUILD_SKIP_DAYS" ]; then
SKIPPEDCOUNT=`expr $SKIPPEDCOUNT + 1`
#echo "?= Package $PKGNAME has been in the skippedlist for $SKIPPEDDAYS days; skipping"
continue
else
sed -i "/^$PKGNAME /d" $SKIPPEDLISTDIR/*.skip
fi
fi
fi
fi
# check legacylist
awk '{ print $1 }' $LEGACYLIST | grep "^$PKGNAME$" >/dev/null && {
echo "?= Job $PKGNAME is in the legacy list; skipping automatic update"
echo "$PKGNAME $DATE_NOW 100" >> $SKIPPEDLISTDIR/auto.skip
continue
}
if [ "${VERSION:0:1}" != "+" ]; then
# check legacylist
awk '{ print $1 }' $LEGACYLIST | grep "^$PKGNAME$" >/dev/null && {
echo "?= Job $PKGNAME is in the legacy list; skipping automatic update"
echo "$PKGNAME $DATE_NOW 100" >> $SKIPPEDLISTDIR/auto.skip
continue
}
fi
# manually or from lists scheduled jobs
if [ "${VERSION:0:1}" == "+" -a "$VERSION" != "+0" ]; then
@ -1036,8 +1136,8 @@ if [ "$do_autobuild" = "1" ]; then
[ $AUTOBUILD_NUMADDED -ge $AUTOBUILD_MAXNUM ] && break
# FIXME: hardcoded skipped packages
[ "${PKGNAME:0:5}" = "java-" -o "${PKGNAME:0:7}" = "apache-" -o \
"${PKGNAME:0:8}" = "jakarta-" -o "${PKGNAME:0:6}" = "compiz" ] && continue
#[ "${PKGNAME:0:5}" = "java-" -o "${PKGNAME:0:7}" = "apache-" -o \
# "${PKGNAME:0:8}" = "jakarta-" -o "${PKGNAME:0:6}" = "compiz" ] && continue
if [ $BUILDDATE -ge $AUTOBUILD_DATEFROM -o $BUILDDATE -eq 0 ]; then
AUTOBUILD_NUMADDED=`expr $AUTOBUILD_NUMADDED + 1`
@ -1045,7 +1145,7 @@ if [ "$do_autobuild" = "1" ]; then
fi
done < $srctmpfile
echo "%% Total pkgs: $PKGCOUNT, skipped list: $SKIPPEDCOUNT, blacklist: $BLACKLISTCOUNT, success list: $SUCCESSLISTCOUNT, last build date: $BUILDDATE"
echo "%% Total pkgs: $PKGCOUNT, skipped list: $SKIPPEDCOUNT, blacklist: $BLACKLISTCOUNT, success list: $SUCCESSLISTCOUNT, rebuild-old list: $REBUILDOLDCOUNT, last build date: $BUILDDATE"
while read line; do
set -- $line
PKGNAME=${1}
@ -1112,8 +1212,8 @@ for JOB_NUM in `seq 1 ${#JOBNAME[*]}`; do
}
if [ ! "$do_update" -a "$do_autobuild" = "1" ]; then
[ "${AUTOSPEC_ARGS/--changelog}" = "${AUTOSPEC_ARGS}" ] &&
AUTOSPEC_ARGS="$AUTOSPEC_ARGS --changelog \"automatic rebuild by autodist\""
launch_pkgs_loop rebuild "$AUTOSPEC_ARGS" || {
AUTOSPEC_CHANGELOG="--changelog \"automatic rebuild by autodist\"" || AUTOSPEC_CHANGELOG=
launch_pkgs_loop rebuild "$AUTOSPEC_ARGS $AUTOSPEC_CHANGELOG" || {
case $SEVERITY in
0) ;;
1) echo "%! Error during package update for rebuild; skipping $JOB_NAME job."
@ -1133,17 +1233,19 @@ for JOB_NUM in `seq 1 ${#JOBNAME[*]}`; do
echo "%% "`log_date`" Starting UPDATE operation" > $LOGFILE
if [ "${JOB_VER:0:1}" != "+" -o "${JOB_VER}" = "+0" ]; then
# --force-update \
# check legacylist
awk '{ print $1 }' $LEGACYLIST | grep "^$JOB_NAME$" >/dev/null && {
echo "?= Job $JOB_NAME is in the legacy list; forcing rebuild"
ret=1
} || {
[ "${AUTOSPEC_ARGS/--changelog}" = "${AUTOSPEC_ARGS}" ] &&
AUTOSPEC_ARGS="$AUTOSPEC_ARGS --changelog \"automatic update by autodist\""
launch_pkgs_loop autoupdate "$AUTOSPEC_ARGS $SEND_FORCE"
ret=$?
}
ret=1
# don't update when --rebuild is passed
if [ ! "$rebuild_packages" ]; then
# check legacylist
awk '{ print $1 }' $LEGACYLIST | grep "^$JOB_NAME$" >/dev/null && {
echo "?= Job $JOB_NAME is in the legacy list; forcing rebuild"
} || {
[ "${AUTOSPEC_ARGS/--changelog}" = "${AUTOSPEC_ARGS}" ] &&
AUTOSPEC_CHANGELOG="--changelog \"automatic update by autodist\"" || AUTOSPEC_CHANGELOG
launch_pkgs_loop autoupdate "$AUTOSPEC_ARGS $AUTOSPEC_CHANGELOG $SEND_FORCE"
ret=$?
}
fi
if [ $ret != 0 ]; then
if [ ! "$rebuild_packages" -a "${JOB_VER}" != "+0" ]; then
[ $ret -ge 2 -a "$do_autobuild" ] && {
@ -1161,8 +1263,8 @@ for JOB_NUM in `seq 1 ${#JOBNAME[*]}`; do
else
echo "%% Rebuilding package(s)"
[ "${AUTOSPEC_ARGS/--changelog}" = "${AUTOSPEC_ARGS}" ] &&
AUTOSPEC_ARGS="$AUTOSPEC_ARGS --changelog \"automatic rebuild by autodist\""
launch_pkgs_loop rebuild "$AUTOSPEC_ARGS" || {
AUTOSPEC_CHANGELOG="--changelog \"automatic rebuild by autodist\"" || AUTOSPEC_CHANGELOG=
launch_pkgs_loop rebuild "$AUTOSPEC_ARGS $AUTOSPEC_CHANGELOG" || {
case $SEVERITY in
0) ;;
1) echo "%! Error during package update for rebuild; skipping $JOB_NAME job."
@ -1184,8 +1286,8 @@ for JOB_NUM in `seq 1 ${#JOBNAME[*]}`; do
echo "%% Updating to version ${JOB_VER:1}"
# WARNING: JOB_VER must be passed to launch_pkgs_loop as the first string in the second parameter
[ "${AUTOSPEC_ARGS/--changelog}" = "${AUTOSPEC_ARGS}" ] &&
AUTOSPEC_ARGS="$AUTOSPEC_ARGS --changelog \"automatic version update by autodist\""
launch_pkgs_loop update "${JOB_VER:1} $AUTOSPEC_ARGS $SEND_FORCE" || {
AUTOSPEC_CHANGELOG="--changelog \"automatic version update by autodist\"" || AUTOSPEC_CHANGELOG=
launch_pkgs_loop update "${JOB_VER:1} $AUTOSPEC_ARGS $AUTOSPEC_CHANGELOG $SEND_FORCE" || {
if [ ! "$rebuild_packages" ]; then
case $SEVERITY in
0) ;;
@ -1197,8 +1299,8 @@ for JOB_NUM in `seq 1 ${#JOBNAME[*]}`; do
esac
else
[ "${AUTOSPEC_ARGS/--changelog}" = "${AUTOSPEC_ARGS}" ] &&
AUTOSPEC_ARGS="$AUTOSPEC_ARGS --changelog \"automatic rebuild by autodist\""
launch_pkgs_loop rebuild "$AUTOSPEC_ARGS" || {
AUTOSPEC_CHANGELOG="--changelog \"automatic rebuild by autodist\"" || AUTOSPEC_CHANGELOG=
launch_pkgs_loop rebuild "$AUTOSPEC_ARGS $AUTOSPEC_CHANGELOG" || {
case $SEVERITY in
0) ;;
1) echo "%! Error during package update for rebuild; skipping $JOB_NAME job."
@ -1263,9 +1365,16 @@ for JOB_NUM in `seq 1 ${#JOBNAME[*]}`; do
exit 1 ;;
esac
}
echo "== sending source rpms"
launch_pkgs_loop send "$AUTOSPEC_ARGS --norpm $SEND_SERVER_CMD"
if [ $? -gt 0 ]; then
# avoid calling autospec with --nosrpm --norpm (not working as expected and not useful)
if [ "${AUTOSPEC_ARGS/--nosrpm}" = "$AUTOSPEC_ARGS" ]; then
if [ $REBUILD_SRPMS ]; then
echo "== rebuilding and sending source rpms"
launch_pkgs_loop buildsrpm "$AUTOSPEC_ARGS --norpm"
else
echo "== sending source rpms"
fi
launch_pkgs_loop send "$AUTOSPEC_ARGS --norpm $SEND_SERVER_CMD"
if [ $? -gt 0 ]; then
case $SEVERITY in
0) ;;
1) echo "%! Error sending sources; skipping $JOB_NAME job."
@ -1273,15 +1382,16 @@ for JOB_NUM in `seq 1 ${#JOBNAME[*]}`; do
*) echo "!! Error sending sources; aborting."
exit 1 ;;
esac
else
# archive patches
if [ "$do_autobuild" ]; then
[ -e $AUTOUPDATEDIR/spec-patches-update/$JOB_NAME.spec.patch ] && \
mv $AUTOUPDATEDIR/spec-patches-update/$JOB_NAME.spec.patch \
$AUTOUPDATEDIR/spec-patches-update/old/${JOB_NAME}.spec.${DATE_NOW}.patch
[ -e $AUTOUPDATEDIR/spec-patches-build/$JOB_NAME.spec.patch ] && \
mv $AUTOUPDATEDIR/spec-patches-build/${JOB_NAME}.spec.${DATE_NOW}.patch \
$AUTOUPDATEDIR/spec-patches-build/old/${JOB_NAME}.spec.${DATE_NOW}.patch
else
# archive patches
if [ "$do_autobuild" ]; then
[ -e $AUTOUPDATEDIR/spec-patches-update/$JOB_NAME.spec.patch ] && \
mv $AUTOUPDATEDIR/spec-patches-update/$JOB_NAME.spec.patch \
$AUTOUPDATEDIR/spec-patches-update/old/${JOB_NAME}.spec.${DATE_NOW}.patch
[ -e $AUTOUPDATEDIR/spec-patches-build/$JOB_NAME.spec.patch ] && \
mv $AUTOUPDATEDIR/spec-patches-build/${JOB_NAME}.spec.${DATE_NOW}.patch \
$AUTOUPDATEDIR/spec-patches-build/old/${JOB_NAME}.spec.${DATE_NOW}.patch
fi
fi
fi
fi

14
autodist-bash_profile Normal file
View File

@ -0,0 +1,14 @@
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
if [ -d $HOME/bin ]; then
PATH=$PATH:$HOME/bin
fi
export PATH
unset USERNAME

8
autodist-bashrc Normal file
View File

@ -0,0 +1,8 @@
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

View File

@ -4,6 +4,7 @@
NUM=`echo "$QUERY_STRING" | sed -n 's/^.*NUM=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
HOST=`echo "$QUERY_STRING" | sed -n 's/^.*HOST=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
REP=`echo "$QUERY_STRING" | sed -n 's/^.*REP=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
AS_HOST=`echo "$QUERY_STRING" | sed -n 's/^.*AS_HOST=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
SHOWLOG=`echo "$QUERY_STRING" | sed -n 's/^.*SHOWLOG=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
SHOWINDEX=`echo "$QUERY_STRING" | sed -n 's/^.*SHOWINDEX=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
@ -49,15 +50,17 @@ if [ "$SHOWINDEX" ]; then
[ "${AUTOPORT_ARCH[$i]}" ] || continue
[ "${AUTOPORT_DISABLE[$i]}" -a "${AUTOPORT_DISABLE[$i]}" != "0" ] && continue
RNUM=-1
for r in ${AUTOPORT_REPOSITORIES[$i]}; do
RNUM=`expr $RNUM + 1`
if [ "${AUTOPORT_UPDATE[$i]}" ]; then
echo "<a href=\"?NUM=$i$HOST_ADD\">$r(${AUTOPORT_ARCH[$i]})</a>&nbsp;"
echo "<a href=\"?NUM=$i&REP=$RNUM$HOST_ADD\">$r(${AUTOPORT_ARCH[$i]})</a>&nbsp;"
elif [ "${AUTOPORT_CHROOT[$i]}" ]; then
echo "<a href=\"?NUM=$i$HOST_ADD\">$r(${AUTOPORT_ARCH[$i]})</a>&nbsp;"
echo "<a href=\"?NUM=$i&REP=$RNUM$HOST_ADD\">$r(${AUTOPORT_ARCH[$i]})</a>&nbsp;"
elif [ "${AUTOPORT_NATIVE[$i]}" ]; then
echo "<a href=\"?NUM=$i$HOST_ADD\">$r(${AUTOPORT_ARCH[$i]})</a>&nbsp;"
echo "<a href=\"?NUM=$i&REP=$RNUM$HOST_ADD\">$r(${AUTOPORT_ARCH[$i]})</a>&nbsp;"
elif [ "${AUTOPORT_CROSS[$i]}" ]; then
echo "<a href=\"?NUM=$i$HOST_ADD\">$r(${AUTOPORT_CROSS[$i]};${AUTOPORT_ARCH[$i]})</a>&nbsp;"
echo "<a href=\"?NUM=$i&REP=$RNUM$HOST_ADD\">$r(${AUTOPORT_CROSS[$i]};${AUTOPORT_ARCH[$i]})</a>&nbsp;"
fi
done
done
@ -66,7 +69,7 @@ if [ "$SHOWINDEX" ]; then
elif [ "$AS_HOST" = "0" ]; then
echo "Show: [<a href=\"?NUM=\">All hosts</a>] [<a href=\"?SHOWLOG=monitor\">Build hosts monitor</a>]<br>"
for h in `seq 0 ${#AUTOPORT_CGI_HOST[*]}`; do
curl "${AUTOPORT_CGI_HOST[$h]}?AS_HOST=$h&SHOWINDEX=1" 2>/dev/null
curl --connect-timeout 20 "${AUTOPORT_CGI_HOST[$h]}?AS_HOST=$h&SHOWINDEX=1" 2>/dev/null
done
echo "<hr>"
fi
@ -74,13 +77,13 @@ fi
[ ! "$SHOWLOG" -a "$HOST" = "$AS_HOST" ] && echo "<h2>Host: `hostname -s` (`uname -m`, kernel `uname -r`)</h2>"
if [ "$SHOWLOG" -a "$HOST" != "$AS_HOST" ]; then
curl "${AUTOPORT_CGI_HOST[$HOST]}?AS_HOST=$HOST&SHOWLOG=$SHOWLOG&NUM=$NUM&LOG=$LOG" 2>/dev/null
curl "${AUTOPORT_CGI_HOST[$HOST]}?AS_HOST=$HOST&SHOWLOG=$SHOWLOG&NUM=$NUM&REP=$REP&LOG=$LOG" 2>/dev/null
else
for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
if [ "$SHOWLOG" = "monitor" ]; then
echo "<h2>Build hosts monitor</h2>"
icecream-monitor localhost listcs | \
icecream-monitor $ICECREAM_MONITOR_HOST listcs | \
while read line; do
[ "${line:0:8}" = "200 done" ] && printon=
if [ "$printon" ]; then
@ -96,12 +99,15 @@ for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
RELOADTIME=15000
break
fi
RNUM=-1
for r in ${AUTOPORT_REPOSITORIES[$i]}; do
[ "${AUTOPORT_ARCH[$i]}" ] || continue
[ "${AUTOPORT_DISABLE[$i]}" -a "${AUTOPORT_DISABLE[$i]}" != "0" ] && continue
RNUM=`expr $RNUM + 1`
LOGDIR=`environment_logdir $i`
AUTOPORTLOGDIR=`environment_autoport_logdir $i`
ENVROOTDIR=`environment_rootdir $i`
if [ "${AUTOPORT_UPDATE[$i]}" ]; then
LOGFILE="$LOGDIR/autodist.log"
LASTLOGFILE="$LOGDIR/autodist-last.log"
@ -113,8 +119,8 @@ for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
AUTODISTLOGFILE="$AUTOPORTLOGDIR/${AUTOPORT_ARCH[$i]}/$r-current.log"
AUTODISTSTATEFILE="$AUTOPORTLOGDIR/autoport-$r-current"
elif [ "${AUTOPORT_NATIVE[$i]}" ]; then
LOGFILE="$LOGDIR/autoport-native-$r-${AUTOPORT_ARCH[$i]}.log"
LASTLOGFILE="$LOGDIR/log/autoport-native-$r-${AUTOPORT_ARCH[$i]}-last.log"
LOGFILE="/var/autodist/log/autoport-native-$r-${AUTOPORT_ARCH[$i]}.log"
LASTLOGFILE="/var/autodist/log/autoport-native-$r-${AUTOPORT_ARCH[$i]}-last.log"
AUTODISTLOGFILE="$AUTOPORTLOGDIR/${AUTOPORT_ARCH[$i]}/$r-current.log"
AUTODISTSTATEFILE="$AUTOPORTLOGDIR/autoport-$r-current"
elif [ "${AUTOPORT_CROSS[$i]}" ]; then
@ -124,8 +130,8 @@ for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
continue
fi
if [ "$SHOWLOG" ]; then
if [ "$HOST" = "$AS_HOST" -a "$NUM" = "$i" ]; then
echo -n "<h2>$SHOWLOG log in "
if [ "$HOST" = "$AS_HOST" -a "$NUM" = "$i" -a "$REP" = "$RNUM" ]; then
echo -n "<p><h2>$SHOWLOG log in "
if [ "${AUTOPORT_UPDATE[$i]}" ]; then
echo -n "update"
elif [ "${AUTOPORT_CHROOT[$i]}" ]; then
@ -139,9 +145,8 @@ for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
[ "${SHOWLOG}" = "current" -o "${SHOWLOG}" = "last" -a ! "${AUTOPORT_UPDATE[$i]}" ] && echo -n " ($r)"
echo -n ":</h2>"
cat << _EOF
<div class=downloadbox align=center>
<div class=output align=left style="height:550px;width:850px;">
<!--overflow:auto;font-size:8pt;border:1px solid #2b6600;margin:4px;padding:2px;color:lightgray;background-color:black;"-->
<div class="downloadbox" align="center">
<div class="output outputbox">
_EOF
echo -n "<pre><code>"
if [ "$SHOWLOG" = "current" ]; then
@ -149,22 +154,20 @@ _EOF
cat $LOGFILE | parse_build_output
elif [ "$SHOWLOG" = "last" ]; then
cat $LASTLOGFILE | parse_build_output
LASTLOGDETAILS=`tail $LASTLOGFILE | grep "See .* for details" | sed "s|.*See \(.*\) for details.*|\1|"`
cat $ENVROOTDIR/$LASTLOGDETAILS | parse_build_output
else
# Security check
[ "${SHOWLOG/\/\.}" != "${SHOWLOG}" ] && continue
if [ "${AUTOPORT_CHROOT[$i]}" ]; then
BUILDLOGDIR="$LOGDIR"
elif [ "${AUTOPORT_NATIVE[$i]}" -o "${AUTOPORT_UPDATE[$i]}" ]; then
BUILDLOGDIR="/var/autodist/log/"
fi
BUILDLOGDIR="$LOGDIR"
if [ "${SHOWLOG/\/ok\/}" != "${SHOWLOG}" -o "${SHOWLOG/\failed\/}" != "${SHOWLOG}" ]; then
SHOWLOGPKG=${SHOWLOG/*\/}
[ "${SHOWLOGPKG}" ] || continue
echo "<table style=\"color:black\"><tr><td colspan=3>Last ${SHOWLOGPKG} logs:</td>"
echo "<table style=\"color:black;width:auto;\"><tr><td colspan=3>Last ${SHOWLOGPKG} logs:</td>"
for t in prepare update build install send; do
echo -n "<tr><td>$t:</td><td>"
[ -e ${BUILDLOGDIR}${t}/ok/${SHOWLOGPKG} ] && echo -n "<td><a style=\"color:green;text-decoration:none\" target=_autodist href=\"?NUM=$i$HOST_ADD&SHOWLOG=${t}/ok/${SHOWLOGPKG}\">OK</a></td>" || echo "<td></td>"
[ -e ${BUILDLOGDIR}${t}/failed/${SHOWLOGPKG} ] && echo -n "<td><a style=\"color:green;text-decoration:none\" target=_autodist href=\"?NUM=$i$HOST_ADD&SHOWLOG=${t}/failed/${SHOWLOGPKG}\">FAILED</a></td>" || echo "<td></td>"
[ -e ${BUILDLOGDIR}${t}/ok/${SHOWLOGPKG} ] && echo -n "<td><a style=\"color:green;text-decoration:none\" target=_autodist href=\"?NUM=$i&REP=$RNUM$HOST_ADD&SHOWLOG=${t}/ok/${SHOWLOGPKG}\">OK</a></td>" || echo "<td></td>"
[ -e ${BUILDLOGDIR}${t}/failed/${SHOWLOGPKG} ] && echo -n "<td><a style=\"color:green;text-decoration:none\" target=_autodist href=\"?NUM=$i&REP=$RNUM$HOST_ADD&SHOWLOG=${t}/failed/${SHOWLOGPKG}\">FAILED</a></td>" || echo "<td></td>"
echo "</tr>"
done
echo "</table>"
@ -184,37 +187,37 @@ _EOF
fi
echo -n "</pre></code>"
echo -n "</div></div>"
break
# break
fi
[ "${AUTOPORT_UPDATE[$i]}" ] && break
elif [ ! "$SHOWLOG" ]; then
RELOADTIME=60000
RELOADTIME=600000
[[ "$NUM" && "$NUM" != "$i" ]] && continue
[[ "$HOST" = "$AS_HOST" ]] || continue
if [ "${AUTOPORT_UPDATE[$i]}" ]; then
echo "<b>* <a target=_autodist href=\"?NUM=$i&HOST=$AS_HOST\">$r</a>(${AUTOPORT_ARCH[$i]}) (type:autodist update)"
echo " [ <a target=_autodist href=\"?SHOWLOG=current&NUM=$i$HOST_ADD\">log</a> <a target=_autodist href=\"?SHOWLOG=last&NUM=$i$HOST_ADD\">last</a> ]</b>"
echo "<b>* <a target=_autodist href=\"?NUM=$i&REP=$RNUM&HOST=$AS_HOST\">$r</a>(${AUTOPORT_ARCH[$i]}) (type:autodist update)"
echo " [ <a target=_autodist href=\"?SHOWLOG=current&NUM=$i&REP=$RNUM$HOST_ADD\">log</a> <a target=_autodist href=\"?SHOWLOG=last&NUM=$i&REP=$RNUM$HOST_ADD\">last</a> ]</b>"
fi
if [ "${AUTOPORT_CHROOT[$i]}" ]; then
echo "<b>* <a target=_autodist href=\"?NUM=$i&HOST=$AS_HOST\">$r</a>(${AUTOPORT_ARCH[$i]}) (type:chroot autoport</a> chroot:${AUTOPORT_CHROOT[$i]})"
echo " [ <a target=_autodist href=\"?SHOWLOG=current&NUM=$i$HOST_ADD\">log</a> <a target=_autodist href=\"?SHOWLOG=last&NUM=$i$HOST_ADD\">last</a> ]</b>"
echo "<b>* <a target=_autodist href=\"?NUM=$i&REP=$RNUM&HOST=$AS_HOST\">$r</a>(${AUTOPORT_ARCH[$i]}) (type:chroot autoport</a> chroot:${AUTOPORT_CHROOT[$i]})"
echo " [ <a target=_autodist href=\"?SHOWLOG=current&NUM=$i&REP=$RNUM$HOST_ADD\">log</a> <a target=_autodist href=\"?SHOWLOG=last&NUM=$i&REP=$RNUM$HOST_ADD\">last</a> ]</b>"
fi
if [ "${AUTOPORT_NATIVE[$i]}" ]; then
echo "<b>* <a target=_autodist href=\"?NUM=$i&HOST=$AS_HOST\">$r</a>(${AUTOPORT_ARCH[$i]}) (type:native autoport)"
echo " [ <a target=_autodist href=\"?SHOWLOG=current&NUM=$i$HOST_ADD\">log</a> <a target=_autodist href=\"?SHOWLOG=last&NUM=$i$HOST_ADD\">last</a> ]</b>"
echo "<b>* <a target=_autodist href=\"?NUM=$i&REP=$RNUM&HOST=$AS_HOST\">$r</a>(${AUTOPORT_ARCH[$i]}) (type:native autoport)"
echo " [ <a target=_autodist href=\"?SHOWLOG=current&NUM=$i&REP=$RNUM$HOST_ADD\">log</a> <a target=_autodist href=\"?SHOWLOG=last&NUM=$i&REP=$RNUM$HOST_ADD\">last</a> ]</b>"
fi
if [ "${AUTOPORT_CROSS[$i]}" ]; then
echo "<b>* <a target=_autodist href=\"?NUM=$i&HOST=$AS_HOST\">cross-platform</a> autoport (arch:${AUTOPORT_CROSS[$i]})</b>"
echo " [ <a target=_autodist href=\"?SHOWLOG=current&NUM=$i$HOST_ADD\">last</a> ]</b>"
echo "<b>* <a target=_autodist href=\"?NUM=$i&REP=$RNUM&HOST=$AS_HOST\">cross-platform</a> autoport (arch:${AUTOPORT_CROSS[$i]})</b>"
echo " [ <a target=_autodist href=\"?SHOWLOG=current&NUM=$i&REP=$RNUM$HOST_ADD\">last</a> ]</b>"
fi
cat << _EOF
<div class=downloadbox align=center>
<div align=left style="background-color: white; height: 250px; width: 850px; overflow: auto; font-size: 8pt; border:1px solid #2b6600; margin: 4px; padding:4; background-color: #e0f2d0;">
<div class="downloadbox" align="center">
<div align="left" class="showlogbox">
_EOF
echo "<pre>"
echo -n "<pre style='margin:1px;word-wrap:normal;white-space:pre;'>"
unset BUILDNOWIDX BUILDLOG BUILDNOW BUILDNOWSTATUS SCHEDULED STARTTIME AUTODIST_PID ENDTIME
if [ "${AUTOPORT_UPDATE[$i]}" ]; then
BUILDNOWIDX=0
@ -235,7 +238,7 @@ _EOF
BUILDNOW[$BUILDNOWIDX]="$1"
[ "$4" ] && BUILDLOG[$BUILDNOWIDX]="${BUILDLOG[$BUILDNOWIDX]} `echo $4 | sed "s|.*autodist/log/||"`"
# BUILDLOG[$BUILDNOWIDX]="${BUILDLOG[$BUILDNOWIDX]} $2/$3/$1.i586"
BUILDNOWSTATUS[$BUILDNOWIDX]=
BUILDNOWSTATUS[$BUILDNOWIDX]=$3
BUILDNOWIDX=`expr $BUILDNOWIDX + 1`
done < $STATEFILE
else
@ -266,7 +269,7 @@ _EOF
BUILDLOG[$BUILDNOWIDX]="${BUILDLOG[$BUILDNOWIDX]} $CURRLOGFILE"
fi
# BUILDLOG[$BUILDNOWIDX]="${BUILDLOG[$BUILDNOWIDX]} $2/$3/$1.i586"
BUILDNOWSTATUS[$BUILDNOWIDX]=
BUILDNOWSTATUS[$BUILDNOWIDX]=$3
BUILDNOWIDX=`expr $BUILDNOWIDX + 1`
done < $AUTODISTSTATEFILE
for p in `dirname $LOGFILE`/current.*; do
@ -293,9 +296,9 @@ _EOF
else
WEBBUILD_APPEND="&LOGSTATUSOK=false"
fi
echo -n "<a target=_webbuild href=\"/distribution/webbuild.php?REQUEST=autobuildedit&ENVIRONMENT=$i&PACKAGE=$JOBNAME&LOGTYPE=$OPERATIONNAME${WEBBUILD_APPEND}\"><b>$JOBNAME</b></a>: "
echo -n "<a target=_webbuild href=\"$AUTOPORT_WEBBUILD_HOST?REQUEST=autobuildedit&ENVIRONMENT=$i&PACKAGE=$JOBNAME&LOGTYPE=$OPERATIONNAME${WEBBUILD_APPEND}\"><b>$JOBNAME</b></a>: "
else
echo -n "<a target=_webbuild href=\"/distribution/webbuild.php?ENVIRONMENT=$i&PACKAGE=$JOBNAME\"><b>$JOBNAME</b></a>: "
echo -n "<a target=_webbuild href=\"$AUTOPORT_WEBBUILD_HOST?ENVIRONMENT=$i&PACKAGE=$JOBNAME\"><b>$JOBNAME</b></a>: "
fi
fi
rowcnt=0
@ -308,15 +311,26 @@ _EOF
# fi
case $OPERATIONNAME-$OPERATIONSTATUS in
build-ok|send-ok|install-ok|retryinstall-ok)
echo -n "<a target=_autodist href=\"?SHOWLOG=$l&NUM=$i$HOST_ADD\">$OPERATIONNAME:$OPERATIONSTATUS</a>"
echo -n "<a target=_autodist href=\"?SHOWLOG=$l&NUM=$i&REP=$RNUM$HOST_ADD\">$OPERATIONNAME:$OPERATIONSTATUS</a>"
;;
*-failed)
echo -n "<a target=_autodist href=\"?SHOWLOG=$l&NUM=$i$HOST_ADD\"><font color=red>$OPERATIONNAME:$OPERATIONSTATUS</font></a>"
update-failed|autoupdate-failed)
if [ "${BUILDNOWSTATUS[$b]}" = "4" ]; then
echo -n "<a target=_autodist href=\"?SHOWLOG=$l&NUM=$i&REP=$RNUM$HOST_ADD\"><font color=green>$OPERATIONNAME:up-to-date</font></a>"
elif [ "${BUILDNOWSTATUS[$b]}" = "3" ]; then
echo -n "<a target=_autodist href=\"?SHOWLOG=$l&NUM=$i&REP=$RNUM$HOST_ADD\"><font color=darkgoldenrod>$OPERATIONNAME:unknown</font></a>"
elif [ "${BUILDNOWSTATUS[$b]}" = "2" ]; then
echo -n "<a target=_autodist href=\"?SHOWLOG=$l&NUM=$i&REP=$RNUM$HOST_ADD\"><font color=darkgoldenrod>$OPERATIONNAME:newer</font></a>"
else
echo -n "<a target=_autodist href=\"?SHOWLOG=$l&NUM=$i&REP=$RNUM$HOST_ADD\"><font color=red>$OPERATIONNAME:$OPERATIONSTATUS</font></a>"
fi
;;
*) echo -n "<a target=_autodist href=\"?SHOWLOG=$l&NUM=$i$HOST_ADD\"><font color=black>$OPERATIONNAME:$OPERATIONSTATUS</font></a>"
*-ok) echo -n "<a target=_autodist href=\"?SHOWLOG=$l&NUM=$i&REP=$RNUM$HOST_ADD\"><font color=black>$OPERATIONNAME:$OPERATIONSTATUS</font></a>"
;;
*)
echo -n "<a target=_autodist href=\"?SHOWLOG=$l&NUM=$i&REP=$RNUM$HOST_ADD\"><font color=red>$OPERATIONNAME:$OPERATIONSTATUS</font></a>"
;;
esac
# [ "$SUBJOBNAME" != "$JOBNAME" ] && echo -en "(<a href=\"/distribution/webbuild.php?ENVIRONMENT=$i&PACKAGE=$SUBJOBNAME\" target=\"webbuild\">$SUBJOBNAME</a>)"
# [ "$SUBJOBNAME" != "$JOBNAME" ] && echo -en "(<a href=\"$AUTOPORT_WEBBUILD_HOST?ENVIRONMENT=$i&PACKAGE=$SUBJOBNAME\" target=\"webbuild\">$SUBJOBNAME</a>)"
echo -n " "
rowcnt=`expr $rowcnt + 1`
done
@ -324,14 +338,13 @@ _EOF
if [[ $b -eq $BUILDNOWIDX-1 && ! "$ENDTIME" ]]; then
echo -n "<font color=green>${BUILDOPERATION[$b]}(in progress...)</font>"
fi
[ "${BUILDNOWSTATUS[$b]}" ] && echo -n "<i>(${BUILDNOWSTATUS[$b]})</i>"
LASTJOBNAME=$JOBNAME
done
[ "$LASTJOBNAME" ] && echo
if [ "$ENDTIME" ]; then
echo "<b>End:</b> $ENDTIME"
elif [ "$AUTODIST_PID" ]; then
echo "<b>End: <a target=_autodist href=\"?SHOWLOG=current.$AUTODIST_PID&NUM=$i$HOST_ADD\">in progress</a></b>"
echo "<b>End: <a target=_autodist href=\"?SHOWLOG=current.$AUTODIST_PID&NUM=$i&REP=$RNUM$HOST_ADD\">in progress</a></b>"
fi
echo
# grep -v "^=" $LOGFILE | tail -n "$LINES" | sed "s|.*\r||"
@ -344,10 +357,14 @@ done
# only root host (0) calls other hosts
if [ "$AS_HOST" = "0" -a ! "$SHOWLOG" ]; then
for h in `seq 1 ${#AUTOPORT_CGI_HOST[*]}`; do
if [ "$NUM" -a "$HOST" = "$h" ]; then
curl "${AUTOPORT_CGI_HOST[$h]}?AS_HOST=$h&LINES=$LINES&NUM=$NUM&HOST=$HOST" 2>/dev/null
elif [ ! "$NUM" ]; then
curl "${AUTOPORT_CGI_HOST[$h]}?AS_HOST=$h&LINES=$LINES" 2>/dev/null
WBHOSTURL=`echo ${AUTOPORT_CGI_HOST[$h]} | sed "s|^\(http[s]*://[^/]*\).*$|\1|"`
if [ "$WBHOSTURL" ]; then
curl -m1 -s -I ${WBHOSTURL} >/dev/null || continue
if [ "$NUM" -a "$HOST" = "$h" ]; then
curl "${AUTOPORT_CGI_HOST[$h]}?AS_HOST=$h&LINES=$LINES&NUM=$NUM&REP=$RNUM&HOST=$HOST" 2>/dev/null
elif [ ! "$NUM" ]; then
curl "${AUTOPORT_CGI_HOST[$h]}?AS_HOST=$h&LINES=$LINES" 2>/dev/null
fi
fi
done
fi

33
autodist-inspect Executable file
View File

@ -0,0 +1,33 @@
#!/bin/bash
[ -e /etc/autodist/config ] || {
echo "ERROR: missing configuration file /etc/autodist/config."
exit 1
}
. /etc/autodist/config
shopt -s nocaseglob
checkpkg=$1
if [ ! "$checkpkg" ]; then
echo "Usage:
$0 query"
exit 1
fi
[ "$LOCAL_REPS_BASE_DIR" -a -e "$LOCAL_REPS_BASE_DIR" ] || {
echo "ERROR: LOCAL_REPS_BASE_DIR needs to be defined and local repositories to exists."
exit 1
}
echo "=== distromatic sources: ==="
head -n2 ${LOCAL_REPS_BASE_DIR}/distromatic/base/sources
grep -i $checkpkg ${LOCAL_REPS_BASE_DIR}/distromatic/base/sources
#tail -n+2 ${PREFIX}/distromatic/base/deps-* | grep -i $checkpkg
echo -e "\n=== distdb: ==="
grep -i $checkpkg ${LOCAL_REPS_BASE_DIR}/base/distdb
for repo in base devel-makedist devel-autodist devel-misc; do
echo -e "\n=== ${repo}: ==="
ls ${LOCAL_REPS_BASE_DIR}/${repo}/SRPMS.base/*$checkpkg* 2>/dev/null
ls ${LOCAL_REPS_BASE_DIR}/${repo}/RPMS.*/*$checkpkg* 2>/dev/null
done

77
autodist-launcher Executable file
View File

@ -0,0 +1,77 @@
#!/bin/bash
#
# autodist launcher
# (c) 2021 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
. /etc/autodist/config
. /etc/sysconfig/autoport
# Disable icecc
export PATH=/usr/bin:$PATH
i=$1
[ "$i" ] || {
echo "Usage: autodist-launcher autodist_conf"
exit 1
}
PIDFILE=/run/autodist/autodist-launcher-${i}.pid
[ -e $PIDFILE ] && {
PIDCHECK=`cat $PIDFILE`
[ "$PIDCHECK" -a -e /proc/$PIDCHECK ] && {
echo "autodist-launcher for configuration $i already running; exiting."
exit 0
}
}
echo $$ > $PIDFILE
trap "rm -f $PIDFILE; exit 1" SIGQUIT SIGINT SIGKILL SIGTERM
HOUR=`date +%H`
[ "`uname -m`" = "x86_64" ] && HOST_IS_X86_64=1
AUTODIST_PIDFILE=/run/autodist/autodist.pid
LOGFILE=/var/autodist/log/autodist.log
LASTLOGFILE=/var/autodist/log/autodist-last.log
if [ -e $AUTODIST_PIDFILE ]; then
PIDCHECK=`cat $AUTODIST_PIDFILE`
if [ "$PIDCHECK" -a -e /proc/$PIDCHECK ]; then
echo "autodist already running; exiting."
exit 0
fi
fi
for r in ${AUTOPORT_REPOSITORIES[$i]}; do
[ "${AUTOPORT_ARCH[$i]}" ] || continue
[ "${AUTOPORT_DISABLE[$i]}" -a "${AUTOPORT_DISABLE[$i]}" != "0" ] && continue
if [ "$HOST_IS_X86_64" -a "${AUTOPORT_ARCH[$i]}" != "x86_64" ]; then
CMD_PREFIX=linux32
else
CMD_PREFIX=
fi
# TODO: parametrize DISTROMATIC_REPOSITORY and following log files
DISTROMATIC_REPOSITORY=devel-future
REPLOGFILE=$LOCAL_REPS_BASE_DIR/$r/autodist.log
REPLASTLOGFILE=$LOCAL_REPS_BASE_DIR/$r/autodist-last.log
if [ "${AUTOPORT_UPDATE[$i]}" ]; then
if [ ! "$AUTOPORT_UPDATE_NO_DISTROMATIC" ]; then
distromatic -q -t $DISTROMATIC_REPOSITORY --gensrcpkglist > $LOCAL_REPS_BASE_DIR/$DISTROMATIC_REPOSITORY/srcpkglist 2>/dev/null
fi
#autodist-upstream-updates -q -h -u -r $DISTROMATIC_REPOSITORY -o $r \
# > $LOCAL_REPS_BASE_DIR/distromatic/$r/_popular.html
autodist-upstream-updates -q -u -r $DISTROMATIC_REPOSITORY -o $r
[ -e $LOGFILE ] && mv $LOGFILE $LASTLOGFILE
su -l autodist -c "$CMD_PREFIX autodist -a --server $r" > $LOGFILE
[ -e $REPLOGFILE ] && mv $REPLOGFILE $REPLASTLOGFILE
cp $LOGFILE $REPLOGFILE
fi
done
rm -f ${PIDFILE}

1117
autodist-repository Executable file

File diff suppressed because it is too large Load Diff

1
autodist-tmpfilesd Normal file
View File

@ -0,0 +1 @@
d /run/autodist 775 autodist packager

View File

@ -1,7 +1,7 @@
#!/bin/bash
#
# autodist-tool
# Copyright (c) 2008-2012 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Copyright (c) 2008-2014 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
. /etc/autodist/config
me=(${0##*/} $VERSION "Tue Oct 28 2008")
@ -14,7 +14,6 @@ SOURCESDIR=$AUTOUPDATEDIR/sources/
SRCPKGLIST=/var/ftp/pub/openmamba/$AUTODIST_REPOSITORY/srcpkglist
SUCCESSLISTDIR=$AUTOUPDATEDIR
SKIPPEDLISTDIR=$AUTOUPDATEDIR
DISTDBFILE=/etc/autodist/distdb
#eval `autospec -q --eval="srpms_dir"`
#eval `autospec -q --eval="rpms_dir"`
@ -133,7 +132,7 @@ elif [ "$COMMAND" = "schedule" ]; then
# while read line; do
# set -- $line
# if [ "`echo \" $1 \" | grep \" $JOB \"`" ]; then
if [ "`grep \"^$JOB \" $SRCPKGLIST`" -o "`grep \"^$JOB=(\" $DISTDBFILE`" ]; then
if [ "`grep \"^$JOB \" $SRCPKGLIST`" -o "`autodist --list-jobs | grep ^$JOB$`" ]; then
echo "Job $JOB scheduled for automatic update or rebuild"
sed -i "/^$JOB .*/d" $AUTOUPDATEDIR/manual.in
echo "$JOB $JOBVER 0" >> $AUTOUPDATEDIR/manual.in || exit 1
@ -165,7 +164,7 @@ elif [ "$COMMAND" = "skip" ]; then
if [ "$SKIPPEDLINE" ]; then
sed -i "/^$PKGNAME /d" $SKIPPEDLISTDIR/*.skip
fi
if [ "`grep \"^$JOB \" $SRCPKGLIST`" -o "`grep \"^$JOB=(\" $DISTDBFILE`" ]; then
if [ "`grep \"^$JOB \" $SRCPKGLIST`" -o "`autodist --list-jobs | grep ^$JOB$`" ]; then
echo "$JOB $DATE_NOW 101" >> $SKIPPEDLISTDIR/auto.skip
echo "Job $JOB skipped from automatic builds"
else

View File

@ -1,7 +1,7 @@
#!/bin/bash
#
# autodist upstream updates - find upstream packages updates from different internet resources
# Copyright (c) 2004-2013 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Copyright (c) 2004-2023 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
#[ -r /etc/sysconfig/openmamba-central ] || {
@ -10,7 +10,7 @@
#}
. /etc/autodist/config
DISTROMATIC_PREFIX=/distribution/distromatic.html?
DISTROMATIC_REPOSITORY=devel
DISTROMATIC_REPOSITORY=base
DISTDB=/etc/autodist/distdb
BLACKLISTDB=/etc/autodist/blacklist
DISTDBDIR=/etc/autodist/distdb.d
@ -24,16 +24,6 @@ XORG_RELEASE=current
done
}
[ -r $PKGLIST_FILE ] || {
echo "Error: file $PKGLIST_FILE cannot be read; aborting." >&2
exit 1
}
[ -r $ALIASES_DB ] || {
echo "Error: file $ALIASES_DB cannot be read; aborting." >&2
exit 1
}
function usage()
{
echo "openmamba-upstream-updates - finds upstream packages updates from different internet resources"
@ -43,9 +33,10 @@ function usage()
echo
echo " -h: generate distromatic HTML output"
echo " -m: report missing packages only"
echo " -s: skip fetching and parsing upstream updates"
echo " -u: output not up-to-date packages only"
echo " -q: produces quite output"
echo " -r repository: specify the distromatic base (default: devel)"
echo " -r repository: specify the distromatic base (default: base)"
echo " -o repository: specify the repository for output data (default: same as base repository)"
echo
}
@ -55,7 +46,7 @@ get_job_vector() {
local JNAME_ESCAPED=`echo $JNAME | tr - _ | tr . _ | tr @ _`
# resolve JOB_NAME from distdb
local jobtmpfile=`tempfile`
local jobtmpfile=`mktemp`
# hack to get an array variable named as $j assigned to the JOB array
echo "echo \${$JNAME_ESCAPED[*]}" > $jobtmpfile
JOB=(`. $jobtmpfile`)
@ -78,14 +69,14 @@ function version_compare()
A=$1
B=$2
if [[ ${1} =~ "^[0-9]+$" && ${2} =~ "^[0-9]+$" ]]; then
if [ ${A/[a-zA-Z_]*} -gt ${B/[a-zA-Z_]*} ]; then
if [[ ${1} =~ ^[0-9]+$ && ${2} =~ ^[0-9]+$ ]]; then
if [ $((10#${A/[a-zA-Z_]*})) -gt $((10#${B/[a-zA-Z_]*})) ]; then
return 1
elif [ ${A/[a-zA-Z_]*} -lt ${B/[a-zA-Z_]*} ]; then
elif [ $((10#${A/[a-zA-Z_]*})) -lt $((10#${B/[a-zA-Z_]*})) ]; then
return 2
fi
else
if [[ "$A" > "$B" ]]; then
else
if [[ ${1} =~ ^[0-9]+$ || "$A" > "$B" ]]; then
return 1
elif [[ "$A" < "$B" ]]; then
return 2
@ -132,6 +123,7 @@ while [ "$1" ]; do
else
missing_only=1
fi ;;
-s) skip_parsing=1 ;;
-u) needupdate_only=1 ;;
-r) [ "$2" ] || {
echo "Error: option -r requires repository name as parameter"
@ -165,117 +157,164 @@ CONFIG_DIR=$CACHE_DIR
UPDATES_DB=$CACHE_DIR/upstream-updates
ALIASES_DB=$CACHE_DIR/aliases
MANUALVER_DB=$CACHE_DIR/manualver
BLACKLIST_DB_PREFIX=$CACHE_DIR/blacklist.
tmpfile=`mktemp -q -t autodist-upstream-updates.XXXXXXXX`
buildstmp=`mktemp -q -t autodist-upstream-updates.XXXXXXXX`
tail -n+2 $BUILDS_FILE > $buildstmp
[ -s $PKGLIST_FILE ] || {
echo "Error: file $PKGLIST_FILE is missing or empty; aborting." >&2
exit 1
}
# parse Arch Linux package list
[ "$quiet" ] || echo -n "Parsing Arch Linux packages list..." >&2
#for page in `seq 1 45`; do
for rep in core community extra; do
# SOURCEURL="https://www.archlinux.org/packages/?page=$page&sort=-last_update&q=&arch=i686&maintainer=&flagged="
SOURCEURL="http://lug.mtu.edu/archlinux/$rep/os/i686/"
curl -s "$SOURCEURL" | \
grep ".pkg." | grep -v ".sig\"" | \
while read line; do
line=`echo $line | sed "s|.*href=\"\([^\"]*\)\">.*|\1|"`
pkg=`echo $line | sed "s|\(.*\)-[^-]*-[^-]*-[^-]*|\1|"`
ver=`echo $line | sed "s|.*-\([^-]*\)-[^-]*-[^-]*|\1|"`
alias=`grep "^$pkg " $ALIASES_DB`
[ "$alias" ] || alias=`grep "^lib$pkg " $ALIASES_DB`
[ "$alias" ] && pkgalias=${alias/* /} || pkgalias=$pkg
line=`grep -i "^$pkgalias:" $buildstmp || grep -i "^lib$pkgalias:" $buildstmp || grep -i " $pkgalias[^-_A-Za-z0-9]" $buildstmp`
if [ "$line" ]; then
[ "$pkg" != "$pkgalias" ] && alias=$pkgalias || alias=
[ "$pkg" -a "$ver" ] && {
echo "$pkg $ver $SOURCEURL ${alias}" >> $tmpfile
}
fi
done
done
rm -f $buildstmp
[ -r $ALIASES_DB ] || {
echo "Error: file $ALIASES_DB cannot be read; aborting." >&2
exit 1
}
# parse X.org stable packages list
[ "$quiet" ] || echo "Parsing X.org release ftp directory..." >&2
SOURCEURL="ftp://ftp.x.org/pub/$XORG_RELEASE/src/everything/"
curl -s $SOURCEURL -l | sed "s|\.tar\..*||" | sort -u |
while read line; do
if [ "$line" ]; then
ver=`echo $line | sed "s|.*-||"`
pkg="${line/-$ver}"
alias=`grep "^$pkg " $ALIASES_DB`
if [ ! "$alias" -a "${pkg:0:5}" == "xf86-" ]; then
alias="$pkg xorg-drv-${pkg/xf86-}"
else
parse_arch_linux() {
# parse Arch Linux package list
[ "$quiet" ] || echo -n "Parsing Arch Linux packages list..." >&2
#for page in `seq 1 45`; do
for rep in core community extra; do
# SOURCEURL="https://www.archlinux.org/packages/?page=$page&sort=-last_update&q=&arch=i686&maintainer=&flagged="
SOURCEURL="http://lug.mtu.edu/archlinux/$rep/os/x86_64/"
curl -L -s "$SOURCEURL" | \
grep ".pkg." | grep -v ".sig\"" | \
while read line; do
line=`echo $line | sed "s|.*href=\"\([^\"]*\)\">.*|\1|"`
pkg=`echo $line | sed "s|\(.*\)-[^-]*-[^-]*-[^-]*|\1|"`
ver=`echo $line | sed "s|.*-\([^-]*\)-[^-]*-[^-]*|\1|;s|.*%3a||i;s|%2b.*||i"`
alias=`grep "^$pkg " $ALIASES_DB`
# Skip blackisted
if [ -e ${BLACKLIST_DB_PREFIX}arch ]; then
grep -q "^$pkg$" ${BLACKLIST_DB_PREFIX}arch && continue
fi
[ "$alias" ] || alias=`grep "^lib$pkg " $ALIASES_DB`
fi
[ "$pkg" -a "$ver" ] && echo "$pkg $ver $SOURCEURL ${alias/* /}" >> $tmpfile
fi
done
[ "$alias" ] && pkgalias=${alias/* /} || pkgalias=$pkg
line=`grep -i "^$pkgalias:" $buildstmp || grep -i "^lib$pkgalias:" $buildstmp || grep -i " $pkgalias[^-_A-Za-z0-9]" $buildstmp`
if [ "$line" ]; then
[ "$pkg" != "$pkgalias" ] && alias=$pkgalias || alias=
[ "$pkg" -a "$ver" ] && {
echo "$pkg $ver $SOURCEURL ${alias}" >> $tmpfile
}
fi
done
done
rm -f $buildstmp
}
# parse Gnome stable packages list
[ "$quiet" ] || echo "Parsing GNOME stable versions file..." >&2
for f in versions-stable versions-stable-extras; do
SOURCEURL="http://people.gnome.org/~vuntz/tmp/versions/$f"
curl -s $SOURCEURL | grep -v "^#" |
parse_xorg() {
# parse X.org stable packages list
[ "$quiet" ] || echo "Parsing X.org release ftp directory..." >&2
SOURCEURL="ftp://ftp.x.org/pub/$XORG_RELEASE/src/everything/"
curl -L -s $SOURCEURL -l | sed "s|\.tar\..*||" | sort -u |
while read line; do
if [ "$line" ]; then
IFS=":"
set -- $line
pkg="$2"
ver="$3"
ver=`echo $line | sed "s|.*-||"`
pkg="${line/-$ver}"
if [ -e ${BLACKLIST_DB_PREFIX}xorg ]; then
grep -q "^$pkg$" ${BLACKLIST_DB_PREFIX}xorg && continue
fi
alias=`grep "^$pkg " $ALIASES_DB`
[ "$alias" ] || alias=`grep "^lib$pkg " $ALIASES_DB`
if [ ! "$alias" -a "${pkg:0:5}" == "xf86-" ]; then
alias="$pkg xorg-drv-${pkg/xf86-}"
else
[ "$alias" ] || alias=`grep "^lib$pkg " $ALIASES_DB`
fi
[ "$pkg" -a "$ver" ] && echo "$pkg $ver $SOURCEURL ${alias/* /}" >> $tmpfile
fi
done
done
}
# parse distrowatch.com packages list
[ "$quiet" ] || echo "Parsing Distrowatch packages list..." >&2
SOURCEURL="http://distrowatch.com/packages.php"
lynx -width 300 -dump $SOURCEURL |
while read line; do
[ "`echo $line | grep "Package Version Note"`" ] && start_print=1
[ "`echo $line | grep "____________________"`" ] && unset start_print
[ "$start_print" ] && {
set -- $line
pkg="${1/\[*\]/}"
ver="${2/\[*\]/}"
alias=`grep "^$pkg " $ALIASES_DB`
[ "$pkg" != "chromium" ] && \
echo "$pkg $ver $SOURCEURL ${alias/* /}" >> $tmpfile
}
done
cat $tmpfile | sort -uf > $UPDATES_DB.tmp
rm -f $tmpfile
> $UPDATES_DB
unset lastpkg
while read pkg ver upsource alias; do
# skip updates to unstable versions
unset found_beta
for b in alpha beta rc "~"; do
[ "${ver/$b}" != "${ver}" ] && found_beta=1
parse_gnome() {
# parse Gnome stable packages list
[ "$quiet" ] || echo "Parsing GNOME stable versions file..." >&2
for f in versions-stable versions-stable-extras; do
SOURCEURL="https://people.gnome.org/~vuntz/tmp/versions/$f"
curl -s -L $SOURCEURL | grep -v "^#" |
while read line; do
if [ "$line" ]; then
IFS=":"
set -- $line
pkg="$2"
if [ -e ${BLACKLIST_DB_PREFIX}gnome ]; then
grep -q "^$pkg$" ${BLACKLIST_DB_PREFIX}gnome && continue
fi
ver="$3"
alias=`grep "^$pkg " $ALIASES_DB`
[ "$alias" ] || alias=`grep "^lib$pkg " $ALIASES_DB`
if [ "$pkg" -a "$ver" ]; then
ver1=$(echo $ver | cut -d. -f1)
ver2=$(echo $ver | cut -d. -f2)
if [ "$ver2" -a $(($ver2 % 2)) -ne 0 ]; then
# skip unstable versions with odd numbers
continue
else
echo "$pkg $ver $SOURCEURL ${alias/* /}" >> $tmpfile
fi
fi
fi
done
done
[ "$found_beta" ] && continue
if [ "$pkg" = "$lastpkg" ]; then
# echo "Warning: duplicate found: $pkg lastver: $lastver ver: $ver" >&2
version_find_bigger $lastver $ver
vercmp=$?
if [ $vercmp -eq 2 ]; then
sed -i "/^$lastpkg $lastver /d" $UPDATES_DB
echo "$pkg $ver $upsource $alias" >> $UPDATES_DB
fi
else
echo "$pkg $ver $upsource $alias" >> $UPDATES_DB
}
parse_distromatic() {
# parse distrowatch.com packages list
[ "$quiet" ] || echo "Parsing Distrowatch packages list..." >&2
SOURCEURL="https://distrowatch.com/packages.php"
lynx -width 300 -dump $SOURCEURL |
while read line; do
[ "`echo $line | grep "Package Version Note"`" ] && start_print=1
[ "`echo $line | grep "____________________"`" ] && unset start_print
[ "$start_print" ] && {
set -- $line
pkg="${1/\[*\]/}"
ver="${2/\[*\]/}"
alias=`grep "^$pkg " $ALIASES_DB`
[ "$pkg" != "chromium" ] && \
echo "$pkg $ver $SOURCEURL ${alias/* /}" >> $tmpfile
}
done
}
if [ ! "$skip_parsing" ]; then
#tmpfile=`mktemp -q -t autodist-upstream-updates.XXXXXXXX`
buildstmp=`mktemp -q -t autodist-upstream-updates.XXXXXXXX`
tail -n+2 $BUILDS_FILE > $buildstmp
#parse_arch_linux
#parse_xorg
#parse_gnome
#parse_distromatic
/usr/share/autodist/repology-openmamba.py > $UPDATES_DB.tmp
if [ $? -eq 0 ]; then
#cat $tmpfile | sort -uf > $UPDATES_DB.tmp
#rm -f $tmpfile
> $UPDATES_DB
unset lastpkg
while read pkg ver upsource alias; do
# skip updates to unstable versions
unset found_beta
for b in alpha beta rc "~"; do
[ "${ver/$b}" != "${ver}" ] && found_beta=1
done
[ "$found_beta" ] && continue
if [ "$pkg" = "$lastpkg" ]; then
# echo "Warning: duplicate found: $pkg lastver: $lastver ver: $ver" >&2
version_find_bigger $lastver $ver
vercmp=$?
if [ $vercmp -eq 2 ]; then
sed -i "/^$lastpkg $lastver /d" $UPDATES_DB
echo "$pkg $ver $upsource $alias" >> $UPDATES_DB
fi
else
echo "$pkg $ver $upsource $alias" >> $UPDATES_DB
fi
lastpkg=$pkg
lastver=$ver
done < $UPDATES_DB.tmp
fi
lastpkg=$pkg
lastver=$ver
done < $UPDATES_DB.tmp
rm -f $UPDATES_DB.tmp
rm -f $UPDATES_DB.tmp
fi
> $UPDATES_DB.missing
> $BUILDLIST_FILE
@ -284,7 +323,7 @@ while read pkg ver upsource alias; do
unset pkgline
unset found_manual
unset found_alias
pkgline=`grep "^$pkg " $MANUALVER_DB` && found_manual=1
pkgline=`grep -i "^$pkg " $MANUALVER_DB` && found_manual=1
if [ ! "$found_manual" ]; then
if [ "$alias" ]; then
get_job_vector $alias
@ -311,6 +350,7 @@ while read pkg ver upsource alias; do
pkgrep=$4
version_find_bigger $pkgver ${ver/-/.}
vercmp=$?
#echo "$pkgname - version_find_bigger $pkgver ${ver/-/.} result=$vercmp"
[ "${vercmp}" != "2" -a "$needupdate_only" ] && continue
[ "$found_manual" ] && pkgname=$3
[ "$found_alias" -o "$found_manual" ] && nameadd="$pkg" || unset nameadd

291
automaint Executable file
View File

@ -0,0 +1,291 @@
#!/bin/bash
# automaint -- batch automatic maintainance tool of the autodist suite
# Copyright (C) 2013-2021 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
# Released under the terms of the GNU GPL release 3 license
#
VERSION=0.9.7
# First in vector is base arch
. /etc/autodist/config
me=(${0##*/} $VERSION "Sat Mar 20 2011")
function usage() {
echo "\
${me[0]} ${me[1]}
"$"Copyright (C) 2013-2021 Silvan Calarco <silvan.calarco@mambasoft.it>""
"$"Released under the terms of the GNU GPL v3 license"
echo "
"$"Batch automatic maintainance tool of the autodist suite.""
"$"Usage"":
$me [-s repository -d repository ] [-p repository] [-h] [-v]
-d repository "$"Main destination repository
-p repository "$"Port repository
-s repository "$"Automatic/Staging builds source repository
-h "$"Show this help and exit
-t "$"Test mode (no change will be made)
-v "$"Verbose output
"
}
# for webbuild message
function cgi_encodevar() {
local string="${1}"
local strlen=${#string}
local encoded=""
for (( pos=0 ; pos<strlen ; pos++ )); do
c=${string:$pos:1}
case "$c" in
[-_.~a-zA-Z0-9] ) o="${c}" ;;
* ) printf -v o '%%%02x' "'$c"
esac
encoded+="${o}"
done
echo "${encoded}" # You can either set a return variable (FASTER)
# REPLY="${encoded}" #+or echo the result (EASIER)... or both... :p
}
# get_pkg_buildinfo - uses distromatic generated build file for
# getting information on the repository
#
# $1: distromatic files base url for repository
# $2: architecture
# $3: pkg name
function get_pkg_buildinfo() {
local pkg i a local_arch local_distromatic
[ $1 ] && local_distromatic=$1 || exit 1
[ $2 ] && local_arch=$2 || exit 1
[ $3 ] && pkg=$3
if [ ! "$pkg" ]; then
[ -e $local_distromatic/builds-${local_arch}.sh ] && . $local_distromatic/builds-${local_arch}.sh
return 0
fi
pkg_archs=();
for a in ${archs[*]}; do
[ "$a" = "${local_arch}" ] && continue
pkg_header=();
DISTROMATIC_BUILD_FILE=$local_distromatic/builds-$a.sh
[ -e $DISTROMATIC_BUILD_FILE ] && . $DISTROMATIC_BUILD_FILE
[ ${pkg_header[0]} ] && pkg_archs=(${pkg_archs[*]} $a)
done
pkg_header=();
pkg_builds=();
pkg_obsoletes=();
pkg_list=();
DISTROMATIC_BUILD_FILE=$local_distromatic/builds-${local_arch}.sh
[ -e $DISTROMATIC_BUILD_FILE ] && . $DISTROMATIC_BUILD_FILE
[ ${pkg_header[0]} ] && pkg_archs=(${pkg_archs[*]} ${local_arch})
# {
# echo "Error: missing distromatic generated file $DISTROMATIC_BUILD_FILE; aborting."
# return;
# }
# . $DISTROMATIC_BUILD_FILE
for i in ${pkg_list[*]}; do
if [ "$i" == "${pkg_header[0]}" ]; then
pkg_name=${pkg_header[0]};
# Note: pkg_arch reported in builds file is just last arch source was
# built for, so we use repository arch instead
pkg_arch=${pkg_header[1]};
[ "$pkg_arch" = "noarch" ] || pkg_arch=${local_arch}
pkg_version=${pkg_header[2]};
pkg_release=${pkg_header[3]};
pkg_group=${pkg_header[4]};
pkg_license=${pkg_header[5]};
pkg_size=${pkg_header[6]};
pkg_buildtime=${pkg_header[7]};
pkg_altrep=${pkg_header[8]};
pkg_repository=${pkg_header[9]};
return 0
fi
done
unset pkg_name pkg_arch pkg_version pkg_release \
pkg_group pkg_license pkg_size pkg_buildtime pkg_altrep pkg_repository
return 1
}
[ $# -gt 0 ] || { usage ; exit 1; }
for ((i=1; i<=$#; i++)); do
case ${!i} in
-s) shift
SOURCE_REPOSITORY="${!i}"
;;
-d) shift
DEST_REPOSITORY="${!i}"
;;
-p) shift
PORT_REPOSITORY="${!i}"
;;
-t) TESTMODE=1
;;
-v) VERBOSE=1
;;
-h|--help)
usage
exit 0
;;
esac
done
[ "$SOURCE_REPOSITORY" -a "$DEST_REPOSITORY" ] || { usage; exit 1; }
[ "$SOURCE_REPOSITORY" = "$DEST_REPOSITORY" ] && {
echo "ERROR: source and destination repository cannot be the same; aborting."
exit 1
}
[ "$TESTMODE" ] && echo "** TEST MODE enabled: no changes will be made **"
for a in `seq 1 ${#AUTODIST_ARCHS[*]}`; do
. $LOCAL_REPS_BASE_DIR/distromatic/$SOURCE_REPOSITORY/builds-${AUTODIST_ARCHS[$a-1]}.sh
pkglist[$a-1]="${pkg_list[*]}"
warningslist[$a-1]="${warnings_list[*]}"
needportlist[$a-1]="${needport_list[*]}"
done
tmpfile=`mktemp -q -t $me.XXXXXXXX` || {
echo "ERROR: cannot create temporary files." >&2
exit 1
}
for a in `seq 1 ${#AUTODIST_ARCHS[*]}`; do
echo -n "${pkglist[$a-1]} " >> $tmpfile
done
allpkgs="`cat $tmpfile | xargs -n 1 | sort -u | xargs`"
rm -f $tmpfile
for p in ${allpkgs}; do
pkgcontinue=
needsport=
for w in ${warningslist[*]}; do
[ "$p" = "$w" ] && { pkgcontinue=1; break; }
done
[ "$pkgcontinue" ] && continue
for a in `seq 1 ${#AUTODIST_ARCHS[*]}`; do
# Get pkg info from port repository
get_pkg_buildinfo $LOCAL_REPS_BASE_DIR/distromatic/$PORT_REPOSITORY ${AUTODIST_ARCHS[$a-1]} $p
# If not found get info from main repository
if [ ! "$pkg_name" ]; then
get_pkg_buildinfo $LOCAL_REPS_BASE_DIR/distromatic/$DEST_REPOSITORY ${AUTODIST_ARCHS[$a-1]} $p
fi
if [ "$pkg_name" ]; then
old_pkg_version=$pkg_version
old_pkg_release=$pkg_release
old_pkg_repository=$pkg_repository
break
fi
done
[ "$pkg_name" ] || {
[ "$VERBOSE" ] && echo "$p: not present in $DEST_REPOSITORY; skipping."
continue
}
[ "$VERBOSE" ] && echo "$p: old release in $DEST_REPOSITORY is $old_pkg_version-$old_pkg_release"
for o in ${needportlist[*]}; do
[ "$p" = "$o" ] && { needsport=1; break; }
done
#[ "$needsport" ] && continue
[ "$needsport" -a ! "$PORT_REPOSITORY" ] && continue
for a in `seq 1 ${#AUTODIST_ARCHS[*]}`; do
get_pkg_buildinfo $LOCAL_REPS_BASE_DIR/distromatic/$SOURCE_REPOSITORY ${AUTODIST_ARCHS[$a-1]} $p
[ "$pkg_name" ] && break
done
[ "$pkg_name" ] || {
[ "$VERBOSE" ] && echo "$p: not present in $SOURCE_REPOSITORY; skipping."
continue
}
[ "$VERBOSE" ] && echo "$p: new release in $SOURCE_REPOSITORY is $pkg_version-$pkg_release"
if [ "$pkg_version" = "$old_pkg_version" ]; then
if [ "$pkg_release" = "$old_pkg_release" ]; then
echo "$p: same release as upstream; skipping."
continue
fi
update_type="release"
else
OIFS=$IFS
IFS='.'
read -ra SVER <<< "$old_pkg_version"
read -ra VER <<< "$pkg_version"
IFS=$OIFS
dotdiff=`expr ${#VER[*]} - ${#SVER[*]}`
for i in `seq 1 ${#SVER[*]}`; do
[ "${SVER[i-1]}" != "${VER[i-1]}" ] && break
done
if [ "$i" = "${#SVER[*]}" -a $dotdiff -eq 0 ]; then
# e.g. SVER=0.11.3 -> VER=0.11.4
if [[ 64#${VER[i-1]} -gt 64#89 && 64#${SVER[i-1]} -lt 64#80 ]]; then
[ "$VERBOSE" ] && echo "$p: dubious beta upgrade from ${SVER[i-1]} to ${VER[i-1]}; skipping."
continue
fi
update_type="minor"
#elif [ $dotdiff -lt 0 ]; then
# [ "$VERBOSE" ] && echo "$p: newer version has less dots than older ${#VER[*]} < ${#SVER[*]}; skipping."
# continue
#elif [ "$i" != "${#SVER[*]}" ]; then
# # e.g. SVER=0.11 -> VER=1.0
# [ "$VERBOSE" ] && echo "$p: not a minor version update at position $i/${#SVER[*]}: ${SVER[i-1]} != ${VER[i-1]}; skipping."
# continue
elif [ "${SVER[i-1]}" = "${VER[i-1]}" -a $dotdiff -ge 1 ]; then
# e.g. SVER=0.11.2 -> VER=0.11.2.3
update_type="minor"
elif [[ 64#${VER[i-1]} -gt 64#89 && 64#${SVER[i-1]} -lt 64#80 ]]; then
[ "$VERBOSE" ] && echo "$p: dubious beta upgrade from ${SVER[i-1]} to ${VER[i-1]}; skipping."
continue
elif [[ 64#${VER[i-1]} -gt 64#${SVER[i-1]} && $i -gt 1 ]]; then
# e.g. SVER=1.0.2 -> VER=1.0.3.dev1234
update_type="minor"
#else
# [ "$VERBOSE" ] && echo "$p: major version update ${SVER[i-1]} vs ${VER[i-1]}; skipping"
# continue
fi
fi
#if [ ! "${needsport}" ]; then
if [ "$old_pkg_repository" == "$PORT_REPOSITORY" -o "$old_pkg_repository" == "$DEST_REPOSITORY" ]; then
echo "$p: importing from $SOURCE_REPOSITORY to $PORT_REPOSITORY ($pkg_version-$pkg_release -> $old_pkg_version-$old_pkg_release)"
if [ ! "$TESTMODE" ]; then
autodist-repository import $SOURCE_REPOSITORY $p -d $PORT_REPOSITORY -y >/dev/null
if [ $? -eq 0 -a "$WEBBUILD_URL" -a "$WEBBUILD_USER" ]; then
curl -s "$WEBBUILD_URL?REQUEST=message&USER=$WEBBUILD_USER&SECRET=${WEBBUILD_SECRET}&USER_EMAIL=$WEBBUILD_EMAIL&\
MESSAGE=`cgi_encodevar \"imported <b>$p</b> from <b>$SOURCE_REPOSITORY</b> to <b>$PORT_REPOSITORY</b> for porting\"`" >/dev/null
fi
fi
fi
#fi
#elif [ "$old_pkg_repository" == "$DEST_REPOSITORY" ]; then
# echo "$p: importing from $SOURCE_REPOSITORY to $DEST_REPOSITORY ($pkg_version-$pkg_release -> $old_pkg_version-$old_pkg_release; update type: $update_type)"
# if [ ! "$TESTMODE" ]; then
# autodist-repository import $SOURCE_REPOSITORY $p -d $DEST_REPOSITORY -y >/dev/null
# if [ $? -eq 0 -a "$WEBBUILD_URL" -a "$WEBBUILD_USER" ]; then
# curl -s "$WEBBUILD_URL?REQUEST=message&USER=$WEBBUILD_USER&SECRET=${WEBBUILD_SECRET}&USER_EMAIL=$WEBBUILD_EMAIL&\
#MESSAGE=`cgi_encodevar \"imported <b>$p</b> from <b>$SOURCE_REPOSITORY</b> to <b>$DEST_REPOSITORY</b>\"`" >/dev/null
# fi
# fi
# else
# echo "$p: upstream package repository $pkg_repository does not match with $DEST_REPOSITORY; skipping."
# fi
done
exit 0

349
autoport
View File

@ -1,13 +1,13 @@
#!/bin/bash
# autoport -- batch cross-build tool based on autodist
# Copyright (C) 2011-2012 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Copyright (C) 2011-2023 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
# Released under the terms of the GNU GPL release 3 license
#
VERSION=0.9.6
BASE_ARCH=i586
BASE_REPOSITORY=devel
PORT_REPOSITORY=devel
VERSION=1.3.3
BASE_REPOSITORY=base
PORT_REPOSITORY=base
. /etc/autodist/config
@ -16,13 +16,13 @@ me=(${0##*/} $VERSION "Sat Mar 20 2011")
function usage() {
echo "\
${me[0]} ${me[1]}
"$"Copyright (C) 2011-2012 Silvan Calarco <silvan.calarco@mambasoft.it>""
"$"Copyright (C) 2011-2023 Silvan Calarco <silvan.calarco@mambasoft.it>""
"$"Released under the terms of the GNU GPL v3 license"
echo "
"$"Batch port and cross-build tool based on autodist.""
"$"Usage"":
$me [-a][-f][-x arch1[,arch2],..][-r repository][-d release_repository]{--fix|job ...}
$me [-a][-f][-x arch1[,arch2],..][-r repository][-d release_repository][-s \"script_args\"]{--fix|job ...}
-a "$"Automatic mode (use cache)
-b "$"Batch port all packages in port repository to sync with base repository
@ -32,11 +32,14 @@ ${me[0]} ${me[1]}
-nr "$"Don't recurse build
--fix "$"Fix .la files for cross linking and exit
-r "$"Work on given repository (default: $PORT_REPOSITORY)
-d "$"Release packages to given repository (default: $PORT_REPOSITORY)
-d "$"Release packages to given repository (default: work repository)
-h "$"Show this help and exit
-s \"script_args\" "$"Send script_args as arguments for autodist update-specfile script
-u changelog "$"Rebuild packages with given changelog
-ud "$"Rebuild dependent packages that need rebuild
-v "$"More verbose output
-x "$"Operate in cross build mode
--user user "$"Pass calling user name for Webbuild social messages
arch "$"Target architecture
job "$"Job specification for autodist""
@ -99,7 +102,6 @@ function get_pkg_srcinfo() {
src_epoch=$5
src_release=$6
src_milestone=`echo $src_release | sed "s|[0-9.]*\(.*\)|\1|"`
}
# get_pkg_buildinfo - uses distromatic generated build file for
@ -122,7 +124,7 @@ function get_pkg_buildinfo() {
fi
pkg_archs=();
for a in ${archs[*]}; do
for a in ${AUTODIST_ARCHS[*]}; do
[ "$a" = "${local_arch}" ] && continue
pkg_header=();
DISTROMATIC_BUILD_FILE=$local_distromatic/builds-$a.sh
@ -145,24 +147,23 @@ function get_pkg_buildinfo() {
# }
# . $DISTROMATIC_BUILD_FILE
for i in ${pkg_list[*]}; do
if [ "$i" == "${pkg_header[0]}" ]; then
pkg_name=${pkg_header[0]};
# Note: pkg_arch reported in builds file is just last arch source was
# built for, so we use repository arch instead
pkg_arch=${pkg_header[1]};
[ "$pkg_arch" = "noarch" ] || pkg_arch=${local_arch}
pkg_version=${pkg_header[2]};
pkg_release=${pkg_header[3]};
pkg_group=${pkg_header[4]};
pkg_license=${pkg_header[5]};
pkg_size=${pkg_header[6]};
pkg_buildtime=${pkg_header[7]};
pkg_altrep=${pkg_header[8]};
pkg_repository=${pkg_header[9]};
return 0
fi
done
if [ "${pkg_header[0]}" ]; then
pkg_name=${pkg_header[0]};
# Note: pkg_arch reported in builds file is just last arch source was
# built for, so we use repository arch instead
pkg_arch=${pkg_header[1]};
[ "$pkg_arch" = "noarch" ] || pkg_arch=${local_arch}
pkg_version=${pkg_header[2]};
pkg_release=${pkg_header[3]};
pkg_group=${pkg_header[4]};
pkg_license=${pkg_header[5]};
pkg_size=${pkg_header[6]};
pkg_buildtime=${pkg_header[7]};
pkg_altrep=${pkg_header[8]};
pkg_repository=${pkg_header[9]};
pkg_epoch=${pkg_header[10]};
return 0
fi
unset pkg_name pkg_arch pkg_version pkg_release \
pkg_group pkg_license pkg_size pkg_buildtime pkg_altrep pkg_repository
@ -183,7 +184,7 @@ _EOF
function find_source_by_provide() {
local pkg=`echo $2 | sed "s|(|\\\\\[|g;s|)|\\\\\]|g;s|:|_|g"`
grep "^$pkg:" $DATADIR/$1/sources-$BASE_ARCH | \
grep "^$pkg:" $DATADIR/$1/sources-* | \
awk '{ $1=""; print $0 }' | \
sed "s|[[:space:]]_| |g"
}
@ -198,21 +199,28 @@ function find_requirements() {
local OUTFILE=$1
if [ "`grep " is needed by " $OUTFILE`" ]; then
grep " is needed by " $OUTFILE | awk '{ print $1 }' | sort -u > $tf1
grep " is needed by " $OUTFILE | awk '{ print $1 }' | tr -d \' > $tf1
elif [ "`grep " matches no packages" $OUTFILE`" ]; then
grep " matches no packages" $OUTFILE | awk '{ print $2 }' | tr -d \' | sort -u > $tf1
grep " matches no packages" $OUTFILE | awk '{ print $2 }' | tr -d \' | sed "s|@.*||" > $tf1
elif [ "`grep " no package provides " $OUTFILE`" ]; then
grep " no package provides " $OUTFILE | sed "s|.* no package provides ||" | sort -u > $tf1
grep " no package provides " $OUTFILE | sed "s|.* no package provides ||" > $tf1
fi
[ `stat -c %s $tf1` -gt 0 ] && {
echo -n " | missing requirements: "
> $tf
cat $tf1 | while read line; do
REQ=`find_source_by_provide $PORT_REPOSITORY $line`
[ "$REQ" ] && \
echo "${REQ}" >> $tf || \
sort -u $tf1 | while read line; do
REQ=`find_source_by_provide $PORT_REPOSITORY ${line}`
if [ "$REQ" ]; then
get_pkg_buildinfo $DATADIR/$PORT_REPOSITORY $TARGET_ARCH $REQ
if [ "$pkg_name" ]; then
echo -n "$line(notrebuilding) "
else
echo "${REQ}" >> $tf
fi
else
echo -n "$line(unresolved) "
fi
done
> $tf1
cat $tf | sort -u 2>/dev/null | while read line; do
@ -230,9 +238,43 @@ function find_requirements() {
return 0
}
fetch_repfiles() {
local u
f=${DATADIR}/${PORT_REPOSITORY}/srcpkglist
if [ ! -e ${f} -o "`find ${f} -mmin +60 2>/dev/null`" ]; then
[ "$VERBOSE_MODE" = "1" ] && echo "Fetching ${REPS_BASE_URL}/$PORT_REPOSITORY/srcpkglist"
curl -f -L -s ${REPS_BASE_URL}/$PORT_REPOSITORY/srcpkglist -o ${f} ||
echo "Warning: unable to fetch ${REPS_BASE_URL}/$PORT_REPOSITORY/srcpkglist"
fi
for a in ${AUTODIST_ARCHS[*]}; do
f=${DATADIR}/${PORT_REPOSITORY}/sources-${a}
if [ ! -e ${f} -o "`find ${f} -mmin +60 2>/dev/null`" ]; then
[ "$VERBOSE_MODE" = "1" ] && echo "Fetching $PORT_REPOSITORY_DISTROMATIC_URL/sources-${a}"
curl -f -L -s $PORT_REPOSITORY_DISTROMATIC_URL/sources-${a} -o ${f} ||
echo "Warning: unable to fetch $PORT_REPOSITORY_DISTROMATIC_URL/sources-${a}"
fi
f=${DATADIR}/${PORT_REPOSITORY}/builds-${a}.sh
if [ ! -e ${f} -o "`find ${f} -mmin +60 2>/dev/null`" ]; then
[ "$VERBOSE_MODE" = "1" ] && echo "Fetching $PORT_REPOSITORY_DISTROMATIC_URL/builds-${a}.sh"
curl -f -L -s $PORT_REPOSITORY_DISTROMATIC_URL/builds-${a}.sh -o ${f} ||
echo "Warning: unable to fetch $PORT_REPOSITORY_DISTROMATIC_URL/builds-${a}.sh"
fi
done
for u in ${AUTOPORT_UNSTAGE_ARCHS}; do
[ "$u" = "$TARGET_ARCH" ] && {
rm -f $DATADIR/$PORT_REPOSITORY/unstage.$TARGET_ARCH
return
}
done
[ "$VERBOSE_MODE" = "1" ] && echo "Fetching ${REPS_BASE_URL}/${PORT_REPOSITORY/-*}/unstage.$TARGET_ARCH"
curl -f -L -s ${REPS_BASE_URL}/${PORT_REPOSITORY/-*}/unstage.$TARGET_ARCH -o $DATADIR/$PORT_REPOSITORY/unstage.$TARGET_ARCH ||
echo "Warning: unable to fetch ${REPS_BASE_URL}/${PORT_REPOSITORY/-*}/unstage.$TARGET_ARCH"
}
[ $# -gt 0 ] || { usage ; exit 1; }
BUILD_ARCH=`uname -i`
[ "$BUILD_ARCH" ] || BUILD_ARCH=`uname -m`
case $BUILD_ARCH in
i386|i486|i686) BUILD_ARCH=i586 ;;
@ -257,6 +299,9 @@ for ((i=1; i<=$#; i++)); do
exit 1
}
;;
-ud) REBUILD_DEPENDANT_MODE=1
DONT_RECURSE=1
;;
-npa) DONT_PREPARE_ANY=1
DONT_PREPARE=1 ;;
-np) DONT_PREPARE=1 ;;
@ -265,6 +310,9 @@ for ((i=1; i<=$#; i++)); do
-r) shift
PORT_REPOSITORY="${!i}"
;;
-s) shift
SCRIPT_ARGS="${!i}"
;;
-d) shift
DEST_REPOSITORY="${!i}"
;;
@ -272,6 +320,13 @@ for ((i=1; i<=$#; i++)); do
TARGET_ARCHS="`echo ${!i} | tr , ' '`"
CROSS_MODE=1
;;
--user) let i+=1
[ "${!i}" ] || {
echo "Error: --user parameter not given, aborting."
exit 1
}
WEBBUILD_USER_CMDLINE="${!i}"
;;
-h|--help)
usage
exit 0
@ -283,14 +338,21 @@ done
[ "$DEST_REPOSITORY" ] || DEST_REPOSITORY=$PORT_REPOSITORY
if [ "$BATCH_MODE" ]; then
PIDFILE="/run/autodist/autoport-${BUILD_ARCH}-${PORT_REPOSITORY}.pid"
[ -e $PIDFILE ] && {
PIDCHECK=`cat $PIDFILE`
[ "$PIDCHECK" -a -e /proc/$PIDCHECK -a ! "$DISABLE_PID_CHECK" ] && {
echo "Error: autoport -b already running with PID=$PIDCHECK.Aborting."
exit 1
}
}
echo $$ > $PIDFILE
trap "rm -f $PIDFILE; exit 1" SIGQUIT SIGINT SIGKILL SIGTERM
fi
for TARGET_ARCH in ${TARGET_ARCHS}; do
[ "$BASE_ARCH" = "$TARGET_ARCH" -a "$PORT_REPOSITRY" = "$DEST_REPOSITORY" ] && {
echo "Error: base and target arch ($BASE_ARCH) are the same as well as port and release repositories ($PORT_REPOSITORY); skipping."
continue
}
archs=($BASE_ARCH $TARGET_ARCH)
JOBS_SKIPPED=()
JOBS_CANTPREPARE=()
JOBS_CANTINSTALL=()
@ -304,10 +366,6 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
BASE_REPOSITORY_DISTROMATIC_URL=${DISTROMATIC_BASE_URL}$BASE_REPOSITORY
PORT_REPOSITORY_DISTROMATIC_URL=${DISTROMATIC_BASE_URL}$PORT_REPOSITORY
[ "$AUTO_MODE" -a -e $DATAARCHDIR/last ] && . $DATAARCHDIR/last
JOB=(${JOB_CMDLINE[*]} ${JOB_MISSINGREQ[*]} ${JOB_FAILED[*]})
[ "$FIX_MODE" -o "$BATCH_MODE" -o "${JOB[*]}" ] || { usage ; exit 1; }
[ -d $DATAARCHDIR ] || mkdir -p $DATAARCHDIR
[ -d $DATADIR/$BASE_REPOSITORY ] || mkdir -p $DATADIR/$BASE_REPOSITORY
[ -d $DATADIR/$PORT_REPOSITORY ] || mkdir -p $DATADIR/$PORT_REPOSITORY
@ -322,46 +380,87 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
BUILD_CPU=`echo $BUILD_PLATFORM | cut -d- -f1`
TARGET_PLATFORM=`rpm --target $TARGET_ARCH --eval %{_target_platform}`
TARGET_CPU=`echo $TARGET_PLATFORM | cut -d- -f1`
SPECDIR=`rpm --eval %{_specdir}`
eval `autospec --eval spec_dir | tail -n1`
if [ "$spec_dir" ]; then
SPECDIR=$spec_dir
else
SPECDIR=`rpm --eval %{_specdir}`
fi
echo "Build platform is $BUILD_PLATFORM"
echo "Target platform is $TARGET_PLATFORM"
echo "Port repository is $PORT_REPOSITORY"
echo "Release repository is $DEST_REPOSITORY"
curl -s ${REPS_BASE_URL}/$PORT_REPOSITORY/srcpkglist -o $DATADIR/$PORT_REPOSITORY/srcpkglist ||
echo "Warning: unable to fetch ${REPS_BASE_URL}/$PORT_REPOSITORY/srcpkglist"
curl -s $PORT_REPOSITORY_DISTROMATIC_URL/sources-$BASE_ARCH -o $DATADIR/$PORT_REPOSITORY/sources-$BASE_ARCH ||
echo "Warning: unable to fetch $PORT_REPOSITORY_DISTROMATIC_URL/sources-$BASE_ARCH"
# rm -f $DATADIR/$PORT_REPOSITORY/sources-$BASE_ARCH
# curl -s $PORT_REPOSITORY_DISTROMATIC_URL/sources-$TARGET_CPU -o $DATADIR/$PORT_REPOSITORY/sources-$TARGET_CPU ||
# echo "Warning: unable to fetch $PORT_REPOSITORY_DISTROMATIC_URL/sources-$TARGET_CPU"
rm -f $DATADIR/$PORT_REPOSITORY/sources-$TARGET_CPU
# curl -s $PORT_REPOSITORY_DISTROMATIC_URL/builds-$BASE_ARCH.sh -o $DATADIR/$PORT_REPOSITORY/builds-$BASE_ARCH.sh ||
# echo "Error: unable to fetch $PORT_REPOSITORY_DISTROMATIC_URL/builds-$BASE_ARCH.sh"
rm -f $DATADIR/$PORT_REPOSITORY/builds-$BASE_ARCH.sh
fetch_repfiles
curl -s $PORT_REPOSITORY_DISTROMATIC_URL/builds-$TARGET_ARCH.sh -o $DATADIR/$PORT_REPOSITORY/builds-$TARGET_ARCH.sh ||
echo "Error: unable to fetch $PORT_REPOSITORY_DISTROMATIC_URL/builds-$TARGET_ARCH.sh"
[ "$AUTO_MODE" -a -e $DATAARCHDIR/last ] && . $DATAARCHDIR/last
if [ "$REBUILD_DEPENDANT_MODE" ]; then
for j in ${JOB_CMDLINE[*]}; do
get_pkg_buildinfo $DATADIR/$PORT_REPOSITORY $TARGET_ARCH $j
port_pkg_list=${pkg_needrebuild[*]}
port_pkg_builds=" ${pkg_builds[*]} "
port_pkg_epoch=$pkg_epoch
port_pkg_version=$pkg_version
port_pkg_release=$pkg_release
currrebuild=
currjobscriptargs=
JOBNUM=0
for p in ${port_pkg_list}; do
if [ "${p/@*}" != "$currrebuild" ]; then
[ $JOBNUM -gt 0 ] && JOB_SCRIPTARGS[$JOBNUM-1]="$currjobscriptargs"
currjobscriptargs=
currrebuild=${p/@*}
get_pkg_buildinfo $DATADIR/$PORT_REPOSITORY $TARGET_ARCH $currrebuild
JOB=(${JOB[*]} $currrebuild)
let JOBNUM+=1
fi
currprovider=${p/*@}
if [ "${currprovider/-devel}" == "$currprovider" ]; then
currprovider=${currprovider}-devel
fi
add_epoch=""
[ "${port_pkg_epoch}" ] && add_epoch="${port_pkg_epoch}:"
currjobscriptargs="$currjobscriptargs --buildreq ${currprovider} >= ${add_epoch}${port_pkg_version}-${port_pkg_release} "
done
[ "$currjobscriptargs" ] && JOB_SCRIPTARGS[$JOBNUM-1]="$currjobscriptargs"
echo "Package dependant from $j to rebuild: ${JOB[*]}"
done
else
JOB=(${JOB_CMDLINE[*]} ${JOB_MISSINGREQ[*]} ${JOB_FAILED[*]})
fi
[ "$FIX_MODE" -o "$BATCH_MODE" -o "${JOB[*]}" ] || { echo "Nothing to do."; exit 0; }
if [ "$BATCH_MODE" ]; then
[ "${JOB[*]}" ] && {
echo "Error: no jobs allowed in batch mode; aborting."
exit 1
}
# curl -s $BASE_REPOSITORY_DISTROMATIC_URL/builds-$BASE_ARCH.sh -o $DATADIR/$BASE_REPOSITORY/builds-$BASE_ARCH.sh ||
# echo "Error: unable to fetch $BASE_REPOSITORY_DISTROMATIC_URL/builds-$BASE_ARCH.sh"
rm -f $DATADIR/$BASE_REPOSITORY/builds-$BASE_ARCH.sh
# curl -s $BASE_REPOSITORY_DISTROMATIC_URL/builds-$TARGET_ARCH.sh -o $DATADIR/$BASE_REPOSITORY/builds-$TARGET_ARCH.sh ||
# echo "Error: unable to fetch $BASE_REPOSITORY_DISTROMATIC_URL/builds-$TARGET_ARCH.sh"
rm -f $DATADIR/$BASE_REPOSITORY/builds-$TARGET_ARCH.sh
# old files cleanup
rm -f $DATADIR/$BASE_REPOSITORY/builds-*.sh
get_pkg_buildinfo $DATADIR/$PORT_REPOSITORY $TARGET_ARCH
port_pkg_list=${pkg_list[*]}
if [ "$REBUILD_MILESTONE" ]; then
for p in ${port_pkg_list}; do
get_pkg_buildinfo $DATADIR/$PORT_REPOSITORY $TARGET_ARCH $p
target_pkg_name=$pkg_name
target_pkg_ver=$pkg_version
target_pkg_rel=$pkg_release
target_pkg_milestone=`echo $target_pkg_rel | sed "s|[0-9.]*\(.*\)|\1|"`
if [ "$target_pkg_milestone" != "$REBUILD_MILESTONE" ]; then
JOB=(${JOB[*]} $p)
fi
done
echo "Packages to rebuild: ${JOB[*]}"
fi
echo "Packages to port: ${needport_list[*]}"
for p in ${needport_list[*]}; do
JOB=(${JOB[*]} $p)
JOB=(${JOB[*]} $p)
done
[ -e $DATADIR/autoport-$PORT_REPOSITORY-current ] && \
mv $DATADIR/autoport-$PORT_REPOSITORY-current $DATADIR/autoport-$PORT_REPOSITORY-last
fi
@ -380,6 +479,11 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
> $DATAARCHDIR/preparedjobs
}
[ -e $DATAARCHDIR/updatedjobs ] || > $DATAARCHDIR/updatedjobs
find $DATAARCHDIR/updatedjobs -ctime 1 >/dev/null && {
> $DATAARCHDIR/updatedjobs
}
sudo autoport-fix-environment $TARGET_ARCH
[ "$FIX_MODE" ] && exit 0
@ -388,6 +492,7 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
while [ "${JOB[*]}" ]; do
step=`expr $step + 1`
[ $step -gt 1 ] && fetch_repfiles
[ "$BATCH_MODE" -a $step -gt $AUTOPORT_MAX_STEPS ] && {
echo "Maximum steps count reached for batch mode; exiting. See $logfile for details."
break
@ -403,9 +508,15 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
JOB_FAILED=()
JOB_CANTINSTALL_OLD=(${JOB_CANTINSTALL[*]})
for JOB_NUM in `seq 1 ${#JOB[*]}`; do
JOB_CURRENT=${JOB[$JOB_NUM-1]}
if [ "`grep "^${JOB_CURRENT}$" /etc/autodist/unstage 2>/dev/null`" -o \
"`grep "^${JOB_CURRENT}$" /etc/autodist/unstage.${TARGET_ARCH} 2>/dev/null`" ]; then
JOB_CURRENT=${JOB[$JOB_NUM-1]/\#*}
if [ "${JOB_CURRENT}" != "${JOB[$JOB_NUM-1]}" ]; then
JOB_CURRENT_VERSION=${JOB[$JOB_NUM-1]/*\#}
else
JOB_CURRENT_VERSION=
fi
if [ ! -s $DATADIR/$PORT_REPOSITORY/unstage.${TARGET_ARCH} -o \
"`grep "^${JOB_CURRENT}$" /etc/autodist/unstage.${TARGET_ARCH} 2>/dev/null`" -o \
"`grep "^${JOB_CURRENT}$" $DATADIR/$PORT_REPOSITORY/unstage.${TARGET_ARCH} 2>/dev/null`" ]; then
echo -n "^ $JOB_CURRENT: "
STAGEOPTS=
else
@ -429,19 +540,36 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
JOB_FAILED=(${JOB_FAILED[*]} $JOB_CURRENT)
continue
fi
get_pkg_srcinfo $DATADIR/$PORT_REPOSITORY ${JOB_CURRENT}
get_pkg_srcinfo $DATADIR/$PORT_REPOSITORY ${JOB_CURRENT} || {
echo "< (FAILED) [error $? in get_pkg_srcinfo]"
JOB_FAILED=(${JOB_FAILED[*]} $JOB_CURRENT)
continue
}
if [ "$JOB_CURRENT_VERSION" -a \
"$JOB_CURRENT_VERSION" != "$src_version" -a \
"$JOB_CURRENT_VERSION" != "$src_version-$src_release" ]; then
echo "< (FAILED) [wrong version $src_version-$src_release != $JOB_CURRENT_VERSION]"
JOB_FAILED=(${JOB_FAILED[*]} $JOB_CURRENT)
continue
fi
DONT_PREPARE_THIS=
RELEASE_UPDATED=
grep -q ^$JOB_CURRENT\$ $DATAARCHDIR/preparedjobs && RELEASE_UPDATED=1
for p in ${JOB_CMDLINE[*]}; do
[ "$p" = "${JOB_CURRENT}" -o "$DONT_PREPARE_ANY" ] || continue
[ -e ${SPECDIR}/${JOB_CURRENT}.spec ] && DONT_PREPARE_THIS="$DONT_PREPARE"
done
[ ! "$DONT_PREPARE_THIS" -a ! "`grep ^$JOB_CURRENT\$ $DATAARCHDIR/preparedjobs`" ] && {
echo -n "prepare"
[ "$VERBOSE_MODE" ] && echo "
%% COMMAND: LANG=C LC_ALL=C autodist -p ${JOB_CURRENT} --server $PORT_REPOSITORY --repository $PORT_REPOSITORY --severity 2 -- $STAGEOPTS"
LANG=C LC_ALL=C autodist -p ${JOB_CURRENT} --server $PORT_REPOSITORY --repository $PORT_REPOSITORY --severity 2 -- $STAGEOPTS &>$tmpfile
cat $tmpfile >> $logfile
if [ ! "$REBUILD_DEPENDANT_MODE" -a "$step" = "1" ]; then
REPOSITORY_STRICT_ADD="--repository-strict"
else
REPOSITORY_STRICT_ADD=""
fi
# [ "$VERBOSE_MODE" ] && echo "
#%% COMMAND: LANG=C LC_ALL=C autodist -p ${JOB_CURRENT} --server $PORT_REPOSITORY --repository $PORT_REPOSITORY $REPOSITORY_STRICT_ADD --severity 2 -- $STAGEOPTS"
LANG=C LC_ALL=C autodist -p ${JOB_CURRENT} --server $PORT_REPOSITORY --repository $PORT_REPOSITORY $REPOSITORY_STRICT_ADD --severity 2 -- $STAGEOPTS &>$tmpfile
[ $? -gt 0 ] && {
RES=`find_source_by_provide $PORT_REPOSITORY $JOB_CURRENT`
for j in ${RES}; do
@ -457,16 +585,28 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
autoport_log ${JOB_CURRENT} prepare failed $tmpfile
continue
} || {
spec_version=`grep -m1 "^Version:" ${SPECDIR}/${JOB_CURRENT}.spec | awk '{ print $2}'`
spec_release=`grep -m1 "^Release:" ${SPECDIR}/${JOB_CURRENT}.spec | awk '{ print $2}'`
if [ "${spec_version}-${spec_release}" != "$src_version-$src_release" ]; then
echo "< (FAILED) [wrong version ${src_version}-${src_release} != ${spec_version}-${spec_release}]"
JOB_CANTPREPARE=(${JOB_CANTPREPARE[*]} $JOB_CURRENT)
autoport_log ${JOB_CURRENT} prepare failed $tmpfile
continue
fi
echo $JOB_CURRENT >> $DATAARCHDIR/preparedjobs
echo -n "(OK) "
autoport_log ${JOB_CURRENT} prepare ok $tmpfile
}
if [ "$REBUILD_MODE" = "1" ]; then
if [ "$REBUILD_MODE" = "1" -o "$REBUILD_DEPENDANT_MODE" = "1" ]; then
echo -n "update"
[ "$VERBOSE_MODE" ] && echo "
%% COMMAND: LANG=C LC_ALL=C autodist -u -r ${JOB_CURRENT} --severity 2 -- $STAGEOPTS --changelog \"$REBUILD_CHANGELOG\""
LANG=C LC_ALL=C autodist -u -r ${JOB_CURRENT} --severity 2 -- $STAGEOPTS --changelog \"$REBUILD_CHANGELOG\" &>$tmpfile
cat $tmpfile >> $logfile
if [ "$REBUILD_DEPENDANT_MODE" ]; then
SCRIPT_ARGS="${JOB_SCRIPTARGS[$JOB_NUM-1]}"
changelogadd="`echo ${SCRIPT_ARGS} | sed "s|--buildreq|,|g;s| ||g;s|^,||g"`"
REBUILD_CHANGELOG="rebuilt by autoport with build requirements: '${changelogadd}'"
fi
# [ "$VERBOSE_MODE" ] && echo "
#%% COMMAND: LANG=C LC_ALL=C autodist -u --rebuild -r ${JOB_CURRENT} --severity 2 -- $STAGEOPTS --changelog \"$REBUILD_CHANGELOG\" --- \"$SCRIPT_ARGS\""
LANG=C LC_ALL=C autodist -u --rebuild -r ${JOB_CURRENT} --severity 2 -- $STAGEOPTS --changelog \"$REBUILD_CHANGELOG\" --- $SCRIPT_ARGS &>$tmpfile
[ $? -gt 0 ] && {
echo "(FAILED) "
autoport_log ${JOB_CURRENT} update failed $tmpfile
@ -474,12 +614,14 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
} || {
autoport_log ${JOB_CURRENT} update ok $tmpfile
echo -n "(OK) "
RELEASE_UPDATED=1
echo $JOB_CURRENT >> $DATAARCHDIR/updatedjobs
}
elif [ "$PORT_REPOSITORY" != "$DEST_REPOSITORY" ]; then
echo -n "update"
[ "$VERBOSE_MODE" ] && echo "
%% COMMAND: LANG=C LC_ALL=C autodist -u -r ${JOB_CURRENT} --severity 2 -- $STAGEOPTS --changelog \"automatic port from $PORT_REPOSITORY\""
LANG=C LC_ALL=C autodist -u -r ${JOB_CURRENT} --severity 2 -- $STAGEOPTS --changelog \"automatic port from $PORT_REPOSITORY\" &>$tmpfile
# [ "$VERBOSE_MODE" ] && echo "
#%% COMMAND: LANG=C LC_ALL=C autodist -u -r ${JOB_CURRENT} --severity 2 -- $STAGEOPTS --changelog \"automatic port from $PORT_REPOSITORY\""
LANG=C LC_ALL=C autodist -u -r ${JOB_CURRENT} --severity 2 -- $STAGEOPTS --changelog \"automatic port from $PORT_REPOSITORY\" --- $SCRIPT_ARGS &>$tmpfile
cat $tmpfile >> $logfile
[ $? -gt 0 ] && {
echo "(FAILED) "
@ -488,6 +630,7 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
} || {
autoport_log ${JOB_CURRENT} update ok $tmpfile
echo -n "(OK) "
RELEASE_UPDATED=1
}
elif [ "$REBUILD_MILESTONE" -a "$src_milestone" != "$REBUILD_MILESTONE" ]; then
echo -n "update"
@ -495,9 +638,11 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
echo "(FAILED) [can't get repository information for this package]"
continue
}
src_release_num=`echo $src_release | sed "s|\([0-9.]*\).*|\1|"`
# [ "$VERBOSE_MODE" ] && echo "
#%% COMMAND: LANG=C LC_ALL=C autospec -u ${JOB_CURRENT} -a4 --changelog \"$REBUILD_MILESTONE milestone rebuild\" $src_version $src_release_num${REBUILD_MILESTONE}"
# FIXME: should be implemented in autodist
LANG=C LC_ALL=C autospec -u ${JOB_CURRENT} -a4 ${src_version} ${src_numrelease}${REBUILD_MILESTONE} \
--changelog "$REBUILD_MILESTONE milestone rebuild" &>$tmpfile
LANG=C LC_ALL=C autospec -u ${JOB_CURRENT} -a4 --changelog "$REBUILD_MILESTONE milestone rebuild" $src_version $src_release_num${REBUILD_MILESTONE} &>$tmpfile
[ $? -gt 0 ] && {
if [ "$VERBOSE_MODE" ]; then
echo
@ -518,6 +663,7 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
cat $tmpfile >> $logfile
echo -n "(OK) "
autoport_log ${JOB_CURRENT} update ok $tmpfile
RELEASE_UPDATED=1
}
fi
}
@ -527,15 +673,14 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
autoport_log ${JOB_CURRENT} port failed
continue
fi
if [ "$DONT_PREPARE_THIS" = "1" -a "$src_repository" != "$PORT_REPOSITORY" ]; then
# if both -np and -r were given send to PORT_REPOSITORY instead of src_repository
src_repository=$PORT_REPOSITORY
SEND_REPOSITORY=$DEST_REPOSITORY
if [ ! "$RELEASE_UPDATED" -a ! "$DONT_PREPARE_THIS" ]; then
SEND_REPOSITORY=$src_repository
fi
[ "$PORT_REPOSITORY" != "$DEST_REPOSITORY" ] && src_repository="$DEST_REPOSITORY"
[ ! "$DONT_PREPARE_THIS" -a "$PORT_REPOSITORY" = "$DEST_REPOSITORY" -a ! "$REBUILD_MILESTONE" ] && NOSRPM_OPTS="--nosrpm" || NOSRPM_OPTS="--force"
[ "$VERBOSE_MODE" ] && echo "
%% COMMAND: LANG=C LC_ALL=C autodist -b -s ${JOB_CURRENT} --arch $TARGET_ARCH --server $src_repository --repository $PORT_REPOSITORY --severity 2 $FORCE_FLAG -- $STAGEOPTS $NOSRPM_OPTS"
LANG=C LC_ALL=C autodist -b -s ${JOB_CURRENT} --arch $TARGET_ARCH --server $src_repository --repository $PORT_REPOSITORY --severity 2 $FORCE_FLAG -- $STAGEOPTS $NOSRPM_OPTS &>$tmpfile
[ ! "$DONT_PREPARE_THIS" -a ! "$RELEASE_UPDATED" ] && NOSRPM_OPTS="--nosrpm" || NOSRPM_OPTS="--force"
# [ "$VERBOSE_MODE" ] && echo "
#%% COMMAND: LANG=C LC_ALL=C autodist -b -s ${JOB_CURRENT} --arch $TARGET_ARCH --server $SEND_REPOSITORY --repository $PORT_REPOSITORY --severity 2 $FORCE_FLAG -- $STAGEOPTS $NOSRPM_OPTS"
LANG=C LC_ALL=C autodist -b -s ${JOB_CURRENT} --arch $TARGET_ARCH --server $SEND_REPOSITORY --repository $PORT_REPOSITORY --severity 2 $FORCE_FLAG -- $STAGEOPTS $NOSRPM_OPTS &>$tmpfile
[ $? -gt 0 ] && {
if [ "$VERBOSE_MODE" ]; then
echo
@ -560,8 +705,13 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
echo -n "(OK) "
autoport_log ${JOB_CURRENT} port ok $tmpfile
if [ "$WEBBUILD_URL" -a "$WEBBUILD_USER" ]; then
curl -s "$WEBBUILD_URL?REQUEST=message&USER=$WEBBUILD_USER&SECRET=$WEBBUILD_SECRET&USER_EMAIL=$WEBBUILD_EMAIL&\
MESSAGE=`cgi_encodevar \"ported <b>$JOB_CURRENT</b> to <b>$TARGET_ARCH</b> and sent it to <b>$src_repository</b>\"`" >/dev/null
if [ "$WEBBUILD_USER_CMDLINE" ]; then
curl -s "$WEBBUILD_URL?REQUEST=message&USER=$WEBBUILD_USER&SECRET=$WEBBUILD_SECRET&USER_EMAIL=$WEBBUILD_EMAIL&\
MESSAGE=`cgi_encodevar \"(invoked by $WEBBUILD_USER_CMDLINE) ported <b>$JOB_CURRENT</b> to <b>$TARGET_ARCH</b> and sent it to <b>$SEND_REPOSITORY</b>\"`" >/dev/null
else
curl -s "$WEBBUILD_URL?REQUEST=message&USER=$WEBBUILD_USER&SECRET=$WEBBUILD_SECRET&USER_EMAIL=$WEBBUILD_EMAIL&\
MESSAGE=`cgi_encodevar \"ported <b>$JOB_CURRENT</b> to <b>$TARGET_ARCH</b> and sent it to <b>$SEND_REPOSITORY</b>\"`" >/dev/null
fi
fi
}
echo -n "install"
@ -604,8 +754,8 @@ MESSAGE=`cgi_encodevar \"ported <b>$JOB_CURRENT</b> to <b>$TARGET_ARCH</b> and s
JOB_CANTINSTALL=()
for JOB_NUM in `seq 1 ${#JOB_CANTINSTALL_OLD[*]}`; do
JOB_CURRENT=${JOB_CANTINSTALL_OLD[$JOB_NUM-1]}
if [ "`grep "^${JOB_CURRENT}$" /etc/autodist/unstage 2>/dev/null`" -o \
"`grep "^${JOB_CURRENT}$" /etc/autodist/unstage.${TARGET_ARCH} 2>/dev/null`" ]; then
if [ "`grep "^${JOB_CURRENT}$" /etc/autodist/unstage.${TARGET_ARCH} 2>/dev/null`" -o \
"`grep "^${JOB_CURRENT}$" $DATADIR/$PORT_REPOSITORY/unstage.$TARGET_ARCH 2>/dev/null`" ]; then
echo -n "$JOB_CURRENT: "
STAGEOPTS=
else
@ -668,4 +818,5 @@ MESSAGE=`cgi_encodevar \"ported <b>$JOB_CURRENT</b> to <b>$TARGET_ARCH</b> and s
rm -f $tmpfile $tmpfile1
done
echo "* All jobs completed. See $logfile for details."
exit 0
[ "$BATCH_MODE" ] && rm -f $PIDFILE
exit ${#JOB_FAILED[*]}

View File

@ -41,6 +41,10 @@ for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
$CMD_PREFIX /usr/sbin/chroot /var/autoport/${AUTOPORT_CHROOT[$i]} su -l $SU_APPEND ${AUTOPORT_CHROOT_USER[$i]} -c "${CHROOT_COMMAND}"
else
echo "Entering ${AUTOPORT_CHROOT[$i]} autoport chroot environment"
hostname=`hostname`
grep $hostname /var/autoport/${AUTOPORT_CHROOT[$i]}/etc/hosts >/dev/null || {
sed -i "s|\(^127.0.0.1[[:space:]]*\)|\1$hostname |" /var/autoport/${AUTOPORT_CHROOT[$i]}/etc/hosts
}
[ -e /var/autoport/${AUTOPORT_CHROOT[$i]}/etc/profile.d/autoport.sh ] || {
echo "PS1='[\u@${AUTOPORT_CHROOT[$i]} \W]\$ '" > /var/autoport/${AUTOPORT_CHROOT[$i]}/etc/profile.d/autoport.sh
}

View File

@ -30,7 +30,7 @@ function fix_la_files() {
sed -i "s|libdir='/usr/$TARGET_PLATFORM/${_lib}'|libdir='/usr/${_lib}'|g" /usr/${_lib}/*.la
sed -i "s|libdir='/$TARGET_PLATFORM/${_lib}'|libdir='/usr/${_lib}'|g" /usr/${_lib}/*.la
sed -i "s|/usr/$TARGET_PLATFORM/${_lib}|/usr/${_lib}|g" /usr/${_lib}/*.la
sed -i "s|[:space:]/usr/$TARGET_PLATFORM/${_lib}|[:space:]/usr/${_lib}/lib|g" /usr/${_lib}/*.la
sed -i "s|[[:space:]]/usr/$TARGET_PLATFORM/${_lib}|[[:space:]]/usr/${_lib}/lib|g" /usr/${_lib}/*.la
}
done
}
@ -41,7 +41,7 @@ function fix_la_files_cross() {
sed -i "s|libdir='/usr/${_lib}'|libdir='/usr/$TARGET_PLATFORM/${_lib}'|g" /usr/$TARGET_PLATFORM/${_lib}/*.la
sed -i "s|libdir='/${_lib}'|libdir='/usr/$TARGET_PLATFORM/${_lib}'|g" /usr/$TARGET_PLATFORM/${_lib}/*.la
sed -i "s|/usr/${_lib}|/usr/$TARGET_PLATFORM/${_lib}|g" /usr/$TARGET_PLATFORM/${_lib}/*.la
sed -i "s|[:space:]/lib/${_lib}|[:space:]/usr/$TARGET_PLATFORM/${_lib}/lib|g" /usr/$TARGET_PLATFORM/${_lib}/*.la
sed -i "s|[[:space:]]/lib/${_lib}|[[:space:]]/usr/$TARGET_PLATFORM/${_lib}/lib|g" /usr/$TARGET_PLATFORM/${_lib}/*.la
}
done
}

111
autoport-launcher Executable file
View File

@ -0,0 +1,111 @@
#!/bin/bash
#
# autoport launcher
# (c) 2021 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
#. /etc/sysconfig/openmamba-central
. /etc/sysconfig/autoport
[ "$AUTOPORT_ENABLE" = "1" -o "$AUTOPORT_ENABLE" = "true" ] || exit 0
i=$1
[ "$i" ] || {
echo "Usage: autoport-launcher autoport_conf"
exit 1
}
[ "`uname -m`" = "x86_64" ] && HOST_IS_X86_64=1
[ "${AUTOPORT_DISABLE[$i]}" -a "${AUTOPORT_DISABLE[$i]}" != "0" ] && exit 0
PIDFILE=/run/autodist/autoport-launcher-${i}.pid
[ -e $PIDFILE ] && {
PIDCHECK=`cat $PIDFILE`
[ "$PIDCHECK" -a -e /proc/$PIDCHECK ] && {
echo "autoport-launcher for configuration $i already running; exiting."
exit 0
}
}
echo $$ > $PIDFILE
trap "rm -f $PIDFILE; exit 1" SIGQUIT SIGINT SIGKILL SIGTERM
if [ "$HOST_IS_X86_64" -a "${AUTOPORT_ARCH[$i]}" != "x86_64" ]; then
CMD_PREFIX=linux32
else
CMD_PREFIX=
fi
UPDATE_DONE=
for r in ${AUTOPORT_REPOSITORIES[$i]}; do
if [ "${AUTOPORT_NATIVE[$i]}" ]; then
AUTOPORT_PIDFILE="/run/autodist/autoport-${AUTOPORT_ARCH[$i]}-$r.pid"
LOGFILE="/var/autodist/log/autoport-native-$r-${AUTOPORT_ARCH[$i]}.log"
LASTLOGFILE="/var/autodist/log/autoport-native-$r-${AUTOPORT_ARCH[$i]}-last.log"
elif [ "${AUTOPORT_CHROOT[$i]}" ]; then
AUTOPORT_PIDFILE="/var/autoport/${AUTOPORT_CHROOT[$i]}/run/autodist/autoport-${AUTOPORT_ARCH[$i]}-$r.pid"
LOGFILE="/var/autodist/log/autoport-chroot-$r-${AUTOPORT_CHROOT[$i]}.log"
LASTLOGFILE="/var/autodist/log/autoport-chroot-$r-${AUTOPORT_CHROOT[$i]}-last.log"
elif [ "${AUTOPORT_CROSS[$i]}" ]; then
AUTOPORT_PIDFILE="/run/autoport/autoport-${AUTOPORT_ARCH[$i]}-$r.pid"
LOGFILE="/var/autodist/log/autoport-cross-$r-${AUTOPORT_CROSS[$i]}.log"
LASTLOGFILE="/var/autodist/log/autoport-cross-$r-${AUTOPORT_CROSS[$i]}-last.log"
else
continue
fi
if [ "$UPDATE_DONE" == "" ]; then
if [ "${AUTOPORT_NATIVE[$i]}" ]; then
[[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Updating packages in ${AUTOPORT_ARCH[$i]} native environment"
echo "= Updating packages in ${AUTOPORT_ARCH[$i]} native environment..." >> $LOGFILE
LANG=C dnf update -y >> $LOGFILE
UPDATE_DONE=1
elif [ "${AUTOPORT_CHROOT[$i]}" ]; then
[[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Updating packages in ${AUTOPORT_CHROOT[$i]} chroot environment"
#echo "= Updating packages in ${AUTOPORT_CHROOT[$i]} chroot environment..." >> $LOGFILE
LANG=C /usr/sbin/chroot /var/autoport/${AUTOPORT_CHROOT[$i]} dnf update -y > /dev/null
#[ "${AUTOPORT_CHROOT_ICECREAM[$i]}" ] && LANG=C /usr/sbin/chroot /var/autoport/${AUTOPORT_CHROOT[$i]} /etc/init.d/icecream start
UPDATE_DONE=1
fi
fi
if [ -e $AUTOPORT_PIDFILE ]; then
PIDCHECK=`cat $AUTOPORT_PIDFILE`
if [ "$PIDCHECK" -a -e /proc/$PIDCHECK ]; then
echo "autoport for configuration $i already running; continuing."
continue
fi
fi
[ -e $LOGFILE ] && mv $LOGFILE $LASTLOGFILE
echo "+ Autoport start at `date`" > $LOGFILE
echo "============================================" >> $LOGFILE
if [ "${AUTOPORT_NATIVE[$i]}" ]; then
echo "= Working on $r(${AUTOPORT_ARCH[$i]}) in native mode" >> $LOGFILE
su -l ${AUTOPORT_CHROOT_USER[$i]} -c "$CMD_PREFIX autoport -b -r $r" >> $LOGFILE
AUTODIST_HOME=`getent passwd ${AUTOPORT_CHROOT_USER[$i]} | cut -d: -f6`
cat $AUTODIST_HOME/.autoport/${AUTOPORT_ARCH[$i]}/$r-current.log >> $LOGFILE
elif [ "${AUTOPORT_CHROOT[$i]}" ]; then
echo "= Working on $r(${AUTOPORT_CHROOT[$i]}) in chroot mode..." >> $LOGFILE
$CMD_PREFIX /usr/sbin/chroot /var/autoport/${AUTOPORT_CHROOT[$i]} su -l ${AUTOPORT_CHROOT_USER[$i]} -c "autoport -b -r $r" >> $LOGFILE
if [ "${AUTOPORT_CHROOT_USER[$i]}" = "autodist" ]; then
cat /var/autoport/${AUTOPORT_CHROOT[$i]}/var/autodist/.autoport/${AUTOPORT_ARCH[$i]}/$r-current.log >> $LOGFILE
else
cat /var/autoport/${AUTOPORT_CHROOT[$i]}/home/${AUTOPORT_CHROOT_USER[$i]}/.autoport/${AUTOPORT_ARCH[$i]}/$r-current.log >> $LOGFILE
fi
elif [ "${AUTOPORT_CROSS[$i]}" ]; then
[[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Working on $r(${AUTOPORT_CROSS[$i]}) in cross-platform mode"
echo "= Working on $r(${AUTOPORT_CROSS[$i]}) in cross-platform mode" >> $LOGFILE
su -l autodist -c "autoport -b -x ${AUTOPORT_CROSS[$i]} -r $r" >> $LOGFILE
cat /var/autodist/.autoport/${AUTOPORT_CROSS[$i]}/$r-current.log >> $LOGFILE
fi
echo "- Autoport end at `date`" >> $LOGFILE
echo "============================================" >> $LOGFILE
done
rm -f ${PIDFILE}

View File

@ -20,9 +20,9 @@ source_dir="/var/autodist/RPM/SOURCES"
build_dir="/var/autodist/RPM/BUILD"
tmppath_dir="/var/tmp/autodist"
ftp_alias[0]="devel"
ftpurl_ro_rpms[0]="ftp://ftp.openmamba.org/pub/openmamba/devel/RPMS.@arch@"
ftpurl_ro_srpms[0]="ftp://ftp.openmamba.org/pub/openmamba/devel/SRPMS.base"
ftp_alias[0]="base"
ftpurl_ro_rpms[0]="ftp://ftp.openmamba.org/pub/openmamba/base/RPMS.@arch@"
ftpurl_ro_srpms[0]="ftp://ftp.openmamba.org/pub/openmamba/base/SRPMS.base"
ftp_rw_server[0]="ftp://ftp.openmamba.org"
ftp_rw_port[0]=
ftp_rw_passive_mode[0]=on
@ -30,7 +30,7 @@ ftp_rw_user[0]=
ftp_rw_passwd[0]=
ftp_rw_rpms_dir[0]="/RPMS.@arch@"
ftp_rw_srpms_dir[0]="/SRPMS.base"
arch_list[0]="i586 ppc arm x86_64"
arch_list[0]="i586 arm x86_64 aarch64"
arch_noarch_upload[0]="${arch_list[0]}"
ftpdir_rw_old[0]="/old"

View File

@ -4,15 +4,13 @@ openmamba-sound-theme
desktop-base-openmamba
autodist
kernel27
rpm
apt
rootfiles
soundfont-2rock9
livecd-tools
makedist
makedist-openmamba
postplug
grub-theme-openmamba
kdevelop
lxde
distromatic
u-boot

View File

@ -1,21 +1,49 @@
# Global configuration file for autodist
#
REPS_BASE_URL=http://www.openmamba.org/pub/openmamba
AUTODIST_ARCHS=(i586 x86_64 arm aarch64)
SITE_BASE_URL=https:/openmamba.org
REPS_BASE_URL=${SITE_BASE_URL}/pub/openmamba
LOCAL_REPS_BASE_DIR=/var/ftp/pub/openmamba
SEND_SERVER=devel-autodist
GNOME_VER=3.4
#WEBBUILD_URL=http://localhost/cgi-bin/webbuild
#WEBBUILD_USER=
#WEBBUILD_EMAIL=
#WEBBUILD_SECRET=
WEBBUILD_STATEDIR=/var/webbuild
WEBBUILD_DISTROQUERY_URL="http://www.openmamba.org/cgi-bin/distroquery"
AUTOBUILD_MAXNUM=200
AUTOBUILD_DATEFROM=20060601
AUTOBUILD_SKIP_DAYS=28
AUTOBUILD_SUCCESS_DAYS=3
AUTODIST_REPOSITORY=devel-autodist
AUTODIST_DELAYED_REPOSITORY=devel-future
AUTODIST_REPOSITORIES=(devel devel-games devel-makedist devel-kernel devel-xorg devel-kde4 devel-autodist)
AUTODIST_REPOSITORIES=(base devel-makedist devel-kernel devel-autodist devel-misc)
AUTOPORT_UNSTAGE_ARCHS="i586"
AUTOPORT_STAGEVARS="--define stage1=1"
AUTOPORT_MAX_STEPS=10
#RPMDIR=/usr/src/RPM
AUTODIST_REBUILDOLD_MAX=20
AUTODIST_REBUILDOLD_FROMDATE=20090101
#
# Set to disable autodist-repository and use local list
#
WEBBUILD_REPOSITORIES=(base devel-kernel devel-makedist devel-misc devel-autodist devel-future devel-past \
milestone1 milestone1-updates milestone1-games milestone1-1.1 milestone1-makedist \
milestone2 milestone2-games milestone2-updates milestone2-kernel milestone2-kde4 \
milestone2-xorg milestone2-makedist milestone2-java \
milestone1-java milestone1-contrib)
#
# Set to enable autodist-repository (you also need to disable WEBBUILD_REPOSITORIES above)
#
#AUTODIST_REPOSITORIES_LOCAL_REPS=(base devel-kernel devel-makedist devel-misc devel-autodist \
# devel-future devel-past \
# milestone3 milestone3-games milestone3-updates milestone3-makedist \
# milestone2 milestone2-games milestone2-updates milestone2-kernel milestone2-kde4 \
# milestone2-xorg milestone2-makedist milestone2-java milestone2-kernel-next \
# milestone1 milestone1-updates milestone1-games milestone1-1.1 milestone1-makedist)
#AUTODIST_REPOSITORIES_REMOTE_REPS=(devel-contrib \
# milestone1-java milestone1-contrib)
#AUTODIST_REPOSITORIES_TRANSITIONAL_REP=devel-makedist
#AUTODIST_REPOSITORIES_REMOTE_FTPUSER=
#AUTODIST_REPOSITORIES_REMOTE_FTPPASS=
#AUTODIST_REPOSITORIES_REMOTE_FTP=

View File

@ -1,213 +0,0 @@
# openmamba autodist build jobs database - architecture independent
#
# Copyright (c) 2006-2012 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Released under the terms of the GNU GPL version 3 license
#
xorg_drv_video_all=(
xorg-drv-video-apm,xorg-drv-video-ark,xorg-drv-video-ast,xorg-drv-video-ati,\
xorg-drv-video-chips,xorg-drv-video-cirrus,xorg-drv-video-dummy,xorg-drv-video-fbdev,\
xorg-drv-video-geode,xorg-drv-video-glint,xorg-drv-video-i128,xorg-drv-video-i740,\
xorg-drv-video-intel,xorg-drv-video-mach64,xorg-drv-video-mga,xorg-drv-video-neomagic,\
xorg-drv-video-newport,xorg-drv-video-nouveau,xorg-drv-video-nv,xorg-drv-video-openchrome,\
xorg-drv-video-r128,xorg-drv-video-radeonhd,xorg-drv-video-rendition,xorg-drv-video-s3,\
xorg-drv-video-s3virge,xorg-drv-video-savage,xorg-drv-video-siliconmotion,xorg-drv-video-sis,\
xorg-drv-video-trident,xorg-drv-video-tseng,xorg-drv-video-v4l,\
xorg-drv-video-vesa,xorg-drv-video-vmware,xorg-drv-video-voodoo,xorg-drv-video-xgixp,\
xorg-drv-video
%continue_on_error
1
)
#xorg-drv-video-sisusb,
xorg_drv_input=(
xorg-drv-input-acecad,xorg-drv-input-aiptek,xorg-drv-input-elographics,\
xorg-drv-input-evdev,xorg-drv-input-fpit,xorg-drv-input-hyperpen,xorg-drv-input-joystick,\
xorg-drv-input-keyboard,xorg-drv-input-mouse,xorg-drv-input-mutouch,xorg-drv-input-penmount,\
xorg-drv-input-synaptics,xorg-drv-input-tslib,xorg-drv-input-vmmouse,xorg-drv-input-void,\
xorg-drv-input
%continue_on_error
1
)
abiword=(
abiword,abiword-docs
%build_and_install
1
)
compiz=(
compiz,compiz-bcop,compiz-plugins-extra,compiz-plugins-main,libcompizconfig,compizconfig-backend-kconfig4,\
compizconfig-simple-settings-manager,emerald
%build_and_install
1
)
# compiz-bcop,compizconfig-backend-kconfig,compizconfig-settings-manager,compizconfig-backend-gconf
compiz09=(
compiz-core,libcompizconfig,python-compizconfig,compizconfig-backend-kconfig4,compiz-fusion-plugins-main,compiz-fusion-plugins-extra
%build_and_install
1
)
#curl=(
#curl
#%build_and_install
#1
#)
evolution=(
libevolution-data-server,evolution
%build_and_install
1
)
#,evolution-exchange
#ekiga=(
#libpt,libopal,ekiga
#%build_and_install
#1
#)
#gobby=(
#obby,gobby
#%build_and_install
#1
#)
kde3=(
kdelibs,kdebase,kdeadmin,kdeutils,kdenetwork,kdeaccessibility,kdepim,kdegames,kdegraphics,kdemultimedia,kdeaddons,kdenetwork,\
kdesdk,kdetoys,kdebindings,kdewebdev,kdeedu,kdeartwork,kde-i18n
%build_and_install
1
)
kde4=(
kdelibs,kdepimlibs,oxygen-icons,nepomuk-core,kde-runtime,kactivities,kde-workspace,kde-wallpapers,kde-baseapps,\
nepomuk-widgets,kdepim4,kdepim-runtime,kdeadmin,kdenetwork4,kdetoys,kdesdk,libkdcraw,libkexiv2,kdeartwork,marble,\
kdeplasma-addons,kde-l10n,blinken,libkipi,gwenview,libkdeedu,analitza,cantor,kalgebra,kalzium,kamera,\
kanagram,kate,kbruch,kcolorchooser,kdegraphics-strigi-analyzer,kgamma,kgeography,khangman,kig,kiten,\
klettres,kmplot,kolourpaint,konsole,kruler,ksnapshot,kstars,libksane,\
okular,smokegen,smokeqt,smokekde,svgpart,rocs,kwordquiz,kturtle,ktouch,qtruby,korundum,\
kross-interpreters,PyKDE4,perl-Qt4,perl-KDE,kdegraphics-thumbnailers,ksaneplugin,parley,step,\
ark,filelight,kcalc,kcharselect,kdf,kfloppy,kgpg,kremotecontrol,ktimer,kwallet,sweeper,\
jovie,kmousetool,kmouth,qyoto,kaccessible,kdegraphics-mobipocket,\
libkcddb,libkcompactdisc,audiocd-kio,kscd,dragon,kmix,juk,print-manager,kdewebdev,\
bomber
%build_and_install,%continue_on_error
1,1
)
# kdegames
kde49=(
kdelibs,kdepimlibs,oxygen-icons,nepomuk-core,kde-runtime,kactivities,kde-workspace,kde-wallpapers,kde-baseapps,kdepim4,\
kdepim-runtime,kdeadmin,kdenetwork4,kdetoys,kdesdk,libkdcraw,libkexiv2,kdeartwork,marble,\
kdeplasma-addons,kde-l10n,blinken,cantor,libkipi,gwenview,libkdeedu,analitza,kalgebra,kalzium,kamera,\
kanagram,kate,kbruch,kcolorchooser,kdegraphics-strigi-analyzer,kgamma,kgeography,khangman,kig,kiten,\
klettres,kmplot,kolourpaint,konsole,kruler,ksnapshot,kstars,libksane,\
okular,smokegen,smokeqt,smokekde,svgpart,rocs,kwordquiz,kturtle,ktouch,qtruby,korundum,\
kross-interpreters,PyKDE4,perl-Qt4,perl-KDE,kdegraphics-thumbnailers,ksaneplugin,parley,step,\
ark,filelight,kcalc,kcharselect,kdf,kfloppy,kgpg,kremotecontrol,ktimer,kwallet,sweeper,\
jovie,kmousetool,kmouth,qyoto,kaccessible,kdegraphics-mobipocket,\
libkcddb,libkcompactdisc,audiocd-kio,kscd,dragon,kmix,juk,printer-applet,kdegames
%build_and_install,%continue_on_error
1,1
)
kde48=(
kdelibs,kdepimlibs,oxygen-icons,kde-runtime,kactivities,kde-workspace,kde-wallpapers,kde-baseapps,kdepim4,\
kdepim-runtime,kdeadmin,kdemultimedia,kdenetwork4,kdeartwork,kdegames,kdetoys,kdesdk,marble,\
kdeplasma-addons,kde-l10n,blinken,cantor,gwenview,libkdeedu,kalgebra,kalzium,kamera,\
kanagram,kate,kbruch,kcolorchooser,kdegraphics-strigi-analyzer,kgamma,kgeography,khangman,kig,kiten,\
klettres,kmplot,kolourpaint,konsole,kruler,ksnapshot,kstars,libkdcraw,libkexiv2,libkipi,libksane,\
okular,smokegen,smokeqt,smokekde,svgpart,rocs,kwordquiz,kturtle,ktouch,qtruby,korundum,\
kross-interpreters,PyKDE4,perl-Qt4,perl-KDE,kdegraphics-thumbnailers,ksaneplugin,parley,step,\
ark,filelight,kcalc,kcharselect,kdf,kfloppy,kgpg,kremotecontrol,ktimer,kwallet,sweeper,\
analitza,jovie,kmousetool,kmouth,qyoto,kaccessible,ksecrets,printer-applet,kdegraphics-mobipocket
%build_and_install,%continue_on_error
1,1
)
xfce4=(
libxfce4util,libxfce4ui,xfce4-appfinder,xfce4-dev-tools,xfce4-panel,xfce4-session,xfce4-settings,xfconf,xfdesktop,xfwm4
%build_and_install,%continue_on_error
1,1
)
alsa=(
libalsa,libalsa-plugins,alsa-utils,alsa-tools,python-alsa
%build_and_install,%continue_on_error
1,1
)
#,alsa-driver
apache_tomcat=(
apache-tomcat-dbcp,apache-tomcat
%build_and_install
1
)
netbeans=(
netbeans-platform,netbeans
%build_and_install
1
)
firefox=(
xulrunner,firefox
%build_and_install
1
)
xfce=(
libxfce4util,xfconf,libxfcegui4,libxfce4ui,xfce-utils,xfce4-appfinder,xfce4-panel,xfce4-session,xfdesktop,xfwm4
%build_and_install
1
)
#xfce4-mixer,xfprint,orage,xfwm4-themes,libxfce4menu
FlightGear=(
libSimGear,FlightGear
%build_and_install
1
)
valknut=(
libdc,valknut
%build_and_install
1
)
# use for major release update (e.g. 2.24 -> 2.26)
gnome=(
libgnome,libsoup,libgweather,librsvg,libwnck,libgdl,gnome-desktop,python-gnome-desktop,libeel,gnome-icon-theme,gnome-menus,\
libgnome-panel,anjuta,zenity,metacity,nautilus,brasero,cheese,evince,gconf-editor,gedit,gedit-plugins
%build_and_install,%continue_on_error
1,1
)
fwbuilder=(
libfwbuilder,fwbuilder
%build_and_install
1
)
koffice=(
koffice
%build_and_install
1
)
#,koffice-i18n
python_numpy=(
python-numpy
with_pyver
-
3
)
shorewall=(
shorewall-core,shorewall
%build_and_install
1
)

View File

@ -1,81 +0,0 @@
# openmamba autodist build jobs database
#
# Copyright (c) 2006-2010 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Released under the terms of the GNU GPL version 3 license
#
#
# XTC 1 (Cross Toolchain)
#
# build native binutils (gcc needed, so it's not a stage1 build)
# and cross platform binutils
#
binutils=(
binutils
cross_target_cpu,_target_platform
arm,arm-openmamba-linux-gnueabi
avr,avr
)
glibc=(
glibc
cross_target_cpu,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER,build_doc,build_profile,build_selinux
arm,-,-,mamba-arm,3.2,0,0,0
)
kernel=(
kernel
target,KERNEL_TARGET
arm,mamba-arm
)
linux_firmware=(
linux-firmware
target,KERNEL_TARGET,KERNEL_VER
arm,mamba-arm,3.4
)
pam=(
pam
bootstrap
1
)
rpm=(
rpm
bootstrap
1
)
klibc=(
klibc
KERNEL_VER
2.6.33mamba-arm
)
gcc=(
gcc
cross_target_cpu,_target_platform,disable_java,disable_gjdoc
arm,arm-openmamba-linux-gnueabi,-,1
avr,avr,1,-
)
udev=(
udev
%build_and_install
0
)
libcec=(
libcec
_with_raspberrypi
-
1
)
xbmc=(
xbmc
_with_raspberrypi
-
1
)

View File

@ -1,385 +0,0 @@
# openmamba autodist build jobs database for i586 platform
#
# Copyright (c) 2006-2010 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Released under the terms of the GNU GPL version 3 license
#
#
# XTC 1 (Cross Toolchain)
#
# build native binutils (gcc needed, so it's not a stage1 build)
# and cross platform binutils
#
binutils=(
binutils
cross_target_cpu,_target_platform
i586,i586-openmamba-linux-gnu
arm,arm-openmamba-linux-gnueabi
avr,avr
x86_64,x86_64-openmamba-linux-gnu
ppc,ppc-openmamba-linux-gnu
)
#
# XTC 2
#
# glibc stage1: build headers only
glibc_stage1=(
glibc
cross_target_cpu,stage1,_target_platform,KERNEL_TARGET,KERNEL_VER
i586,1,i586-openmamba-linux-gnu,mamba,-
arm,1,arm-openmamba-linux-gnueabi,mamba-arm,2.6.33
ppc,1,ppc-openmamba-linux-gnu,mamba-ppc,2.6.33
x86_64,1,x86_64-openmamba-linux-gnu,mamba-x86_64,-
)
#
# XTC 3
#
gcc_stage1=(
gcc
cross_target_cpu,stage1,_target_platform
arm,1,arm-openmamba-linux-gnueabi
i586,1,i586-openmamba-linux-gnu
ppc,1,ppc-openmamba-linux-gnu
x86_64,1,x86_64-openmamba-linux-gnu
)
#
# XTC 4
#
glibc_stage2=(
glibc
cross_target_cpu,stage2,bigendian,softfloat,_target_platform,KERNEL_TARGET,KERNEL_VER
arm,1,-,-,arm-openmamba-linux-gnueabi,mamba-arm,2.6.33
i586,1,-,-,i586-openmamba-linux-gnu,mamba,-
ppc,1,-,-,ppc-openmamba-linux-gnu,mamba,-
x86_64,1,-,-,x86_64-openmamba-linux-gnu,mamba-x86_64,-
)
#
# XTC 5
#
gcc=(
gcc
cross_target_cpu,_target_platform,disable_java
i586,i586-openmamba-linux-gnu,-
arm,arm-openmamba-linux-gnueabi,1
x86_64,x86_64-openmamba-linux-gnu,1
ppc,ppc-openmamba-linux-gnu,1
avr,avr,1
)
#
# XTC 6
#
glibc=(
glibc
target,cross_target_cpu,multilib,_target_platform,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER
-,i586,-,i586-openmamba-linux-gnu,-,-,mamba,-
-,x86_64,-,x86_64-openmamba-linux-gnu,-,-,mamba-x86_64,-
-,arm,-,arm-openmamba-linux-gnueabi,-,-,mamba-arm,-
-,ppc,-,ppc-openmamba-linux-gnu,-,-,mamba-ppc,2.6.33
x86_64,i586,1,i586-openmamba-linux-gnu,-,-,mamba-x86_64,-
)
# XTC 7
cross_environment=(
cross-environment
cross_target_cpu,autodist_crossonly,_target_platform
i586,1,i586-openmamba-linux-gnu
arm,1,arm-openmamba-linux-gnueabi
ppc,1,ppc-openmamba-linux-gnu
x86_64,1,x86_64-openmamba-linux-gnu
)
glibc_arm=(
glibc
cross_target_cpu,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER
arm,-,-,mamba-arm,-
)
glibc_multilib=(
glibc
target,cross_target_cpu,multilib,_target_platform,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER
x86_64,i586,1,x86_64-openmamba-linux-gnu,-,-,mamba-x86_64,-
)
glibc_cross_multilib=(
glibc
target,cross_target_cpu,multilib,_target_platform,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER
-,i586,1,x86_64-openmamba-linux-gnu,-,-,mamba-x86_64,-
)
gcc_cross=(
gcc
cross_target_cpu,_target_platform,disable_java
x86_64,x86_64-openmamba-linux-gnu,1
arm,arm-openmamba-linux-gnueabi,1
ppc,ppc-openmamba-linux-gnu,1
avr,avr,1
)
glibc_cross=(
glibc
target,cross_target_cpu,multilib,_target_platform,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER
-,x86_64,-,x86_64-openmamba-linux-gnu,-,-,mamba-x86_64,-
-,arm,-,arm-openmamba-linux-gnueabi,-,-,mamba-arm,-
-,ppc,-,ppc-openmamba-linux-gnu,-,-,mamba-ppc,2.6.33
x86_64,i586,1,i586-openmamba-linux-gnu,-,-,mamba-x86_64,-
)
pkg_config=(
pkg-config
cross_target_cpu,_target_platform
i586,i586-openmamba-linux-gnu
x86_64,x86_64-openmamba-linux-gnu
arm,arm-openmamba-linux-gnueabi
ppc,ppc-openmamba-linux-gnu
)
gcc_uclibc=(
gcc
cross_target_cpu,_target_platform,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER
arm,arm-linux-uclibc,-,-,mamba-arm,2.6.33
)
dietlibc=(
dietlibc
cross_target_cpu
i586
arm
)
gcc34=(
gcc34
cross_target_cpu
i586
ppc
)
klibc=(
klibc
cross_target_cpu,_target_platform,KERNEL_TARGET,KERNEL_VER
-,-,-
ppc,ppc-openmamba-linux-gnu,mamba-ppc,-
x86_64,x86_64-openmamba-linux-gnu,3mamba-x86_64,-
arm,arm-openmamba-linux-gnueabi,mamba-arm,-
)
#
# arm cross toolchain
#
binutils_arm=(
binutils
cross_target_cpu,_target_platform
arm,arm-openmamba-linux-gnueabi
)
#
# ppc cross toolchain
#
binutils_ppc=(
binutils
cross_target_cpu,_target_platform
ppc,ppc-openmamba-linux-gnu
)
glibc_ppc_stage1=(
glibc
cross_target_cpu,stage1,_target_platform,KERNEL_TARGET,KERNEL_VER
ppc,1,ppc-openmamba-linux-gnu,mamba,-
)
gcc_ppc_stage1=(
gcc
cross_target_cpu,stage1,_target_platform
ppc,1,ppc-openmamba-linux-gnu
)
glibc_ppc_stage2=(
glibc
cross_target_cpu,stage2,bigendian,softfloat,_target_platform,KERNEL_TARGET,KERNEL_VER
ppc,1,-,-,ppc-openmamba-linux-gnu,mamba-ppc,2.6.33
)
gcc_ppc=(
gcc
cross_target_cpu,_target_platform
ppc,ppc-openmamba-linux-gnu
)
glibc_ppc=(
glibc
cross_target_cpu,_target_platform,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER
ppc,ppc-openmamba-linux-gnu,-,-,mamba-ppc,2.6.33
)
#
# KERNEL
#
kernel=(
kernel
target,KERNEL_TARGET
i586,mamba
i586,mamba-64GB
i586,mamba-rt
i586,mamba-64GB-rt
arm,mamba-arm
)
#arm,mamba-arm-kirkwood
#x86_64,mamba-x86_64
kernel_37=(
kernel
target,KERNEL_TARGET
i586,mamba
i586,mamba-64GB
arm,mamba-arm
arm,mamba-arm-kirkwood
x86_64,mamba-x86_64
)
kernel_34=(
kernel
target,KERNEL_TARGET
i586,mamba
i586,mamba-64GB
arm,mamba-arm
arm,mamba-arm-kirkwood
x86_64,mamba-x86_64
i586,mamba-rt
i586,mamba-64GB-rt
)
kernel_arm_kirkwood=(
kernel
target,KERNEL_TARGET
arm,mamba-arm-kirkwood
)
kernel_milestone2=(
kernel
target,KERNEL_TARGET
i586,mamba
i586,mamba-64GB
arm,mamba-arm
)
kernel_rt=(
kernel
target,KERNEL_TARGET
i586,mamba-rt
)
kernel_64GB=(
kernel
target,KERNEL_TARGET
i586,mamba-64GB
)
kernel_64GB_rt=(
kernel
target,KERNEL_TARGET
i586,mamba-64GB-rt
)
kernel_x86_64=(
kernel
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
kernel_packages=(
hsfmodem,slmodem,compat-wireless,alsa-driver,ndiswrapper,VirtualBox-kernel,\
broadcom-sta,stk11xx,cm2020,r8101
target,KERNEL_TARGET,KERNEL_VER
i586,mamba,-
i586,mamba-64GB,-
i586,mamba-rt,-
i586,mamba-64GB-rt,-
)
#lirc
kernel_packages_37=(
hsfmodem,slmodem,compat-wireless,alsa-driver,ati-driver,ndiswrapper,NVIDIA,VirtualBox-kernel,\
broadcom-sta,stk11xx,cm2020,r8101
target,KERNEL_TARGET,KERNEL_VER
i586,mamba,3.7
i586,mamba-64GB,3.7
)
#i586,mamba-rt,3.7
#i586,mamba-64GB-rt,3.7
kernel_packages_36=(
hsfmodem,slmodem,compat-wireless,alsa-driver,ati-driver,ndiswrapper,NVIDIA,VirtualBox-kernel,\
broadcom-sta,stk11xx,cm2020,r8101
target,KERNEL_TARGET,KERNEL_VER
i586,mamba,3.6
i586,mamba-64GB,3.6
i586,mamba-rt,3.6
i586,mamba-64GB-rt,3.6
)
#lirc
kernel_packages_34=(
hsfmodem,slmodem,compat-wireless,alsa-driver,ati-driver,ndiswrapper,NVIDIA,VirtualBox-kernel,\
broadcom-sta,stk11xx,cm2020,r8101
target,KERNEL_TARGET,KERNEL_VER
i586,mamba,3.4
i586,mamba-64GB,3.4
i586,mamba-rt,3.4
i586,mamba-64GB-rt,3.4
)
#lirc
kernel_packages_32=(
hsfmodem,slmodem,compat-wireless,alsa-driver,ati-driver,lirc,ndiswrapper,NVIDIA,NVIDIA_71xx,NVIDIA_96xx,NVIDIA_173xx,VirtualBox-kernel,\
broadcom-sta,stk11xx,cm2020,r8101
target,KERNEL_TARGET,KERNEL_VER
i586,mamba,3.2
i586,mamba-64GB,3.2
)
kernel_packages_30=(
hsfmodem,slmodem,compat-wireless,alsa-driver,ati-driver,lirc,ndiswrapper,NVIDIA,NVIDIA_71xx,NVIDIA_96xx,NVIDIA_173xx,VirtualBox,\
broadcom-sta,atheros-81,drbd,rtl8192se
target,KERNEL_TARGET,KERNEL_VER
i586,mamba,3.0
i586,mamba-64GB,3.0
)
kernel_hannspad=(
kernel-hannspad
target
arm
)
kernel_iconia=(
kernel-iconia
target
arm
)
kernel_iconia_altgcc=(
kernel-iconia
target,_target_platform
arm,arm-none-linux-gnueabi
)
linux_firmware=(
linux-firmware
target,KERNEL_TARGET,KERNEL_VER
i586,mamba,3.4
)
NVIDIA=(
NVIDIA
target,KERNEL_TARGET,KERNEL_VER
i586,mamba,-
i586,mamba-64GB,-
i586,mamba-rt
i586,mamba-64GB-rt
)

View File

@ -1,267 +0,0 @@
# openmamba autodist build jobs database
#
# Copyright (c) 2006-2010 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Released under the terms of the GNU GPL version 3 license
#
# XTC 1 (Cross Toolchain)
cross_environment=(
cross-environment
cross_target_cpu,autodist_crossonly,_target_platform
x86_64,1,x86_64-openmamba-linux-gnu
i586,1,i586-openmamba-linux-gnu
arm,1,arm-openmamba-linux-gnueabi
ppc,1,ppc-openmamba-linux-gnu
)
#
# XTC 2
#
# build native binutils (gcc needed, so it's not a stage1 build)
# and cross platform binutils
#
binutils=(
binutils
cross_target_cpu,_target_platform
x86_64,x86_64-openmamba-linux-gnu
i586,i586-openmamba-linux-gnu
arm,arm-openmamba-linux-gnueabi
ppc,ppc-openmamba-linux-gnu
)
#
# XTC 3
#
# glibc stage1: build headers only
glibc_stage1=(
glibc
cross_target_cpu,stage1,_target_platform,KERNEL_TARGET,KERNEL_VER
x86_64,1,x86_64-openmamba-linux-gnu,mamba-x86_64,-
arm,1,arm-openmamba-linux-gnueabi,mamba-arm,2.6.33
i586,1,i586-openmamba-linux-gnu,mamba,-
ppc,1,ppc-openmamba-linux-gnu,mamba,-
)
#
# XTC 4
#
gcc_stage1=(
gcc
cross_target_cpu,stage1,_target_platform
x86_64,1,x86_64-openmamba-linux-gnu
arm,1,arm-openmamba-linux-gnueabi
i586,1,i586-openmamba-linux-gnu
ppc,1,ppc-openmamba-linux-gnu
)
#
# XTC 5
#
glibc_stage2=(
glibc
cross_target_cpu,stage2,bigendian,softfloat,_target_platform,KERNEL_TARGET,KERNEL_VER
x86_64,1,-,-,x86_64-openmamba-linux-gnu,mamba-x86_64,-
arm,1,-,-,arm-openmamba-linux-gnueabi,mamba-arm,2.6.33
i586,1,-,-,i586-openmamba-linux-gnu,mamba,-
ppc,1,-,-,ppc-openmamba-linux-gnu,mamba,-
)
#
# XTC 6
#
gcc=(
gcc
cross_target_cpu,_target_platform
x86_64,x86_64-openmamba-linux-gnu
arm,arm-openmamba-linux-gnueabi
i586,i586-openmamba-linux-gnu
ppc,ppc-openmamba-linux-gnu
)
#
# XTC 7
#
glibc=(
glibc
cross_target_cpu,_target_platform,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER
ppc,ppc-openmamba-linux-gnu,-,-,mamba-ppc,2.6.33
x86_64,x86_64-openmamba-linux-gnu,-,-,mamba-x86_64,-
i586,i586-openmamba-linux-gnu,-,-,mamba,-
arm,arm-openmamba-linux-gnueabi,-,-,mamba-arm,2.6.33
)
gcc_uclibc=(
gcc
cross_target_cpu,_target_platform,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER
arm,arm-linux-uclibc,-,-,mamba-arm,2.6.33
)
dietlibc=(
dietlibc
cross_target_cpu
ppc
x86_64
i586
arm
)
gcc34=(
gcc34
cross_target_cpu
ppc
x86_64
i586
ppc
)
#klibc=(
#klibc
#cross_target_cpu,_target_platform,KERNEL_VER
#-,-,-
#ppc,ppc-openmamba-linux-gnueabi,2.6.33mamba-ppc
#)
kernel=(
kernel
target,KERNEL_TARGET
ppc,mamba-ppc
)
kernel_new=(
kernel
target,KERNEL_TARGET,KERNEL_VER
ppc,mamba-ppc,2.6.33
)
kernel_extra=(
kernel-extramodules
target,KERNEL_TARGET
ppc,mamba-ppc
)
kernel_packages=(
hsfmodem,compat-wireless,ati-driver,NVIDIA,NVIDIA_71xx,NVIDIA_96xx,NVIDIA_173xx,broadcom-sta
target,KERNEL_TARGET,KERNEL_VER
ppc,mamba-ppc,-
)
# slmodem, alsa-driver, lirc,VirtualBox, ndiswrapper, alsa-driver
kernel_packages_new=(
hsfmodem,compat-wireless,ati-driver,NVIDIA,NVIDIA_71xx,NVIDIA_96xx,NVIDIA_173xx,broadcom-sta
target,KERNEL_TARGET,KERNEL_VER
ppc,mamba-ppc,2.6.33
)
NVIDIA_all=(
NVIDIA,NVIDIA_71xx,NVIDIA_96xx,NVIDIA_173xx
target,KERNEL_TARGET,KERNEL_VER
ppc,mamba-ppc
)
alsa_driver=(
alsa-driver
target,KERNEL_TARGET
ppc,mamba-ppc
)
ati_driver=(
ati-driver
target,KERNEL_TARGET
ppc,mamba-ppc
)
broadcom_sta=(
broadcom-sta
target,KERNEL_TARGET
ppc,mamba-ppc
)
kernel_extramodules=(
kernel-extramodules
target,KERNEL_TARGET
ppc,mamba-ppc
)
kernel_nongpl=(
kernel-nongpl
target,KERNEL_TARGET
ppc,mamba-ppc
)
kernel_wireless_backport=(
kernel-wireless-backport
target,KERNEL_TARGET
ppc,mamba-ppc
)
lirc=(
lirc
target,KERNEL_TARGET
ppc,mamba-ppc
)
ndiswrapper=(
ndiswrapper
target,KERNEL_TARGET
ppc,mamba-ppc
)
NVIDIA=(
NVIDIA
target,KERNEL_TARGET
ppc,mamba-ppc
)
VirtualBox=(
VirtualBox
target,KERNEL_TARGET
ppc,mamba-ppc
)
glibc=(
glibc
cross_target_cpu,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER
ppc,-,-,mamba-ppc,2.6.33
)
gcc=(
gcc
cross_target_cpu
ppc
)
binutils=(
binutils
cross_target_cpu
ppc
)
pam=(
pam
bootstrap
1
)
rpm=(
rpm
bootstrap
1
)
klibc=(
klibc
KERNEL_VER
2.6.33mamba-ppc
)
emacs=(
emacs
bootstrap
1
)
gcc=(
gcc
disable_jack,disable_java,disable_gjdoc
1,1,1
)

View File

@ -1,281 +0,0 @@
# openmamba autodist build jobs database
#
# Copyright (c) 2006-2010 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Released under the terms of the GNU GPL version 3 license
#
# XTC 1 (Cross Toolchain)
cross_environment=(
cross-environment
cross_target_cpu,autodist_crossonly,_target_platform
x86_64,1,x86_64-openmamba-linux-gnu
i586,1,i586-openmamba-linux-gnu
arm,1,arm-openmamba-linux-gnueabi
ppc,1,ppc-openmamba-linux-gnu
)
#
# XTC 2
#
# build native binutils (gcc needed, so it's not a stage1 build)
# and cross platform binutils
#
binutils=(
binutils
cross_target_cpu,_target_platform
x86_64,x86_64-openmamba-linux-gnu
i586,i586-openmamba-linux-gnu
arm,arm-openmamba-linux-gnueabi
ppc,ppc-openmamba-linux-gnu
)
#
# XTC 3
#
# glibc stage1: build headers only
glibc_stage1=(
glibc
cross_target_cpu,stage1,_target_platform,KERNEL_TARGET,KERNEL_VER
x86_64,1,x86_64-openmamba-linux-gnu,mamba-x86_64,-
arm,1,arm-openmamba-linux-gnueabi,mamba-arm,2.6.33
i586,1,i586-openmamba-linux-gnu,mamba,-
ppc,1,ppc-openmamba-linux-gnu,mamba,-
)
#
# XTC 4
#
gcc_stage1=(
gcc
cross_target_cpu,stage1,_target_platform
x86_64,1,x86_64-openmamba-linux-gnu
arm,1,arm-openmamba-linux-gnueabi
i586,1,i586-openmamba-linux-gnu
ppc,1,ppc-openmamba-linux-gnu
)
#
# XTC 5
#
glibc_stage2=(
glibc
cross_target_cpu,stage2,bigendian,softfloat,_target_platform,KERNEL_TARGET,KERNEL_VER
x86_64,1,-,-,x86_64-openmamba-linux-gnu,mamba-x86_64,-
arm,1,-,-,arm-openmamba-linux-gnueabi,mamba-arm,2.6.33
i586,1,-,-,i586-openmamba-linux-gnu,mamba,-
ppc,1,-,-,ppc-openmamba-linux-gnu,mamba,-
)
#
# XTC 6
#
gcc=(
gcc
cross_target_cpu,_target_platform
x86_64,x86_64-openmamba-linux-gnu
arm,arm-openmamba-linux-gnueabi
i586,i586-openmamba-linux-gnu
ppc,ppc-openmamba-linux-gnu
)
#
# XTC 7
#
glibc=(
glibc
cross_target_cpu,_target_platform,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER
x86_64,x86_64-openmamba-linux-gnu,-,-,mamba-x86_64,-
i586,i586-openmamba-linux-gnu,-,-,mamba,-
arm,arm-openmamba-linux-gnueabi,-,-,mamba-arm,2.6.33
)
gcc_uclibc=(
gcc
cross_target_cpu,_target_platform,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER
arm,arm-linux-uclibc,-,-,mamba-arm,2.6.33
)
dietlibc=(
dietlibc
cross_target_cpu
x86_64
i586
arm
)
gcc34=(
gcc34
cross_target_cpu
x86_64
i586
ppc
)
#
# KERNEL
#
kernel=(
kernel
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
linux_firmware=(
linux-firmware
target,KERNEL_TARGET,KERNEL_VER
x86_64,mamba-x86_64,-
)
kernel_extra=(
kernel-extramodules
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
kernel_packages=(
VirtualBox-kernel
target,KERNEL_TARGET,KERNEL_VER
x86_64,mamba-x86_64,-
)
#hsfmodem,compat-wireless,ati-driver,NVIDIA,NVIDIA_71xx,NVIDIA_96xx,NVIDIA_173xx,broadcom-sta
# slmodem, alsa-driver, lirc,VirtualBox, ndiswrapper, alsa-driver
kernel_packages_36=(
VirtualBox-kernel,NVIDIA
target,KERNEL_TARGET,KERNEL_VER
x86_64,mamba-x86_64,3.6
)
kernel_packages_34=(
VirtualBox-kernel,NVIDIA
target,KERNEL_TARGET,KERNEL_VER
x86_64,mamba-x86_64,3.4
)
#kernelxen_packages=(
#alsa-driver,hsfmodem,compat-wireless,ati-driver,ndiswrapper,broadcom-sta
#target,KERNEL_TARGET,KERNEL_VER
#x86_64,mamba-xen,-
#)
#NVIDIA_all=(
#NVIDIA,NVIDIA_71xx,NVIDIA_96xx,NVIDIA_173xx
#target,KERNEL_TARGET,KERNEL_VER
#x86_64,mamba-x86_64
#)
##x86_64,mamba-xen
alsa_driver=(
alsa-driver
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
ati_driver=(
ati-driver
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
broadcom_sta=(
broadcom-sta
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
kernel_extramodules=(
kernel-extramodules
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
kernel_nongpl=(
kernel-nongpl
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
kernel_wireless_backport=(
kernel-wireless-backport
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
broadcom_sta=(
broadcom-sta
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
lirc=(
lirc
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
ndiswrapper=(
ndiswrapper
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
NVIDIA=(
NVIDIA
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
VirtualBox_kernel=(
VirtualBox-kernel
target,KERNEL_TARGET
x86_64,mamba-x86_64
)
#x86_64,mamba-xen
glibc=(
glibc
cross_target_cpu,bigendian,softfloat,KERNEL_TARGET,KERNEL_VER,multilib
x86_64,-,-,mamba-x86_64,-,-
)
binutils=(
binutils
cross_target_cpu
x86_64
)
pam=(
pam
bootstrap
1
)
rpm=(
rpm
bootstrap
1
)
gcc=(
gcc
cross_target_cpu,_target_platform,disable_jack,disable_gjdoc,disable_java
x86_64,x86_64-openmamba-linux-gnu,1,0,0
)
apache_ant=(
apache-ant
stage2
1
)

View File

@ -1,129 +0,0 @@
kdebase
kdewebdev
grub
libsqlite2
libglade1
openssl097
gnupg
kannel
ftp
nrg2iso
ddrescue
db42
gcc34
ftpsync
libglib1
gcc33
libxml
libtool1
openldap22
python24
postgresql7
PyQt
libcares1
libraw13941
net-snmp5
libmtp7
gambas
libgda2
libmusicbrainz2
libpng2
libXaw8
icu38
mysql5
libreadline5
libxcb-xlib
autoconf2.13
python
libflac11
libdc1394_control
automake1.10
libusb0
xorg-drv-input
libeigen
libgtk1
java-junit3
lm_sensors2
kernel-extramodules
kernel-nongpl-nvidia
kernel-nongpl-fglrx
kernel-nongpl
automake1.6
libjpeg6b
kernel-nongpl-fglrx
kernel-nongpl-nvidia
db47
arts
kdegraphics
synaptic
libjpeg7
kdevelop
libgda
objectweb-asm1
objectweb-asm2
apache-tomcat5
java-junit381
jakarta-commons-lang24
openssl098
libpng12
java-servletapi4
tcltk84
make381
lilo
rpm516
ffmpeg052
rpm5
libpoppler6
x264-84
db51
kde-i18n
libwpg01
libwps01
libwpd08
db52
glade-3
goocanvas
libnl1
moagg
apache-commons-digester18
x264-116
libcdio12
udev173
libtiff3
libpcre0
libcdio12
libpoppler12
libaudiofile0
libxcb-util1
parted2
libguile1
libgnutls2
libgdbm3
farstream1
gst-plugins-base010
gst-plugins-good010
gst-plugins-bad010
gst-plugins-ugly010
gstreamer010
lua51
libwebkit-gtk
libgraphite2_11
goocanvas
libdirectfb5
libtasn1_3
kdelibs3
goocanvas
libraptor
python
liblcms
libpng14
xmlgraphics-commons14
pygobject2
ImageMagick5
automake1.12
libpcap0
htmlunit1
libimobiledevice3
libilmbase1
libgif4
libmpc2

View File

@ -1,29 +1,95 @@
#!/bin/bash
#
# Autodist script for updating specfiles
#
# Copyright (c) 2007-2012 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Copyright (c) 2007-2014 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Released with the same license as autodist
#
[ "$1" ] || {
echo "Error: update-specfile: specfile not given; aborting."
SPECFILE=
BUILDREQNUM=0
for ((i=1; i<=$#; i++)); do
case ${!i} in
--buildreq) let i+=1
if [ ! "${!i}" ]; then
echo "ERROR: --buildreq requires at least an argument; aborting."
exit 1
fi
let BUILDREQNUM+=1
BUILDREQ[$BUILDREQNUM]=${!i}
if [ "${!i+1}" -a "${!i+1:0:1}" != "-" ]; then
let i+=1
BUILDREQREL[$BUILDREQNUM]=${!i}
if [ ! "${!i+1}" -o "${!i+1:0:1}" = "-" ]; then
echo "ERROR: update-specfile: --buildreq requires one or three arguments; aborting."
exit 1
fi
let i+=1
BUILDREQVER[$BUILDREQNUM]=${!i}
fi
;;
*) if [ ! "$SPECFILE" ]; then
SPECFILE=${!i}
else
echo "ERROR: update-specfile: unrecognized script option: '${!i}'; aborting."
exit 1
fi
esac
done
[ "$SPECFILE" ] || {
echo "ERROR: update-specfile: specfile not given; aborting."
exit 1
}
[ -e $1 ] || {
[ -e $SPECFILE ] || {
echo "Error: update-specfile: file $1 does not exist; aborting."
exit 1
}
sed -i "s|^Vendor:.*|Vendor: openmamba|" $1
sed -i "s|^Distribution:.*|Distribution: openmamba|" $1
sed -i "s|silvan\.calarco@qilinux\.it|silvan.calarco@mambasoft.it|" $1
sed -i "/BuildRequires:[[:space:]]*libffmpeg-devel/d" $1
sed -i "s|\(BuildRequires:[[:space:]]*\)libmysql-devel|\1libmysql5-devel|" $1
sed -i "s|\(BuildRequires:[[:space:]]*\)libdb42-devel|\1libdb47-devel|" $1
sed -i "s|\(BuildRequires:[[:space:]]*\)firefox-devel|\1xulrunner-devel|" $1
sed -i "s|^PreReq:[[:space:]]*/sbin/install-info|Requires(post):%{__install_info}|" $1
sed -i "s|^PreReq:[[:space:]]*%{__install_info}|Requires(post):%{__install_info}|" $1
sed -i "s|^PreReq:[[:space:]]*|Requires(pre): |" $1
sed -i "s|http://.*.dl\.sourceforge\.net/|http://downloads.sourceforge.net/|" $1
#sed -i "s|^\(Source.*:[[:space:]]*ftp://ftp.kde.org/pub/kde/stable/.*.tar.\)bz2|\1xz|" $1
# Distribution global changes
sed -i "s|^Vendor:.*|Vendor: openmamba|;
s|^Distribution:.*|Distribution: openmamba|;
/BuildRequires:[[:space:]]*libffmpeg-devel/d;
/^BuildRequires:[[:space:]]*libkdegames-devel/d;
/^BuildRequires:[[:space:]]*libkdegames5-devel/d;
/^BuildRequires:[[:space:]]*python3.7dist/d;
/^BuildRoot:[[:space:]]*.*/d;
s|\(BuildRequires:[[:space:]]*\)libmysql-devel|\1libmysql5-devel|;
s|\(BuildRequires:[[:space:]]*\)libdb42-devel|\1libdb47-devel|;
s|\(BuildRequires:[[:space:]]*\)libdb51-devel|\1libdb53-devel|;
s|\(BuildRequires:[[:space:]]*\)firefox-devel|\1xulrunner-devel|;
s|^PreReq:[[:space:]]*/sbin/install-info|Requires(post):%{__install_info}|;
s|^PreReq:[[:space:]]*%{__install_info}|Requires(post):%{__install_info}|;
s|^PreReq:[[:space:]]*|Requires(pre): |;
s|^\(Requires:[[:space:]]*kde-workspace\)$|#\1|;
s|^%patch\([0-9][0-9]*\)|%patch \1|;
s|http://.*.dl\.sourceforge\.net/|https://downloads.sourceforge.net/|;
s|http://ftp.kde.org/stable/|https://download.kde.org/stable/|;
s|ftp://ftp.kde.org/pub/kde/|https://download.kde.org/|;
s|update-mime-database %{|update-mime-database -n %{|;
s|http://download.kde.org/stable/%{version}|https://download.kde.org/stable/applications/%{version}|;
s|http[s]*://pypi.python.org/packages/source/[^/]*/|https://pypi.debian.net/|;
s|http://ftp.gnome.org/pub/GNOME/sources/|https://download.gnome.org/sources/|;
s|ftp://ftp.gnome.org/pub/gnome/sources/|https://download.gnome.org/sources/|" $SPECFILE
# s|;s,.*/man/.*,&.gz,g||;
# s|http.*.cpan.org/.*/\([^/-]*\)\(-.*\)|https://cpan.metacpan.org/modules/by-module/\1/\1\2|;
#sed -i "s|^\(Source.*:[[:space:]]*ftp://ftp.kde.org/pub/kde/stable/.*.tar.\)bz2|\1xz|" $SPECFILE
if [ $BUILDREQNUM -gt 0 ]; then
grep "^## AUTOBUILDREQ-END" $SPECFILE > /dev/null || {
echo "ERROR: update-specfile: missing AUTOBUILDREQ block; aborting."
exit 1
}
for b in `seq 1 $BUILDREQNUM`; do
line=${BUILDREQ[$b]}
if [ "${BUILDREQREL[$b]}" ]; then
line="$line ${BUILDREQREL[$b]} ${BUILDREQVER[$b]}"
fi
sed -i "/^## AUTOBUILDREQ-END/,9999{/BuildRequires:[[:space:]]*${BUILDREQ[$b]}$/d}" $SPECFILE
sed -i "/^## AUTOBUILDREQ-END/,9999{/BuildRequires:[[:space:]]*${BUILDREQ[$b]}[[:space:]]/d}" $SPECFILE
sed -i "/^## AUTOBUILDREQ-END/a BuildRequires: $line" $SPECFILE
done
fi
exit 0

View File

@ -1 +0,0 @@
gcc

View File

@ -1,41 +0,0 @@
libatk
libgtk
libpango
tcltk
dbus
libgsf
python
glib
libnfsidmap
ghostscript
liblcms
ImageMagick4
ImageMagick
gcc
libtiff
libtiff3
libcairo
gtk-doc
libpoppler
libpoppler12
gettext
libXext
gnokii
kdegames
soprano
autoconf
libidn
libcanberra
libxml2
libcaca
libproxy
libphonon
xmms2
libalsa-plugins
gutenprint
gpm
emacs
groff
graphviz
python26
python27

View File

@ -1,28 +0,0 @@
tcltk
libxml2
libpango
libatk
gettext
libnfsidmap
libXext
libidn
libtiff
liblcms
python
glib
libcanberra
avahi
gpm
emacs
groff
soprano
livecd-tools
tracker
graphviz
PackageKit
apache-ant
libpeas
libalsa-plugins
libproxy
python26
python27

View File

@ -1,33 +1,64 @@
#!/bin/bash
[ -e /etc/autodist/config ] && . /etc/autodist/config
[ -e /etc/sysconfig/autoport ] && . /etc/sysconfig/autoport
RPMS_CTIME_OLD="+3"
BUILD_CTIME_OLD="+3"
SOURCES_CTIME_OLD="+7"
SOURCES_ARCHIVES_CTIME_OLD="+7"
SOURCES_PATCH_CTIME_OLD="+365"
SRPMS_CTIME_OLD="+3"
TMP_CTIME_OLD="+2"
function clean() {
dir=$1
arch=$2
find $dir/RPM/RPMS/$arch/ -maxdepth 1 -ctime +21 -exec rm -rf {} \;
find $dir/RPM/RPMS/noarch/ -maxdepth 1 -ctime +21 -exec rm -rf {} \;
find $dir/RPM/BUILD/ -maxdepth 1 -ctime +21 -exec rm -rf {} \;
find $dir/RPM/SOURCES/ -maxdepth 1 -ctime +120 -a ! -name "*.patch" -exec rm -rf {} \;
find $dir/RPM/SRPMS/ -maxdepth 1 -ctime +48 -exec rm -rf {} \;
[ "$VERBOSE" ] && echo "Cleaning from base directory $dir..."
[ -e $dir/ ] && find $dir/ -mindepth 1 -maxdepth 1 -name "pipe\:\[*" -exec rm -f {} \;
[ -e $dir/RPM/SPECS/ ] && find $dir/RPM/SPECS/ -mindepth 1 -maxdepth 1 -type f -not -name "*.spec*" -exec rm -f {} \;
for arch in ${AUTODIST_ARCHS[*]}; do
[ -e $dir/RPM/RPMS/$arch/ ] && find $dir/RPM/RPMS/$arch/ -mindepth 1 -maxdepth 1 -type f -mtime ${RPMS_CTIME_OLD} -exec rm -f {} \;
done
[ -e $dir/RPM/RPMS/noarch/ ] && find $dir/RPM/RPMS/noarch/ -mindepth 1 -maxdepth 1 -type f -mtime ${RPMS_CTIME_OLD} -exec rm -f {} \;
if [ -e $dir/RPM/BUILD/ ]; then
find $dir/RPM/BUILD/ -mindepth 1 -maxdepth 1 -type d -ctime ${BUILD_CTIME_OLD} -exec rm -rf {} \;
# delete older package duplicates
find $dir/RPM/BUILD/ -maxdepth 1 | sort -V | \
while read curr; do
if [ "${curr/-[0-9._]*}" = "${last/-[0-9._]*}" -a "${last}" ]; then
rm -rf $last
fi
last=$curr;
done
fi
[ -e $dir/RPM/SOURCES/ ] && {
find $dir/RPM/SOURCES/ -mindepth 1 -maxdepth 1 -type f -ctime ${SOURCES_CTIME_OLD} -a ! -name "*.patch" -exec rm -rf {} \;
find $dir/RPM/SOURCES/ -mindepth 1 -maxdepth 1 -type f -ctime ${SOURCES_ARCHIVES_CTIME_OLD} -a -name "*.tar.xz" -exec rm -rf {} \;
find $dir/RPM/SOURCES/ -mindepth 1 -maxdepth 1 -type f -ctime ${SOURCES_ARCHIVES_CTIME_OLD} -a -name "*.tar.bz2" -exec rm -rf {} \;
find $dir/RPM/SOURCES/ -mindepth 1 -maxdepth 1 -type f -ctime ${SOURCES_ARCHIVES_CTIME_OLD} -a -name "*.tar.gz" -exec rm -rf {} \;
find $dir/RPM/SOURCES/ -mindepth 1 -maxdepth 1 -type f -ctime ${SOURCES_PATCH_CTIME_OLD} -a -name "*.patch" -exec rm -rf {} \;
}
[ -e $dir/RPM/SRPMS/ ] && find $dir/RPM/SRPMS/ -mindepth 1 -maxdepth 1 -type f -mtime ${SRPMS_CTIME_OLD} -exec rm -f {} \;
}
for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
if [ "${AUTOPORT_CHROOT[$i]}" ]; then
a=${AUTOPORT_CHROOT[$i]}
clean /var/autoport/$a/usr/src ${AUTOPORT_ARCH[$i]}
[ -e /var/autoport/$a/var/autodist/RPM/RPMS/$arch ] && \
clean /var/autoport/$a/var/autodist ${AUTOPORT_ARCH[$i]}
clean /var/autoport/$a/usr/src
[ -e /var/autoport/$a/var/autodist/RPM/RPMS/ ] && \
clean /var/autoport/$a/var/autodist
[ -e /var/autoport/$a/var/tmp/autodist ] && \
find /var/autoport/$a/var/tmp/autodist/ -maxdepth 1 -ctime +25 -exec rm -rf {} \;
find /var/autoport/$a/tmp/ -maxdepth 1 -ctime +25 -exec rm -rf {} \;
find /var/autoport/$a/var/tmp/autodist/ -mindepth 1 -maxdepth 1 -type f -ctime ${TMP_CTIME_OLD} -exec rm -rf {} \;
find /var/autoport/$a/tmp/ -mindepth 1 -maxdepth 1 -type f -ctime ${TMP_CTIME_OLD} -exec rm -rf {} \;
autoport-chroot $a ccache -C
elif [ "${AUTOPORT_UPDATE[$i]}" ]; then
clean /var/autodist ${AUTOPORT_ARCH[$i]}
find /var/tmp/autodist/ -maxdepth 1 -ctime +25 -exec rm -rf {} \;
clean /var/autodist
find /var/autodist-tmp/ -mindepth 1 -maxdepth 1 -ctime ${TMP_CTIME_OLD} -exec rm -rf {} \;
sudo -u autodist ccache -C
elif [ "${AUTOPORT_NATIVE[$i]}" -a "${AUTOPORT_CHROOT_USER[$i]}" ]; then
WORKINGHOME=`getent passwd ${AUTOPORT_CHROOT_USER[$i]} | cut -d: -f6`
if [ -e $WORKINGHOME ]; then
clean $WORKINGHOME ${AUTOPORT_ARCH[$i]}
clean $WORKINGHOME
fi
find /var/tmp/autodist/ -maxdepth 1 -ctime +25 -exec rm -rf {} \;
find /var/autodist-tmp/ -mindepth 1 -maxdepth 1 -ctime ${TMP_CTIME_OLD} -exec rm -rf {} \;
fi
done

View File

@ -1,16 +1,20 @@
#!/bin/bash
#
# autodist-upstream-updates daily cron script
# (c) 2008-2012 by Silvan Calarco <silvan.calarco@mambasoft.it>
# (c) 2008-2014 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
. /etc/autodist/config
REPOSITORY=devel
/usr/sbin/autodist-upstream-updates -q -h -u -r $REPOSITORY > $LOCAL_REPS_BASE_DIR/distromatic/$REPOSITORY/_popular.html
. /etc/sysconfig/autoport
REPOSITORY=milestone1-1.1
/usr/sbin/autodist-upstream-updates -q -h -u -r $REPOSITORY > $LOCAL_REPS_BASE_DIR/distromatic/$REPOSITORY/_popular.html
if [ ! "$AUTOPORT_UPDATE_NO_DISTROMATIC" ]; then
REPOSITORY=devel
/usr/sbin/autodist-upstream-updates -q -h -u -r $REPOSITORY > $LOCAL_REPS_BASE_DIR/distromatic/$REPOSITORY/_popular.html
REPOSITORY=milestone2
/usr/sbin/autodist-upstream-updates -q -h -u -r $REPOSITORY > $LOCAL_REPS_BASE_DIR/distromatic/$REPOSITORY/_popular.html
REPOSITORY=milestone1-1.1
/usr/sbin/autodist-upstream-updates -q -h -u -r $REPOSITORY > $LOCAL_REPS_BASE_DIR/distromatic/$REPOSITORY/_popular.html
REPOSITORY=milestone2
/usr/sbin/autodist-upstream-updates -q -h -u -r $REPOSITORY > $LOCAL_REPS_BASE_DIR/distromatic/$REPOSITORY/_popular.html
fi
exit 0

View File

@ -1,64 +1,17 @@
#!/bin/bash
#
# autodist autoupdate hourly cron script
# (c) 2008-2013 by Silvan Calarco <silvan.calarco@mambasoft.it>
# (c) 2008-2021 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
. /etc/autodist/config
. /etc/sysconfig/autoport
ME=`basename $0`
[ "$$" == "`pidof -x $ME`" -o "$$" == "`pidof -x 60-autodist-update`" ] || {
# echo "Warning: $ME script already running; exiting."
exit 0
}
PIDFILE=/var/run/autodist/autodist.pid
HOUR=`date +%H`
[ "`uname -m`" = "x86_64" ] && HOST_IS_X86_64=1
function pid_check() {
[ -e $PIDFILE ] && PIDCHECK=`cat $PIDFILE`
[ "$PIDCHECK" -a -e /proc/$PIDCHECK ] && {
echo "Error: an autodist process is already running; exiting for safety."
exit 0
}
}
# FIXME: parametrize automaint call
if [ ! "$AUTOPORT_UPDATE_NO_AUTOMAINT" ]; then
automaint -s devel-autodist -d base -p devel-makedist
fi
for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
for r in ${AUTOPORT_REPOSITORIES[$i]}; do
[ "${AUTOPORT_ARCH[$i]}" ] || continue
[ "${AUTOPORT_DISABLE[$i]}" -a "${AUTOPORT_DISABLE[$i]}" != "0" ] && continue
if [ "$HOST_IS_X86_64" -a "${AUTOPORT_ARCH[$i]}" != "x86_64" ]; then
CMD_PREFIX=linux32
else
CMD_PREFIX=
fi
# TODO: parametrize DISTROMATIC_REPOSITORY and following log files
DISTROMATIC_REPOSITORY=devel-future
LOGFILE=/var/autodist/log/autodist.log
LASTLOGFILE=/var/autodist/log/autodist-last.log
REPLOGFILE=$LOCAL_REPS_BASE_DIR/$r/autodist.log
REPLASTLOGFILE=$LOCAL_REPS_BASE_DIR/$r/autodist-last.log
if [ "${AUTOPORT_UPDATE[$i]}" ]; then
pid_check
distromatic -q -t $DISTROMATIC_REPOSITORY --gensrcpkglist > $LOCAL_REPS_BASE_DIR/$DISTROMATIC_REPOSITORY/srcpkglist
pid_check
autodist-upstream-updates -q -h -u -r $DISTROMATIC_REPOSITORY -o $r \
> $LOCAL_REPS_BASE_DIR/distromatic/$r/_popular.html
pid_check
[ -e $LOGFILE ] && mv $LOGFILE $LASTLOGFILE
su -l autodist -c "$CMD_PREFIX autodist -a --server $r" > $LOGFILE
[ -e $REPLOGFILE ] && mv $REPLOGFILE $REPLASTLOGFILE
cp $LOGFILE $REPLOGFILE
fi
done
echo "Running autodist-launcher ${i}"
systemd-run -u autodist-launcher-${i} /usr/bin/autodist-launcher ${i}
done

14
etc/cron.hourly/65-autoport Executable file
View File

@ -0,0 +1,14 @@
#!/bin/bash
#
# openmamba-autobuild-autoport daily cron script
# (c) 2008-2021 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
#. /etc/sysconfig/openmamba-central
. /etc/sysconfig/autoport
[ "$AUTOPORT_ENABLE" = "1" -o "$AUTOPORT_ENABLE" = "true" ] || exit 0
for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
echo "Running autoport-launcher ${i}"
systemd-run -u autoport-launcher-${i} /usr/bin/autoport-launcher ${i}
done

View File

@ -1,96 +0,0 @@
#!/bin/bash
#
# openmamba-autobuild-autoport daily cron script
# (c) 2008-2012 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
#. /etc/sysconfig/openmamba-central
. /etc/sysconfig/autoport
[ "$AUTOPORT_ENABLE" = "1" -o "$AUTOPORT_ENABLE" = "true" ] || exit 0
ME=`basename $0`
[ "$$" == "`pidof -x $ME`" ] || {
[[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Warning: $ME script already running; exiting."
exit 0
}
PIDFILE=/var/run/autodist/autoport.pid
HOUR=`date +%H`
[ "`uname -m`" = "x86_64" ] && HOST_IS_X86_64=1
function pid_check() {
[ -e $PIDFILE ] && PIDCHECK=`cat $PIDFILE`
[ "$PIDCHECK" -a -e /proc/$PIDCHECK ] && {
echo "Error: an autodist process is already running; exiting for safety."
exit 0
}
}
pid_check
for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
for r in ${AUTOPORT_REPOSITORIES[$i]}; do
[ "${AUTOPORT_ARCH[$i]}" ] || continue
[ "${AUTOPORT_DISABLE[$i]}" -a "${AUTOPORT_DISABLE[$i]}" != "0" ] && continue
if [ "$HOST_IS_X86_64" -a "${AUTOPORT_ARCH[$i]}" != "x86_64" ]; then
CMD_PREFIX=linux32
else
CMD_PREFIX=
fi
if [ "${AUTOPORT_NATIVE[$i]}" ]; then
LOGFILE="/var/autodist/log/autoport-native-$r-${AUTOPORT_ARCH[$i]}.log"
LASTLOGFILE="/var/autodist/log/autoport-native-$r-${AUTOPORT_ARCH[$i]}-last.log"
else
continue
fi
[ -e $LOGFILE ] && mv $LOGFILE $LASTLOGFILE
echo "+ Autoport start at `date`" > $LOGFILE
echo "============================================" >> $LOGFILE
# if [ "${AUTOPORT_CHROOT[$i]}" ]; then
# a=${AUTOPORT_CHROOT[$i]}
# # sudo mount -o bind /proc /var/autoport/$a/proc
# [[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Updating packages in $a chroot environment"
# echo "= Updating packages in $a chroot environment..." >> $LOGFILE
# LANG=C /usr/sbin/chroot /var/autoport/$a smart update --quiet > /dev/null
# LANG=C /usr/sbin/chroot /var/autoport/$a smart upgrade -y >> $LOGFILE
# echo "= Working on $r($a) in chroot mode..." >> $LOGFILE
# [[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Working on $r($a) in chroot mode" >> $LOGFILE
# # disable service restarts
# mv /var/autoport/$a/sbin/service /var/autoport/$a/sbin/service.autoport
# ln -s /bin/true /var/autoport/$a/sbin/service
# $CMD_PREFIX /usr/sbin/chroot /var/autoport/$a su -l ${AUTOPORT_CHROOT_USER[$i]} -c "autoport -b -r $r" >> $LOGFILE
# mv /var/autoport/$a/sbin/service.autoport /var/autoport/$a/sbin/service
# cat /var/autoport/$a/home/${AUTOPORT_CHROOT_USER[$i]}/.autoport/${AUTOPORT_ARCH[$i]}/$r-current.log >> $LOGFILE
# fi
if [ "${AUTOPORT_NATIVE[$i]}" ]; then
a=${AUTOPORT_ARCH[$i]}
[[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Updating packages in $a native environment"
echo "= Updating packages in $a native environment..." >> $LOGFILE
LANG=C smart update > /dev/null
LANG=C smart upgrade -y >> $LOGFILE
echo "= Working on $r($a) in native mode" >> $LOGFILE
su -l ${AUTOPORT_CHROOT_USER[$i]} -c "$CMD_PREFIX autoport -b -r $r" >> $LOGFILE
cat /var/autodist/.autoport/$a/$r-current.log >> $LOGFILE
fi
# if [ "${AUTOPORT_CROSS[$i]}" ]; then
# a=${AUTOPORT_CROSS[$i]}
# [[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Working on $r($a) in cross-platform mode"
# echo "= Working on $r($a) in cross-platform mode" >> $LOGFILE
# su -l autodist -c "autoport -b -x $a -r $r" >> $LOGFILE
# cat /var/autodist/.autoport/$a/$r-current.log >> $LOGFILE
# fi
echo "- Autoport end at `date`" >> $LOGFILE
echo "============================================" >> $LOGFILE
done
done

View File

@ -1,107 +0,0 @@
#!/bin/bash
#
# openmamba-autobuild-autoport daily cron script
# (c) 2008-2012 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
#. /etc/sysconfig/openmamba-central
. /etc/sysconfig/autoport
[ "$AUTOPORT_ENABLE" = "1" -o "$AUTOPORT_ENABLE" = "true" ] || exit 0
ME=`basename $0`
[ "$$" == "`pidof -x $ME`" ] || {
[[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Warning: $ME script already running; exiting."
exit 0
}
PIDFILE=/var/run/autodist/autoport.pid
HOUR=`date +%H`
[ "`uname -m`" = "x86_64" ] && HOST_IS_X86_64=1
function pid_check() {
[ -e $PIDFILE ] && PIDCHECK=`cat $PIDFILE`
[ "$PIDCHECK" -a -e /proc/$PIDCHECK ] && {
echo "Error: an autodist process is already running; exiting for safety."
exit 0
}
}
pid_check
for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
[ "${AUTOPORT_ARCH[$i]}" ] || continue
[ "${AUTOPORT_DISABLE[$i]}" -a "${AUTOPORT_DISABLE[$i]}" != "0" ] && continue
if [ "${AUTOPORT_CHROOT[$i]}" ]; then
# disable service restarts
mv /var/autoport/${AUTOPORT_CHROOT[$i]}/sbin/service /var/autoport/${AUTOPORT_CHROOT[$i]}/sbin/service.autoport
ln -s /bin/true /var/autoport/${AUTOPORT_CHROOT[$i]}/sbin/service
# sudo mount -o bind /proc /var/autoport/${AUTOPORT_CHROOT[$i]}/proc
[[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Updating packages in ${AUTOPORT_CHROOT[$i]} chroot environment"
#echo "= Updating packages in ${AUTOPORT_CHROOT[$i]} chroot environment..." >> $LOGFILE
LANG=C /usr/sbin/chroot /var/autoport/${AUTOPORT_CHROOT[$i]} smart update --quiet > /dev/null
LANG=C /usr/sbin/chroot /var/autoport/${AUTOPORT_CHROOT[$i]} smart upgrade -y > /dev/null
fi
for r in ${AUTOPORT_REPOSITORIES[$i]}; do
if [ "$HOST_IS_X86_64" -a "${AUTOPORT_ARCH[$i]}" != "x86_64" ]; then
CMD_PREFIX=linux32
else
CMD_PREFIX=
fi
if [ "${AUTOPORT_CHROOT[$i]}" ]; then
LOGFILE="/var/autodist/log/autoport-chroot-$r-${AUTOPORT_CHROOT[$i]}.log"
LASTLOGFILE="/var/autodist/log/autoport-chroot-$r-${AUTOPORT_CHROOT[$i]}-last.log"
elif [ "${AUTOPORT_CROSS[$i]}" ]; then
LOGFILE="/var/autodist/log/autoport-cross-$r-${AUTOPORT_CROSS[$i]}.log"
LASTLOGFILE="/var/autodist/log/autoport-cross-$r-${AUTOPORT_CROSS[$i]}-last.log"
else
continue
fi
[ -e $LOGFILE ] && mv $LOGFILE $LASTLOGFILE
echo "+ Autoport start at `date`" > $LOGFILE
echo "============================================" >> $LOGFILE
if [ "${AUTOPORT_CHROOT[$i]}" ]; then
echo "= Working on $r(${AUTOPORT_CHROOT[$i]}) in chroot mode..." >> $LOGFILE
[[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Working on $r(${AUTOPORT_CHROOT[$i]}) in chroot mode" >> $LOGFILE
#echo "DEBUG: $CMD_PREFIX /usr/sbin/chroot /var/autoport/${AUTOPORT_CHROOT[$i]} su -l ${AUTOPORT_CHROOT_USER[$i]} -c \"autoport -b -r $r\"" >> $LOGFILE
$CMD_PREFIX /usr/sbin/chroot /var/autoport/${AUTOPORT_CHROOT[$i]} su -l ${AUTOPORT_CHROOT_USER[$i]} -c "autoport -b -r $r" >> $LOGFILE
cat /var/autoport/${AUTOPORT_CHROOT[$i]}/home/${AUTOPORT_CHROOT_USER[$i]}/.autoport/${AUTOPORT_ARCH[$i]}/$r-current.log >> $LOGFILE
#echo "DEBUG: cat /var/autoport/${AUTOPORT_CHROOT[$i]}/home/${AUTOPORT_CHROOT_USER[$i]}/.autoport/${AUTOPORT_ARCH[$i]}/$r-current.log" >> $LOGFILE
fi
# if [ "${AUTOPORT_NATIVE[$i]}" ]; then
# a=${AUTOPORT_ARCH[$i]}
# [[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Updating packages in $a native environment"
# echo "= Updating packages in $a native environment..." >> $LOGFILE
# LANG=C smart update > /dev/null
# LANG=C smart upgrade -y >> $LOGFILE
# echo "= Working on $r($a) in native mode" >> $LOGFILE
# su -l autodist -c "autoport -b -r $r" >> $LOGFILE
# cat /var/autodist/.autoport/$a/$r-current.log >> $LOGFILE
# fi
if [ "${AUTOPORT_CROSS[$i]}" ]; then
[[ "`/usr/bin/tty`" != "not a tty" ]] && echo "Working on $r(${AUTOPORT_CROSS[$i]}) in cross-platform mode"
echo "= Working on $r(${AUTOPORT_CROSS[$i]}) in cross-platform mode" >> $LOGFILE
su -l autodist -c "autoport -b -x ${AUTOPORT_CROSS[$i]} -r $r" >> $LOGFILE
cat /var/autodist/.autoport/${AUTOPORT_CROSS[$i]}/$r-current.log >> $LOGFILE
fi
echo "- Autoport end at `date`" >> $LOGFILE
echo "============================================" >> $LOGFILE
done
if [ "${AUTOPORT_CHROOT[$i]}" ]; then
mv /var/autoport/${AUTOPORT_CHROOT[$i]}/sbin/service.autoport /var/autoport/${AUTOPORT_CHROOT[$i]}/sbin/service
fi
done

8
etc/logrotate.d/webbuild Normal file
View File

@ -0,0 +1,8 @@
/var/webbuild/access_log {
monthly
rotate 12
copytruncate
compress
notifempty
missingok
}

View File

@ -2,22 +2,43 @@
# autoport global configuration
#
local_ftp=/var/ftp/pub/openmamba/
#AUTOBUILDS_STATUS_URL="http://www.openmamba.org/distribution/autobuilds.html"
#AUTOPORT_ENABLE=1
#AUTOPORT_CGI_HOST=(http://localhost/cgi-bin/autodist http://arm-sdk/cgi-bin/autodist)
# Disabled by default because they would require local repository
AUTOPORT_UPDATE_NO_AUTOMAINT=1
AUTOPORT_UPDATE_NO_DISTROMATIC=1
#AUTOPORT_CGI_HOST=(http://localhost/cgi-bin/autodist)
#AUTOPORT_WEBBUILD_HOST=http://localhost/webbuild.html
#ICECREAM_MONITOR_HOST=localhost
AUTOPORT_DEVEL_IMPORT_REPOSITORIES="devel-makedist base devel-autodist \
devel-kernel devel-misc devel-future devel-past"
AUTOPORT_DEVEL_RELEASE_REPOSITORIES="milestone2-makedist milestone2-kernel milestone2-kernel-next"
AUTOPORT_MILESTONE2_IMPORT_REPOSITORIES="milestone2-makedist milestone2-updates milestone2-kernel \
milestone2-kde4 milestone2-xorg milestone2-kernel-next milestone2"
#AUTOPORT_ARCH[0]=x86_64
#AUTOPORT_DISABLE[0]=
#AUTOPORT_CHROOT[0]=devel-x86_64
#AUTOPORT_CHROOT_USER[0]=sdk
#AUTOPORT_CHROOT_ICECREAM[0]=1
#AUTOPORT_CROSS[0]=
#AUTOPORT_NATIVE[0]=
#AUTOPORT_REPOSITORIES[0]="devel-makedist"
#AUTOPORT_BASE_REPOSITORY[0]="devel-makedist"
#AUTOPORT_IMPORT_REPOSITORIES[0]="$AUTOPORT_DEVEL_IMPORT_REPOSITORIES"
#AUTOPORT_ARCH[1]=i586
#AUTOPORT_DISABLE[1]=
#AUTOPORT_CHROOT[1]=milestone2-i586
#AUTOPORT_CHROOT_USER[1]=sdk
#AUTOPORT_CHROOT_ICECREAM[1]=1
#AUTOPORT_CROSS[1]=
#AUTOPORT_NATIVE[1]=
#AUTOPORT_BASE_REPOSITORY[0]="devel-autodist"
#AUTOPORT_REPOSITORIES[1]="milestone2-makedist"
AUTOPORT_CGI_HOST=(http://localhost/cgi-bin/autodist http://192.168.0.100/cgi-bin/autodist)
#AUTOPORT_BASE_REPOSITORY[0]="milestone2-makedist"
#AUTOPORT_IMPORT_REPOSITORIES[0]="$AUTOPORT_DEVEL_IMPORT_REPOSITORIES"

70
repology-openmamba.py Executable file
View File

@ -0,0 +1,70 @@
#!/usr/bin/python3
#
# repology-openmamba.py - find upstream packages updates from repology.org
# Copyright (c) 2021 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
import json, urllib.request, time, sys
with open("/var/ftp/pub/openmamba/devel/legacy") as f:
legacy_packages = f.read().splitlines()
with open("/var/ftp/pub/openmamba/devel/ignore") as f:
data = json.loads(f.read())
ignored_packages = data["repology"]
from_package = ""
last_from_package = "NONE"
results = []
while True:
if from_package == last_from_package:
break
requrl = "https://repology.org/api/v1/projects/"
if from_package != "":
requrl += from_package +"/"
requrl += "?inrepo=openmamba&outdated=1"
sys.stderr.write("Requesting: " + requrl + "\n")
url = urllib.request.urlopen(requrl)
#print(requrl)
data = json.loads(url.read().decode())
if from_package != "" and len(data.keys()) <= 1:
break
for k in data.keys():
if k == from_package:
continue
package = k
openmamba_srcname = None
openmamba_version = None
openmamba_altnames = []
newest_version = None
newest_repos = []
for p in data[k]:
if p["repo"] == "openmamba":
if not p["srcname"] in ignored_packages and \
not p["srcname"] in legacy_packages:
if openmamba_srcname is None:
openmamba_version = p["version"]
openmamba_srcname = p["srcname"]
else:
openmamba_altnames.append(p["srcname"])
elif p["status"] == "newest":
# kaos_build provides unreleased kde package versions
if p["repo"] != "kaos_build":
newest_version = p["version"]
newest_repos.append(p["repo"])
newest_repos = list(dict.fromkeys(newest_repos))
if openmamba_srcname and newest_version is not None and len(newest_repos) > 0:
results.append(openmamba_srcname + " " + newest_version)
for altname in openmamba_altnames:
results.append(altname + " " + newest_version)
last_from_package = from_package
from_package = package
time.sleep(1)
results_sorted = sorted(set(results), key=str.casefold)
#results_unique = set(results_sorted)
for result in results_sorted:
print(result)

205
telegram/openmamba_bot.py Executable file
View File

@ -0,0 +1,205 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# openmamba bot for Telegram
#
# Copyright (C) 2016-2023 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
# GPL v3 license
from telegram import (ParseMode, Update)
from telegram.ext import (Updater, CommandHandler, MessageHandler, Filters, RegexHandler,
ConversationHandler, Job, CallbackContext)
import logging
import subprocess
import sqlite3
import os
# Enable logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)
logger = logging.getLogger(__name__)
timers = dict()
social_log_last_ids = dict()
reps = [ 'base', 'devel-makedist', 'devel-autodist', 'devel-kernel', 'devel-misc', 'devel-future', 'devel-past' ]
def start(update: Update, context: CallbackContext):
user = update.message.from_user
logger.info("User %s started the conversation." % user.first_name)
update.message.reply_text(
'Hi! This is the openmamba GNU/Linux Bot.\n'
'Send any text to search for packages.\n'
'Send /details [name] to see details of specified source package.\n'
'Send /set [seconds] to enable notifications.\n'
'Send /unset to disable notifications.\n\n')
return
def help(update: Update, context: CallbackContext):
update.message.reply_text(
'Send any text to search for packages.\n'
'Send /details [name] to see details of specified source package.\n'
'Send /set [seconds] to enable notifications.\n'
'Send /unset to disable notifications.\n\n')
return
def query(update: Update, context: CallbackContext):
user = update.message.from_user
logger.info("Query of %s: %s" % (user.first_name, update.message.text))
response = ""
for rep in reps:
conn = sqlite3.connect('/var/webbuild/db/%s-sources.db' % rep, check_same_thread=False)
cursor = conn.cursor()
print(rep)
cursor.execute(
'SELECT id,name,version,release,summary,url FROM sources where name like "%%%s%%" or summary like "%%%s%%" '
'ORDER BY name="%s" DESC, name like "%s%%" DESC, name like "%%%s%%" DESC limit 10'
% (update.message.text, update.message.text, update.message.text, update.message.text, update.message.text))
for row in cursor:
response += "<b>%s</b> %s-%s (%s)\n%s\n%s\n\n" % (row[1], row[2], row[3], rep, row[4], row[5])
if response != "":
update.message.reply_text(response, parse_mode=ParseMode.HTML)
else:
update.message.reply_text('No results found.')
return
def details(update: Update, context: CallbackContext):
user = update.message.from_user
logger.info("Details of %s: %s" % (user.first_name, update.message.text))
response = ""
for rep in reps:
conn = sqlite3.connect('/var/webbuild/db/%s-sources.db' % rep, check_same_thread=False)
cursor = conn.cursor()
cursor.execute(
'SELECT id,name,version,release,summary,url,description FROM sources where name="%s"' % (context.args[0]))
for row in cursor:
response += "<b>%s</b> %s-%s (devel)\n%s\n%s\n\n<i>%s</i>\n\n" % (row[1], row[2], row[3], row[4], row[5], row[6])
for arch in [ 'x86_64', 'aarch64', 'i586', 'arm' ]:
conn1 = sqlite3.connect('/var/webbuild/db/' + rep + '-' + arch + '.db', check_same_thread=False)
cursor1 = conn1.cursor()
cursor1.execute('SELECT id,name FROM packages where id_source=%s' % (row[0]))
for row1 in cursor1:
response += "<b>%s</b>(%s) " % (row1[1], arch)
response += "\n\n\n"
if response != "":
update.message.reply_text(response[0:4096], parse_mode=ParseMode.HTML)
else:
update.message.reply_text('No results found.')
return
def alarm(context):
social_log_conn = sqlite3.connect('/var/webbuild/webbuild.db')
social_log_cursor = social_log_conn.cursor()
social_log_cursor.execute('SELECT id,user,text,datetime(time,\'localtime\'),type FROM social_log where id>%s' % social_log_last_ids[context.job])
response = ""
for row in social_log_cursor:
if row[4] == "job":
response += "Job run by <i>%s</i> %s (%s)\n" % (row[1], row[2], row[3])
else:
response += "<i>%s</i> %s (%s)\n" % (row[1], row[2], row[3])
if response != "":
bot.sendMessage(context.job, response, parse_mode=ParseMode.HTML)
social_log_last_ids[context.job] = row[0]
def set(update: Update, context: CallbackContext):
chat_id = update.message.chat_id
try:
due = int(context.args[0])
if due < 0:
update.message.reply_text('Sorry we can not go back to future!')
return
#job = Job(alarm, context, next_t=due, repeat=True, context=chat_id)
#timers[chat_id] = job
context.job_queue.run_repeating(alarm, due)
#context.jobqueue.put(job)
social_log_conn = sqlite3.connect('/var/webbuild/webbuild.db')
social_log_cursor = social_log_conn.cursor()
social_log_cursor.execute('''SELECT MAX(id) FROM social_log''')
social_log_last_ids[chat_id] = social_log_cursor.fetchone()[0] - 5
update.message.reply_text('Notifications enabled!')
except (IndexError, ValueError):
update.message.reply_text('Usage: /set <seconds>')
def unset(update: Update, context: CallbackContext):
chat_id = update.message.chat_id
if chat_id not in timers:
update.message.reply_text('Notification were not enabled')
return
job = timers[chat_id]
job.schedule_removal()
del timers[chat_id]
update.message.reply_text('Notifications disabled')
def cancel(update: Update, context: CallbackContext):
user = update.message.from_user
logger.info("User %s canceled the conversation." % user.first_name)
update.message.reply_text('Bye!')
return ConversationHandler.END
def error(update: Update, context: CallbackContext):
logger.warning('Update "%s" caused error "%s"' % (update, context.error))
def main():
# Load bot token from external configuration file
bot_token = ""
with open("/etc/autodist/secrets") as myfile:
for line in myfile:
name, var = line.rstrip().split("=")
if name == "TELEGRAM_BOT_TOKEN":
bot_token = var
# Create the EventHandler and pass it your bot's token.
updater = Updater(bot_token)
# Get the dispatcher to register handlers
dp = updater.dispatcher
dp.add_handler(CommandHandler('start', start))
dp.add_handler(CommandHandler('help', help))
dp.add_handler(CommandHandler('details', details, pass_args=True))
dp.add_handler(CommandHandler('set', set, pass_args=True, pass_job_queue=True))
dp.add_handler(CommandHandler('unset', unset))
dp.add_handler(MessageHandler(Filters.text, query))
# log all errors
dp.add_error_handler(error)
# Start the Bot
updater.start_polling()
# Run the bot until the you presses Ctrl-C or the process receives SIGINT,
# SIGTERM or SIGABRT. This should be used most of the time, since
# start_polling() is non-blocking and will stop the bot gracefully.
updater.idle()
if __name__ == '__main__':
main()

View File

@ -0,0 +1,10 @@
[Unit]
Description=openmamba bot for Telegram
After=syslog.target
[Service]
Type=simple
ExecStart=/var/autodist/env/bin/python3 /usr/share/autodist/openmamba_bot.py
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1 @@
python-telegram-bot~=13.14

View File

@ -0,0 +1,70 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head>
<meta content="text/html; charset=utf-8" http-equiv="content-type">
<link rel="shortcut icon" type="image/x-icon" href="/images/webbuild.ico" />
<!-- styles needed by jScrollPane -->
<link type="text/css" href="/scripts/jquery.jscrollpane.css" rel="stylesheet" media="all" >
<!-- latest jQuery direct from google's CDN -->
<script type="text/javascript" src="/scripts/jquery.js"></script>
<!-- the mousewheel plugin - optional to provide mousewheel support -->
<script type="text/javascript" src="/scripts/jquery.mousewheel.js"></script>
<!-- the jScrollPane script -->
<script type="text/javascript" src="/scripts/jquery.jscrollpane.min.js"></script>
<link rel="stylesheet" type="text/css" href="/styles/webbuild.css">
<script type="text/javascript" src="/scripts/socialbox.js"></script>
<script type="text/javascript">
<!--
var lastupdate = 0;
var reloadtime = 0;
function ajax_getvalues() {
var url = window.location.protocol+"//"+window.location.hostname+"/cgi-bin/autodist?FORMAT=xml&"+window.location.href.replace(/.*\?/,"");
var xmlhttp;
if (window.XMLHttpRequest)
xmlhttp = new XMLHttpRequest();
else if (window.ActiveXObject)
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
else
return;
document.getElementById("noajax_msg").innerHTML = "";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState != 4)
return;
var xmldoc = xmlhttp.responseXML.documentElement;
document.getElementById("output").innerHTML = xmldoc.getElementsByTagName("output")[0].childNodes[0].nodeValue;
reloadtime = xmldoc.getElementsByTagName("reloadtime")[0].childNodes[0].nodeValue;
lastupdate = (+new Date());
setTimeout("ajax_getvalues()", reloadtime);
}
xmlhttp.open("GET", url, true);
xmlhttp.send(null);
}
//-->
</script>
</head><body>
<div id=container style="position:relative;width:894px;height:auto;top:0;left:0;margin-left:auto;margin-right:auto;">
<table width="100%"><tr><td>
<tr><td valign="middle">
<table align="center"><tr>
<td colspan=2><img src="/images/webbuild.png" alt="build automatici">
&nbsp;&nbsp;&nbsp;<b>- Autodist - Build automatici</b>
</td>
</tr></table>
</td></tr>
<tr><td>
<div id="noajax_msg"><p>Il supporto per AJAX non è abilitato nel tuo browser. L'aggiornamento live non sarà disponibile, premi Ricarica per aggiornare la pagina.</p></div>
<span id="output">Caricamento in corso, attendere...</span>
<script>
ajax_getvalues("");
$("#output").mousemove(function(event) {
lastupdatetime = (+new Date()) - lastupdate; // milliseconds since last update
// var msg = "called " + lastupdatetime + "ms ago";
if (lastupdatetime > reloadtime) { lastupdate = lastupdatetime; ajax_getvalues(); }
});
</script>
</td></tr>
</table>
</div>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,5 +1,11 @@
var url = "/cgi-bin/webbuild"
/*function socialbox_refresh_times() {
socialbox_refresh_times(false);
}*/
var socialbox_fullrefresh_count = 0;
function socialbox_refresh_times() {
var times = document.getElementsByName("socialtime");
var datenow = new Date();
@ -12,20 +18,28 @@ function socialbox_refresh_times() {
var socialtime = times[i].attributes[1].value;
}
var timeago = utcnow - socialtime;
var daysago = parseInt(timeago / 86400);
var hoursago = parseInt(timeago / 3600 % 24);
var minutesago = parseInt(timeago / 60 % 60);
var secondsago = parseInt(timeago % 60);
times[i].innerHTML = "(";
if (daysago > 1) times[i].innerHTML += daysago + " days";
else if (daysago == 1) times[i].innerHTML += "1 day, " + hoursago + " hours";
else if (hoursago > 1) times[i].innerHTML += hoursago + " hours";
else if (hoursago == 1) times[i].innerHTML += "1 hour, " + minutesago + " minutes";
else if (minutesago > 1) times[i].innerHTML += minutesago + " minutes";
else if (minutesago == 1) times[i].innerHTML += "1 minute, " + secondsago + " seconds";
else times[i].innerHTML += secondsago + " seconds";
times[i].innerHTML += " ago) ";
if ((times[i].innerHTML == "") ||
(timeago <= 120) || // update every 15 secs if < 2 min
(timeago <= 7200 && (socialbox_fullrefresh_count % 4 == 0)) || // update every minute if < 120 min
(timeago <= 86400 && (socialbox_fullrefresh_count % 120 == 0)) || // update every thirty minutes if < 1 day
(socialbox_fullrefresh_count >= 240)) // else update all every hour
{
var daysago = parseInt(timeago / 86400);
var hoursago = parseInt(timeago / 3600 % 24);
var minutesago = parseInt(timeago / 60 % 60);
var secondsago = parseInt(timeago % 60);
times[i].innerHTML = "(";
if (daysago > 1) times[i].innerHTML += daysago + " days";
else if (daysago == 1) times[i].innerHTML += "1 day, " + hoursago + " hours";
else if (hoursago > 1) times[i].innerHTML += hoursago + " hours";
else if (hoursago == 1) times[i].innerHTML += "1 hour, " + minutesago + " minutes";
else if (minutesago > 1) times[i].innerHTML += minutesago + " minutes";
else if (minutesago == 1) times[i].innerHTML += "1 minute, " + secondsago + " seconds";
else times[i].innerHTML += secondsago + " seconds";
times[i].innerHTML += " ago) ";
}
}
if (socialbox_fullrefresh_count++ >= 240) socialbox_fullrefresh_count = 0;
}
var socialbox_interval = null;
@ -33,7 +47,6 @@ var socialbox_reloadtime = 15000;
function ajax_getvalues_refresh(request,user,user_email,secret) {
var fromid = 0;
//alert("refresh");
if (socialbox_interval != null) {
clearInterval(socialbox_interval);
}
@ -72,6 +85,7 @@ function ajax_getvalues_refresh(request,user,user_email,secret) {
}
if (xmldoc.getElementsByTagName("processes")[0] != undefined) {
document.getElementById("processes").innerHTML = xmldoc.getElementsByTagName("processes")[0].childNodes[0].nodeValue;
$(function() { $('.scroll-pane3').jScrollPane({scrollbarWidth:10}); });
}
$(function() { $('.scroll-pane').jScrollPane({scrollbarWidth:10}); });
// lastupdate = (+new Date());

View File

@ -31,33 +31,96 @@ function checkEnter(event) {
return false;
}
function checkMinLength(st,len) {
if (st.length >= len) return true;
return false;
return false;
}
function suggestSpecName(url) {
var version="";
var url=document.getElementById("speccreateurl").value;
if (url.indexOf('&') > 0) url=url.substring(0,url.indexOf('&')+1);
var filename=url.substring(url.lastIndexOf('/')+1);
if (filename.indexOf('.') > 0) filename=filename.substring(0,filename.indexOf('.'));
if (filename.lastIndexOf('-') > 0) {
var version=filename.substring(filename.lastIndexOf('-')+1);
filename=filename.substring(0,filename.lastIndexOf('-')).toLowerCase();
if (url.indexOf('?') > 0) url=url.substring(0,url.indexOf('?'));
var specname=url.substring(url.lastIndexOf('/')+1);
var extension;
while (i=specname.lastIndexOf('.')) {
e=specname.substring(i);
if (e != ".tar" && e != ".gz" && e != ".zip" && e != ".bz2" &&
e != ".xz" && e != ".tgz" && e != ".zip" && e != ".src" &&
e != ".orig" && e != ".gem" ) break;
extension=specname.substring(i+1);
specname=specname.substring(0,i);
}
i=specname.lastIndexOf('_');
e=specname.substring(i);
if (e == "_src" || e == "_orig") specname=specname.substring(0,i);
i=specname.lastIndexOf('-');
e=specname.substring(i);
if (e == "-src" || e == "-orig") specname=specname.substring(0,i);
if (specname.lastIndexOf('-') > 0) {
version=specname.substring(specname.lastIndexOf('-')+1);
specname=specname.substring(0,specname.lastIndexOf('-'));
} else if (specname.lastIndexOf('_') > 0) {
version=specname.substring(specname.lastIndexOf('_')+1);
specname=specname.substring(0,specname.lastIndexOf('_'));
}
document.getElementById("speccreateurl").value=url;
document.getElementById("speccreatename").value=filename;
document.getElementById("speccreateversion").value=version;
if (filename) {
if (url.search("cpan.org") >= 0) {
specname="perl-"+specname;
} else if (url.search("haskell.org") >= 0) {
specname="ghc-"+specname;
} else if (extension == "gem") {
specname="ruby-"+specname;
} else {
specname=specname.toLowerCase();
}
if ((url.search("git://") >= 0) || (url.indexOf(".git", url.length - 4) != -1)) {
document.getElementById("speccreategitbranch").disabled=false;
} else {
document.getElementById("speccreategitbranch").disabled=true;
document.getElementById("speccreateversion").value=version;
}
if (url.indexOf(".git", url.length - 4) != -1) {
document.getElementById("speccreategitbranch").value="master";
specname=specname.substring(0,specname.lastIndexOf('.git'));
}
document.getElementById("speccreatename").value=specname;
if (url) {
document.getElementById("speccreatename").disabled=false;
document.getElementById("speccreateversion").disabled=false;
document.getElementById("speccreatetype").disabled=false;
document.getElementById("speccreatebutton").disabled=false;
} else {
document.getElementById("speccreatename").disabled=true;
document.getElementById("speccreateversion").disabled=true;
document.getElementById("speccreatetype").disabled=true;
document.getElementById("speccreatebutton").disabled=true;
}
if (filename.search("perl-") >= 0) {
if (extension == "gem") {
for (var j=0;j<document.getElementById("speccreatetype").length;j++) {
if (document.getElementById("speccreatetype").options[j].value == "ruby")
document.getElementById("speccreatetype").options[j].selected=true;
};
} else if (specname.search("perl-") >= 0) {
for (var j=0;j<document.getElementById("speccreatetype").length;j++) {
if (document.getElementById("speccreatetype").options[j].value == "perl")
document.getElementById("speccreatetype").options[j].selected=true;
};
} else if (filename.search("python-") >= 0) {
} else if ((specname.search("python-") >= 0) || (specname.substring(0,2) == "py")) {
for (var j=0;j<document.getElementById("speccreatetype").length;j++) {
if (document.getElementById("speccreatetype").options[j].value == "python")
document.getElementById("speccreatetype").options[j].selected=true;
};
} else if (specname.substring(0,4) == "ghc-") {
for (var j=0;j<document.getElementById("speccreatetype").length;j++) {
if (document.getElementById("speccreatetype").options[j].value == "ghc")
document.getElementById("speccreatetype").options[j].selected=true;
};
} else if (url.search("kde.org") >= 0) {
for (var j=0;j<document.getElementById("speccreatetype").length;j++) {
if (document.getElementById("speccreatetype").options[j].value == "kde4")
document.getElementById("speccreatetype").options[j].selected=true;
};
} else {
for (var j=0;j<document.getElementById("speccreatetype").length;j++) {
if (document.getElementById("speccreatetype").options[j].value == "library")
@ -79,3 +142,227 @@ function replaceHTML(el, html) {
to the new element, which can be used to restore variable references. */
return newEl;
};
function getDownload(request) {
var url = "/cgi-bin/webbuild"
if (request != "")
request=request+"&USER="+user+"&USER_EMAIL="+user_email+"&SECRET="+encodeURIComponent(secret);
else
request="USER="+user+"&USER_EMAIL="+user_email+"&SECRET="+encodeURIComponent(secret);
url = url + "?" + request;
// var hiddenIFrameID = 'hiddenDownloader', iframe = document.getElementById(hiddenIFrameID);
// if (iframe == null) {
iframe = document.createElement('iframe');
// iframe.id = hiddenIFrameID;
iframe.style.display = 'none';
// }
iframe.src = url;
document.body.appendChild(iframe);
}
// ajaxFileUpload
jQuery.extend({
createUploadIframe: function(id, uri)
{
//create frame
var frameId = 'jUploadFrame' + id;
var iframeHtml = '<iframe id="' + frameId + '" name="' + frameId + '" style="position:absolute; top:-9999px; left:-9999px"';
if(window.ActiveXObject)
{
if(typeof uri== 'boolean'){
iframeHtml += ' src="' + 'javascript:false' + '"';
}
else if(typeof uri== 'string'){
iframeHtml += ' src="' + uri + '"';
}
}
iframeHtml += ' />';
jQuery(iframeHtml).appendTo(document.body);
return jQuery('#' + frameId).get(0);
},
createUploadForm: function(id, fileElementId, data)
{
//create form
var formId = 'jUploadForm' + id;
var fileId = 'jUploadFile' + id;
var form = jQuery('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
if(data)
{
for(var i in data)
{
jQuery('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form);
}
}
var oldElement = jQuery('#' + fileElementId);
var newElement = jQuery(oldElement).clone();
jQuery(oldElement).attr('id', fileId);
jQuery(oldElement).before(newElement);
jQuery(oldElement).appendTo(form);
//set attributes
jQuery(form).css('position', 'absolute');
jQuery(form).css('top', '-1200px');
jQuery(form).css('left', '-1200px');
jQuery(form).appendTo('body');
return form;
},
ajaxFileUpload: function(s) {
// TODO introduce global settings, allowing the client to modify them for all requests, not only timeout
s = jQuery.extend({}, jQuery.ajaxSettings, s);
var id = new Date().getTime()
var form = jQuery.createUploadForm(id, s.fileElementId, (typeof(s.data)=='undefined'?false:s.data));
var io = jQuery.createUploadIframe(id, s.secureuri);
var frameId = 'jUploadFrame' + id;
var formId = 'jUploadForm' + id;
// Watch for a new set of requests
if ( s.global && ! jQuery.active++ )
{
jQuery.event.trigger( "ajaxStart" );
}
var requestDone = false;
// Create the request object
var xml = {}
if ( s.global )
jQuery.event.trigger("ajaxSend", [xml, s]);
// Wait for a response to come back
var uploadCallback = function(isTimeout)
{
var io = document.getElementById(frameId);
try
{
if(io.contentWindow)
{
xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;
xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;
}else if(io.contentDocument)
{
xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;
xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;
}
}catch(e)
{
jQuery.handleError(s, xml, null, e);
}
if ( xml || isTimeout == "timeout")
{
requestDone = true;
var status;
try {
status = isTimeout != "timeout" ? "success" : "error";
// Make sure that the request was successful or notmodified
if ( status != "error" )
{
// process the data (runs the xml through httpData regardless of callback)
var data = jQuery.uploadHttpData( xml, s.dataType );
// If a local callback was specified, fire it and pass it the data
if ( s.success )
s.success( data, status );
// Fire the global callback
if( s.global )
jQuery.event.trigger( "ajaxSuccess", [xml, s] );
} else
jQuery.handleError(s, xml, status);
} catch(e)
{
status = "error";
jQuery.handleError(s, xml, status, e);
}
// The request was completed
if( s.global )
jQuery.event.trigger( "ajaxComplete", [xml, s] );
// Handle the global AJAX counter
if ( s.global && ! --jQuery.active )
jQuery.event.trigger( "ajaxStop" );
// Process result
if ( s.complete )
s.complete(xml, status);
jQuery(io).unbind()
setTimeout(function()
{ try
{
jQuery(io).remove();
jQuery(form).remove();
} catch(e)
{
jQuery.handleError(s, xml, null, e);
}
}, 100)
xml = null
}
}
// Timeout checker
if ( s.timeout > 0 )
{
setTimeout(function(){
// Check to see if the request is still happening
if( !requestDone ) uploadCallback( "timeout" );
}, s.timeout);
}
try
{
var form = jQuery('#' + formId);
jQuery(form).attr('action', s.url);
jQuery(form).attr('method', 'POST');
jQuery(form).attr('target', frameId);
if(form.encoding)
{
jQuery(form).attr('encoding', 'multipart/form-data');
}
else
{
jQuery(form).attr('enctype', 'multipart/form-data');
}
jQuery(form).submit();
} catch(e)
{
jQuery.handleError(s, xml, null, e);
}
jQuery('#' + frameId).load(uploadCallback );
return {abort: function () {}};
},
uploadHttpData: function( r, type ) {
var data = !type;
data = type == "xml" || data ? r.responseXML : r.responseText;
// If the type is "script", eval it in global context
if ( type == "script" )
jQuery.globalEval( data );
// Get the JavaScript object, if JSON is used.
if ( type == "json" )
eval( "data = " + data );
// evaluate scripts within html
if ( type == "html" )
jQuery("<div>").html(data).evalScripts();
return data;
}
})
// end ajaxFileUpload

View File

@ -0,0 +1,78 @@
webbuild.a { }
pre {
background: none;
border:0;
padding:0;
margin:0;
-webkit-box-shadow:none;
box-shadow:none;
font-family: monospace;
word-break: break-all;
}
code {
font-family: monospace;
}
form { margin:0; }
a.webbuild:link { color:#0b0600; text-decoration: none; }
a.webbuild:visited { color:#0b0600; text-decoration: none; }
a.webbuild:active { color:#0b0600; text-decoration: none; }
a.webbuild:hover { text-decoration: underline; }
hr { margin:0; color:black; background: #aaaaaa; }
label { white-space:nowrap; text-decoration:none; font-weight:initial; }
.webbuild input {
font-size: 8pt;
font-family:liberationsans,freesans,Arial,Verdana,Helvetica,sans-serif;
padding: 1px;
margin: 1px;
}
select {
font-size: 8pt;
font-family:liberationsans,freesans,Arial,Verdana,Helvetica,sans-serif;
padding: 0;
margin: 1px;
max-width: 98%;
background-color: buttonface;
}
input[type="text"] {
font-family:liberationsans,freesans,Arial,Verdana,Helvetica,sans-serif;
padding: 1px;
margin: 1px;
border: 1px solid #AAAAAA;
}
input[type="button"] {
font-family:liberationsans,freesans,Arial,Verdana,Helvetica,sans-serif;
font-size: 8pt;
font-weight: 400;
margin: 1px;
border: 1px solid #AAAAAA;
white-space:nowrap;
line-height: 1.1em;
}
input[type="button"]::-moz-focus-inner { padding: 0; border: 0; }
input[type="button"]:hover {
border: 1px solid #666666;
}
input[type="radio"] {
font-family:liberationsans,freesans,Arial,Verdana,Helvetica,sans-serif;
font-size: 7pt;
padding: 0;
margin: 0;
}
input[type="checkbox"] {
font-family:liberationsans,freesans,Arial,Verdana,Helvetica,sans-serif;
vertical-align:middle;
-ms-transform: scale(0.9);
-moz-transform: scale(0.9);
-webkit-transform: scale(0.9);
-o-trasnform: scale(0.9);
padding: 1px;
margin: 1px;
}

View File

@ -0,0 +1,13 @@
body { font-size: 9pt; font-family: liberationsans, freesans, arial, verdana, sans-serif; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); }
table { font-size: 9pt; font-family: liberationsans, freesans, arial, verdana, sans-serif; background-color: rgb(255, 255, 255); }
img { border: 0; margin: 0px; vertical-align:middle; }
h1 { font-size: 13pt; font-weight: bold; }
h2 { font-size: 11pt; font-weight: bold; }
h3 { font-size: 10pt; font-weight: bold; margin-top: 20px; margin-bottom: 2px; }
h4 { margin:5; margin-right: 10; font-size: 9pt; font-weight: normal; }
hr { margin:0; color:white; }
a { }
a:link { color:#2b6600; text-decoration: none; }
a:visited { color:#2b6600; text-decoration: none; }
a:active { color:#2b6600; text-decoration: none; }
a:hover { text-decoration: underline; }

View File

@ -1,75 +1,18 @@
body { font-size: 9pt; font-family: liberationsans, freesans, arial, verdana, sans-serif; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); }
table { font-size: 9pt; font-family: liberationsans, freesans, arial, verdana, sans-serif; background-color: rgb(255, 255, 255); }
img { border: 0; margin: 0px; vertical-align:middle; }
h1 { font-size: 13pt; font-weight: bold; }
h2 { font-size: 11pt; font-weight: bold; }
h3 { font-size: 10pt; font-weight: bold; margin-top: 20px; margin-bottom: 2px; }
h4 { margin:5; margin-right: 10; font-size: 9pt; font-weight: normal; }
hr { margin:0; color:white; }
a { }
a:link { color:#2b6600; text-decoration: none; }
a:visited { color:#2b6600; text-decoration: none; }
a:active { color:#2b6600; text-decoration: none; }
a:hover { text-decoration: underline; }
label {
white-space:nowrap;
}
input {
font-size: 8pt;
font-family:liberationsans,freesans,Arial,Verdana,Helvetica,sans-serif;
padding: 0;
margin: 1px;
}
select {
font-size: 8pt;
font-family:liberationsans,freesans,Arial,Verdana,Helvetica,sans-serif;
padding: 0;
margin: 1px;
height: 18px;
}
input[type="text"] {
padding: 0px;
margin: 1px;
height: 1.40em;
border: 1px solid #AAAAAA;
}
input[type="button"] {
margin: 1px;
white-space:nowrap;
height: 18px;
}
input[type="radio"] {
font-size: 7pt;
padding: 0;
margin: 0;
}
input[type="checkbox"] {
vertical-align:middle;
-ms-transform: scale(0.9);
-moz-transform: scale(0.9);
-webkit-transform: scale(0.9);
-o-trasnform: scale(0.9);
padding: 1px;
margin: 1px;
}
.boldbutton {
font-weight: bold;
font-weight: bold !important;
}
.redbutton {
color: red;
color: red !important;
}
.redbutton[disabled] {
color: lightgray;
color: lightgray !important;
}
.redboldbutton {
color: red;
font-weight: bold;
color: red !important;
font-weight: bold !important;
}
.redboldbutton[disabled] {
color: lightgray;
color: lightgray !important;
}
.screencontainer {
text-align:center;
@ -83,8 +26,8 @@ input[type="checkbox"] {
.opaquebackground {
text-align:center;
position:fixed;
z-index:15 !important;
position: fixed;
height:100%;
width:100%;
left:0;
@ -113,6 +56,46 @@ input[type="checkbox"] {
z-index:20;
}
.windowcontainer {
text-align:center;
position:fixed;
z-index:10 !important;
height:100%;
width:100%;
left:0;
top:0;
}
.windowopaquebackground {
text-align:center;
position:fixed;
z-index:10 !important;
height:100%;
width:100%;
left:0;
top:0;
background-color:black;
filter: alpha(opacity=75);
-khtml-opacity:0.75;
-webkit-opacity:0.75;
-moz-opacity:0.75;
opacity:0.75;
}
.windowbox {
display:inline-block;
position:relative;
font-size:10pt;
padding:5px;
margin:100px;
margin-right:auto;
margin-left:auto;
width:auto;
background-color:white;
border:2px solid #2b6600;
z-index:15;
}
.multiselect {
font-size:8pt;
border:0px;
@ -126,76 +109,166 @@ input[type="checkbox"] {
.multiselect label {
display:block;
white-space:nowrap;
font-weight:400;
padding:0;
}
.socialbox {
float:right;
font-size:8pt;
border:0px;
padding:0px;
height:130px;
line-height: 100%;
border:1px solid #2b6600;
}
.scroll-pane {
background-color: #e0f2d0;
height:130px;
width:200px;
overflow:auto;
.webbuildtopright {
float:right;
}
.searchbox {
position:relative;
display:block;
float:left;
width:215px;
align:center;
left:660px;
top:-25px;
// height:21px;
font-size:8pt;
border:1px solid #2b6600;
// margin:4px;
padding:2px;
background-color: #e0f2d0;
}
.chatpanel {
float:left;
width:215px;
align:center;
}
.webbuild {
font-size: 8pt;
font-family: liberationsans, freesans, arial, verdana, sans-serif;
line-height: 1.3em;
color: #000000;
margin:0px;
}
.webbuild td {
font-size: 8pt;
.webbuild td { font-size: 8pt; border:0; }
}
.webbuild table { font-size: 9pt; font-family: liberationsans, freesans, arial, verdana, sans-serif; background-color: rgb(255, 255, 255); }
.webbuild img { border: 0; margin: 0px; vertical-align:middle; }
.webbuild h1 { font-size: 13pt; font-weight: bold; }
.webbuild h2 { font-size: 11pt; font-weight: bold; }
.webbuild h3 { font-size: 10pt; font-weight: bold; margin-top: 20px; margin-bottom: 2px; }
.webbuild h4 { margin:5; margin-right: 10; font-size: 9pt; font-weight: normal; }*/
.webbuild hr { margin:0; color:white; }
.webbuild div { margin-bottom:1px; padding-bottom:1px; }
.webbuildcontainer {
max-width:920px;
height:auto;
}
.webbuildwrapleft {
float:left;
width:100%;
margin-right:-210px;
}
.webbuildleft {
margin-right:210px !important;
padding:0;
margin:0;
}
.webbuildright {
float:right;
width:202px;
margin:0;
}
@media screen and (min-width: 901px) {
.webbuildright {
width:202px;
}
.socialbox {
width:200px;
}
}
.operationpanelinfo {
margin-top:137px;
border:1px solid #2b6600;
background-color:#E0F2D0;
padding:1px;
}
.operationpanelsend {
margin-top:5px;
border:1px solid #2b6600;
background-color:#E0F2D0;
padding:1px;
}
.operationpanelautodist {
margin-top:5px;
border:1px solid #2b6600;
background-color:#FFFFDE;
padding:1px;
}
.operationpanelpatches {
margin-top:5px;
border:1px solid #2b6600;
background-color:#E0F2D0;
padding:1px;
}
.operationpanelupload {
margin-top:5px;
border:1px solid #2b6600;
background-color:#FFFFFF;
padding:1px;
}
.operationpanelpackageinfo {
margin-top:5px;
border:1px solid #2b6600;
background-color:#A7DEDE;
padding:1px;
}
.operationpanelgenericinfo {
margin-top:5px;
border:1px solid #2b6600;
background-color:#A7DEDE;
padding:1px;
}
.operationpanelhost {
margin-top:5px;
border:1px solid #2b6600;
background-color:#FFFFFF;
padding:1px;
}
.operationpaneloperations {
margin-top:5px;
border:1px solid #2b6600;
background-color:#FFFFDE;
padding:1px;
}
.operationpaneloperations > textarea {
padding:0;
}
.webbuildprocesses {
font-size:7pt;
padding:0px;
height:130px;
line-height: 130%;
margin-bottom: 2px;
border:1px solid #2b6600;
width:100%;
margin:0;
// display:table-cell;
background-color:#E0F2D0;
padding:1px;
}
.processes {
width:100%;
}
.editor {
width:690px;
float:left;
width:100%;
height:300px;
border:1px solid #cccccc;
padding:0px;
margin:0px;
font-family:'Courier New', Courier, 'Nimbus Mono L', monospace;
font-family:monospace;
font-size:8pt;
}
.maintainer {
width:684px;
float:left;
width:100%;
height:300px;
overflow:auto;
font-size:7pt;
border:1px solid #2b6600;
padding:0;
padding:1px;
margin:0;
background-color:white;
}
.processes {
width:680px;
font-size:7pt;
border:1px solid #2b6600;
padding:2px;
margin:0;
margin-bottom:2px;
background-color:#E0F2D0;
float:left;
}
.notes {
@ -209,13 +282,14 @@ input[type="checkbox"] {
}
.output {
width:680px;
width:100%;
height:300px;
overflow:auto;
overflow-x:hidden;
word-wrap: break-word;
font-family:'Courier New', Courier, 'Nimbus Mono L', monospace;
font-family:monospace;
font-size:8pt;
font-weight:400;
border:1px solid #2b6600;
padding:2px;
margin:0;
@ -223,35 +297,82 @@ input[type="checkbox"] {
color:white;
}
.output a:link {
text-decoration: underline;
color:white;
}
.output a,
.output a:link,
.output a:visited {
text-decoration: underline;
color:white;
}
.output p {
background-color:gray;
color:white;
}
@media screen and (max-width: 900px) {
.webbuildright,
.webbuildleft,
.operationpanelinfo,
.operationpanelsend,
.operationpanelautodist {
width:100%;
}
.socialbox {
float: none !important;
}
span#socialbox > span > div > div > img,
span#socialbox > span > div > div:first-child {
height:12px !important;
width:12px !important;
}
span#socialbox > span > div > div:nth-child(2),
span#socialbox > span > div > div:nth-child(3) {
margin-left: 12px !important;
}
.operationpanelinfo {
margin-top:5px !important;
}
.webbuildtopright,
.webbuildtopleft {
margin-top:5px;
width:100%;
}
.chatpanel {
margin-left:10px;
}
select,
input {
margin:3px !important;
}
}
@media screen and (max-width: 370px) {
.webbuildright,
.webbuildleft {
width:100%;
}
}
.matrix {
width:100%;
height:100%;
height:97%;
word-wrap: break-word;
overflow:auto;
font-size:7pt;
border:1px solid #2b6600;
padding:2px;
margin:0;
padding:0px;
top:5px;
left:5px;
// background-color:#e0f2d0;
-moz-column-count: 2;
/* -moz-column-count: 2;
-moz-column-gap: 1.5em;
-moz-column-rule: none;
-webkit-column-count: 2;
-webkit-column-gap: 1.5em;
-webkit-column-rule: none;
/* future proof */
/ future proof
column-count: 2;
column-gap: 1.5em;
column-rule: none;
column-rule: none;*/
}
.CodeMirror {
@ -271,17 +392,14 @@ input[type="checkbox"] {
background: #2b6600;
}
.scroll-pane-h {
height:272px;
width:400px;
overflow:auto;
white-space:nowrap;
}
.scroll-pane-v {
height:272px;
width:400px;
.scroll-pane {
/* socialbox */
background-color: #e0f2d0;
height:130px;
min-width:200px;
width:100%;
overflow:auto;
float:right;
}
.scroll-pane1 {
@ -296,3 +414,39 @@ input[type="checkbox"] {
width:390px;
overflow:auto;
}
.scroll-pane3 {
/* processes */
background-color: #e0f2d0;
height:130px;
width:auto;
overflow:auto;
}
.scroll-pane3-h {
height:272px;
width:400px;
overflow:auto;
white-space:nowrap;
}
.scroll-pane3-v {
height:272px;
width:400px;
overflow:auto;
}
/* socialbox */
.socialbox {
float:right;
font-size:8pt;
//border:0;
//margin:0;
//padding:0;
height:130px;
line-height: 100%;
border:1px solid #2b6600;
}
.socialbox div { margin-bottom:1px; }
.socialbox hr { margin:0; color:#FFF; }
.downloadbox table { font-size: 9pt; border:1px solid #2b6600; margin: 4px; padding:4; background-color: #e0f2d0; }

View File

@ -1,6 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head>
<meta content="text/html; charset=utf-8" http-equiv="content-type">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="shortcut icon" type="image/x-icon" href="/images/webbuild.ico" />
<!-- styles needed by jScrollPane -->
<link type="text/css" href="/scripts/jquery.jscrollpane.css" rel="stylesheet" media="all" >
<!-- latest jQuery direct from google's CDN -->
@ -9,6 +12,7 @@
<script type="text/javascript" src="/scripts/jquery.mousewheel.js"></script>
<!-- the jScrollPane script -->
<script type="text/javascript" src="/scripts/jquery.jscrollpane.min.js"></script>
<link rel="stylesheet" type="text/css" href="/styles/webbuild-standalone.css">
<link rel="stylesheet" type="text/css" href="/styles/webbuild.css">
<script type="text/javascript" src="/scripts/socialbox.js"></script>
<script>
@ -90,6 +94,7 @@ function editorChanged() {
function ajax_getvalues(request,confirm) {
var url = "/cgi-bin/webbuild"
var xmlhttp;
if (!user) {
user=getCookie("webbuild-user");
@ -100,6 +105,7 @@ function ajax_getvalues(request,confirm) {
secret=getCookie("webbuild-secret");
if (!secret) secret="";
}
if (confirm) {
document.getElementById("status").innerHTML =
'<div class=screencontainer><div class=opaquebackground></div>'+
@ -108,12 +114,6 @@ function ajax_getvalues(request,confirm) {
return;
}
document.getElementById("webbuildform").disabled = true;
document.getElementById("status").innerHTML =
'<div class=opaquebackground>'+
'<div style="text-align:left;color:white;position:absolute;left:0;top:0;" id=matrix class=matrix></div>'+
'<div style="position:absolute;left:50%;top:50%;"><img src="/images/wait.gif" title="Attendi..."</div>'+
'<div style="position:fixed;left:95%;top:95%;color:red;"><a href="javascript:clearid(\'status\');">[x] Close</a></div>'+
'</div>';
if (request != "")
request=request+"&USER="+user+"&USER_EMAIL="+user_email+"&SECRET="+encodeURIComponent(secret);
@ -129,23 +129,34 @@ function ajax_getvalues(request,confirm) {
return;
document.getElementById("noajax_msg").innerHTML = "";
document.getElementById("status").innerHTML =
'<div class=opaquebackground>'+
'<div style="text-align:left;color:white;position:absolute;left:0;top:0;" id=matrix class=matrix></div>'+
'<div style="position:absolute;left:50%;top:50%;"><img src="/images/wait.gif" title="Attendi..."</div>'+
'<div style="position:fixed;left:95%;top:95%;color:red;"><a href="javascript:clearid(\'status\');">[x] Close</a></div>'+
'</div>';
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState != 4)
if (xmlhttp.readyState < 4)
return;
if (xmlhttp.responseXML == undefined) {
if (xmlhttp.responseXML == undefined && xmlhttp.responseText == undefined) {
document.getElementById("status").innerHTML = "";
document.getElementById("output").innerHTML = "ERROR: there was a network connection problem.";
document.getElementById("output").innerHTML = "ERROR: there was a network connection problem." + xmlhttp.readyState + " " + xmlhttp.status;
xmlhttp.abort();
return;
}
var xmldoc = xmlhttp.responseXML.documentElement;
if (xmldoc == undefined) {
return;
}
var nodes = xmldoc.childNodes;
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].nodeName == "title") {
document.title = nodes[i].childNodes[0].nodeValue;
} else if (nodes[i].nodeName == "cookie-user") {
setCookie("webbuild-user", nodes[i].childNodes[0].nodeValue, 1);
setCookie("webbuild-user", nodes[i].childNodes[0].nodeValue);
} else if (nodes[i].nodeName == "cookie-secret") {
setCookie("webbuild-secret", nodes[i].childNodes[0].nodeValue, 1);
setCookie("webbuild-secret", nodes[i].childNodes[0].nodeValue);
} else if (document.getElementById(nodes[i].nodeName) != undefined) {
$("#"+nodes[i].nodeName).html(nodes[i].childNodes[0].nodeValue);
spectext = document.getElementById("spectext");
@ -160,22 +171,19 @@ function ajax_getvalues(request,confirm) {
});
} else if ((nodes[i].nodeName == "output") && (document.getElementById("outputbottom") != undefined)) {
document.getElementById("outputbottom").scrollTop = document.getElementById("outputbottom").scrollHeight;
} else if ((nodes[i].nodeName == "processes")) {
$(function() { $('.scroll-pane3').jScrollPane({scrollbarWidth:10}); });
}
}
}
//alert("nodes done");
document.getElementById("webbuildform").disabled = false;
document.getElementById("status").innerHTML = "";
}
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(request);
// setTimeout(function() { alert ("Timeout expired"); xmlhttp.abort(); }, 600000);
var currpos = 0, start = -1;
xmlhttp.onprogress = function() {
var end,to;
// save resposneText length when entering the function
var end = 0,to;
// save responseText length when entering the function
to = this.responseText.length - 1;
if (start < 0) {
start = this.responseText.substring(0,to).indexOf("<!-- SCROLL -->");
@ -185,58 +193,107 @@ function ajax_getvalues(request,confirm) {
end = this.responseText.substring(start+currpos-15,to).indexOf("<!-- ENDSCROLL -->");
if (end >= 0) to = end;
if (to > start) {
var customscroll = document.getElementById("matrix").scrollTop <
(document.getElementById("matrix").scrollHeight - document.getElementById("matrix").clientHeight);
document.getElementById("matrix").innerHTML =
"<div id=matrixoutput><pre>" + this.responseText.substring(start,to).replace("</pre>","&lt;/pre&gt;") + "</pre></div>";
currpos = document.getElementById("matrixoutput").innerHTML.length;
// document.getElementById("outputbottom").scrollTop = document.getElementById("outputbottom").scrollHeight;
document.getElementById("matrix").scrollTop = document.getElementById("matrix").scrollHeight;
document.getElementById("matrix").scrollLeft = document.getElementById("matrix").scrollWidth;
if (!customscroll)
document.getElementById("matrix").scrollTop = document.getElementById("matrix").scrollHeight;
}
}
}
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(request);
// setTimeout(function() { alert ("Timeout expired"); xmlhttp.abort(); }, 600000);
var currpos = 0, start = -1;
}
// ajaxFileUpload
function ajaxFileUpload(request)
{
/* $("#loading")
.ajaxStart(function(){
$(this).show();
})
.ajaxComplete(function(){
$(this).hide();
});*/
$.ajaxFileUpload
(
{
url:'/cgi-bin/webbuild',
secureuri:false,
fileElementId:'fileToUpload',
dataType: 'xml',
beforeSend:function()
{
$("#loading").show();
},
complete:function()
{
$("#loading").hide();
},
success: function (data, status)
{
ajax_getvalues(request);
if(typeof(data.error) != 'undefined')
{
if(data.error != '')
{
alert(data.error);
}else
{
alert(data.msg);
}
}
},
error: function (data, status, e)
{
alert(e);
}
}
)
return false;
}
//-->
</script>
<link rel="stylesheet" type="text/css" href="/styles/webbuild-post.css">
</head><body>
<table width="100%"><tr><td>
<tr><td valign="middle">
<table align="left"><tr>
<td><img src="/images/webbuild.png" alt="build automatici"></td>
<td>&nbsp;&nbsp;&nbsp;<b>- Webbuild - Interfaccia Web per lo sviluppo di openmamba</b></td>
</tr></table>
</td></tr>
<tr><td>
<span class=webbuild>
<div id=container style="position:relative;width:894px;height:auto;top:0;left:0;">
<form id=webbuildform name=webbuild method=post>
<span id="searchbox"></span>
<div style="position:relative;top:-30px;left:0;width:100%;height:100%;">
<div class="webbuildcontainer">
<form id=webbuildform name=webbuild method=post action="javascript:">
<img src="/images/webbuild.png" alt="build automatici">
&nbsp;&nbsp;&nbsp;<b>- Webbuild - Interfaccia Web per lo sviluppo di openmamba</b>
<div id="searchbox"></div>
<div class="chatpanel"><span id="chatpanel"></span></div>
<div id="noajax_msg"><p>Il supporto per AJAX non è abilitato nel tuo browser. L'aggiornamento live non sarà disponibile, premi Ricarica per aggiornare la pagina.</p></div>
<span id="status">Caricamento in corso, attendere...</span>
<span id="topcontrols"></span><span id="environments"></span><span id="specedit"></span>
<br><span id="repositories"></span>
<span id="repositories"></span>
<span id="packages"></span>
<span id="operations"></span>
<br><span id="speccreate"></span>
<hr>
<div style="position:relative;float:left;width:686px;padding:0;margin:1px;">
<span id="processes"></span>
<span id="speccreate"></span>
<div class="webbuildleft">
<div class="webbuildprocesses"><div class="scroll-pane3"><span id="processes"></span></div></div>
<div><span id="editor"></span></div>
<span id="editcontrols"></span>
<span id="showlogcontrols"></span>
<span id="output"></span>
</div>
<div style="position:relative;float:right;width:200px;padding:0;margin:1px;">
<div class="webbuildright">
<div class="socialbox"><div class="scroll-pane"><span id="socialbox"></span></div></div>
<span id="operationpanel" style="margin:0;"></span>
<span id="chatpanel"></span>
<span id="operationpanel"></span>
</div>
<div style="clear:both"></div>
</span>
</div>
<span id="window"></span>
</form>
</div>
</span>
<script>
ajax_getvalues("");
@ -244,6 +301,4 @@ ajax_getvalues_refresh("",user,user_email,encodeURIComponent(secret));
//setInterval("ajax_getvalues_refresh(\"\",user,user_email,encodeURIComponent(secret))",0);
</script>
<br><br><br><br><br><br>
</td></tr>
</table>
</body></html>

6
webbuild/webbuild-admin Normal file
View File

@ -0,0 +1,6 @@
USER_ENABLED=1
USER_ADMIN=1
USER_CANINSTALL=1
USER_CANMAINTAIN=1
USER_ALLENVIRONMENTS=1
USER_ALLREPOSITORIES=1

File diff suppressed because it is too large Load Diff

View File

@ -259,6 +259,7 @@ class PasswordHash {
}
$wp_hasher = new PasswordHash(8, TRUE);
echo $wp_hasher->HashPassword($argv[1]);
if ($wp_hasher->CheckPassword($argv[1], $argv[2]) == "1")
exit(0);
else

View File

@ -1,7 +1,7 @@
#!/bin/bash
#
# webbuild functions
# Copyright (c) 2012 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Copyright (c) 2012-2014 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
. /etc/autodist/config
@ -27,15 +27,29 @@ function set_user_state_var() {
function social_log() {
local line=$1
local SPRIVACY=0
[ "$line" ] || return
if [ ! "$STATE_FAKEUSER" ]; then
STATE_SOCIALLOG_ID=0
. $WEBBUILD_STATEDIR/users/webbuild.state
STATE_SOCIALLOG_ID=`expr $STATE_SOCIALLOG_ID + 1`
set_user_state_var STATE_SOCIALLOG_ID $STATE_SOCIALLOG_ID webbuild
echo "SID=$STATE_SOCIALLOG_ID SPRIVACY=$STATE_PRIVACYMODE $line" >> $WEBBUILD_STATEDIR/social_log
[ -e $WEBBUILD_STATEDIR/webbuild.db ] || \
sqlite3 $WEBBUILD_STATEDIR/webbuild.db \
"CREATE TABLE social_log(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, privacy BOOLEAN, user CHAR(40), type CHAR(40), target CHAR(40), email CHAR(80), text TEXT, time datetime default current_timestamp);"
eval "$line"
[ "$STATE_PRIVACYMODE" ] && $SPRIVACY=1
sqlite3 $WEBBUILD_STATEDIR/webbuild.db \
"INSERT into social_log (privacy, user, type, target, email, text) \
values ($SPRIVACY,'$SUSER','$STYPE','$STARGET','$SEMAIL','$STEXT');"
# Note: checking that URL does not point here again to avoid recursive requests
if [ "$WEBBUILD_URL" -a "${WEBBUILD_URL/\/localhost\//}" = "$WEBBUILD_URL" ]; then
eval $line
USER_SECRET_FIXED=`echo $USER_SECRET | sed "s|\$|\\$|"`
curl -s "$WEBBUILD_URL?REQUEST=message&USER=$USER&SECRET=`cgi_encodevar \"$USER_SECRET\"`&USER_EMAIL=$USER_EMAIL&\
TARGET=$STARGET&MESSAGE=`cgi_encodevar \"$STEXT\"`" >/dev/null
fi
fi
}
@ -56,17 +70,41 @@ function cgi_encodevar() {
# REPLY="${encoded}" #+or echo the result (EASIER)... or both... :p
}
function cgi_get_POST_upload()
# NOTE: only single file is supported
{
local content_disposition content_filename content_type
saveifs=$IFS
IFS=$'\r'
read -r
read -r content_disposition
eval content_filename=${content_disposition/*filename=}
# security, remove any trailing path
content_filename=${content_filename/*\/}
read -r content_type
read -r
IFS=$saveifs
head -n -1 | head -c -2 | cat > $WEBBUILD_STATEDIR/uploads/$content_filename
}
#This code for getting code from post data is from http://oinkzwurgl.org/bash_cgi and
#was written by Phillippe Kehi <phkehi@gmx.net> and flipflip industries
# (internal) routine to store POST data
function cgi_get_POST_vars()
{
# check content type
# FIXME: not sure if we could handle uploads with this..
[ "${CONTENT_TYPE}" != "application/x-www-form-urlencoded" ] && \
echo "Warning: you should probably use MIME type "\
"application/x-www-form-urlencoded!" 1>&2
# Handle uploads
if [ "${CONTENT_TYPE:0:19}" = "multipart/form-data" ]; then
cgi_get_POST_upload "${CONTENT_TYPE/*boundary=}"
return
fi
#[ "${CONTENT_TYPE:0:33}" != "application/x-www-form-urlencoded" ] && \
# echo "Warning: you should probably use MIME type "\
# "application/x-www-form-urlencoded instead of ${CONTENT_TYPE}!" 1>&2
# save POST variables (only first time this is called)
[ -z "$QUERY_STRING_POST" \
-a "$REQUEST_METHOD" = "POST" -a ! -z "$CONTENT_LENGTH" ] &&
@ -136,6 +174,7 @@ function cgi_getvars()
p=`echo $q | sed "s|&.*||"`
q=`echo $q | sed "s|[^&]*&||"`
k="${p%%=*}" # get the key (variable name) from it
[ ! "$k" -o "$k" = "REMOTE_ADDR" -o "$k" = "REMOTE_HOST" -o "$k" = "REMOTE_PORT" -o "$k" = "REMOTE_USER" ] && continue
v="${p#*=}" # get the value from it
# decode and evaluate var if requested
if [ "$k" != "SPECTEXT" ]; then
@ -146,12 +185,27 @@ function cgi_getvars()
return
}
function var2html()
{
eval r=\$$1
r="${r//\&/&amp;}"
r="${r//\</&lt;}"
r="${r//\\\n/<br>}"
r="${r//\\/&#92;}"
r="${r//\"/&quot;}"
r="${r//\$/&#36;}"
r="${r//\`/&#96;}"
r="${r//\*/&#42;}"
echo "${r}"
}
function kill_tree() {
local killpid=$1
[ $1 ] || return
kill `pstree -p $killpid | sed 's/(/\n(/g' | grep '(' | sed 's/(\(.*\)).*/\1/' | tr "\n" " "`
# tail here is used to avoid killing first pid, typically sh, which causes apache to stop since some time
kill `pstree -pl $killpid | sed 's/(/\n(/g' | grep '(' | sed 's/(\(.*\)).*/\1/' | tail -n+2 | tr "\n" " "`
return $?
}
@ -179,7 +233,7 @@ function parse_search_output() {
echo -n "<a class=searchlink href=\"/distribution/distromatic.html?tag=$REPOSITORY&pkg=$PKG.$ARCH\" target=_new>$2</a><br>"
echo -n "</font>"
# if [ "$ARCH" ]
# $SUDO_WRAPPER 0 local "$USER" "" "openmamba-repository search -i $REPSEARCHTEXT" | \
# $SUDO_WRAPPER 0 local "$USER" "" "autodist-repository search -i $REPSEARCHTEXT" | \
# sed "s|\(.*(source).*\)|<font color=white><b>\1</b></font>|;
# s|\(.*(${AUTOPORT_ARCH[$ENVIRONMENT]}).*\)|<font color=lightgreen>\1</font>|"
done
@ -191,33 +245,41 @@ function parse_patch_output() {
IFS=''
echo -n "<font color=gray>"
while read line; do
[ "${line:0:3}" = "+++" ] && echo -n "</font>"
echo "$line" | sed "s|<|\&lt;|g;s|[[:cntrl:]]\[[0-9;]*m||g;
sed "s|<|\&lt;|g;s|[[:cntrl:]]\[[0-9;]*m||g;
s|^\(+++.*\)|<font color=white style=\"background-color:gray\"><b>\1</b></font>|;
s|^\(---.*\)|<font color=white style=\"background-color:gray\"><b>\1</b></font>|;
s|^\(-.*\)|<font color=red>\1</font>|;
s|^\(+.*\)|<font color=lightgreen>\1</font>|;
s|^ |\&nbsp;|;"
s|^ |\&nbsp;|;" |
while read line; do
[ "${line:0:3}" = "+++" ] && echo -n "</font>"
echo "$line"
done
IFS=$SAVE_IFS
}
function parse_build_output() {
sed "s|<|\&lt;|g;s|[[:cntrl:]]\[[0-9;]*m||g;
#s|\(.\{10000\}\).*|\1 [CUT - LONG LINE]|;
sed "s|\r.*||;
s/\x90\x8D.*//g;
s|\\\|\\\\\\\|g;s|<|\&lt;|g;
s|[[:cntrl:]]\[[0-9;]*m||g;
s|&lt;font|<font|g;
s|&lt;/font|</font|g;
s|^\([\+#] .*\)|<font style=\"color:cyan\">\1</font>|;
s|\(ftp[s]*://[[:alnum:]+\,:&?/_.=~%#-]*\)|<a href=\1 target=new>\1</a>|;
s|\(http[s]*://[[:alnum:]+\,:&?/_.=~%#-]*\)|<a href=\1 target=new>\1</a>|;
s|\(.*\)\(error[^0-9A-Za-z]*:[[:space:]]*.*\)|<font style=\"background-color:red;color:white\">\1<a %SRCURL%\2%SRCURLEND%>\2</a></font>|i;
s|^\(== =.*\)|<font style=\"background-color:green;color:white\">\1</font>|;
s|\(.*\)\(error[^0-9A-Za-z]*:[[:space:]]*.*\)|<span class=\"outputboxerror\">\1<a %SRCURL%\2%SRCURLEND%>\2</a></span>|i;
s|^\(== =.*\)|<span class=\"outputboxok\">\1</span>|;
s|^[[:cntrl:]]*\([!%?=][!%!=>] .*\)|<font style=\"color:gold\">\1</font>|;
s|[[:cntrl:]]||g;" | google_search $1
s|[[:cntrl:]]||g;" | iconv -c | google_search $1
}
function parse_generic_output() {
sed "s|<|\&lt;|g;s|[[:cntrl:]]\[[0-9;]*m||g;
# s|\(.\{10000\}\).*|\1 [CUT - LONG LINE]|;
sed "s|\r.*||;
s|<|\&lt;|g;
s|[[:cntrl:]]\[[0-9;]*m||g;
s|&lt;font|<font|g;
s|&lt;/font|</font|g;
s|^\([\+#] .*\)|<font style=\"color:cyan\">\1</font>|;
@ -227,13 +289,12 @@ function parse_generic_output() {
function google_search() {
while read line; do
local SEARCH_STRING=`echo "$line" | sed "s|.*%SRCURL%\(.*\)%SRCURLEND%.*|\1|"`
if [ "$SEARCH_STRING" = "$line" ]; then
if [ "${line/\%SRCURL\%}" == "${line}" ]; then
echo "$line"
else
SEARCH_STRING=`echo $SEARCH_STRING | sed "s|\&lt;|<|"`
local SEARCH_STRING=`echo "$line" | sed "s|.*%SRCURL%\(.*\)%SRCURLEND%.*|\1|;s|\&lt;|<|"`
local SEARCH_STRING_ENCODED=`cgi_encodevar "$1 $SEARCH_STRING"`
echo "$line" | sed "s|%SRCURL%.*%SRCURLEND%|href=\"http://www.google.com/search?q=$SEARCH_STRING_ENCODED\" target=_new title=\"Search this error on the Web\"|g"
echo "$line" | sed "s|%SRCURL%.*%SRCURLEND%|href=\"https://www.google.com/search?q=$SEARCH_STRING_ENCODED\" target=_new title=\"Search this error on the Web\"|g"
fi
done
}
@ -263,10 +324,23 @@ function print_environment_descr() {
# (${AUTOPORT_BASE_REPOSITORY[$i]} based)"
}
function environment_rootdir() {
local env=$1
if [ "${AUTOPORT_CHROOT[$env]}" ]; then
echo "/var/autoport/${AUTOPORT_CHROOT[$env]}"
else
echo ""
fi
}
function environment_autoport_logdir() {
local env=$1
if [ "${AUTOPORT_CHROOT[$env]}" ]; then
echo "/var/autoport/${AUTOPORT_CHROOT[$env]}/home/${AUTOPORT_CHROOT_USER[$env]}/.autoport/"
if [ "${AUTOPORT_CHROOT_USER[$env]}" != "autodist" ]; then
echo "/var/autoport/${AUTOPORT_CHROOT[$env]}/home/${AUTOPORT_CHROOT_USER[$env]}/.autoport/"
else
echo "/var/autoport/${AUTOPORT_CHROOT[$env]}/var/autodist/.autoport/"
fi
elif [ "${AUTOPORT_NATIVE[$env]}" ]; then
local envhome=`eval echo ~${AUTOPORT_CHROOT_USER[$env]}`
echo "$envhome/.autoport"
@ -275,12 +349,26 @@ function environment_autoport_logdir() {
function environment_logdir() {
local env=$1
local chroot=$2
if [ "${AUTOPORT_CHROOT[$env]}" ]; then
echo "/var/autoport/${AUTOPORT_CHROOT[$env]}/home/${AUTOPORT_CHROOT_USER[$env]}/.autodist/log/"
if [ "${AUTOPORT_CHROOT_USER[$env]}" != "autodist" ]; then
if [ "$chroot" ]; then
echo "/home/${AUTOPORT_CHROOT_USER[$env]}/.autodist/log/"
else
echo "/var/autoport/${AUTOPORT_CHROOT[$env]}/home/${AUTOPORT_CHROOT_USER[$env]}/.autodist/log/"
fi
else
if [ "$chroot" ]; then
echo "/var/autodist/log/"
else
echo "/var/autoport/${AUTOPORT_CHROOT[$env]}/var/autodist/log/"
fi
fi
elif [ "${AUTOPORT_NATIVE[$env]}" ]; then
local envhome=`eval echo ~${AUTOPORT_CHROOT_USER[$env]}`
if [ "${AUTOPORT_CHROOT_USER[$env]}" = "autodist" ]; then
echo "$envhome/log"
echo "/var/autodist/log/"
else
echo "$envhome/.autodist/log/"
fi

View File

@ -1,3 +1,16 @@
#
# webbuild functions-private include file
# Copyright (c) 2012-2014 by Silvan Calarco <silvan.calarco@mambasoft.it>
#
repository_list() {
if [ "$WEBBUILD_REPOSITORIES" ]; then
echo "${WEBBUILD_REPOSITORIES[*]}"
else
$SUDO_WRAPPER 0 local "$USER" "" "/usr/sbin/autodist-repository list"
fi
}
function showlog() {
local LOGDIR LOGFILES LOGFILE1 LOGFILE2 LOGFILE3 LOGFILE4
@ -23,21 +36,13 @@ function showlog() {
LOGFILE3=$LOGFILE/*_${PACKAGE/\//_}__*.${AUTOPORT_ARCH[$ENVIRONMENT]}
LOGFILE4=$LOGFILE/*_${PACKAGE/\//_}.${AUTOPORT_ARCH[$ENVIRONMENT]}
LOGDIR=`environment_logdir $ENVIRONMENT`
LOGDIR=`environment_logdir $ENVIRONMENT 1`
LOGFILES="$LOGDIR/$LOGFILE1 $LOGDIR/$LOGFILE2 $LOGDIR/$LOGFILE3 $LOGDIR/$LOGFILE4"
for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
[ "$i" = "$ENVIRONMENT" ] && continue
[ "${AUTOPORT_ARCH[$i]}" = "${AUTOPORT_ARCH[$ENVIRONMENT]}" ] || continue
if [ "${AUTOPORT_UPDATE[$i]}" ]; then
LOGDIR="/var/autodist/log"
LOGFILES="$LOGFILES $LOGDIR/$LOGFILE1 $LOGDIR/$LOGFILE2 $LOGDIR/$LOGFILE3 $LOGDIR/$LOGFILE4"
fi
done
LOGFILES=`ls -t $LOGFILES | head -1`
# sort by most recent and take first
LOGFILES=`$SUDO_WRAPPER 0 $ENVIRONMENT "$USER" "" "ls -t $LOGFILES 2>/dev/null | head -1"`
fi
echo -n "<output><![CDATA[<hr><b>Console output for $PACKAGE ($LOGTYPE$LOGSTATUSAPPEND):</b>"
echo "<div align=left class=output id=$LOGOUTPUTID>"
echo "<div align=left class=\"outputbox\" id=\"$LOGOUTPUTID\">"
for f in $LOGFILES; do
if [ -r $f ]; then
LOGFILESIZE=`stat -c %s $f`
@ -51,10 +56,10 @@ function showlog() {
echo -n "<pre>"
if [ "$LOGTYPE" = "processtail" ]; then
echo -n "<!-- SCROLL -->"
tail -n +0 -f $f --pid $PROCESSPID | sed "s|<|\&lt;|g"
tail -n +0 -f $f --pid $PROCESSPID | stdbuf -oL sed "s|<\([/]pre>\)|\&lt;\1|g"
echo -n "<!-- ENDSCROLL -->"
else
if [ $LOGFILESIZE -lt 524288 ]; then
if [ $LOGFILESIZE -lt 12097152 ]; then
if [ -r $f ]; then
cat $f | parse_build_output $PACKAGE
else
@ -62,13 +67,13 @@ function showlog() {
fi
else
if [ -r $f ]; then
head -c 262144 $f | parse_build_output $PACKAGE
head -c 1048576 $f | parse_build_output $PACKAGE
echo "<br><font style=\"background-color:yellow;color:black\">&lt;------ CUT (long file) -------&gt;</font>"
tail -c 262144 $f | parse_build_output $PACKAGE
tail -c 1048576 $f | parse_build_output $PACKAGE
else
$SUDO_WRAPPER 0 $ENVIRONMENT "$USER" "" "head -c 262144 $f" | parse_build_output $PACKAGE
$SUDO_WRAPPER 0 $ENVIRONMENT "$USER" "" "head -c 1048576 $f" | parse_build_output $PACKAGE
echo "<br><font style=\"background-color:yellow;color:black\">&lt;------ CUT (long file) -------&gt;</font>"
$SUDO_WRAPPER 0 $ENVIRONMENT "$USER" "" "tail -c 262144 $f" | parse_build_output $PACKAGE
$SUDO_WRAPPER 0 $ENVIRONMENT "$USER" "" "tail -c 1048576 $f" | parse_build_output $PACKAGE
fi
fi
fi
@ -79,6 +84,7 @@ function showlog() {
function showEnvironmentPanel() {
echo -n "Host: <b>`hostname`</b><br>"
echo -n "Environment: <b>"
if [ "${AUTOPORT_CHROOT_USER[$ENVIRONMENT]}" ]; then
echo -n "${AUTOPORT_CHROOT_USER[$ENVIRONMENT]} - "
@ -102,39 +108,65 @@ function showEnvironmentPanel() {
# toolchain
echo -n "<br>"
local toolchain_output=`$SUDO_WRAPPER 0 $ENVIRONMENT "$USER" "" "LANGUAGE=C gcc --version | head -n1; LANGUAGE=C ld -v"`
local gcc_ver=`echo $toolchain_output | sed "s|.*(GCC) \([0-9.]*\) .*|\1|"`
local binutils_ver=`echo $toolchain_output | sed "s|.*GNU \(.*\) (GNU Binutils.*)\(.*\)|\1 \2|"`
echo "Toolchain: gcc $gcc_ver, $binutils_ver"
# smart upgrade
echo -n "<br><input type=button id=smartupgrade value=\"system upgrade\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&"
echo -n "REQUEST=smartupgrade\""
echo -n ",\"`cgi_encodevar "Upgrade current environment to latest updates now?"`\"); class=redbutton>"
## run ldconfig
#echo -n "<input type=button id=runldconfig value=\"run ldconfig\" onclick="
#echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&"
#echo -n "REQUEST=runldconfig\");>"
# environment search
echo -n "<br><div style=\"white-space:nowrap;width:100%;\">Provides:<input type=text style=\"width:75%;align:center;padding:0;margin:2px;\" id=environmentsearch value=\"Search package or provide...\" "
echo -n "onfocus=\"if (this.value==this.defaultValue) this.value=''\" "
echo -n "onkeypress=if(checkEnter(event))ajax_getvalues(\""
echo -n "ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&"
echo -n "REQUEST=environmentsearch&ENVSEARCHTEXT=\"+encodeURIComponent(getElementById('environmentsearch').value));></div>"
if [ ! -e $WEBBUILD_STATEDIR/cache/environment-$ENVIRONMENT-data -o \
"`find $WEBBUILD_STATEDIR/cache/environment-$ENVIRONMENT-data -mmin +5`" ]; then
local toolchain_output=`LANGUAGE=C $SUDO_WRAPPER 0 $ENVIRONMENT "$USER" "" "gcc --version | head -n1; LANGUAGE=C clang -v | head -n1; LANGUAGE=C ld -v"`
local gcc_ver=`echo $toolchain_output | sed "s|.*(GCC) \([0-9.]*\) .*|\1|"`
local binutils_ver=`echo $toolchain_output | sed "s|.*GNU \(.*\) (GNU Binutils.*)\(.*\)|\1 \2|"`
local clang_ver=`echo $toolchain_output | sed "s|.*clang version \([0-9.]*\) .*|\1|"`
local toolchain_text="gcc $gcc_ver, clang $clang_ver, $binutils_ver"
echo "$toolchain_text" > $WEBBUILD_STATEDIR/cache/environment-$ENVIRONMENT-data
else
local toolchain_text=`cat $WEBBUILD_STATEDIR/cache/environment-$ENVIRONMENT-data`
fi
echo "Toolchain: $toolchain_text"
}
function print_showlogcontrols() {
echo -n "<showlogcontrols><![CDATA["
# autodist logs
echo -n "<hr><b>Show last autodist logs:</b> "
echo -n "<input type=button value=\"prepare\" onclick=ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&PACKAGE=$PACKAGEENCODED&"
echo -n "REQUEST=showlog&LOGTYPE=prepare&LOGSTATUSOK=\"+document.all.logstatusOK.checked);>"
echo -n "<input type=button value=\"update\" onclick=ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&PACKAGE=$PACKAGEENCODED&"
echo -n "REQUEST=showlog&LOGTYPE=update&LOGSTATUSOK=\"+document.all.logstatusOK.checked);>"
echo -n "<input type=button class=boldbutton value=\"build\" onclick=ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&PACKAGE=$PACKAGEENCODED&"
echo -n "REQUEST=showlog&LOGTYPE=build&LOGSTATUSOK=\"+document.all.logstatusOK.checked);>"
echo -n "<input type=button value=\"install\" onclick=ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&PACKAGE=$PACKAGEENCODED&"
echo -n "REQUEST=showlog&LOGTYPE=install&LOGSTATUSOK=\"+document.all.logstatusOK.checked);>"
echo -n "<input type=button value=\"send\" onclick=ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&PACKAGE=$PACKAGEENCODED&"
echo -n "REQUEST=showlog&LOGTYPE=send&LOGSTATUSOK=\"+document.all.logstatusOK.checked);> with status: "
echo -n "OK <input id=\"logstatusOK\" type=\"radio\" name=\"logstatus\" value=\"OK\"> "
echo -n "FAILED <input type=\"radio\" name=\"logstatus\" value=\"FAILED\" checked=\"checked\">"
# console cmd
echo -n "<hr><b>Command:</b> "
echo -n " ["
if [ "${AUTOPORT_CHROOT_USER[$ENVIRONMENT]}" ]; then
echo -n "${AUTOPORT_CHROOT_USER[$ENVIRONMENT]}@"
else
echo -n "autodist@"
fi
echo -n "`hostname -s` ${SPECVAR_BUILDDIR}]\$ <input type=text id=consolecmd value=\"\" size=\"40\"> "
echo -n "<input type=button id=consolecmdbutton value=\"submit\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&"
echo -n "REQUEST=consolecmd&CONSOLECMD=\"+getElementById('consolecmd').value+\"&"
echo -n "RPMFORCE=\"+getElementById('rpmforce').checked+\"&"
echo -n "DEBUG=\"+getElementById('debug').checked+\"&"
echo -n "SPECTEXT=\"+encodeURIComponent(editor.getValue()));>"
# close tag
echo -n "]]></showlogcontrols>"
}
function print_editorcontrols() {
echo -n "<editcontrols><![CDATA["
# specfile save
echo -n "<div style=\"width:100%;overflow:hidden;\"><span style=\"float:left\">"
echo -n "<div style=\"width:100%;overflow:hidden;\"><span style=\"width:100%;display:block\">"
echo -n "<input type=button id=savebutton value=\"save\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&"
echo -n "REQUEST=savespec&SPECTEXT=\"+encodeURIComponent(editor.getValue()));"
echo -n "REQUEST=savespec&SENDREPOSITORY=$SENDREPOSITORY&SPECTEXT=\"+encodeURIComponent(editor.getValue()));"
echo -n "this.disabled=true; disabled=disabled class=redbutton>"
# specfile reload
echo -n "<input type=button id=updatespecbutton value=\"reload\" onclick="
@ -146,22 +178,71 @@ function print_editorcontrols() {
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&"
echo -n "REQUEST=deletespec\",\"`cgi_encodevar "Really delete <b>$PACKAGE.spec</b>?"`\")>"
# specfile rename
echo -n "<input type=button id=updatespecbutton value=\"rename to:\" onclick="
echo -n "<input type=button id=updatespecbutton value=\"rename:\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&RENAMESPECFROM=$PACKAGE&"
echo -n "SPECTEXT=\"+encodeURIComponent(editor.getValue())+\"&"
echo -n "REQUEST=renamespec&PACKAGE=\"+encodeURIComponent(getElementById('specnewname').value));>"
echo -n "<input type=text id=specnewname value=\"\" size=12>.spec"
# add a note
echo -n "<label>"
echo -n "<input type=button id=addpkgnote value=\"add a note:\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&"
echo -n "<input type=text id=specnewname value=\"\" size=6>"
# unpack
echo -n "<input type=button value=\"prepare\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&REQUEST=rpmprepare&"
echo -n "RPMBUILDARCH=\"+getSelectedValueById('rpmbuildarch')+\"&"
echo -n "SPECTEXT=\"+encodeURIComponent(editor.getValue()));>"
# build
echo -n "<input type=button value=\"build\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&REQUEST=rpmbuild&"
echo -n "RPMBUILDARCH=\"+getSelectedValueById('rpmbuildarch')+\"&"
echo -n "SPECTEXT=\"+encodeURIComponent(editor.getValue())+\"&RPMFORCE=\"+getElementById('rpmforce').checked); class=boldbutton>"
# unpackaged files
echo -n "<input type=button value=\"unpackaged list\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&REQUEST=autospeclistcheck&"
echo -n "RPMBUILDARCH=\"+getSelectedValueById('rpmbuildarch')+\"&"
echo -n "SPECTEXT=\"+encodeURIComponent(editor.getValue()));>"
# build requirements
echo -n "<input type=button value=\"build reqs\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&REQUEST=autospecbuildreq\");>"
# rpm install
[ ! "$USER_CANINSTALL" ] && DISABLED="disabled=disabled"
echo -n "<input type=button id=rpminstallbutton value=\"install\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&REQUEST=rpminstall&"
echo -n "RPMFORCE=\"+getElementById('rpmforce').checked"
echo -n ",\"`cgi_encodevar "Install <b>$PACKAGE</b> in current environment?"`\""
echo -n "); class=redbutton $DISABLED>"
# rpm send
if [ "$SPECVAR_CHECK_NOAUTOBUILDREQ" ]; then
HREFADD="disabled=disabled title=\"WARNING: fix specfile build requirements before you can send the package\""
else
HREFADD=
fi
echo -n "<input type=button id=sendpackagebutton value=\"send\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&REQUEST=sendpackage&"
echo -n "SENDRECREATESRPM=\"+getElementById('sendrecreatesrpm').checked+\"&"
echo -n "SPECTEXT=\"+encodeURIComponent(editor.getValue())+\"&"
echo -n "REQUEST=addpkgnote&PKGNOTE=\"+encodeURIComponent(getElementById('pkgnote').value));></label></span>"
echo -n "<span style=\"display:block;overflow:hidden;padding-right:5px;\">"
echo -n "<input type=text id=pkgnote value=\"\" style=\"width:100%\">"
echo -n "</span></div>"
echo -n "AUTODISTARCH=\"+getSelectedValueById('rpmbuildarch')+\"&"
echo -n "SENDREPOSITORY=\"+getSelectedValueById('sendrepository')"
echo -n ",\"`cgi_encodevar "Send <b>$PACKAGE</b> built packages to <b>"`\"+getSelectedValueById('sendrepository')+"
echo -n "\"`cgi_encodevar "</b>?<br><br><font color=goldenrod>HINT: does summary look short and good?</font><br><b>${SPECVAR_Name[0]} - ${SPECVAR_Summary[0]}.</b>"`\""
echo -n "); class=redbutton $HREFADD>"
# recreate and send SRPM
if [ "$SPECVAR_CHECK_NOAUTOBUILDREQ" ]; then
HREFADD="disabled=disabled title=\"WARNING: fix specfile build requirements before you can send the package\""
else
HREFADD=
fi
echo -n "<input type=button id=sendsourcebutton value=\"send SRPM\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&REQUEST=sendsource&"
echo -n "RPMFORCE=\"+getElementById('rpmforce').checked+\"&"
echo -n "SENDRECREATESRPM=\"+getElementById('sendrecreatesrpm').checked+\"&"
echo -n "SPECTEXT=\"+encodeURIComponent(editor.getValue())+\"&"
echo -n "SENDREPOSITORY=\"+getSelectedValueById('sendrepository')"
echo -n ",\"`cgi_encodevar "Send <b>$PACKAGE</b> source package only to <b>"`\"+getSelectedValueById('sendrepository')+"
echo -n "\"`cgi_encodevar "</b>?<br><br>WARNING: use this to refresh the SRPM of a package which already exists with same release in repository"`\""
echo -n "); class=redbutton $HREFADD>"
# recreate SRPM before sending checkbox
echo -n "<label style=\"color:red;padding:0;\"><input type=checkbox id=\"sendrecreatesrpm\" value=\"force\">recreate SRPM</label>"
# specfile update
echo -n "<div style=\"width:100%;overflow:hidden;\"><span style=\"float:left\">"
echo -n "<div style=\"width:100%;overflow:hidden;\"><span style=\"display:flex\">"
echo -n "<input type=button id=updatespecbutton value=\"update\" onclick="
echo -n "ajax_getvalues(\"ENVIRONMENT=$ENVIRONMENT&REPOSITORY=$REPOSITORY&PACKAGE=$PACKAGEENCODED&"
echo -n "REQUEST=updatespec&UPDATESPECVERSION=\"+getElementById('updatespecversion').value+\"&"
@ -169,13 +250,86 @@ function print_editorcontrols() {
echo -n "DEBUG=\"+getElementById('debug').checked+\"&"
echo -n "REBUILDSPECCHANGELOG=\"+encodeURIComponent(getElementById('rebuildspecchangelog').value)+\"&"
echo -n "SPECTEXT=\"+encodeURIComponent(editor.getValue()));>"
echo -n " (automatic or specify new version:<input type=text id=updatespecversion value=\"\" size=\"10\">"
echo -n " or new release changelog:"
echo -n "</span><span style=\"display:block;float:right\">)</span>"
echo -n "<span style=\"display:block;overflow:hidden;padding-right:5px;\">"
echo -n "<input type=text id=rebuildspecchangelog value=\"$REBUILDSPECCHANGELOG\" style=\"width:100%\">"
echo -n "</span></div>"
echo -n "&nbsp;<label>to new version:</label><input type=text id=updatespecversion value=\"\" size=\"10\">"
echo -n "&nbsp;<label>or to new release with changelog:</label>"
echo -n "<input style=\"flex:1\" type=text id=rebuildspecchangelog value=\"$REBUILDSPECCHANGELOG\">"
echo -n "</div>"
# close tag
echo -n "]]></editcontrols>"
}
function show_docs() {
local f RET ftype
for f in $@; do
echo -n "<a href=#logfile-$f>$f</a><br>"
done
echo -n "<br>"
for f in $@; do
echo -n "<a name=logfile-$f></a><p><b>File $f:</b><pre>"
ftype="`$SUDO_WRAPPER 0 $ENVIRONMENT "$USER" $PACKAGE "cd $SPECVAR_RPMBUILDDIR/$SPECVAR_BUILDDIR && file $f"`"
if [ "${ftype/text}" = "${ftype}" ]; then
echo "<p>Binary file; skipping."
continue
fi
$SUDO_WRAPPER 0 $ENVIRONMENT "$USER" $PACKAGE \
"cd $SPECVAR_RPMBUILDDIR/$SPECVAR_BUILDDIR && head -c 10240 $f | strings | sed \"s|<|\&lt;|g;s|[[:cntrl:]]\[[0-9;]*m||g\"" | parse_generic_output
RET=$?
echo -n "</pre>"
done
return $RET
}
function download_file() {
local RET
local download_environment=$1
local download_files=$2
local f
for f in $download_files; do
echo -e "Content-Type: application/octet-stream"
echo -e "Content-Disposition: attachment; filename=\"${f/*\/}\"\n"
if [ "$download_environment" ]; then
$SUDO_WRAPPER binary $download_environment "$USER" "" "cat $f 2>/dev/null"
else
cat $f 2>/dev/null
fi
done
RET=$?
return $RET
}
function resolve_rpmmanagerdir() {
local RPMMANAGERDIR=$1
local RPMMANAGERARCH=$2
local REPOSITORY=$3
case $RPMMANAGERDIR in
REP_SRPMS) rpmmanagerdir=$local_ftp/$REPOSITORY/SRPMS.base
rpmmanagermask="*.src.rpm"
rpmmanagermode=repository ;;
REP_RPMS) rpmmanagerdir=$local_ftp/$REPOSITORY/RPMS.$RPMMANAGERARCH
rpmmanagermask="*.$RPMMANAGERARCH.rpm"
rpmmanagermode=repository ;;
REP_RPMSNOARCH) rpmmanagerdir=$local_ftp/$REPOSITORY/RPMS.$RPMMANAGERARCH
rpmmanagermask="*.noarch.rpm"
rpmmanagermode=repository ;;
SRPMS) rpmmanagerdir=../SRPMS
rpmmanagermask="*.src.rpm"
rpmmanagermode=environment ;;
RPMSNOARCH) rpmmanagerdir=../RPMS/noarch
rpmmanagermask="*.noarch.rpm"
rpmmanagermode=environment ;;
RPMS_arm) rpmmanagerdir=../RPMS/arm
rpmmanagermask="*.arm.rpm"
rpmmanagermode=environment ;;
RPMS_i586) rpmmanagerdir=../RPMS/i586
rpmmanagermask="*.i586.rpm"
rpmmanagermode=environment ;;
*) rpmmanagerdir=../RPMS/$RPMMANAGERARCH
rpmmanagermask="*.$RPMMANAGERARCH.rpm"
rpmmanagermode=environment ;;
esac
}

View File

@ -0,0 +1,8 @@
<Directory /var/www/html>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
DirectoryIndex webbuild.html index.html index.php
# SSILegacyExprParser on
</Directory>
Timeout 600

View File

@ -2,6 +2,7 @@
. /usr/share/autodist/webbuild-functions
. /etc/sysconfig/autoport
export LANG="C.UTF-8"
MODE=$1
ENVIRONMENT=$2
USER=$3
@ -9,6 +10,8 @@ PACKAGE=$4
COMMAND=$5
TMPFILE=$6
[ -e $WEBBUILD_STATEDIR/cache/config-dynamic ] && . $WEBBUILD_STATEDIR/cache/config-dynamic
echo "REQUEST: $@" >> $WEBBUILD_STATEDIR/commands_log
if [ "$MODE" = "killtree" ]; then
KILLPID=$2
@ -30,8 +33,10 @@ elif [ "$MODE" = "finishprocess" ]; then
exit $RETCODE
elif [ "$ENVIRONMENT" = "local" ]; then
echo "COMMAND: $COMMAND" >> $WEBBUILD_STATEDIR/commands_log
$COMMAND 2>&1 | sed "s|<|\&lt;|g"
exit 0
$COMMAND 2>&1
# | sed "s|<|\&lt;|g"
RET=$?
exit $RET
fi
if [ "$ENVIRONMENT" = "local" ]; then
@ -52,12 +57,13 @@ elif [ "${AUTOPORT_CHROOT[$ENVIRONMENT]}" ]; then
SUCMDPREFIX="chroot $ENVPREFIX su -l ${AUTOPORT_CHROOT_USER[$ENVIRONMENT]} -c"
[ "$TMPFILE" ] && {
cp $TMPFILE /var/autoport/${AUTOPORT_CHROOT[$ENVIRONMENT]}/$TMPFILE
chmod 755 /var/autoport/${AUTOPORT_CHROOT[$ENVIRONMENT]}/$TMPFILE
chmod +r /var/autoport/${AUTOPORT_CHROOT[$ENVIRONMENT]}/$TMPFILE
}
elif [ "${AUTOPORT_NATIVE[$ENVIRONMENT]}" ]; then
ENVPREFIX=
ENVUSER=${AUTOPORT_CHROOT_USER[$ENVIRONMENT]}
WORKINGHOME=`getent passwd ${AUTOPORT_CHROOT_USER[$ENVIRONMENT]} | cut -d: -f6`
[ -e "$WORKINGHOME/RPM" ] || WORKINGHOME="/usr/src/"
SUCMDPREFIX="su -l ${AUTOPORT_CHROOT_USER[$ENVIRONMENT]} -c"
else
ENVPREFIX=
@ -82,7 +88,7 @@ if [ "$MODE" = "specinfo" ]; then
done < ${ENVPREFIX}${WORKINGHOME}/RPM/SPECS/$PACKAGE.spec
[ "$AUTOBUILDREQ_BEGIN" -a "$AUTOBUILDREQ_END" -a ! "$AUTOBUILDREQ_UNDONE" ] || \
echo "SPECVAR_CHECK_NOAUTOBUILDREQ=1"
$SUCMDPREFIX "rpm -q --specfile ${WORKINGHOME}/RPM/SPECS/$PACKAGE.spec --specedit > ${WORKINGHOME}/RPM/SPECS/$PACKAGE.spec.tmp 2>/dev/null"
$SUCMDPREFIX "rpmspec -P ${WORKINGHOME}/RPM/SPECS/$PACKAGE.spec > ${WORKINGHOME}/RPM/SPECS/$PACKAGE.spec.tmp 2>/dev/null"
if [ -e $SPECFILE.tmp ]; then
echo "SPECVAR_Specfile=\"$SPECFILE\""
BUILDDIR=`grep -m1 "^%setup.*-n " $SPECFILE.tmp | sed "s|.*-n \([^[:space:]]*\).*|\1|"`
@ -91,10 +97,12 @@ if [ "$MODE" = "specinfo" ]; then
[ "$1" = "%package" -o "$1" = "%description" ] && break
if [[ "$1" =~ ^[a-zA-Z]*[0-9]*:.* ]]; then
line="$(echo ${line/$1})"
specvar="SPECVAR_${1/:*}"
specvar="${specvar/[0-9]*}"
[ "$specvar" = "$lastspecvar" ] && varidx=`expr $varidx + 1` || varidx=0
specvarfull="SPECVAR_${1/:*}"
specvar="${specvarfull/[0-9]*}"
specvaridx="${specvarfull/$specvar}"
[ "$specvar" = "$lastspecvar" ] && varidx=$(($varidx + 1)) || varidx=0
echo "$specvar[$varidx]=\"${line//\"/}\""
[ "$specvaridx" != "" ] && echo "${specvar}_idx[$varidx]=$specvaridx"
[ "$specvar" = "SPECVAR_Version" -a ! "$BUILDDIR" ] && BUILDDIR="$PACKAGE-${line}"
fi
lastspecvar=$specvar
@ -119,12 +127,16 @@ cmdtmpfile=`mktemp --tmpdir=$WEBBUILD_STATEDIR/tmp --suffix=.webbuildcmd`
[ "$PACKAGE" ] || PACKAGE=nopackage
if [ "$MODE" = "background" ]; then
if [ "$WORKINGHOME" ]; then
[ "$DEBUG" ] && echo "=> . /etc/profile;cd $WORKINGHOME/RPM/SPECS;$SUCMDPREFIX \"$COMMAND\""
$SUCMDPREFIX ". /etc/profile;cd $WORKINGHOME/RPM/SPECS;$COMMAND;echo \"# WEBBUILD_EXITCODE=\$?\"" 2>&1 | tr -d '\f' > $cmdtmpfile &
[ "$DEBUG" ] && echo "=> . /etc/profile;cd $WORKINGHOME/RPM/SPECS;stdbuf -oL -eL $SUCMDPREFIX \"$COMMAND\""
# WARNING: don't add pipes after $COMMAND or command pid will be wrong
$SUCMDPREFIX ". /etc/profile;cd $WORKINGHOME/RPM/SPECS;stdbuf -oL -eL $COMMAND 2>&1;echo \"# WEBBUILD_EXITCODE=\$?\"" 2>&1 > $cmdtmpfile &
# | tr -d '\f'
#sed "s|<|\&lt;|g" |
else
[ "$DEBUG" ] && echo "=> $SUCMDPREFIX \"$COMMAND\""
$SUCMDPREFIX "$COMMAND;echo \"# WEBBUILD_EXITCODE=\$?\"" 2>&1 | sed "s|<|\&lt;|g" | tr -d '\f' > $cmdtmpfile &
[ "$DEBUG" ] && echo "=> $SUCMDPREFIX \"stdbuf -oL -eL $COMMAND\""
# WARNING: don't add pipes after $COMMAND or command pid will be wrong
$SUCMDPREFIX "stdbuf -oL -eL $COMMAND;echo \"# WEBBUILD_EXITCODE=\$?\"" 2>&1 > $cmdtmpfile &
# | sed "s|<|\&lt;|g" | tr -d '\f'
fi
echo "$! $USER $ENVIRONMENT $PACKAGE $cmdtmpfile 256 $COMMAND" >> $WEBBUILD_STATEDIR/processes
echo "Started background command: $COMMAND"
@ -135,12 +147,20 @@ else
echo "$$ $USER $ENVIRONMENT $PACKAGE $cmdtmpfile 256 $COMMAND" >> $WEBBUILD_STATEDIR/processes
rettmpfile=`$SUCMDPREFIX "mktemp --suffix=.webbuildret"`
if [ "$WORKINGHOME" ]; then
[ "$DEBUG" ] && echo "=> . /etc/profile;cd $WORKINGHOME/RPM/SPECS;$SUCMDPREFIX \"$COMMAND\""
$SUCMDPREFIX ". /etc/profile;cd $WORKINGHOME/RPM/SPECS;$COMMAND;echo \$? > $rettmpfile" 2>&1 | tr -d '\f' | tee $cmdtmpfile
[ "$DEBUG" ] && echo "=> . /etc/profile;cd $WORKINGHOME/RPM/SPECS;\"$COMMAND\""
if [ "$MODE" = "binary" ]; then
$SUCMDPREFIX ". /etc/profile;cd $WORKINGHOME/RPM/SPECS;$COMMAND;echo \$? > $rettmpfile" 2>&1
else
$SUCMDPREFIX ". /etc/profile;cd $WORKINGHOME/RPM/SPECS;$COMMAND;echo \$? > $rettmpfile" 2>&1 | tr -d '\f' | tee $cmdtmpfile | parse_generic_output
fi
# sed "s|<|\&lt;|g" |
else
[ "$DEBUG" ] && echo "=> $SUCMDPREFIX \"$COMMAND\""
$SUCMDPREFIX "$COMMAND;echo \$? > $rettmpfile" 2>&1 | tr -d '\f' | tee $cmdtmpfile
if [ "$MODE" = "binary" ]; then
$SUCMDPREFIX "$COMMAND;echo \$? > $rettmpfile" 2>&1
else
$SUCMDPREFIX "$COMMAND;echo \$? > $rettmpfile" 2>&1 | tr -d '\f' | tee $cmdtmpfile
fi
# sed "s|<|\&lt;|g" |
fi
RET=`cat $ENVPREFIX/$rettmpfile`