Compare commits

...

252 Commits
0.7 ... 0.11.2

Author SHA1 Message Date
2c497f663b buildtree: split out compare 2018-12-21 01:11:25 +01:00
9a84cdedd5 util-pkg-subrepo: write updated jenkinsfile 2018-12-18 06:30:38 +01:00
bcc807ebbc buildpkg: fix opts 2018-12-17 02:54:07 +01:00
6b00319bfc buildpkg, deploypkg: restore global path vars 2018-12-17 02:50:08 +01:00
c24f625d81 Makefile: add gnome & kde unstable pacman.conf 2018-12-16 20:43:49 +01:00
15ca2bfc7e util-pkg: move get_pkg_org() 2018-12-16 20:43:22 +01:00
2487f4655e builtree: show repo moved updates 2018-12-16 12:24:32 +01:00
c2fd4636a3 version 0.11 (#5) 2018-12-16 01:34:30 +01:00
a82b704c2b pkg2yaml: use file names 2018-12-14 23:11:31 +01:00
1aa6a644b0 util-pkg: readd lost func 2018-12-14 23:11:06 +01:00
ff3ea53482 Nakefile: fix pkg2yaml path 2018-12-14 18:48:26 +01:00
d0e3c4e421 add pkg2yaml; some cosmetics in buildiso & buildrtree 2018-12-14 18:45:55 +01:00
1659689e71 buildtree: mkrepo for non arch packages (#4) 2018-12-12 16:05:00 +01:00
81ebb6c399 buildtree: fix import new pkg 2018-12-11 11:45:35 +01:00
ea66cb27fc migration of buildtree & commitpkg (#3) 2018-12-10 21:57:27 +01:00
3e7c4e371c deployiso: remove old Sf code 2018-11-18 17:54:10 +01:00
8dbd07ff55 deployiso: fix typo file_host, fix home path 2018-11-18 03:14:27 +01:00
d88ede3984 deployiso: switch to artix host
commitpkg: only --clean on subrepo push
2018-11-18 03:00:28 +01:00
04a1da9dd9 util-pkg-subrepo: use --clean in pull and push 2018-11-15 12:16:00 +01:00
7eb70fcf2b util-pkg: rm repo_map 2018-11-07 18:55:55 +01:00
16207221dc deployiso: remove obsolete vars 2018-11-07 18:12:47 +01:00
daf58430a9 buildtree: use renamed func 2018-11-07 18:12:19 +01:00
8b32e346f6 util-pkg: rename func, small optimizations 2018-11-07 18:11:40 +01:00
8df5a87738 util: rm obsolete vars 2018-11-07 18:10:41 +01:00
e2dbe82949 upd artools.conf 2018-11-07 18:09:49 +01:00
38075ad5ad buildiso: iso_label doesn't need a shared scope 2018-10-22 19:41:04 +02:00
a99a9c9699 capitals for input param 2018-10-22 12:18:14 +02:00
2cd876ade4 artools.conf: set default uplimit 1000 2018-10-22 12:16:57 +02:00
4eea0db73d buildiso: fix user & host name 2018-10-22 01:52:45 +02:00
6f18d339df var adjustments & fixes 2018-10-21 23:50:21 +02:00
d31ca02c2a * start 0.10
* capitalize global vars
2018-10-21 17:31:17 +02:00
8a0cd5c236 util-iso*: remove old code 2018-10-21 14:35:40 +02:00
e300104dcf util-pkg: improve find_repo()
Makefile: clean up
2018-10-21 14:35:06 +02:00
a13f0079db more clean up 2018-10-12 17:34:53 +02:00
cae48c0878 util-iso-profile: use @ operator to tag init specific pkgs 2018-10-09 16:53:52 +02:00
ce481f6b07 clean up 2018-10-08 19:36:28 +02:00
b6a4619ab3 mkchroot: add switch for mirrorlist copying 2018-10-08 17:09:19 +02:00
88ebc5c476 rm unused code 2018-10-08 16:49:43 +02:00
c27c516610 update artools.conf 2018-10-07 22:53:05 +02:00
42ee8522dd deployiso: remove torrent support; will become a standalone wrapper eventually 2018-10-07 22:51:48 +02:00
b7f05f4dd2 util-iso: always include initsys in iso filename & if gremlins/goblins 2018-10-06 22:59:34 +02:00
f58e8b6c15 util-iso-yaml: add optional libpwquality check in user module 2018-10-03 11:11:02 +02:00
d432ffee3f util-iso-yaml: remoive netinstall commented code
util-iso: check for $log_dir
2018-10-03 10:22:31 +02:00
961bc2cd59 Explicitly create log_dir and iso_root (#2) 2018-10-03 04:18:54 +02:00
92aeff61d8 util-iso-grub: enable ucode
util-iso-yaml: rm netinstall
util-pkg-subrepo: simplify
2018-10-02 22:31:57 +02:00
64725482f8 update readme 2018-09-07 22:27:08 +02:00
11cd590529 util-iso-yaml: fix services in settings.conf 2018-09-07 22:19:26 +02:00
bb22741aa1 util-iso-grub: set pxe in base profile only 2018-09-07 17:34:52 +02:00
28e4b73964 util-iso-yaml: add dir options in services-openrc; fix runit svc typos 2018-09-06 19:29:57 +02:00
7ea0d6f475 util-iso-yaml: adopt upstream cal new services naming 2018-09-06 18:06:20 +02:00
bdcc22fd46 Makefile: remove uninstall & dist 2018-09-06 18:05:29 +02:00
3c2e97f915 buildtree: fix config arg on pull 2018-08-12 02:58:32 +02:00
ba77c20d77 buildtree: ch in proper dir in config 2018-08-12 02:48:47 +02:00
c376041a07 buildtree: fix it 2018-08-12 02:38:24 +02:00
bd29d360b4 buildtree: fix path 2018-08-12 02:34:47 +02:00
7e1b1ee238 nuildtree: configure repo after clone as well, its too later after pull only 2018-08-12 02:21:24 +02:00
221218ba2a util-pkg: don't set localersion in kernel config 2018-08-09 01:54:48 +02:00
697d18da82 util-pkg-gitea: create compliant git repo 2018-08-07 21:47:34 +02:00
27d0230ed7 buildtree: fix import 2018-08-07 02:38:25 +02:00
41fdcb68fb commitpkg: run git prune 2018-08-06 22:17:01 +02:00
37b02c08bc util-pkg-gitea: add licence header 2018-07-30 02:43:29 +02:00
31200d7765 util-pkg-gitea: get compliant repo name 2018-07-30 02:21:53 +02:00
60844ee0ea Merge branch 'subrepo' of artix/artools into master 2018-07-29 20:47:25 +00:00
2c2e6b41a1 commitpkg: move subrepo push in push switch 2018-07-29 18:45:40 +02:00
52c81a0e61 bump version 2018-07-29 18:38:10 +02:00
6667147b77 buildtree: fix import 2018-07-29 17:25:48 +02:00
26635e3a10 use ssh for git 2018-07-29 00:28:43 +02:00
1d5a565ed8 commitpkg: spilt out subrepo functions 2018-07-28 22:29:15 +02:00
4e54b48903 commitpkg: fix, add sleep 1 2018-07-28 22:23:10 +02:00
2f16cd73c9 buildtree, commitpkg: prepare first test 2018-07-28 21:54:26 +02:00
9fd6ac3531 buildtree: revert to old pkg repos 2018-07-27 20:39:26 +02:00
2f5acc6e3c buildtree, commitpkg: adapt import path 2018-07-27 19:51:27 +02:00
d73b6d9178 rename gitea lib 2018-07-27 19:47:30 +02:00
d5404ac2fa builtree: write jenkinsfile for new pkgs 2018-07-27 18:28:34 +02:00
d250b967ba buildtree, commitpkg: use subrepo 2018-07-27 14:52:30 +02:00
5715eecf0c buildtree, commitpkg: initial gitea/subrepo support 2018-07-27 13:35:31 +02:00
b6ef4d1895 buildtree: add -y arg to exclude staging from compare ops 2018-07-02 01:56:55 +02:00
3fd33eca4a mkchrootpkg: rm workarounds in chroot 2018-06-30 00:37:51 +02:00
eceed82a61 Remove cow file early for non-persistent systems 2018-06-29 21:42:12 +02:00
7337c341ba buildtree: configure git repo with makepkg's GPGKEY 2018-06-29 20:08:02 +02:00
51658f4838 buildtree: make signing commits mandatory 2018-06-29 16:50:19 +02:00
9dcef56350 chroot-run: bind mount /etc/hosts again 2018-06-27 22:51:59 +02:00
ba2647b4b0 rm pcmcia from initcpio 2018-06-27 22:51:15 +02:00
e10571eac0 util-iso-grub: create unicode fontinstead of copying 2018-06-21 23:52:31 +02:00
045ed9e895 Merge branch 'master' of github.com:artix-linux/artools into devel 2018-06-19 21:34:46 +02:00
60e77a878c readd locale backup 2018-06-19 21:34:23 +02:00
69d3897abb makefile: bump chroot version 2018-06-19 20:35:37 +02:00
90060a3851 mkchroot: fix dbus-uuidgen call 2018-06-19 20:12:32 +02:00
1bc756ec15 rm old code 2018-06-19 14:47:58 +02:00
26daf3aaa0 basestrap: improve resolv.conf mounting 2018-06-19 13:10:01 +02:00
c772bf8ea1 simplify chroot traps & mounting 2018-06-19 10:15:29 +02:00
caccd55fc1 util-chroot: fix locale 2018-06-19 09:47:44 +02:00
a2b31b72a0 fstabgen: add support for prefix matching 2018-06-18 21:54:41 +02:00
1beb5131ce disable crypto_speck module on linux import 2018-06-13 14:47:28 +02:00
udeved
ef794a0b85 mkchrootpkg: whitelist return code 14 from makepkg 2018-05-31 18:07:31 +02:00
udeved
aa12fc42bd buildtree: quote version vars 2018-05-29 17:29:07 +02:00
udeved
50f90ab53c mkchrootpkg: arch patches 2018-05-29 13:30:32 +02:00
udeved
63137eb046 util-iso-yaml: fix settings.conf path 2018-05-28 13:06:59 +02:00
udeved
92ec5eb194 util-iso-yaml: adopt runitcfg changes 2018-05-28 10:10:12 +02:00
udeved
f8e07c66c1 util-iso-grub: rm i686 support 2018-05-28 09:23:16 +02:00
udeved
2130eea235 initcpio: rm i686 from kms 2018-05-28 09:22:54 +02:00
udeved
58fc4bbe45 buildiso: remove kernel opt 2018-05-28 09:01:32 +02:00
udeved
591ae02d55 mkchrootpkg: update for pacman-5.1 2018-05-28 09:00:49 +02:00
udeved
6311233f73 util-iso-yaml: adopt calamares modules changes 2018-05-27 22:47:36 +02:00
udeved
398e91bdd9 deploypkg: add repo action check 2018-05-12 23:13:26 +00:00
udeved
d1f4c03e05 mkchrootpkg: add /etc/shadow entry for builduser for sudo 1.8.23 2018-05-12 09:28:57 +00:00
udeved
180decbc5e gitignore: update 2018-04-28 20:20:08 +02:00
udeved
943c0c36ea util-iso-profile: support base in git repo if present 2018-04-28 20:19:50 +02:00
udeved
60116e9f93 update pacman.conf files 2018-04-28 02:16:19 +02:00
udeved
eea5d31427 uril-iso-profile: split the path setters in init_profile() 2018-04-27 11:10:15 +02:00
udeved
d05e8700ef util-profile: update defaults 2018-04-26 22:59:44 +02:00
udeved
1d310e18e9 buildtree: add braodcom-wl to patch_pkg() 2018-04-26 22:41:32 +02:00
udeved
baf290d3aa Makefile: rm base profile 2018-04-26 19:37:37 +02:00
udeved
1f379eec51 Merge branch 'devel' of github.com:artix-linux/artools 2018-04-26 19:32:55 +02:00
udeved
c4d1425c46 move base profile in iso-profiles 2018-04-26 19:30:59 +02:00
udeved
e5211838e8 Merge branch 'devel' of github.com:artix-linux/artools 2018-04-17 21:28:02 +02:00
udeved
441c97730b util-iso: append if runit to iso filename 2018-04-15 03:08:47 +02:00
udeved
8ca984325a util-iso-profiles: make setting DM easy to expand 2018-04-15 02:57:17 +02:00
artoo
3c4fc6e00b Merge pull request #42 from konimex/devel
Add initial runit support
2018-04-15 00:05:10 +02:00
udeved
20a20ee8bb buildiso: set the DM on runit 2018-04-14 22:44:30 +02:00
2aae876d98 Detect the service directory using the correct check.
I was an idiot..
2018-04-14 21:16:24 +07:00
a19379596d Add initial runit support 2018-04-14 21:15:49 +07:00
udeved
af8ab5fd1e buildiso: runit support for servicescfg 2018-04-14 10:37:10 +02:00
artoo
1c56ce7f8c Merge pull request #63 from artix-linux/devel
Devel
2018-04-11 17:14:38 +02:00
udeved
f80c5bf587 Makefile: clean up iso install & uninstall 2018-04-11 17:11:35 +02:00
udeved
d5c8af7025 initcpio: fix uninstall 2018-04-11 12:31:05 +02:00
udeved
12a41ec0b2 Makefile: fix sub makes 2018-04-11 12:23:52 +02:00
udeved
b5eb287867 Makefile: use CPIODIR 2018-04-11 12:18:12 +02:00
udeved
3e4fbd892e readme: fix typo 2018-04-11 11:56:11 +02:00
udeved
dca96f29d7 readme: update 2018-04-11 11:49:24 +02:00
udeved
a382bdc83a Makefile: split initcpio 2018-04-11 11:26:54 +02:00
udeved
b73aec6031 initcpio: add makefile 2018-04-11 11:26:35 +02:00
udeved
88f1145c96 Makefile: split base profile in sep. Makefile 2018-04-11 11:03:36 +02:00
udeved
43bc1d149a Makefile: add default mode 2018-04-10 15:30:14 +02:00
udeved
ffa532591c Makefile: cleanup uninstall 2018-04-10 15:22:11 +02:00
udeved
f9f8ca6b68 Makefile: define overlaydir 2018-04-10 14:25:55 +02:00
udeved
dbc3a94906 Makefile: add condition flags 2018-04-10 11:55:19 +02:00
udeved
8e4b5f88ca start 0.8 2018-04-10 00:32:26 +02:00
udeved
104cc0b1ef data: fix base profile fstab 2018-04-10 00:29:07 +02:00
udeved
ce790fcaab Makefile: fix uninstall 2018-04-10 00:28:11 +02:00
udeved
2d03e16a5f buildiso: add goblins repo support 2018-04-08 14:17:41 +02:00
udeved
64e0badbac Makefile: add buildiso-goblins symlink 2018-04-08 14:13:14 +02:00
udeved
a94afab8a0 readme: update 2018-04-07 16:30:01 +02:00
artoo
1d3c77dc73 Merge pull request #62 from artix-linux/devel
deploypkg: simplify code in update_repo()
2018-04-07 12:03:33 +02:00
udeved
1cccece399 deploypkg: simplify code in update_repo() 2018-04-06 23:05:15 +02:00
artoo
cc8b47912e Merge pull request #61 from artix-linux/devel
Devel
2018-04-06 22:19:26 +02:00
udeved
f36cf35d9a deploypkg: enable checkpkg on add 2018-04-06 22:17:46 +02:00
udeved
cca5283db6 deploypkg: optimize pacman db access 2018-04-06 22:04:39 +02:00
udeved
d6bf8bcf12 util-pkg: check for PKGBUILD instead of checking for repo dir in find_repo() 2018-04-06 21:04:49 +02:00
udeved
88886de9e9 remove vbox from base Packages-Live 2018-03-31 11:19:53 +02:00
artoo
55b0cd4ae2 Merge pull request #59 from artix-linux/devel
Devel
2018-03-30 23:39:01 +02:00
udeved
84a51f4a9e buildtree: code cleanup 2018-03-30 23:27:55 +02:00
udeved
87ad3a631a buildtree: add option to import from trunk, defaults to repos/$repo 2018-03-30 16:15:50 +02:00
udeved
2a70b5f123 commitpkg: quote some vars 2018-03-30 16:15:18 +02:00
udeved
3106e8975f commitpkg: make move more safe; prevent unwanted subdir in $repo in few cases 2018-03-30 02:18:25 +02:00
udeved
4a02e2d7be buildtree: init unstable false
unstable repos are only included on -x
2018-03-28 21:15:12 +02:00
udeved
4363421ce8 mkchrootpkg: revert fix verifysource with pacman-git until new pacman version 2018-03-27 20:38:38 +02:00
udeved
4b96a54347 buildtree: add -x to disable arch unstale kde and gnome when comparing 2018-03-27 20:12:59 +02:00
udeved
0ad953ead8 mkchrootpkg: port arch patch 2018-03-27 19:05:42 +02:00
udeved
45ebe43272 buildtree: fix upate display by sourcing the repo build instead of trunk 2018-03-27 19:04:58 +02:00
udeved
1c64fe7f69 commitpkg: make move more safe 2018-03-22 11:16:02 +01:00
udeved
c2a030b016 mkpkgclean: fix pretend 2018-03-18 16:44:25 +01:00
udeved
94670e18e7 add mkpkgclean 2018-03-18 16:20:00 +01:00
udeved
5c835b6e2c deploypkg: navigate in the repo dir in order to make old package removal work on repo-add 2018-03-18 15:47:53 +01:00
udeved
3f803be6b8 buildtree: clean view 2018-03-17 01:23:54 +01:00
udeved
70b81d7ff8 buildtree: view arch 2018-03-16 19:04:41 +01:00
udeved
12a34bd5a2 buildtree: add option to view depends of a given pkg 2018-03-16 18:53:59 +01:00
udeved
11504d3267 buildtree: fix checkdepends msg 2018-03-15 17:16:55 +01:00
udeved
203df20e76 commitpkg: prevent trunk dir copy in certain cases 2018-03-14 09:32:57 +01:00
udeved
184259c600 Merge branch 'devel' of github.com:artix-linux/artools 2018-03-12 21:50:29 +01:00
udeved
b95c7dee0d mkchrootpkg: reenable ctty workaround 2018-03-12 21:49:20 +01:00
udeved
c7c67fbc21 buildtree: show arch kde and gnome unstable 2018-03-12 21:47:34 +01:00
artoo
21a5c7e916 Merge pull request #57 from artix-linux/devel
Devel
2018-03-05 17:15:21 +01:00
udeved
62810d1d85 rm lists, pipelines 2018-03-05 17:09:19 +01:00
udeved
865bd20674 buildtree: add -z switch to skip arch sync 2018-03-04 23:13:41 +01:00
artoo
b46b5c626e Merge pull request #54 from artix-linux/devel
Devel
2018-02-21 01:11:10 +01:00
udeved
9ac4576666 upd missing pkgs list 2018-02-21 01:07:17 +01:00
udeved
a88f196217 commitpkh: clean up 2018-02-21 01:06:48 +01:00
udeved
c0e8ef4c26 buildiso: default to linux kernel 2018-02-19 23:59:39 +01:00
artoo
02b28e82ef Merge pull request #53 from artix-linux/devel
upd missing build deps
2018-02-17 21:58:53 +01:00
udeved
fb6d1d4c1b upd missing build deps 2018-02-17 21:58:09 +01:00
artoo
9fc3fbd14d Merge pull request #52 from artix-linux/devel
Devel
2018-02-17 21:57:15 +01:00
udeved
72f2781cb9 buildtree: fix new imports that don't exist 2018-02-17 21:54:59 +01:00
udeved
9ddd73c8b4 buildtree: use find_tree() to determine the git repo 2018-02-17 12:59:17 +01:00
udeved
3c92d5c87a mkchrootpkg: place comments for workarounds 2018-02-17 12:58:31 +01:00
artoo
bc8f17cc86 Merge pull request #51 from artix-linux/devel
commitpkg: revert to pull before push if rebase default
2018-02-17 03:18:58 +01:00
udeved
1ceb6926e9 commitpkg: revert to pull before push if rebase default 2018-02-17 03:17:46 +01:00
artoo
4d3a993a72 Merge pull request #50 from artix-linux/devel
Devel
2018-02-17 02:56:20 +01:00
udeved
a52bdc9799 commitpkg: fix git_tree display 2018-02-17 02:38:27 +01:00
udeved
b62e90f778 mkchroot & chroot-run: set chroot version with makefile 2018-02-17 02:19:51 +01:00
udeved
5d2fda793d mkchroot: set static chroot version 2018-02-17 02:08:15 +01:00
udeved
550663cfd1 commitpkg, buildtree: clean up code 2018-02-17 02:05:13 +01:00
artoo
6c117fb97d Merge pull request #49 from artix-linux/devel
Devel
2018-02-17 00:23:00 +01:00
udeved
7e6d832314 commitpkg: improve git_tree handling; add error handling 2018-02-17 00:16:34 +01:00
udeved
6fc7b124fc update missing pkgs list 2018-02-16 20:56:59 +01:00
udeved
a011005901 deploypkg: check per pkg & sig 2018-02-16 20:56:41 +01:00
udeved
5da4fea263 chroot-run: bind mount /etc/hosts 2018-02-16 20:19:30 +01:00
udeved
e1b8a0493b commitpkg: add a check to pull if changes before push 2018-02-15 23:22:22 +01:00
udeved
8fe1e82226 util-msg: fix msg_row 2018-02-15 22:43:25 +01:00
udeved
aa8725518b commitpkg: fix it 2018-02-15 22:39:28 +01:00
artoo
fc5a446784 Merge pull request #46 from artix-linux/devel
Devel
2018-02-15 21:54:21 +01:00
udeved
64ce7c3bd6 commitpkg: restore 2018-02-15 21:13:46 +01:00
udeved
8e3a7d98f9 commitpkg: fix 2018-02-15 21:02:02 +01:00
udeved
c4e47b6513 upd missing pkgs list 2018-02-15 20:48:35 +01:00
udeved
b17e93d37f commitpkg: fix moving 2018-02-15 20:48:35 +01:00
udeved
f2e575a37c upd missing pkgs list 2018-02-15 20:47:44 +01:00
udeved
706fa58ddd commitpkg: fix moving 2018-02-15 20:47:17 +01:00
udeved
de4652ac94 merge branch 'devel' into artix-linux/master 2018-02-15 13:21:03 +01:00
udeved
cd37fde7ca fixes 2018-02-15 12:59:18 +01:00
udeved
0f3b352020 rm blacklist 2018-02-15 12:58:53 +01:00
udeved
c60dabdf6b buildtree: remove import lists 2018-02-13 22:33:12 +01:00
udeved
208b751142 buildtree: filter away artix packages on -d 2018-02-13 21:45:43 +01:00
udeved
bfc8b8ce80 mkchrootpkg: use en locale 2018-02-13 21:11:47 +01:00
udeved
6cfbc8b97e update imports 2018-02-13 20:32:16 +01:00
udeved
4f454f4ec4 buildtree: enable importing new packages in trunk
commitpkg: cosmetics in display_settings()
2018-02-13 20:31:57 +01:00
udeved
478e8fbba3 update imports 2018-02-13 19:51:49 +01:00
udeved
fc41bd7be4 commitpkg: fix remove option 2018-02-13 19:51:25 +01:00
udeved
b9eeec876b commitpkg: add a remove switch for commitpkg mode 2018-02-13 16:38:25 +01:00
udeved
ce6d6d093e buildtree: use patch_pkg() 2018-02-13 16:37:42 +01:00
udeved
996deb8924 buildtree: add downgrades switch 2018-02-13 00:09:35 +01:00
udeved
63af5c762f mkchrootpkg: clean up _chrootbuild 2018-02-12 20:39:11 +01:00
udeved
9eef1c3a05 buildtree: simplify show_artix_repo() 2018-02-12 13:38:06 +01:00
udeved
95858019e9 update imports 2018-02-12 11:57:21 +01:00
udeved
e1a9f2a1b3 buildtree, commitpkg: fixes 2018-02-12 11:53:49 +01:00
udeved
238302d3ce nkchrootpkg: use env in chroot to set env vars 2018-02-12 11:53:16 +01:00
udeved
73d7fd28af buildtree: show artix repo in compare 2018-02-11 22:34:19 +01:00
udeved
4d834ddaaa buildtree, commitpkg: small fixes 2018-02-11 19:40:56 +01:00
udeved
027e29e025 jenkinsfiles update 2018-02-11 19:40:28 +01:00
udeved
5fbf1f7d43 buildtree: write patches in patchdir 2018-02-11 17:38:50 +01:00
udeved
88b0206121 Merge branch 'devel' of github.com:artix-linux/artools into devel 2018-02-11 17:37:23 +01:00
udeved
d71af677f5 buildtree: add git tree vars 2018-02-11 12:54:32 +01:00
udeved
63ef4ee33b buildtree: add single package import
commitpkg: clean up
2018-02-11 11:23:47 +01:00
udeved
0b2e104504 buildtree: import and compare all artix git repos 2018-02-11 01:14:17 +01:00
udeved
3a7881d5c5 import linux and linux-lts 2018-02-11 00:39:28 +01:00
udeved
74dd869dc2 update jenkinsfile 2018-02-11 00:37:48 +01:00
udeved
718d4062b0 commitpkg: fix trunk release 2018-02-10 23:29:32 +01:00
udeved
66e9fa4caa update example jenkinsfile 2018-02-10 23:28:55 +01:00
udeved
f728680c28 update example pipelines 2018-02-10 21:07:23 +01:00
udeved
3a0746a358 commitpkg: simplify usage 2018-02-10 21:06:58 +01:00
udeved
5da701a318 update example jenkinsfile 2018-02-10 16:14:56 +01:00
udeved
45b1a95332 jenkinsfiles fixes 2018-02-10 12:36:05 +01:00
udeved
450b51ea71 buildtree: patch linux package 2018-02-10 10:53:39 +01:00
udeved
aa71c050b2 commitpkg: add a commit option for imported pkgs 2018-02-10 02:25:57 +01:00
udeved
e4966f2351 jenkinsfile: use signing on build success 2018-02-10 02:25:57 +01:00
udeved
894054d3cd deploypkg: add sign switch 2018-02-10 02:25:57 +01:00
udeved
969ce59e3d commitpkg: fix to_new() 2018-02-10 02:25:57 +01:00
udeved
94ec82f2d5 commitpkg: init pretend switch 2018-02-10 02:25:57 +01:00
udeved
58a043a35c Makefile: rm old sym 2018-02-10 02:25:57 +01:00
udeved
0cfdb6b8df start 0.7 2018-02-10 02:25:57 +01:00
udeved
bc5f417a90 artools-0.7 rm old 2018-02-10 02:25:57 +01:00
udeved
be3720cd56 Merge branch 'devel' of github.com:artix-linux/artools into devel 2018-01-30 12:37:54 +01:00
udeved
0cd6b45f04 Merge branch 'master' of github.com:artix-linux/artools into devel 2018-01-27 13:52:29 +01:00
63 changed files with 2185 additions and 3040 deletions

2
.gitignore vendored
View File

@@ -4,3 +4,5 @@
.kateproject.d .kateproject.d
data/schemas/*.conf data/schemas/*.conf
.project .project
iso-profiles
live-services

228
Makefile
View File

@@ -1,7 +1,14 @@
Version=0.7 VERSION=0.11
PREFIX = /usr/local CHROOT_VERSION=0.9
TOOLS = artools
PREFIX ?= /usr/local
SYSCONFDIR = /etc SYSCONFDIR = /etc
BINDIR = $(PREFIX)/bin
LIBDIR = $(PREFIX)/lib
DATADIR = $(PREFIX)/share
CPIODIR = $(SYSCONFDIR)/initcpio
SYSCONF = \ SYSCONF = \
data/artools.conf data/artools.conf
@@ -24,9 +31,6 @@ LIBS_BASE = \
SHARED_BASE = \ SHARED_BASE = \
$(wildcard data/pacman*.conf) $(wildcard data/pacman*.conf)
LIST_IMPORT = \
$(wildcard data/import.list.d/*.list)
BIN_PKG = \ BIN_PKG = \
bin/checkpkg \ bin/checkpkg \
bin/lddd \ bin/lddd \
@@ -36,7 +40,9 @@ BIN_PKG = \
bin/buildpkg \ bin/buildpkg \
bin/buildtree \ bin/buildtree \
bin/deploypkg \ bin/deploypkg \
bin/commitpkg bin/commitpkg \
bin/comparepkg \
bin/pkg2yaml
LIBS_PKG = \ LIBS_PKG = \
$(wildcard lib/util-pkg*.sh) $(wildcard lib/util-pkg*.sh)
@@ -57,168 +63,126 @@ COMMITPKG_SYMS = \
community-stagingpkg \ community-stagingpkg \
multilibpkg \ multilibpkg \
multilib-testingpkg \ multilib-testingpkg \
multilib-stagingpkg multilib-stagingpkg \
kde-unstablepkg \
gnome-unstablepkg
BUILDPKG_SYMS = \
buildpkg-system \
buildpkg-world \
buildpkg-gremlins \
buildpkg-goblins \
buildpkg-galaxy \
buildpkg-galaxy-gremlins \
buildpkg-galaxy-goblins \
buildpkg-lib32 \
buildpkg-lib32-gremlins \
buildpkg-lib32-goblins \
buildpkg-kde-wobble \
buildpkg-gnome-wobble
DEPLOYPKG_SYMS = \
deploypkg-system \
deploypkg-world \
deploypkg-gremlins \
deploypkg-goblins \
deploypkg-galaxy \
deploypkg-galaxy-gremlins \
deploypkg-galaxy-goblins \
deploypkg-lib32 \
deploypkg-lib32-gremlins \
deploypkg-lib32-goblins \
deploypkg-kde-wobble \
deploypkg-gnome-wobble
BIN_ISO = \ BIN_ISO = \
bin/buildiso \ bin/buildiso \
bin/deployiso bin/deployiso
BUILDISO_SYMS = \
buildiso-gremlins \
buildiso-goblins
LIBS_ISO = \ LIBS_ISO = \
$(wildcard lib/util-iso*.sh) $(wildcard lib/util-iso*.sh)
SHARED_ISO = \ SHARED_ISO = \
data/mkinitcpio.conf data/mkinitcpio.conf
CPIOHOOKS = \ DIRMODE = -dm0755
$(wildcard initcpio/hooks/*) FILEMODE = -m0644
MODE = -m0755
CPIOINST = \ LN = ln -sf
$(wildcard initcpio/install/*) RM = rm -f
M4 = m4 -P
CPIO = \ CHMODAW = chmod a-w
initcpio/script/artix_shutdown CHMODX = chmod +x
BASE = \
$(wildcard data/base/Packages-*) \
data/base/profile.conf
LIVE_ETC = \
data/base/live-overlay/etc/issue \
data/base/live-overlay/etc/fstab
LIVE_ETC_DEFAULT = \
$(wildcard data/base/live-overlay/etc/default/*)
LIVE_ETC_PAM = \
$(wildcard data/base/live-overlay/etc/pam.d/*)
LIVE_ETC_SUDOERS = \
$(wildcard data/base/live-overlay/etc/sudoers.d/*)
all: $(BIN_BASE) $(BIN_PKG) $(BIN_ISO) all: $(BIN_BASE) $(BIN_PKG) $(BIN_ISO)
edit = sed -e "s|@datadir[@]|$(DESTDIR)$(PREFIX)/share/artools|g" \ EDIT = sed -e "s|@datadir[@]|$(DATADIR)/$(TOOLS)|g" \
-e "s|@sysconfdir[@]|$(DESTDIR)$(SYSCONFDIR)/artools|g" \ -e "s|@sysconfdir[@]|$(SYSCONFDIR)/$(TOOLS)|g" \
-e "s|@libdir[@]|$(DESTDIR)$(PREFIX)/lib/artools|g" \ -e "s|@libdir[@]|$(LIBDIR)/$(TOOLS)|g" \
-e "s|@version@|${Version}|" -e "s|@version@|$(VERSION)|" \
-e "s|@chroot_version@|$(CHROOT_VERSION)|"
%: %.in Makefile %: %.in Makefile
@echo "GEN $@" @echo "GEN $@"
@$(RM) "$@" @$(RM) "$@"
@m4 -P $@.in | $(edit) >$@ @$(M4) $@.in | $(EDIT) >$@
@chmod a-w "$@" @$(CHMODAW) "$@"
@chmod +x "$@" @$(CHMODX) "$@"
clean: clean:
rm -f $(BIN_BASE) ${BIN_PKG} ${BIN_ISO} $(RM) $(BIN_BASE) $(BIN_PKG) $(BIN_ISO)
install_base: install_base:
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/artools install $(DIRMODE) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
install -m0644 ${SYSCONF} $(DESTDIR)$(SYSCONFDIR)/artools install $(FILEMODE) $(SYSCONF) $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
install -dm0755 $(DESTDIR)$(PREFIX)/bin install $(DIRMODE) $(DESTDIR)$(BINDIR)
install -m0755 ${BIN_BASE} $(DESTDIR)$(PREFIX)/bin install $(MODE) $(BIN_BASE) $(DESTDIR)$(BINDIR)
install -dm0755 $(DESTDIR)$(PREFIX)/lib/artools install $(DIRMODE) $(DESTDIR)$(LIBDIR)/$(TOOLS)
install -m0644 ${LIBS_BASE} $(DESTDIR)$(PREFIX)/lib/artools install $(FILEMODE) $(LIBS_BASE) $(DESTDIR)$(LIBDIR)/$(TOOLS)
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)
install -m0644 ${SHARED_BASE} $(DESTDIR)$(PREFIX)/share/artools install $(FILEMODE) $(SHARED_BASE) $(DESTDIR)$(DATADIR)/$(TOOLS)
install_pkg: install_pkg:
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/artools/import.list.d install $(DIRMODE) $(DESTDIR)$(BINDIR)
install -m0644 ${LIST_IMPORT} $(DESTDIR)$(SYSCONFDIR)/artools/import.list.d install $(MODE) $(BIN_PKG) $(DESTDIR)$(BINDIR)
install -dm0755 $(DESTDIR)$(PREFIX)/bin $(LN) find-libdeps $(DESTDIR)$(BINDIR)/find-libprovides
install -m0755 ${BIN_PKG} $(DESTDIR)$(PREFIX)/bin
ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides for l in $(COMMITPKG_SYMS); do $(LN) commitpkg $(DESTDIR)$(BINDIR)/$$l; done
for l in $(BUILDPKG_SYMS); do $(LN) buildpkg $(DESTDIR)$(BINDIR)/$$l; done
for l in $(DEPLOYPKG_SYMS); do $(LN) deploypkg $(DESTDIR)$(BINDIR)/$$l; done
for l in ${COMMITPKG_SYMS}; do ln -sf commitpkg $(DESTDIR)$(PREFIX)/bin/$$l; done install $(DIRMODE) $(DESTDIR)$(LIBDIR)/$(TOOLS)
install $(FILEMODE) $(LIBS_PKG) $(DESTDIR)$(LIBDIR)/$(TOOLS)
install -dm0755 $(DESTDIR)$(PREFIX)/lib/artools install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)
install -m0644 ${LIBS_PKG} $(DESTDIR)$(PREFIX)/lib/artools install $(FILEMODE) $(SHARED_PKG) $(DESTDIR)$(DATADIR)/$(TOOLS)
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
install -m0644 ${SHARED_PKG} $(DESTDIR)$(PREFIX)/share/artools install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
install_cpio:
+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools/patches install_iso: install_cpio
install -m0644 ${PATCHES} $(DESTDIR)$(PREFIX)/share/artools/patches install $(DIRMODE) $(DESTDIR)$(BINDIR)
install $(MODE) $(BIN_ISO) $(DESTDIR)$(BINDIR)
install_isobase: for l in $(BUILDISO_SYMS); do $(LN) buildiso $(DESTDIR)$(BINDIR)/$$l; done
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base
install -m0644 ${BASE} $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/live-overlay/etc install $(DIRMODE) $(DESTDIR)$(LIBDIR)/$(TOOLS)
install -m0644 ${LIVE_ETC} $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/live-overlay/etc install $(FILEMODE) $(LIBS_ISO) $(DESTDIR)$(LIBDIR)/$(TOOLS)
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/live-overlay/etc/default install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)
install -m0644 ${LIVE_ETC_DEFAULT} $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/live-overlay/etc/default install $(FILEMODE) $(SHARED_ISO) $(DESTDIR)$(DATADIR)/$(TOOLS)
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/live-overlay/etc/pam.d install: install_base install_pkg install_iso
install -m0644 ${LIVE_ETC_PAM} $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/live-overlay/etc/pam.d
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/live-overlay/etc/sudoers.d .PHONY: all clean install
install -m0644 ${LIVE_ETC_SUDOERS} $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/live-overlay/etc/sudoers.d
install_iso:
install -dm0755 $(DESTDIR)$(PREFIX)/bin
install -m0755 ${BIN_ISO} $(DESTDIR)$(PREFIX)/bin
ln -sf buildiso $(DESTDIR)$(PREFIX)/bin/buildiso-gremlins
install -dm0755 $(DESTDIR)$(PREFIX)/lib/artools
install -m0644 ${LIBS_ISO} $(DESTDIR)$(PREFIX)/lib/artools
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/initcpio/hooks
install -m0755 ${CPIOHOOKS} $(DESTDIR)$(SYSCONFDIR)/initcpio/hooks
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/initcpio/install
install -m0755 ${CPIOINST} $(DESTDIR)$(SYSCONFDIR)/initcpio/install
install -m0755 ${CPIO} $(DESTDIR)$(SYSCONFDIR)/initcpio
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools
install -m0644 ${SHARED_ISO} $(DESTDIR)$(PREFIX)/share/artools
uninstall_base:
for f in ${SYSCONF}; do rm -f $(DESTDIR)$(SYSCONFDIR)/artools/$$f; done
for f in ${BIN_BASE}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done
for f in ${SHARED_BASE}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/$$f; done
for f in ${LIBS_BASE}; do rm -f $(DESTDIR)$(PREFIX)/lib/artools/$$f; done
uninstall_pkg:
for f in ${LIST_IMPORT}; do rm -f $(DESTDIR)$(SYSCONFDIR)/artools/import.list.d/$$f; done
for f in ${BIN_PKG}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done
rm -f $(DESTDIR)$(PREFIX)/bin/find-libprovides
for l in ${COMMITPKG_SYMS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done
for f in ${SHARED_PKG}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/$$f; done
for f in ${PATCHES}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/patches/$$f; done
for f in ${LIBS_PKG}; do rm -f $(DESTDIR)$(PREFIX)/lib/artools/$$f; done
uninstall_isobase:
for f in ${BASE}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/$$f; done
for f in ${LIVE_ETC}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/live-overlay/etc/$$f; done
for f in ${LIVE_ETC_DEFAULT}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/live-overlay/etc/default/$$f; done
for f in ${LIVE_ETC_PAM}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/live-overlay/etc/pam.d/$$f; done
for f in ${LIVE_ETC_SUDOERS}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base/live-overlay/etc/sudoers.d/$$f; done
uninstall_iso:
for f in ${BIN_ISO}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done
rm -f $(DESTDIR)$(PREFIX)/bin/buildiso-gremlins
for f in ${SHARED_ISO}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/$$f; done
for f in ${LIBS_ISO}; do rm -f $(DESTDIR)$(PREFIX)/lib/artools/$$f; done
for f in ${CPIOHOOKS}; do rm -f $(DESTDIR)$(SYSCONFDIR)/initcpio/hooks/$$f; done
for f in ${CPIOINST}; do rm -f $(DESTDIR)$(SYSCONFDIR)/initcpio/install/$$f; done
for f in ${CPIO}; do rm -f $(DESTDIR)$(SYSCONFDIR)/initcpio/$$f; done
install: install_base install_pkg install_iso install_isobase
uninstall: uninstall_base uninstall_pkg uninstall_iso uninstall_isobase
dist:
git archive --format=tar --prefix=artools-$(Version)/ $(Version) | gzip -9 > artools-$(Version).tar.gz
gpg --detach-sign --use-agent artools-$(Version).tar.gz
.PHONY: all clean install uninstall dist

View File

@@ -1,42 +1,66 @@
artools artools
============= =============
User manual #### Make flags
### 1. artools.conf
* PREFIX=/usr/local (default if defined)
* SYSCONFDIR=/etc
#### Dependencies
##### Buildtime:
* make
* git
* m4
##### Runtime:
- base:
* openssh
* rsync
* haveged
* os-prober
* gnupg
* pacman
- pkg:
* namcap
* git-subrepo
- iso:
* dosfstools
* libisoburn
* squashfs-tools
* mkinitcpio
* grub
#### Configuration
artools.conf is the central configuration file for artools. artools.conf is the central configuration file for artools.
By default, the config is installed in By default, the config is installed in
~~~ /etc/artools/artools.conf
/etc/artools/artools.conf
~~~
A user artools.conf can be placed in A user artools.conf can be placed in
~~~ $HOME/.config/artools/artools.conf
$HOME/.config/artools/artools.conf
~~~
If the userconfig is present, artools will load the userconfig values, however, if variables have been set in the systemwide If the userconfig is present, artools will load the userconfig values, however, if variables have been set in the systemwide
~~~ These values take precedence over the userconfig.
/etc/artools/artools.conf
~~~
these values take precedence over the userconfig.
Best practise is to leave systemwide file untouched. Best practise is to leave systemwide file untouched.
By default it is commented and shows just initialization values done in code. By default it is commented and shows just initialization values done in code.
Tools configuration is done in artools.conf or by args. Tools configuration is done in artools.conf or by args.
Specifying args will override artools.conf settings. Specifying args will override artools.conf settings.
~~~ Both, pacman.conf and makepkg.conf for chroots are loaded from
$HOME/.config/artools/import.list.d
~~~
overriding /usr/share/artools/{makepkg,pacman-*}.conf
~~~ and can be overridden dropping them in
/etc/artools/import.list.d
~~~ $HOME/.config/artools/

View File

@@ -9,7 +9,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
shopt -s extglob shopt -s extglob
@@ -20,16 +20,34 @@ SYSCONFDIR='@sysconfdir@'
import ${LIBDIR}/util.sh import ${LIBDIR}/util.sh
import ${LIBDIR}/util-mount.sh import ${LIBDIR}/util-mount.sh
display_settings(){ select_os(){
show_version local os_list=( $(detect) ) count=${#os_list[@]}
show_config if [[ ${count} > 1 ]];then
msg "Detected systems:"
msg "ARGS:" local i=0
msg2 "automount: %s" "${automount}" for os in ${os_list[@]};do
msg2 "run_args: %s" "${run_args[*]}" local last=${os##*:}
case $last in
msg "PATHS:" 'efi') count=$((count-1)) ;;
msg2 "chrootdir: %s" "${chrootdir}" *) info "$i) $(get_os_name $os)"; i=$((i+1)) ;;
esac
done
i=0
msg "Select system to mount [0-%s] : " "$((count-1))"
read select
else
select=0
fi
local os_str=${os_list[$select]} type
type=$os_str
root=${os_str%%:*}
type=${type##*:}
if [[ "${type##*:}" == 'linux' ]];then
msg "Mounting (%s) [%s]" "$(get_os_name $os_str)" "$root"
mount_os "$1" "$root"
else
die "You can't mount %s!" "$select"
fi
} }
load_user_info load_user_info
@@ -37,12 +55,10 @@ load_user_info
load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
automount=false automount=false
pretend=false
usage() { usage() {
echo "usage: ${0##*/} -a [or] ${0##*/} chroot-dir [command]" echo "usage: ${0##*/} -a [or] ${0##*/} chroot-dir [command]"
echo ' -a Automount detected linux system' echo ' -a Automount detected linux system'
echo ' -q Query settings and pretend'
echo ' -h Print this help message' echo ' -h Print this help message'
echo '' echo ''
echo " If 'command' is unspecified, ${0##*/} will launch /bin/sh." echo " If 'command' is unspecified, ${0##*/} will launch /bin/sh."
@@ -56,12 +72,11 @@ usage() {
orig_argv=("$0" "$@") orig_argv=("$0" "$@")
opts=':haq' opts=':ha'
while getopts ${opts} arg; do while getopts ${opts} arg; do
case "${arg}" in case "${arg}" in
a) automount=true ;; a) automount=true ;;
q) pretend=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument ${arg}"; usage 1 ;; *) echo "invalid argument ${arg}"; usage 1 ;;
esac esac
@@ -74,8 +89,6 @@ if ${automount};then
chrootdir=/mnt chrootdir=/mnt
run_args=/bin/bash run_args=/bin/bash
${pretend} && display_settings && exit 1
select_os "${chrootdir}" select_os "${chrootdir}"
else else
chrootdir=$1 chrootdir=$1
@@ -84,10 +97,8 @@ else
[[ -d ${chrootdir} ]] || die "Can't create chroot on non-directory %s" "${chrootdir}" [[ -d ${chrootdir} ]] || die "Can't create chroot on non-directory %s" "${chrootdir}"
${pretend} && display_settings && exit 1 chroot_api_mount "${chrootdir}" || die "failed to setup API filesystems in chroot %s" "${chrootdir}"
chroot_add_resolv_conf "${chrootdir}"
chroot_api_efi_mount "${chrootdir}" || die "failed to setup API filesystems in chroot %s" "${chrootdir}"
chroot_mount /etc/resolv.conf "${chrootdir}/etc/resolv.conf" --bind
fi fi
SHELL=/bin/sh unshare --fork --pid chroot "${chrootdir}" ${run_args[*]} SHELL=/bin/sh unshare --fork --pid chroot "${chrootdir}" ${run_args[*]}

View File

@@ -8,7 +8,7 @@
# 4) A valid mirror appears in /etc/pacman.d/mirrorlist # 4) A valid mirror appears in /etc/pacman.d/mirrorlist
# #
version=@version@ VERSION=@version@
shopt -s extglob shopt -s extglob
@@ -20,6 +20,23 @@ import ${LIBDIR}/util.sh
import ${LIBDIR}/util-mount.sh import ${LIBDIR}/util-mount.sh
import ${LIBDIR}/util-chroot.sh import ${LIBDIR}/util-chroot.sh
copy_mirrorlist(){
cp -a /etc/pacman.d/mirrorlist "$1/etc/pacman.d/"
}
copy_keyring(){
if [[ -d /etc/pacman.d/gnupg ]] && [[ ! -d $1/etc/pacman.d/gnupg ]]; then
cp -a /etc/pacman.d/gnupg "$1/etc/pacman.d/"
fi
}
create_min_fs(){
msg "Creating install root at %s" "$1"
mkdir -m 0755 -p $1/var/{cache/pacman/pkg,lib/pacman,log} $1/{dev,etc}
mkdir -m 1777 -p $1/{tmp,run}
mkdir -m 0555 -p $1/{sys,proc}
}
newroot=/mnt newroot=/mnt
hostcache=false hostcache=false

View File

@@ -9,7 +9,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
LIBDIR='@libdir@' LIBDIR='@libdir@'
DATADIR='@datadir@' DATADIR='@datadir@'
@@ -22,14 +22,12 @@ import ${LIBDIR}/util-iso.sh
prepare_build(){ prepare_build(){
timer_start=$(get_timer) timer_start=$(get_timer)
load_profile "${profile}" load_profile "${PROFILE}"
netgroups=${netgroups_url}/netgroups-${initsys}.yaml
local pacman_conf pac_file="pacman-default.conf" local pacman_conf pac_file="pacman-default.conf"
case "${stablility}" in case "${REPOSITORY}" in
'gremlins') pac_file="pacman-${stablility}.conf" ;; 'gremlins'|'goblins') pac_file="pacman-${REPOSITORY}.conf" ;;
esac esac
pacman_conf="${DATADIR}/$pac_file" pacman_conf="${DATADIR}/$pac_file"
@@ -37,60 +35,35 @@ prepare_build(){
iso_file=$(gen_iso_fn).iso iso_file=$(gen_iso_fn).iso
mkchroot_args+=(-C ${pacman_conf}) iso_label="ARTIX_$(date +%Y%m)"
work_dir=${chroots_iso}/${profile}/${target_arch}
iso_dir="${iso_pool}/${profile}" mkchroot_args+=(-C ${pacman_conf} -m)
work_dir=${CHROOTS_ISO}/${PROFILE}/${ARCH}
iso_root=${chroots_iso}/${profile}/iso iso_dir="${ISO_POOL}/${PROFILE}"
mnt_dir=${chroots_iso}/${profile}/mnt
iso_root=${CHROOTS_ISO}/${PROFILE}/iso
mnt_dir=${CHROOTS_ISO}/${PROFILE}/mnt
prepare_dir "${mnt_dir}" prepare_dir "${mnt_dir}"
prepare_dir "${iso_dir}" prepare_dir "${iso_dir}"
} prepare_dir "${iso_root}"
show_profile(){
msg2 "iso_file: %s" "${iso_file}"
if ${verbose};then
msg2 "autologin: %s" "${autologin}"
msg2 "netgroups: %s" "${netgroups}"
msg2 "hostname: %s" "${hostname}"
msg2 "username: %s" "${username}"
msg2 "password: %s" "${password}"
msg2 "addgroups: %s" "${addgroups}"
msg2 "services_live: %s" "${services_live[*]}"
msg2 "services: %s" "${services[*]}"
fi
} }
display_settings(){ display_settings(){
show_version
show_config
msg "OPTIONS:" msg "OPTIONS:"
msg2 "profile: %s" "${profile}" msg2 "PROFILE: %s" "${PROFILE}"
msg2 "initsys: %s" "${initsys}" msg2 "INITSYS: %s" "${INITSYS}"
msg2 "kernel: %s" "${kernel}" [[ -n ${GPG_KEY} ]] && msg2 "GPG_KEY: %s" "${GPG_KEY}"
[[ -n ${gpgkey} ]] && msg2 "gpgkey: %s" "${gpgkey}"
msg2 "stablility: %s" "${stablility}"
msg "ARGS:"
msg2 "clean_first: %s" "${clean_first}"
msg2 "images_only: %s" "${images_only}"
msg2 "iso_only: %s" "${iso_only}"
msg2 "persist: %s" "${persist}"
msg "ISO SETTINGS:" msg "ISO SETTINGS:"
msg2 "iso_version: %s" "${iso_version}" msg2 "ISO_VERSION: %s" "${ISO_VERSION}"
msg "BUILD:" msg "BUILD:"
show_profile show_profile
} }
build(){ build(){
msg "Start building [%s]" "${profile}" msg "Start building [%s]" "${PROFILE}"
if ${clean_first};then if ${clean_first};then
for copy in "${work_dir}"/*; do for copy in "${work_dir}"/*; do
[[ -d $copy ]] || continue [[ -d $copy ]] || continue
@@ -108,19 +81,19 @@ build(){
fi fi
if ${iso_only}; then if ${iso_only}; then
[[ ! -d ${work_dir} ]] && die "Create images: buildiso -p %s -x" "${profile}" [[ ! -d ${work_dir} ]] && die "Create images: %s -p %s -x" "${cmd}" "${PROFILE}"
compress_images compress_images
exit 1 exit 1
fi fi
if ${images_only}; then if ${images_only}; then
prepare_images prepare_images
warning "Continue compress: buildiso -p %s -zc ..." "${profile}" warning "Continue compress: %s -p %s -zc ..." "${cmd}" "${PROFILE}"
exit 1 exit 1
else else
prepare_images prepare_images
compress_images compress_images
fi fi
msg "Finished building [%s]" "${profile}" msg "Finished building [%s]" "${PROFILE}"
show_elapsed_time "${FUNCNAME}" "${timer_start}" show_elapsed_time "${FUNCNAME}" "${timer_start}"
} }
@@ -132,32 +105,31 @@ clean_first=true
pretend=false pretend=false
images_only=false images_only=false
iso_only=false iso_only=false
verbose=false log=false
persist=false persist=false
mkchroot_args=() mkchroot_args=()
cmd=${0##*/} cmd=${0##*/}
stablility=${cmd##*-}
REPOSITORY=${cmd##*-}
usage() { usage() {
echo "Usage: ${0##*/} [options]" echo "Usage: ${cmd} [options]"
echo " -p <profile> Profile [default: ${profile}]" echo " -p <profile> Profile [default: ${PROFILE}]"
echo ' -r <dir> Chroots directory' echo ' -r <dir> Chroots directory'
echo " [default: ${chroots_iso}]" echo " [default: ${CHROOTS_ISO}]"
echo ' -t <dir> Target directory' echo ' -t <dir> Target directory'
echo " [default: ${iso_pool}]" echo " [default: ${ISO_POOL}]"
echo ' -k <name> Kernel to use'
echo " [default: ${kernel}]"
echo ' -i <name> Init system to use' echo ' -i <name> Init system to use'
echo " [default: ${initsys}]" echo " [default: ${INITSYS}]"
echo ' -g <key> The gpg key for sfs signing' echo ' -g <key> The gpg key for sfs signing'
echo " [default: ${gpgkey}]" echo " [default: ${GPG_KEY}]"
echo ' -m Set SquashFS image mode to persistence' echo ' -m Set SquashFS image mode to persistence'
echo ' -c Disable clean work dir' echo ' -c Disable clean work dir'
echo ' -x Build images only' echo ' -x Build images only'
echo ' -z Generate iso only' echo ' -z Generate iso only'
echo ' Requires pre built images (-x)' echo ' Requires pre built images (-x)'
echo ' -v Verbose output to log file, show profile detail (-q)' echo ' -l Log to file'
echo ' -q Query settings and pretend build' echo ' -q Query settings and pretend build'
echo ' -h This help' echo ' -h This help'
echo '' echo ''
@@ -167,21 +139,20 @@ usage() {
orig_argv=("$0" "$@") orig_argv=("$0" "$@")
opts='p:r:t:k:i:g:czxmvqh' opts='p:r:t:i:g:czxmlqh'
while getopts "${opts}" arg; do while getopts "${opts}" arg; do
case "${arg}" in case "${arg}" in
p) profile="$OPTARG" ;; p) PROFILE="$OPTARG" ;;
r) chroots_iso="$OPTARG" ;; r) CHROOTS_ISO="$OPTARG" ;;
t) iso_pool="$OPTARG" ;; t) ISO_POOL="$OPTARG" ;;
k) kernel="$OPTARG" ;; i) INITSYS="$OPTARG" ;;
i) initsys="$OPTARG" ;; g) GPG_KEY="$OPTARG" ;;
g) gpgkey="$OPTARG" ;;
c) clean_first=false ;; c) clean_first=false ;;
x) images_only=true ;; x) images_only=true ;;
z) iso_only=true ;; z) iso_only=true ;;
m) persist=true ;; m) persist=true ;;
v) verbose=true ;; l) log=true ;;
q) pretend=true ;; q) pretend=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;; *) echo "invalid argument '${arg}'"; usage 1 ;;

View File

@@ -9,124 +9,72 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
shopt -s nullglob
LIBDIR='@libdir@' LIBDIR='@libdir@'
DATADIR='@datadir@'
SYSCONFDIR='@sysconfdir@' SYSCONFDIR='@sysconfdir@'
DATADIR='@datadir@'
[[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh
import ${LIBDIR}/util.sh import ${LIBDIR}/util.sh
import ${LIBDIR}/util-chroot.sh import ${LIBDIR}/util-chroot.sh
show_pkg(){
source PKGBUILD
for n in ${pkgname[@]}; do
msg2 "%s" "$n"
done
}
display_settings(){
show_version
show_config
msg "OPTIONS:"
msg2 "chroots_pkg: %s" "${chroots_pkg}"
msg2 "repository: %s" "${repository}"
msg "ARGS:"
msg2 "create_first: %s" "${create_first}"
msg2 "makepkg_args: %s" "${makepkg_args[*]}"
msg2 "mkchrootpkg_args: %s" "${mkchrootpkg_args[*]}"
msg "BUILD:"
show_pkg
}
load_user_info load_user_info
load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
create_first=false create_first=false
pretend=false
mkchroot_args=()
mkchrootpkg_args=(-c -n) mkchrootpkg_args=(-c -n)
repository='default' cmd=${0##*/}
repo=${cmd#*-}
base_devel=('base-devel')
prepare_build(){ case ${repo} in
local pac_file= mp_file='makepkg.conf' system|world|galaxy) repo='default' ;;
lib32*) base_devel+=('multilib-devel') ;;
galaxy-gremlins|galaxy-goblins) repo=${repo#*-} ;;
esac
base_devel=('base-devel') pacman_conf="${DATADIR}/pacman-${repo}.conf"
[[ -f $AT_USERCONFDIR/pacman-${repo}.conf ]] && pacman_conf="$AT_USERCONFDIR/pacman-${repo}.conf"
case ${repository} in makepkg_conf="${DATADIR}/makepkg.conf"
'system'|'world'|'galaxy') repository='default' ;; [[ -f $AT_USERCONFDIR/makepkg.conf ]] && makepkg_conf="$AT_USERCONFDIR/makepkg.conf"
lib32*) base_devel+=('multilib-devel') ;;
galaxy-gremlins|galaxy-goblins) repository=${repository#*-} ;;
esac
local pac_file="pacman-${repository}.conf"
local pacman_conf="${DATADIR}/$pac_file"
[[ -f $AT_USERCONFDIR/$pac_file ]] && pacman_conf="$AT_USERCONFDIR/$pac_file"
work_dir="${chroots_pkg}/${repository}-${target_arch}"
local makepkg_conf="${DATADIR}/$mp_file"
[[ -f $AT_USERCONFDIR/$mp_file ]] && makepkg_conf="$AT_USERCONFDIR/$mp_file"
mkchroot_args+=(-C "${pacman_conf}" -M "${makepkg_conf}" "${work_dir}/root")
mkchrootpkg_args+=(-r "${work_dir}" "${makepkg_args[@]}")
}
build(){
local timer_start=$(get_timer)
exec mkchrootpkg "${mkchrootpkg_args[@]}"
show_elapsed_time "${FUNCNAME}" "${timer_start}"
}
usage() { usage() {
echo "Usage: ${0##*/} [options] -- [makepkg_args]" echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]"
echo " -r <dir> Repository [default: ${repository}]" echo " -r <dir> Create chroots in this directory"
echo ' -c Create root chroot' echo ' -c Recreate the chroot before building'
echo ' -q Query settings and pretend build'
echo ' -h This help' echo ' -h This help'
echo '' echo ''
echo "Default makepkg_args args: ${makepkg_args[*]}" echo "Default mkchrootpkg_args args: ${mkchrootpkg_args[*]}"
echo '' echo ''
exit $1 exit $1
} }
orig_argv=("$0" "$@") orig_argv=("$0" "$@")
opts='r:cqh' opts='hcr:'
while getopts "${opts}" arg; do while getopts "${opts}" arg; do
case "${arg}" in case "${arg}" in
r) repository="$OPTARG" ;; r) CHROOTS_PKG="$OPTARG" ;;
c) create_first=true ;; c) create_first=true ;;
q) pretend=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '%s'" "${arg}"; usage 1 ;; *) echo "invalid argument '%s'" "${arg}"; usage 1 ;;
esac esac
done done
makepkg_args+=("${@:$OPTIND}") check_root SOURCE_DATE_EPOCH
check_root mkchrootpkg_args+=("${@:$OPTIND}")
prepare_build if ${create_first} || [[ ! -d "${CHROOTS_PKG}/${repo}-${ARCH}" ]];then
msg "Creating chroot for [%s] (%s)..." "${repo}" "${ARCH}"
${pretend} && display_settings && exit for copy in "${CHROOTS_PKG}/${repo}-${ARCH}"/*; do
if ${create_first} || [[ ! -d ${work_dir}/root ]];then
msg "Creating chroot for [%s] (%s)..." "${repository}" "${target_arch}"
for copy in "${work_dir}"/*; do
[[ -d $copy ]] || continue [[ -d $copy ]] || continue
msg2 "Deleting chroot copy '%s'..." "$(basename "${copy}")" msg2 "Deleting chroot copy '%s'..." "$(basename "${copy}")"
@@ -137,14 +85,30 @@ if ${create_first} || [[ ! -d ${work_dir}/root ]];then
done done
lock_close 9 lock_close 9
rm -rf --one-file-system "${work_dir}" rm -rf --one-file-system "${CHROOTS_PKG}/${repo}-${ARCH}"
mkdir -p "${work_dir}" mkdir -p "${CHROOTS_PKG}/${repo}-${ARCH}"
setarch "${target_arch}" mkchroot \ setarch "${ARCH}" mkchroot \
"${mkchroot_args[@]}" "${base_devel[@]}" || abort -C "${pacman_conf}" \
-M "${makepkg_conf}" \
"${CHROOTS_PKG}/${repo}-${ARCH}/root" \
"${base_devel[@]}" || abort
else else
lock 9 "${work_dir}/root.lock" "Locking clean chroot" lock 9 "${CHROOTS_PKG}/${repo}-${ARCH}/root.lock" "Locking clean chroot"
chroot-run "${mkchroot_args[@]}" \ chroot-run \
-C "${pacman_conf}" \
-M "${makepkg_conf}" \
"${CHROOTS_PKG}/${repo}-${ARCH}/root" \
pacman -Syu --noconfirm || abort pacman -Syu --noconfirm || abort
fi fi
build # Always build official packages reproducibly
if [[ ! -v SOURCE_DATE_EPOCH ]]; then
export SOURCE_DATE_EPOCH=$(date +%s)
fi
timer_start=$(get_timer)
msg "Building in chroot for [%s] (%s)..." "${repo}" "${ARCH}"
exec mkchrootpkg -r "${CHROOTS_PKG}/${repo}-${ARCH}" "${mkchrootpkg_args[@]}"
show_elapsed_time "${FUNCNAME}" "${timer_start}"

View File

@@ -9,7 +9,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
LIBDIR='@libdir@' LIBDIR='@libdir@'
SYSCONFDIR='@sysconfdir@' SYSCONFDIR='@sysconfdir@'
@@ -17,355 +17,202 @@ DATADIR='@datadir@'
[[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh
import ${LIBDIR}/util.sh import ${LIBDIR}/util.sh
import ${LIBDIR}/util-pkg.sh
get_local_head(){ import ${LIBDIR}/util-pkg-gitea.sh
echo $(git log --pretty=%H ...refs/heads/$1^ | head -n 1) import ${LIBDIR}/util-pkg-subrepo.sh
}
get_remote_head(){
echo $(git ls-remote origin -h refs/heads/$1 | cut -f1)
}
is_dirty() {
[[ $(git diff --shortstat 2> /dev/null | tail -n1) != "" ]] || return 1
return 0
}
is_untracked(){
[[ $(git ls-files --others --exclude-standard) != "" ]] || return 1
return 0
}
pull_tree(){
local branch="master" tree="$1"
local local_head=$(get_local_head "$branch")
local remote_head=$(get_remote_head "$branch")
local timer=$(get_timer)
msg "Checking [%s] ..." "$tree"
msg2 "local: %s" "${local_head}"
msg2 "remote: %s" "${remote_head}"
if [[ "${local_head}" == "${remote_head}" ]]; then
info "nothing to do"
else
info "needs pull"
git pull origin $branch
fi
msg "Done [%s]" "$tree"
show_elapsed_time "${FUNCNAME}" "${timer}"
}
clone_tree(){
local timer=$(get_timer) tree="$1" host_tree="$2"
msg "Preparing [%s] ..." "$tree"
info "clone"
git clone $host_tree.git
msg "Done [%s]" "$tree"
show_elapsed_time "${FUNCNAME}" "${timer}"
}
pull_tree_arch(){ pull_tree_arch(){
cd ${tree_dir_arch} cd ${TREE_DIR_ARCH}
for tree in packages community;do for tree in ${tree_names[@]};do
if [[ -d ${tree} ]];then if [[ -d ${tree} ]];then
cd ${tree} cd ${tree}
pull_tree "${tree}" msg "Checking (%s)" "${tree}"
pull_tree
cd .. cd ..
else else
clone_tree "${tree}" "${host_tree_arch}/${tree}" msg "Cloning (%s) ..." "$tree"
clone_tree "${HOST_TREE_ARCH}/${tree}"
fi fi
done done
} }
config_tree(){
local tree="$1"
cd $tree
git config --bool pull.rebase true
git config commit.gpgsign true
if [[ -n "${GPGKEY}" ]];then
git config user.signingkey "${GPGKEY}"
else
warning "No GPGKEY configured in makepkg.conf!"
fi
cd ..
}
pull_tree_artix(){ pull_tree_artix(){
cd ${tree_dir_artix} cd ${TREE_DIR_ARTIX}
for tree in packages packages-galaxy;do for tree in ${tree_names[@]};do
if [[ -d ${tree} ]];then if [[ -d ${tree} ]];then
config_tree "${tree}"
cd ${tree} cd ${tree}
git config --bool pull.rebase true msg "Checking (%s)" "${tree}"
pull_tree "${tree}" pull_tree
cd .. cd ..
else else
clone_tree "${tree}" "${host_tree_artix}/${tree}" msg "Cloning (%s) ..." "$tree"
clone_tree "${HOST_TREE_ARTIX}/${tree}"
config_tree "${tree}"
fi fi
done done
} }
read_import_list(){ mkrepo(){
local tree="$1" local pkg="$1" team="$2"
local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g" local pkg_path=${TREE_DIR_ARTIX}/$team/$pkg
import_list=$(sed "$_com_rm" "${list_dir_import}/$tree.list" | sed "$_space" | sed "$_clean")
cd ${TREE_DIR_ARTIX}/$team
local org=$(get_pkg_org "$pkg")
create_repo "$pkg" "$org"
add_repo_to_team "$pkg" "$org" "$team"
subrepo_clone "$pkg" "$org"
prepare_dir "$pkg_path/trunk"
commit_jenkins_files "$pkg"
} }
patch_pkg(){ sync_pkg(){
local pkg="$1" repo="$2" local rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs)
case $pkg in local src="$1" dest="$2" tree="$3"
'glibc')
sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
-e '/nscd.service/d' \
-i $pkg/trunk/PKGBUILD
;;
'tp_smapi'|'acpi_call'|'r8168')
sed -e 's|-ARCH|-ARTIX|g' -i $pkg/trunk/PKGBUILD
;;
'linux')
sed -e 's|-ARCH|-ARTIX|g' -i $pkg/trunk/PKGBUILD
sed -e 's|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION="-ARTIX"|' \
-e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
-i $pkg/trunk/config
cd $pkg/trunk
updpkgsums
cd ../..
;; info "Sync from archlinux (%s)" "$git_tree_arch"
'licenses') rsync "${rsync_args[@]}" $src/ $dest/
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' -i $pkg/trunk/PKGBUILD
;;
esac
} }
get_import_path(){ show_deps(){
local tree="$1" import_path= local src="$1" repo="$2"
case $tree in
packages) import_path=${tree_dir_arch}/packages ;;
packages-galaxy) import_path=${tree_dir_arch}/community ;;
esac
echo $import_path
}
find_repo(){ source $src/PKGBUILD 2>/dev/null
local pkg="$1" repo=
if [[ -d $pkg/repos/core-x86_64 ]];then [[ $arch == 'any' ]] && CARCH=any
repo=core-x86_64
elif [[ -d $pkg/repos/core-any ]];then
repo=core-any
fi
if [[ -d $pkg/repos/extra-x86_64 ]];then local archver=$(get_full_version $pkg)
repo=extra-x86_64
elif [[ -d $pkg/repos/extra-any ]];then
repo=extra-any
fi
if [[ -d $pkg/repos/testing-x86_64 ]];then msg "git tree: %s" "$git_tree_arch"
repo=testing-x86_64 msg2 "repo: %s" "$repo"
elif [[ -d $pkg/repos/testing-any ]];then [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
repo=testing-any msg2 "pkgname: %s" "${pkgname[*]}"
fi [[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}"
msg2 "Arch Version: %s" "$archver"
msg2 "arch: %s" "$CARCH"
if [[ -d $pkg/repos/staging-x86_64 ]];then [[ -n ${makedepends[@]} ]] && msg2 "makedepends: %s" "${makedepends[*]}"
repo=staging-x86_64 [[ -n ${checkdepends[@]} ]] && msg2 "checkdepends: %s" "${checkdepends[*]}"
elif [[ -d $pkg/repos/staging-any ]];then [[ -n ${depends[@]} ]] && msg2 "depends: %s" "${depends[*]}"
repo=staging-any [[ -n ${optdepends[@]} ]] && msg2 "optdepends: %s" "${optdepends[@]}"
fi
if [[ -d $pkg/repos/community-x86_64 ]];then
repo=community-x86_64
elif [[ -d $pkg/repos/community-any ]];then
repo=community-any
fi
if [[ -d $pkg/repos/community-testing-x86_64 ]];then
repo=community-testing-x86_64
elif [[ -d $pkg/repos/community-testing-any ]];then
repo=community-testing-any
fi
if [[ -d $pkg/repos/community-staging-x86_64 ]];then
repo=community-staging-x86_64
elif [[ -d $pkg/repos/community-staging-any ]];then
repo=community-staging-any
fi
if [[ -d $pkg/repos/multilib-x86_64 ]];then
repo=multilib-x86_64
fi
if [[ -d $pkg/repos/multilib-testing-x86_64 ]];then
repo=multilib-testing-x86_64
fi
if [[ -d $pkg/repos/multilib-staging-x86_64 ]];then
repo=multilib-staging-x86_64
fi
echo $repo
}
view_artix_repo(){
local repo="$1"
case $repo in
core-*) repo=system ;;
extra-*) repo=world ;;
community-*) repo=galaxy ;;
multilib-x86_64) repo=lib32 ;;
testing-*) repo=gremlins ;;
staging-*) repo=goblins ;;
multilib-testing-x86_64) repo=lib32-gremlins ;;
multilib-staging-x86_64) repo=lib32-goblins ;;
community-testing-*) repo=galaxy-gremlins ;;
community-staging-*) repo=galaxy-goblins ;;
esac
echo $repo
}
show_downgrade_table(){
msg_table_header "%-20s %-20s %-25s %-30s %-30s" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version"
for tree in packages packages-galaxy;do
for pkg_path in ${tree_dir_artix}/$tree/*; do
local artixrepo=$(find_repo "$pkg_path")
if [[ -d $pkg_path/repos/$artixrepo ]];then
source $pkg_path/repos/$artixrepo/PKGBUILD 2>/dev/null
local pkg=${pkg_path##*/}
local artixver=$(get_full_version $pkg)
local src=$(get_import_path "$tree" "$pkg")
local archrepo=$(find_repo "$src/$pkg")
if [[ -d $src/$pkg/repos/$archrepo ]];then
source $src/$pkg/repos/$archrepo/PKGBUILD 2>/dev/null
local archver=$(get_full_version $pkg)
fi
if [ $(vercmp $artixver $archver) -gt 0 ];then
local ar=$(view_artix_repo "$artixrepo")
msg_row_downgrade "%-20s %-20s %-25s %-30s %-30s" "${archrepo%-*}" "${ar}" "$pkg" "$archver" "$artixver"
fi
unset pkgver epoch pkgrel artixver archver _package
fi
done
done
}
show_upgrade_table(){
declare -A UPDATES
msg_table_header "%-20s %-20s %-25s %-30s %-30s" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version"
for tree in packages packages-galaxy;do
for pkg_path in ${tree_dir_artix}/$tree/*; do
local artixrepo=$(find_repo "$pkg_path")
if [[ -d $pkg_path/repos/$artixrepo ]];then
source $pkg_path/trunk/PKGBUILD 2>/dev/null
local pkg=${pkg_path##*/}
local artixver=$(get_full_version $pkg)
local src=$(get_import_path "$tree" "$pkg")
local archrepo=$(find_repo "$src/$pkg")
if [[ -d $src/$pkg/repos/$archrepo ]];then
source $src/$pkg/trunk/PKGBUILD 2>/dev/null
local archver=$(get_full_version $pkg)
fi
if [ $(vercmp $artixver $archver) -lt 0 ];then
local ar=$(view_artix_repo "$artixrepo")
UPDATES[$pkg]="$pkg_path/repos/$artixrepo/PKGBUILD $src/$pkg/repos/$archrepo/PKGBUILD"
msg_row_update "%-20s %-20s %-25s %-30s %-30s" "${archrepo%-*}" "${ar}" "$pkg" "$archver" "$artixver"
fi
unset pkgver epoch pkgrel artixver archver _package
fi
done
done
find "${patches_dir}/" -name *.patch -delete
for upd in "${!UPDATES[@]}"; do
diff -u ${UPDATES[$upd]} > ${patches_dir}/"$upd"-archlinux.patch
done
} }
from_arch(){ from_arch(){
local pkg="$1" archtree="$2" artixtree="$3" src= dest= local pkg="$1" src= dest=
src=${tree_dir_arch}/$archtree/$pkg/trunk local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "$pkg")
dest=${tree_dir_artix}/$artixtree/$pkg/trunk [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "$pkg"
source $src/PKGBUILD 2>/dev/null local package=${TREE_DIR_ARCH}/$git_tree_arch/$pkg
cd ${tree_dir_arch}/$archtree local repo=$(find_repo "$package" "${unstable}")
msg "Package: %s" "$pkg"
local archver=$(get_full_version $pkg) src=$package/repos/$repo
msg2 "Arch Version: %s" "$archver"
local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "$pkg")
dest=${TREE_DIR_ARTIX}/$git_tree_artix/$pkg/trunk
show_deps "$src" "$repo"
if [[ -d $dest ]];then if [[ -d $dest ]];then
cd ${TREE_DIR_ARTIX}/$git_tree_artix
source $dest/PKGBUILD 2>/dev/null source $dest/PKGBUILD 2>/dev/null
cd ${tree_dir_artix}/$artixtree
local artixver=$(get_full_version $pkg) local artixver=$(get_full_version $pkg)
msg2 "Artix Version: %s" "$artixver" msg2 "Artix Version: %s" "$artixver"
info "artixver: %s" "$artixver" sync_pkg "$src" "$dest" "$git_tree_arch"
if [ $(vercmp $artixver $archver) -lt 0 ];then patch_pkg "$pkg"
info "Importing from archlinux (%s)" "$archtree"
rsync "${rsync_args[@]}" $src/ $dest/
patch_pkg "$pkg" "$tree"
else
warning "Versions match! Nothing to do!"
fi
else else
cd ${tree_dir_artix}/$artixtree [[ $git_tree_arch == 'packages' ]] && git_tree_artix=$git_tree_arch
info "Importing from archlinux (%s)" "$archtree" [[ $git_tree_arch == 'community' ]] && git_tree_artix=$git_tree_arch
mkdir $pkg
rsync "${rsync_args[@]}" $src/ $dest/ local pkg_path=${TREE_DIR_ARTIX}/$git_tree_artix/$pkg
patch_pkg "$pkg" "$tree"
cd ${TREE_DIR_ARTIX}/$git_tree_artix
local org=$(get_pkg_org "$pkg")
create_repo "$pkg" "$org"
add_repo_to_team "$pkg" "$org" "$git_tree_artix"
subrepo_clone "$pkg" "$org"
commit_jenkins_files "$pkg"
# dest=$pkg_path/trunk
sync_pkg "$src" "$dest" "$git_tree_arch"
fi fi
} }
import_from_arch(){ view_build(){
for tree in packages packages-galaxy;do local pkg="$1" src=
info "Importing from archlinux %s" "$tree" local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "$pkg")
read_import_list "$tree" [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "$pkg"
cd ${tree_dir_artix}/$tree
for pkg in ${import_list[@]};do local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/$pkg
[[ "$tree" == 'packages' ]] && from_arch "$pkg" "$tree" "$tree" local repo=$(find_repo "$pkg_path" "${unstable}")
[[ "$tree" == 'packages-galaxy' ]] && from_arch "$pkg" "community" "$tree"
done src=$pkg_path/repos/$repo
done
show_deps "$src" "$repo"
} }
sync_repos(){ sync_repos(){
pull_tree_arch ${sync_arch} && pull_tree_arch
pull_tree_artix pull_tree_artix
} }
display_settings(){
show_version
show_config
msg "OPTIONS:"
msg2 "package: %s" "${package}"
msg "ARGS:"
msg2 "sync: %s" "${sync}"
msg2 "upgrades: %s" "${upgrades}"
msg2 "downgrades: %s" "${downgrades}"
msg2 "import_packages: %s" "${import_packages}"
msg2 "import_community: %s" "${import_community}"
msg2 "import_all: %s" "${import_all}"
msg "PATHS:"
msg2 "tree_dir_artix: %s" "${tree_dir_artix}"
msg2 "tree_dir_arch: %s" "${tree_dir_arch}"
msg2 "patches_dir: %s" "${patches_dir}"
}
load_user_info load_user_info
load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
load_vars /etc/makepkg.conf load_vars /etc/makepkg.conf
pretend=false
sync=false sync=false
upgrades=false sync_arch=true
downgrades=false import=false
import_packages=false view=false
import_community=false createnew=false
import_all=false conf=false
package=''
git_artix='packages' PACKAGE=''
git_arch='packages'
rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs) tree_names=(packages community)
TEAM=${tree_names[0]}
SUBORG=''
usage() { usage() {
echo "Usage: ${0##*/} [options]" echo "Usage: ${0##*/} [options]"
echo ' -p <pkg> Package name' echo ' -p <pkg> Package name'
echo ' -t <team> Team name (only with -n)'
echo " [default: ${TEAM}]"
echo ' -o <org> Org of subrepo (only with -c)'
echo " -s Clone or pull repos" echo " -s Clone or pull repos"
echo ' -u Show upgrade packages' echo " -z Don't clone or pull arch repos"
echo ' -d Show downgrade packages' echo ' -i Import a package from arch repos'
echo ' -i Import from arch packages' echo ' -m Make new remote subrepo and clone it'
echo ' -j Import from arch community' echo ' -C Configure subrepo url'
echo ' -k Import arch packages' echo ' -v View package depends'
echo ' -q Query settings'
echo ' -h This help' echo ' -h This help'
echo '' echo ''
echo '' echo ''
@@ -374,18 +221,19 @@ usage() {
orig_argv=("$0" "$@") orig_argv=("$0" "$@")
opts='p:sudijkqh' opts='p:t:o:csinzvh'
while getopts "${opts}" arg; do while getopts "${opts}" arg; do
case "${arg}" in case "${arg}" in
p) package="$OPTARG" ;; p) PACKAGE="$OPTARG" ;;
t) TEAM="$OPTARG" ;;
o) SUBORG="$OPTARG" ;;
s) sync=true ;; s) sync=true ;;
u) upgrades=true ;; z) sync_arch=false ;;
d) downgrades=true ;; i) import=true ;;
i) import_packages=true ;; n) createnew=true ;;
j) import_community=true; git_artix='packages-galaxy'; git_arch='community' ;; v) view=true ;;
k) import_all=true ;; c) conf=true ;;
q) pretend=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;; *) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
@@ -393,20 +241,15 @@ done
shift $(($OPTIND - 1)) shift $(($OPTIND - 1))
prepare_dir "${tree_dir_artix}" prepare_dir "${TREE_DIR_ARTIX}"
prepare_dir "${tree_dir_arch}" prepare_dir "${TREE_DIR_ARCH}"
prepare_dir "${patches_dir}"
${pretend} && display_settings && exit 1
${sync} && sync_repos ${sync} && sync_repos
${upgrades} && show_upgrade_table ${view} && view_build "${PACKAGE}"
${downgrades} && show_downgrade_table ${import} && from_arch "${PACKAGE}"
${import_all} && import_from_arch ${createnew} && mkrepo "${PACKAGE}" "${TEAM}"
${import_packages} && from_arch "${package}" "${git_arch}" "${git_artix}" ${conf} && subrepo_config "${PACKAGE}" "${SUBORG}"
${import_community} && from_arch "${package}" "${git_arch}" "${git_artix}"

View File

@@ -9,7 +9,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
LIBDIR='@libdir@' LIBDIR='@libdir@'

View File

@@ -9,7 +9,9 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
chroot_version=@chroot_version@
LIBDIR='@libdir@' LIBDIR='@libdir@'
@@ -20,7 +22,6 @@ import ${LIBDIR}/util-mount.sh
working_dir='' working_dir=''
files=() files=()
keep_mirrors=false
nosetarch=false nosetarch=false
usage() { usage() {
@@ -91,8 +92,9 @@ copy_hostconf () {
} }
chroot_extra_mount() { chroot_extra_mount() {
chroot_mount "/etc/resolv.conf" "$1/etc/resolv.conf" -B chroot_add_resolv_conf "$1"
chroot_mount_conditional "[[ -e $1/etc/machine-id ]]" "/etc/machine-id" "$1/etc/machine-id" -B chroot_mount "/etc/hosts" "$1/etc/hosts" -B
# chroot_mount_conditional "[[ -e $1/etc/machine-id ]]" "/etc/machine-id" "$1/etc/machine-id" -B
chroot_mount "${cache_dirs[0]}" "$1${cache_dirs[0]}" -B chroot_mount "${cache_dirs[0]}" "$1${cache_dirs[0]}" -B
for cache_dir in ${cache_dirs[@]:1}; do for cache_dir in ${cache_dirs[@]:1}; do
@@ -113,8 +115,8 @@ umask 0022
# Sanity check # Sanity check
if [[ ! -f "$working_dir/.artools" ]]; then if [[ ! -f "$working_dir/.artools" ]]; then
die "'%s' does not appear to be an artix chroot." "$working_dir" die "'%s' does not appear to be an artix chroot." "$working_dir"
elif [[ $(cat "$working_dir/.artools") != $version ]]; then elif [[ $(cat "$working_dir/.artools") != $chroot_version ]]; then
die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "$version" die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "$chroot_version"
fi fi
chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}" chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}"

View File

@@ -9,7 +9,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
LIBDIR='@libdir@' LIBDIR='@libdir@'
SYSCONFDIR='@sysconfdir@' SYSCONFDIR='@sysconfdir@'
@@ -17,73 +17,112 @@ DATADIR='@datadir@'
[[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh
import ${LIBDIR}/util.sh import ${LIBDIR}/util.sh
import ${LIBDIR}/util-pkg.sh
import ${LIBDIR}/util-pkg-subrepo.sh
is_valid_repo(){
local src="$1"
case $src in
core|extra|community|multilib|testing|staging|community-testing|community-staging|multilib-testing|multilib-staging|trunk) return 0 ;;
*) return 1 ;;
esac
}
commit_pkg(){ commit_pkg(){
cd ${tree_dir_artix}/${git_tree}/${package} local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
source trunk/PKGBUILD if [[ -n ${git_tree} ]];then
local ver=$(get_full_version ${package}) cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
if ${remove};then
local action='remove'
local pkg=${package}-$ver
if [[ "${source_repo}" == 'trunk' ]];then
pkg=${package}
info "[%s] '%s' %s" "${source_repo}" "$pkg" "${action}"
git rm -r trunk
else
info "[%s] '%s' %s" "${source_repo}" "$pkg" "${action}"
git rm -r repos/${source_repo}-$CARCH
fi
git commit -m "[${source_repo}] '$pkg' ${action}"
${push} && git push origin master
else
local action='modify'
info "[%s] '%s' %s" "${source_repo}" "${package}-$ver" "${action}"
git add .
git commit -m "[${source_repo}] '${package}-$ver' ${action}"
${push} && git push origin master
fi
}
release_pkg(){
if [[ -d ${tree_dir_artix}/${git_tree}/${package} ]];then
cd ${tree_dir_artix}/${git_tree}/${package}
source trunk/PKGBUILD source trunk/PKGBUILD
[[ $arch == 'any' ]] && CARCH=any [[ $arch == 'any' ]] && CARCH=any
if [[ ${source_repo} != 'trunk' ]];then local ver=$(get_full_version "${PACKAGE}")
cd repos local commit_msg=""
dest=${target_repo}-$CARCH
action='move' if ${remove};then
[[ -d $dest ]] && git rm -r $dest local action='remove'
git mv ${source_repo}-$CARCH $dest if [[ "${REPO_SRC}" == 'trunk' ]];then
cd .. local pkg=${PACKAGE}
git rm -r trunk
else
local pkg="${PACKAGE}-$ver"
git rm -r repos/"${REPO_SRC}-$CARCH"
fi
commit_msg="[${REPO_SRC}] '$pkg' ${action}"
msg "Action: %s" "$commit_msg"
else else
dest=${target_repo}-$CARCH local action='modify'
action='add' commit_msg="[${REPO_SRC}] '${PACKAGE}-$ver' ${action}"
[[ -d repos/$dest ]] && git rm -r repos/$dest msg "Action: %s" "$commit_msg"
[[ ! -d repos ]] && mkdir repos git add .
cp -r trunk repos/$dest
fi fi
local ver=$(get_full_version ${package}) git commit -m "$commit_msg"
info "[%s] -> [%s] '%s' %s" "${source_repo}" "${target_repo}" "${package}-$ver" "${action}"
git add . cd ${TREE_DIR_ARTIX}/${git_tree}
git commit -m "[${source_repo}] -> [${target_repo}] '${package}-$ver' ${action}"
${push} && git push origin master if ${push};then
mainrepo_pull "${git_tree}"
subrepo_push "${PACKAGE}"
subrepo_clean "${PACKAGE}"
# sleep 1
mainrepo_push "${git_tree}"
fi
git prune
else
error "Package '%s' does not exist!" "${PACKAGE}"
fi fi
} }
display_settings(){ symlink_commit_pkg(){
show_version local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
show_config if [[ -n ${git_tree} ]];then
cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
msg "OPTIONS:" source trunk/PKGBUILD
msg2 "git_tree: %s" "${git_tree}" [[ $arch == 'any' ]] && CARCH=any
msg2 "source_repo: %s" "${source_repo}" local ver=$(get_full_version "${PACKAGE}")
msg2 "target_repo: %s" "${target_repo}"
msg2 "package: %s" "${package}"
msg "ARGS:" if [[ ${REPO_SRC} == 'trunk' ]];then
msg2 "remove: %s" "${remove}" local action='add'
msg2 "push: %s" "${push}" local dest="${REPO_DEST}-$CARCH"
[[ -d repos/$dest ]] && git rm -r repos/$dest
[[ ! -d repos ]] && mkdir repos
[[ ! -d repos/$dest ]] && mkdir repos/$dest
cp trunk/* repos/$dest/
else
local action='move'
local src="${REPO_SRC}-$CARCH" dest="${REPO_DEST}-$CARCH"
[[ -d repos/$dest ]] && git rm -r repos/$dest
[[ ! -d repos ]] && mkdir repos
[[ ! -d repos/$dest ]] && mkdir repos/$dest
cp repos/$src/* repos/$dest/
git rm -r repos/$src
fi
local commit_msg="[${REPO_SRC}] -> [${REPO_DEST}] '${PACKAGE}-$ver' ${action}"
msg "Action: %s" "$commit_msg"
git add .
git commit -m "$commit_msg"
cd ${TREE_DIR_ARTIX}/${git_tree}
if ${push};then
mainrepo_pull "${git_tree}"
subrepo_push "${PACKAGE}"
subrepo_clean "${PACKAGE}"
# sleep 1
mainrepo_push "${git_tree}"
fi
git prune
else
error "Package '%s' does not exist!" "${PACKAGE}"
fi
} }
load_user_info load_user_info
@@ -92,28 +131,20 @@ load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artoo
load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
load_vars /etc/makepkg.conf load_vars /etc/makepkg.conf
source_repo='trunk' REPO_SRC='trunk'
package='' PACKAGE=''
remove=false remove=false
push=false push=false
pretend=false
git_tree='packages'
cmd=${0##*/} cmd=${0##*/}
target_repo=${cmd%pkg} REPO_DEST=${cmd%pkg}
case ${target_repo} in
community*|multilib*) git_tree='packages-galaxy' ;;
esac
usage() { usage() {
echo "Usage: ${0##*/} [options]" echo "Usage: ${0##*/} [options]"
echo " -s <name> Source repository [default:${source_repo}]" echo " -s <name> Source repository [default:${REPO_SRC}]"
echo ' -p <pkg> Package name' echo ' -p <pkg> Package name'
echo ' -r Delete from repo' echo ' -r Delete from repo (commitpkg only)'
echo ' -u Push' echo ' -u Push'
echo ' -q Query settings and pretend'
echo ' -h This help' echo ' -h This help'
echo '' echo ''
echo '' echo ''
@@ -122,15 +153,14 @@ usage() {
orig_argv=("$0" "$@") orig_argv=("$0" "$@")
opts='p:s:urqh' opts='p:s:urh'
while getopts "${opts}" arg; do while getopts "${opts}" arg; do
case "${arg}" in case "${arg}" in
s) source_repo="$OPTARG" ;; s) REPO_SRC="$OPTARG" ;;
p) package="$OPTARG" ;; p) PACKAGE="$OPTARG" ;;
r) remove=true ;; r) remove=true ;;
u) push=true ;; u) push=true ;;
q) pretend=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;; *) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
@@ -138,10 +168,12 @@ done
shift $(($OPTIND - 1)) shift $(($OPTIND - 1))
${pretend} && display_settings && exit 1 if $(is_valid_repo "${REPO_SRC}");then
if [[ "${cmd}" == 'commitpkg' ]];then
if [[ "${cmd}" == 'commitpkg' ]];then commit_pkg
commit_pkg else
symlink_commit_pkg
fi
else else
release_pkg error "source repository '%s' is not valid!" "${REPO_SRC}"
fi fi

138
bin/comparepkg.in Normal file
View File

@@ -0,0 +1,138 @@
#!/bin/bash
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
VERSION=@version@
LIBDIR='@libdir@'
SYSCONFDIR='@sysconfdir@'
DATADIR='@datadir@'
[[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh
import ${LIBDIR}/util.sh
import ${LIBDIR}/util-pkg.sh
show_version_table(){
msg_table_header "%-20s %-20s %-25s %-30s %-30s" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version"
for tree in ${tree_names[@]};do
local git=$(find ${TREE_DIR_ARTIX}/$tree/ -mindepth 1 -maxdepth 1 -type d)
for package in ${git[@]}; do
local pkg=${package##*/}
local artixrepo=$(find_repo "$package" "${unstable}" "${staging}")
local artixshow=${artixrepo%-*}
local pkgbuild=$package/repos/$artixrepo/PKGBUILD
if [[ -f $pkgbuild ]];then
source $pkgbuild 2>/dev/null
local artixver=$(get_full_version $pkg)
local archpath=$(get_import_path "$pkg")
local archrepo=$(find_repo "$archpath" "${unstable}" "${staging}")
local archshow=${archrepo%-*}
pkgbuild=$archpath/repos/$archrepo/PKGBUILD
if [[ -f $pkgbuild ]];then
source $pkgbuild 2>/dev/null
local archver=$(get_full_version $pkg)
fi
if ${move};then
if [ $(vercmp "$artixver" "$archver") -eq 0 ] || [ $(vercmp "$artixver" "$archver") -gt 0 ];then
case $artixrepo in
*staging*)
if [[ "$archrepo" == "$artixrepo" ]];then
msg_row "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
else
msg_row_notify "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
fi
;;
*testing*)
if [[ "$archrepo" == "$artixrepo" ]];then
msg_row "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
else
msg_row_notify "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
fi
;;
esac
fi
else
if [ $(vercmp "$artixver" "$archver") -lt 0 ];then
${upgrades} && msg_row_upgrade "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
fi
if [ $(vercmp "$artixver" "$archver") -gt 0 ];then
if [[ -n $archver ]] && [[ -n $archrepo ]];then
${downgrades} && msg_row_downgrade "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
fi
fi
fi
unset pkgver epoch pkgrel artixver archver
fi
done
done
}
load_user_info
load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
load_vars /etc/makepkg.conf
unstable=false
staging=true
upgrades=false
downgrades=false
move=false
tree_names=(packages community)
usage() {
echo "Usage: ${0##*/} [options]"
echo ' -c Compare packages'
echo ' -u Show upgrade packages'
echo ' -d Show downgrade packages'
echo ' -a Show testing packages'
echo " -y Don't inlcude staging packages"
echo ' -x Include unstable kde and gnome'
echo ' -h This help'
echo ''
echo ''
exit $1
}
orig_argv=("$0" "$@")
opts='udmyxh'
while getopts "${opts}" arg; do
case "${arg}" in
u) upgrades=true ;;
d) downgrades=true ;;
m) move=true ;;
y) staging=false ;;
x) unstable=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac
done
shift $(($OPTIND - 1))
show_version_table

View File

@@ -9,63 +9,44 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
LIBDIR='@libdir@' LIBDIR='@libdir@'
SYSCONFDIR='@sysconfdir@' SYSCONFDIR='@sysconfdir@'
[[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh
import ${LIBDIR}/util.sh import ${LIBDIR}/util.sh
import ${LIBDIR}/util-iso-publish.sh
display_settings(){ connect(){
show_version echo "${ACCOUNT}@${FILE_HOST}:${FILE_HOME}"
show_config }
msg "OPTIONS:" prepare_transfer(){
msg2 "profile: %s" "${profile}" DEST_DIR="/iso/${PROFILE}/"
msg2 "uplimit: %s kB/s" "${uplimit}" SRC_DIR="${ISO_POOL}/${PROFILE}/"
}
msg "ARGS:" sync_dir(){
msg2 "update: %s" "${update}" msg "Start upload [%s] ..." "${PROFILE}"
msg2 "verbose: %s" "${verbose}" rsync "${rsync_args[@]}" ${SRC_DIR} $(connect)${DEST_DIR}
msg2 "torrent: %s" "${torrent}" msg "Done upload [%s]" "${PROFILE}"
show_elapsed_time "${FUNCNAME}" "${timer_start}"
if ${torrent};then
msg2 "tracker_url: %s" "${tracker_url}"
msg2 "piece_size: %s" "${piece_size}"
msg2 "host_mirrors: %s" "${host_mirrors[*]}"
msg2 "torrent_meta: %s" "${torrent_meta}"
fi
msg "REMOTE:"
msg2 "account: %s" "${account}"
msg2 "file_host: %s" "${file_host}"
msg2 "project: %s" "${project}"
msg "UPLOAD:"
msg2 "src_dir: ${src_dir}"
msg2 "target_dir: ${target_dir}"
} }
load_user_info load_user_info
load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf" load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
pretend=false
update=false update=false
verbose=false verbose=false
torrent=false
rsync_args=(-aP --progress -e ssh) rsync_args=(-aP --progress -e "ssh -p ${FILE_PORT}")
usage() { usage() {
echo "Usage: ${0##*/} [options]" echo "Usage: ${0##*/} [options]"
echo " -p Source folder to upload [default: ${profile}]" echo " -p Source folder to upload [default: ${PROFILE}]"
echo " -l Limit bandwidth in kB/s [default:${uplimit}]" echo " -l Limit bandwidth in kB/s [default:${UPLIMIT}]"
echo ' -u Update remote directory' echo ' -u Update remote directory'
echo ' -t Create iso torrent'
echo ' -q Query settings and pretend upload'
echo ' -v Verbose output' echo ' -v Verbose output'
echo ' -h This help' echo ' -h This help'
echo '' echo ''
@@ -73,16 +54,14 @@ usage() {
exit $1 exit $1
} }
opts='p:l:uvtqh' opts='p:l:uvh'
while getopts "${opts}" arg; do while getopts "${opts}" arg; do
case "${arg}" in case "${arg}" in
p) profile="$OPTARG" ;; p) PROFILE="$OPTARG" ;;
l) uplimit="$OPTARG" ;; l) UPLIMIT="$OPTARG" ;;
u) update=true; rsync_args+=(-u) ;; u) update=true; rsync_args+=(-u) ;;
t) torrent=true ;;
v) verbose=true; rsync_args+=(-v --stats) ;; v) verbose=true; rsync_args+=(-v --stats) ;;
q) pretend=true; rsync_args+=(-n) ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;; *) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
@@ -92,10 +71,8 @@ shift $(($OPTIND - 1))
timer_start=$(get_timer) timer_start=$(get_timer)
rsync_args+=(--bwlimit=${uplimit}) rsync_args+=(--bwlimit=${UPLIMIT})
prepare_transfer prepare_transfer
${pretend} && display_settings #&& exit 1
sync_dir sync_dir

View File

@@ -9,62 +9,48 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
LIBDIR='@libdir@' LIBDIR='@libdir@'
SYSCONFDIR='@sysconfdir@' SYSCONFDIR='@sysconfdir@'
DATADIR='@datadir@'
[[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh
import ${LIBDIR}/util.sh import ${LIBDIR}/util.sh
import ${LIBDIR}/util-pkg.sh import ${LIBDIR}/util-pkg.sh
del_from_repo(){ update_repo(){
local ver local repo="$1" pkgfile ver ext=db.tar.xz
local repo="$1" local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
local repo_path=${repos_root}/$repo/os/${target_arch}
source PKGBUILD
for name in ${pkgname[@]};do
[[ $arch == any ]] && CARCH=any
ver=$(get_full_version $name)
if pkgfile=$(find_cached_package "$name" "$ver" "$CARCH");then
info "pkgfile: %s" "${pkgfile##*/}"
repo-remove -R $repo_path/$repo.db.tar.xz $name
rm -v $repo_path/${pkgfile##*/}{,.sig}
fi
done
}
add_to_repo(){
local ver pkgfile=
local repo="$1"
local repo_path=${repos_root}/$repo/os/${target_arch}
source PKGBUILD source PKGBUILD
for name in ${pkgname[@]};do for name in ${pkgname[@]};do
[[ $arch == any ]] && CARCH=any pkgarch=$(get_pkg_arch "$name")
ver=$(get_full_version $name) ver=$(get_full_version "$name")
if pkgfile=$(find_cached_package "$name" "$ver" "$CARCH"); then if pkgfile=$(find_cached_package "$name" "$ver" "$pkgarch");then
info "pkgfile: %s" "${pkgfile##*/}" local pkg=${pkgfile##*/}
if ${sign_pkg};then info "Found: %s" "$pkg"
[[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig if ${add_pkg};then
signfile ${pkgfile} local action='add'
packages+=("$pkg")
# checkpkg "${pkgfile}" || return 2
if ${sign_pkg};then
[[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig
signfile ${pkgfile}
fi
ln -sf ${pkgfile}{,.sig} $repo_path/
elif ${del_pkg};then
local action='remove'
packages+=("$name")
[[ -e $repo_path/$pkg ]] && rm $repo_path/$pkg
[[ -e $repo_path/$pkg.sig ]] && rm $repo_path/$pkg.sig
fi fi
ln -sf ${pkgfile}{,.sig} $repo_path/
repo-add -R $repo_path/$repo.db.tar.xz $pkgfile
fi fi
done done
} cd $repo_path
[[ -n $action ]] && repo-$action -R $repo.$ext ${packages[@]}
display_settings(){ return 0
show_version
show_config
msg "OPTIONS:"
msg2 "repository: %s" "${repository}"
msg "ARGS:"
msg2 "add_pkg: %s" "${add_pkg}"
msg2 "del_pkg: %s" "${del_pkg}"
msg2 "sign_pkg: %s" "${sign_pkg}"
} }
load_user_info load_user_info
@@ -73,36 +59,31 @@ load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artoo
load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
load_vars /etc/makepkg.conf load_vars /etc/makepkg.conf
pretend=false
add_pkg=false add_pkg=false
del_pkg=false del_pkg=false
repository=
sign_pkg=false sign_pkg=false
cmd=${0##*/}
dest_repo=${cmd#*-}
usage() { usage() {
echo "Usage: ${0##*/} [options]" echo "Usage: ${cmd} [options]"
echo " -d Destination repository [default:${repository}]" echo ' -a Add package(s) to repository'
echo ' -a Add package to repository' echo ' -r Remove package(s) from repository'
echo ' -r Remove package from repository' echo ' -s Sign package(s)'
echo ' -s Sign package'
echo ' -q Query settings and pretend upload'
echo ' -h This help' echo ' -h This help'
echo '' echo ''
echo '' echo ''
exit $1 exit $1
} }
orig_argv=("$0" "$@") opts='arsh'
opts='d:arsqh'
while getopts "${opts}" arg; do while getopts "${opts}" arg; do
case "${arg}" in case "${arg}" in
d) repository="$OPTARG" ;; a) add_pkg=true; del_pkg=false ;;
a) add_pkg=true ;; r) del_pkg=true; add_pkg=false ;;
r) del_pkg=true ;;
s) sign_pkg=true ;; s) sign_pkg=true ;;
q) pretend=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;; *) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
@@ -110,12 +91,6 @@ done
shift $(($OPTIND - 1)) shift $(($OPTIND - 1))
prepare_dir "${repos_root}" prepare_dir "${REPOS_ROOT}"
${pretend} && display_settings && exit 1 update_repo "${dest_repo}"
${del_pkg} && del_from_repo "${repository}"
${add_pkg} && add_to_repo "${repository}"
exit 0

View File

@@ -9,13 +9,30 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
LIBDIR='@libdir@' LIBDIR='@libdir@'
[[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh [[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh
import ${LIBDIR}/util-pkg.sh import ${LIBDIR}/util-pkg.sh
# $1: sofile
# $2: soarch
process_sofile() {
# extract the library name: libfoo.so
local soname="${1%.so?(+(.+([0-9])))}".so
# extract the major version: 1
soversion="${1##*\.so\.}"
if [[ "$soversion" = "$1" ]] && (($IGNORE_INTERNAL)); then
continue
fi
if ! in_array "${soname}=${soversion}-$2" ${soobjects[@]}; then
# libfoo.so=1-64
msg "${soname}=${soversion}-$2"
soobjects+=("${soname}=${soversion}-$2")
fi
}
set -e set -e
shopt -s extglob shopt -s extglob

View File

@@ -9,7 +9,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
LIBDIR='@libdir@' LIBDIR='@libdir@'

View File

@@ -9,7 +9,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
shopt -s extglob shopt -s extglob
@@ -93,6 +93,7 @@ usage() {
usage: ${0##*/} [options] root usage: ${0##*/} [options] root
Options: Options:
-f FILTER Restrict output to mountpoints matching the prefix FILTER
-L Use labels for source identifiers (shortcut for -t LABEL) -L Use labels for source identifiers (shortcut for -t LABEL)
-p Exclude pseudofs mounts (default behavior) -p Exclude pseudofs mounts (default behavior)
-P Include printing mounts -P Include printing mounts
@@ -112,10 +113,11 @@ if [[ -z $1 || $1 = @(-h|--help) ]]; then
exit $(( $# ? 0 : 1 )) exit $(( $# ? 0 : 1 ))
fi fi
while getopts ':LPpt:U' flag; do while getopts ':f:LPpt:U' flag; do
case $flag in case $flag in
L) bytag=LABEL ;; L) bytag=LABEL ;;
U) bytag=UUID ;; U) bytag=UUID ;;
f) prefixfilter=$OPTARG ;;
P) pseudofs=1 ;; P) pseudofs=1 ;;
p) pseudofs=0 ;; p) pseudofs=0 ;;
t) bytag=${OPTARG^^} ;; t) bytag=${OPTARG^^} ;;
@@ -139,6 +141,8 @@ while read -r src target fstype opts fsroot; do
continue continue
fi fi
[[ $target = "$prefixfilter"* ]] || continue
# default 5th and 6th columns # default 5th and 6th columns
dump=0 pass=2 dump=0 pass=2

View File

@@ -9,7 +9,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
LIBDIR='@libdir@' LIBDIR='@libdir@'

View File

@@ -9,7 +9,9 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
chroot_version=@chroot_version@
LIBDIR='@libdir@' LIBDIR='@libdir@'
@@ -20,19 +22,18 @@ import ${LIBDIR}/util-chroot.sh
working_dir='' working_dir=''
files=() files=()
build_locales=false
keep_mirrors=false
keep_flag=''
nosetarch=false nosetarch=false
copy_mirrorlist=true
basestrap_args=(-Gc)
usage() { usage() {
echo "Usage: ${0##*/} [options] working-dir package-list..." echo "Usage: ${0##*/} [options] working-dir package-list..."
echo ' options:' echo ' options:'
echo ' -C <file> Location of a pacman config file' echo ' -C <file> Location of a pacman config file'
echo ' -M <file> Location of a makepkg config file' echo ' -M <file> Location of a makepkg config file'
echo ' -U <url> Set a specific mirror'
echo ' -c <dir> Set pacman cache' echo ' -c <dir> Set pacman cache'
echo ' -f <file> Copy file from the host to the chroot' echo ' -f <file> Copy file from the host to the chroot'
echo ' -m Do not copy mirrorlist to the chroot'
echo ' -s Do not run setarch' echo ' -s Do not run setarch'
echo ' -h This message' echo ' -h This message'
exit 1 exit 1
@@ -40,16 +41,16 @@ usage() {
orig_argv=("$0" "$@") orig_argv=("$0" "$@")
opts='hC:M:U:c:f:s' opts='hC:M:c:f:sm'
while getopts ${opts} arg; do while getopts ${opts} arg; do
case "${arg}" in case "${arg}" in
C) pacman_conf="$OPTARG" ;; C) pacman_conf="$OPTARG" ;;
M) makepkg_conf="$OPTARG" ;; M) makepkg_conf="$OPTARG" ;;
U) mirror="$OPTARG" ;;
c) cache_dir="$OPTARG" ;; c) cache_dir="$OPTARG" ;;
f) files+=("$OPTARG") ;; f) files+=("$OPTARG") ;;
s) nosetarch=true ;; s) nosetarch=true ;;
m) copy_mirrorlist=false; basestrap_args+=(-M) ;;
h|?) usage ;; h|?) usage ;;
*) error "invalid argument '%s'" "$arg"; usage ;; *) error "invalid argument '%s'" "$arg"; usage ;;
esac esac
@@ -71,9 +72,6 @@ else
cache_dirs=(${cache_dir}) cache_dirs=(${cache_dir})
fi fi
basestrap_args=(-Gc ${pacman_conf:+-C "$pacman_conf"})
[[ -n ${mirror} ]] && basestrap_args+=(-M)
umask 0022 umask 0022
#[[ -e $working_dir ]] && die "Working directory '%s' already exists" "$working_dir" #[[ -e $working_dir ]] && die "Working directory '%s' already exists" "$working_dir"
@@ -102,17 +100,21 @@ while read -r varname; do
_env+=("$varname=${!varname}") _env+=("$varname=${!varname}")
done < <(declare -x | sed -r 's/^declare -x ([^=]*)=.*/\1/' | grep -i '_proxy$') done < <(declare -x | sed -r 's/^declare -x ([^=]*)=.*/\1/' | grep -i '_proxy$')
env -i "${_env[@]}" \ env -i "${_env[@]}" \
basestrap "${basestrap_args[@]}" "$working_dir" ${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages' basestrap "${basestrap_args[@]}" ${pacman_conf:+-C "$pacman_conf"} "$working_dir" ${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages'
echo "$version" > "$working_dir/.artools" echo "$chroot_version" > "$working_dir/.artools"
default_locale "set" "$working_dir" if [[ ! -f "$working_dir/etc/locale.gen.orig" ]];then
mv "$working_dir/etc/locale.gen" "$working_dir/etc/locale.gen.orig"
fi
printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen"
echo 'LANG=en_US.UTF-8' > "$working_dir/etc/locale.conf"
dbus-uuidgen --ensure="$working_dir"/etc/machine-id
chroot_args=(${pacman_conf:+-C "$pacman_conf"} ${makepkg_conf:+-M "$makepkg_conf"} ${cache_dir:+-c "$cache_dir"}) chroot_args=(${pacman_conf:+-C "$pacman_conf"} ${makepkg_conf:+-M "$makepkg_conf"} ${cache_dir:+-c "$cache_dir"})
${nosetarch} && chroot_args+=(${nosetarch:+-s}) ${nosetarch} && chroot_args+=(${nosetarch:+-s})
[[ -n ${mirror} ]] && default_mirror "$working_dir" "$mirror"
exec chroot-run \ exec chroot-run \
"${chroot_args[@]}" \ "${chroot_args[@]}" \
"$working_dir" locale-gen "$working_dir" locale-gen

View File

@@ -9,7 +9,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
LIBDIR='@libdir@' LIBDIR='@libdir@'
@@ -58,35 +58,39 @@ usage() {
exit 1 exit 1
} }
sync_chroot() { # {{{ functions
local chrootdir=$1
local copy=$2
local copydir=''
if [[ ${copy:0:1} = / ]]; then
copydir=$copy
else
copydir="$chrootdir/$copy"
fi
if [[ "$chrootdir/root" -ef "$copydir" ]]; then # Usage: sync_chroot $rootdir $copydir [$copy]
sync_chroot() {
local rootdir=$1
local copydir=$2
local copy=${3:-$2}
if [[ "$rootdir" -ef "$copydir" ]]; then
error 'Cannot sync copy with itself: %s' "$copydir" error 'Cannot sync copy with itself: %s' "$copydir"
return 1 return 1
fi fi
# Get a read lock on the root chroot to make # Get a read lock on the root chroot to make
# sure we don't clone a half-updated chroot # sure we don't clone a half-updated chroot
slock 8 "$chrootdir/root.lock" \ slock 8 "$rootdir.lock" \
"Locking clean chroot [%s]" "$chrootdir/root" "Locking clean chroot [%s]" "$rootdir"
stat_busy "Synchronizing chroot copy [%s] -> [%s]" "$chrootdir/root" "$copydir" stat_busy "Synchronizing chroot copy [%s] -> [%s]" "$rootdir" "$copy"
if is_btrfs "$chrootdir" && ! mountpoint -q "$copydir"; then if is_subvolume "$rootdir" && is_same_fs "$rootdir" "$(dirname -- "$copydir")" && ! mountpoint -q "$copydir"; then
subvolume_delete_recursive "$copydir" || if is_subvolume "$copydir"; then
die "Unable to delete subvolume %s" "$copydir" subvolume_delete_recursive "$copydir" ||
btrfs subvolume snapshot "$chrootdir/root" "$copydir" >/dev/null || die "Unable to delete subvolume %s" "$copydir"
else
# avoid change of filesystem in case of an umount failure
rm --recursive --force --one-file-system "$copydir" ||
die "Unable to delete %s" "$copydir"
fi
btrfs subvolume snapshot "$rootdir" "$copydir" >/dev/null ||
die "Unable to create subvolume %s" "$copydir" die "Unable to create subvolume %s" "$copydir"
else else
mkdir -p "$copydir" mkdir -p "$copydir"
rsync -a --delete -q -W -x "$chrootdir/root/" "$copydir" rsync -a --delete -q -W -x "$rootdir/" "$copydir"
fi fi
stat_done stat_done
@@ -103,7 +107,7 @@ delete_chroot() {
local copy=${1:-$2} local copy=${1:-$2}
stat_busy "Removing chroot copy [%s]" "$copy" stat_busy "Removing chroot copy [%s]" "$copy"
if is_btrfs "$chrootdir" && ! mountpoint -q "$copydir"; then if is_subvolume "$copydir" && ! mountpoint -q "$copydir"; then
subvolume_delete_recursive "$copydir" || subvolume_delete_recursive "$copydir" ||
die "Unable to delete subvolume %s" "$copydir" die "Unable to delete subvolume %s" "$copydir"
else else
@@ -128,7 +132,10 @@ install_packages() {
pkgnames=("${install_pkgs[@]##*/}") pkgnames=("${install_pkgs[@]##*/}")
cp -- "${install_pkgs[@]}" "$copydir/root/" cp -- "${install_pkgs[@]}" "$copydir/root/"
chroot-run -r "${bindmounts_ro[*]}" -w "${bindmounts_rw[*]}" "$copydir" \ chroot-run \
-r "${bindmounts_ro[@]}" \
-r "${bindmounts_rw[@]}" \
"$copydir" \
pacman -U --noconfirm -- "${pkgnames[@]/#//root/}" pacman -U --noconfirm -- "${pkgnames[@]/#//root/}"
ret=$? ret=$?
rm -- "${pkgnames[@]/#/$copydir/root/}" rm -- "${pkgnames[@]/#/$copydir/root/}"
@@ -148,24 +155,21 @@ prepare_chroot() {
[[ $keepbuilddir = true ]] || rm -rf "$copydir/build" [[ $keepbuilddir = true ]] || rm -rf "$copydir/build"
local builduser_uid="${SUDO_UID:-$UID}" local builduser_uid builduser_gid
local builduser_gid="$(id -g "$builduser_uid")" builduser_uid="${SUDO_UID:-$UID}"
builduser_gid="$(id -g "$builduser_uid")"
local install="install -o $builduser_uid -g $builduser_gid" local install="install -o $builduser_uid -g $builduser_gid"
local x local x
# We can't use useradd without chrooting, otherwise it invokes PAM modules # We can't use useradd without chrooting, otherwise it invokes PAM modules
# which we might not be able to load (i.e. when building i686 packages on # which we might not be able to load (i.e. when building i686 packages on
# an x86_64 host). # an x86_64 host).
sed -e '/^builduser:/d' -i "$copydir"/etc/{passwd,group} sed -e '/^builduser:/d' -i "$copydir"/etc/{passwd,shadow,group}
printf >>"$copydir/etc/group" 'builduser:x:%d:\n' $builduser_gid printf >>"$copydir/etc/group" 'builduser:x:%d:\n' "$builduser_gid"
printf >>"$copydir/etc/passwd" 'builduser:x:%d:%d:builduser:/build:/bin/bash\n' $builduser_uid $builduser_gid printf >>"$copydir/etc/passwd" 'builduser:x:%d:%d:builduser:/build:/bin/bash\n' "$builduser_uid" "$builduser_gid"
printf >>"$copydir/etc/shadow" 'builduser:!!:%d::::::\n' "$(( $(date -u +%s) / 86400 ))"
$install -d "$copydir"/{build,build/.gnupg,startdir,{pkg,srcpkg,src,log}dest} $install -d "$copydir"/{build,startdir,{pkg,srcpkg,src,log}dest}
for x in .gnupg/pubring.{kbx,gpg}; do
[[ -r $USER_HOME/$x ]] || continue
$install -m 644 "$USER_HOME/$x" "$copydir/build/$x"
done
sed -e '/^MAKEFLAGS=/d' -e '/^PACKAGER=/d' -i "$copydir/etc/makepkg.conf" sed -e '/^MAKEFLAGS=/d' -e '/^PACKAGER=/d' -i "$copydir/etc/makepkg.conf"
for x in BUILDDIR=/build PKGDEST=/pkgdest SRCPKGDEST=/srcpkgdest SRCDEST=/srcdest LOGDEST=/logdest \ for x in BUILDDIR=/build PKGDEST=/pkgdest SRCPKGDEST=/srcpkgdest SRCDEST=/srcdest LOGDEST=/logdest \
@@ -202,14 +206,23 @@ _chrootbuild() {
# No coredumps # No coredumps
ulimit -c 0 ulimit -c 0
exec </dev/console . /etc/locale.conf
export LANG=C
export TERM=$TERM
# shellcheck source=/dev/null
. /etc/profile . /etc/profile
# Beware, there are some stupid arbitrary rules on how you can
# use "$" in arguments to commands with "sudo -i". ${foo} or
# ${1} is OK, but $foo or $1 isn't.
# https://bugzilla.sudo.ws/show_bug.cgi?id=765
sudo --preserve-env=SOURCE_DATE_EPOCH -iu builduser bash -c 'cd /startdir; makepkg "$@"' -bash "$@" sudo --preserve-env=SOURCE_DATE_EPOCH -iu builduser bash -c 'cd /startdir; makepkg "$@"' -bash "$@"
ret=$?
case $ret in
0|14)
return 0;;
*)
return $ret;;
esac
} }
_chrootnamcap() { _chrootnamcap() {
@@ -220,20 +233,20 @@ _chrootnamcap() {
done done
} }
# Usage: download_sources $copydir $src_owner # Usage: download_sources $copydir $makepkg_user
# Globals: # Globals:
# - SRCDEST # - SRCDEST
# - USER
download_sources() { download_sources() {
local copydir=$1 local copydir=$1
local makepkg_user=$2 local makepkg_user=$2
local builddir local builddir
builddir="$(mktemp -d)" builddir="$(mktemp -d)"
chmod 1777 "$builddir" chown "$makepkg_user:" "$builddir"
# Ensure sources are downloaded # Ensure sources are downloaded
sudo -u "$makepkg_user" env SRCDEST="$SRCDEST" BUILDDIR="$builddir" \ sudo -u "$makepkg_user" --preserve-env=GNUPGHOME \
env SRCDEST="$SRCDEST" BUILDDIR="$builddir" \
makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o || makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o ||
die "Could not download sources." die "Could not download sources."
@@ -245,6 +258,7 @@ download_sources() {
# Globals: # Globals:
# - PKGDEST # - PKGDEST
# - LOGDEST # - LOGDEST
# - SRCPKGDEST
move_products() { move_products() {
local copydir=$1 local copydir=$1
local src_owner=$2 local src_owner=$2
@@ -292,8 +306,8 @@ main() {
chrootdir= chrootdir=
passeddir= passeddir=
makepkg_user= makepkg_user=
declare -ga install_pkgs declare -a install_pkgs
declare -gi ret=0 declare -i ret=0
bindmounts_ro=() bindmounts_ro=()
bindmounts_rw=() bindmounts_rw=()
@@ -305,7 +319,7 @@ main() {
local opts='hcur:I:l:nTD:d:U:' local opts='hcur:I:l:nTD:d:U:'
while getopts ${opts} arg; do while getopts "${opts}" arg; do
case "$arg" in case "$arg" in
c) clean_first=true ;; c) clean_first=true ;;
D) bindmounts_ro+=("$OPTARG") ;; D) bindmounts_ro+=("$OPTARG") ;;
@@ -325,7 +339,7 @@ main() {
[[ -n $makepkg_user && -z $(id -u "$makepkg_user") ]] && die 'Invalid makepkg user.' [[ -n $makepkg_user && -z $(id -u "$makepkg_user") ]] && die 'Invalid makepkg user.'
makepkg_user=${makepkg_user:-${SUDO_USER:-$USER}} makepkg_user=${makepkg_user:-${SUDO_USER:-$USER}}
check_root check_root SOURCE_DATE_EPOCH,GNUPGHOME
# Canonicalize chrootdir, getting rid of trailing / # Canonicalize chrootdir, getting rid of trailing /
chrootdir=$(readlink -e "$passeddir") chrootdir=$(readlink -e "$passeddir")
@@ -355,7 +369,7 @@ main() {
umask 0022 umask 0022
load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" load_vars "${XDG_CONFIG_HOME:-$USER_HOME/.config}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
load_vars /etc/makepkg.conf load_vars /etc/makepkg.conf
# Use PKGBUILD directory if these don't exist # Use PKGBUILD directory if these don't exist
@@ -368,11 +382,14 @@ main() {
lock 9 "$copydir.lock" "Locking chroot copy [%s]" "$copy" lock 9 "$copydir.lock" "Locking chroot copy [%s]" "$copy"
if [[ ! -d $copydir ]] || $clean_first; then if [[ ! -d $copydir ]] || $clean_first; then
sync_chroot "$chrootdir" "$copy" sync_chroot "$chrootdir/root" "$copydir" "$copy"
fi fi
$update_first && chroot-run -r "${bindmounts_ro[*]}" -w "${bindmounts_rw[*]}" "$copydir" \ $update_first && chroot-run \
pacman -Syu --noconfirm -r "${bindmounts_ro[@]}" \
-w "${bindmounts_rw[@]}" \
"$copydir" \
pacman -Syu --noconfirm
if [[ -n ${install_pkgs[*]:-} ]]; then if [[ -n ${install_pkgs[*]:-} ]]; then
install_packages "$copydir" "${install_pkgs[@]}" install_packages "$copydir" "${install_pkgs[@]}"
@@ -386,14 +403,18 @@ main() {
exit 1 exit 1
fi fi
download_sources "$copydir" "$src_owner" download_sources "$copydir" "$makepkg_user"
prepare_chroot "$copydir" "$USER_HOME" "$keepbuilddir" "$run_namcap" prepare_chroot "$copydir" "$USER_HOME" "$keepbuilddir" "$run_namcap"
bindmounts_rw+=("${PWD}:/startdir" "${SRCDEST}:/srcdest") bindmounts_rw+=("${PWD}:/startdir" "${SRCDEST}:/srcdest")
if chroot-run -r "${bindmounts_ro[*]}" -w "${bindmounts_rw[*]}" "$copydir" \ if chroot-run \
/chrootbuild "${makepkg_args[@]}"; then -r "${bindmounts_ro[*]}" \
-w "${bindmounts_rw[*]}" \
"$copydir" \
/chrootbuild "${makepkg_args[@]}"
then
move_products "$copydir" "$src_owner" move_products "$copydir" "$src_owner"
else else
(( ret += 1 )) (( ret += 1 ))

44
bin/pkg2yaml.in Normal file
View File

@@ -0,0 +1,44 @@
#!/bin/bash
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
VERSION=@version@
VERSION=0.10.4.r2.gd0e3c4e
if [[ -f "$1"/PKGBUILD ]]; then
LIBRARY=${LIBRARY:-'/usr/share/makepkg'}
for lib in "$LIBRARY"/*.sh; do
source "$lib"
done
. /etc/makepkg.conf
. "$1"/PKGBUILD
pkgfile=$(print_all_package_names)
fi
NL=$'\n'
Yaml="%YAML 1.2"$NL
Yaml+="---"$NL
Yaml+="pkgfile:"$NL
for f in ${pkgfile[@]};do
Yaml+=" - ${f##*/}"$NL
done
Yaml+="pkgname:"$NL
for n in ${pkgname[@]};do
Yaml+=" - ${n##*/}"$NL
done
printf '%s' "${Yaml}"

View File

@@ -9,7 +9,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
version=@version@ VERSION=@version@
LIBDIR='@libdir@' LIBDIR='@libdir@'

View File

@@ -1,274 +0,0 @@
def ADD_REPO = ''
def RM_REPO = ''
def IS_ADD = 'false'
def IS_REMOVE = 'false'
def IS_BUILD = 'false'
def PKG_TRUNK = ''
def PKG_PATH = ''
pipeline {
agent any
options {
skipDefaultCheckout()
timestamps()
}
stages {
stage('Checkout') {
steps {
script {
checkout scm
def currentCommit = sh(returnStdout: true, script: 'git rev-parse @').trim()
echo "currentCommit: ${currentCommit}"
def changedFilesStatus = sh(returnStdout: true, script: "git show --pretty=format: --name-status ${currentCommit}").tokenize('\n')
def changedPkgStatus = []
def pkgPath = []
int entryCount = 0
for ( int i = 0; i < changedFilesStatus.size(); i++ ) {
def entry = changedFilesStatus[i].split()
def fileStatus = entry[0]
entryCount = entry.size()
for ( int j = 1; j < entry.size(); j++ ) {
if ( entry[j].contains('/PKGBUILD') && entry[j].contains('/repos') ){
changedPkgStatus << "${fileStatus} " + entry[j].minus('/PKGBUILD')
pkgPath << entry[j].minus('/PKGBUILD')
}
}
}
int pkgCount = changedPkgStatus.size()
int pkgPathCount = pkgPath.size()
echo "pkgCount: ${pkgCount}"
echo "entryCount: ${entryCount}"
echo "pkgPathCount: ${pkgPathCount}"
echo "changedPkgStatus: ${changedPkgStatus}"
if ( pkgCount > 0 ) {
if ( entryCount == 2 && pkgCount == 2 ) {
def pkgEntry1 = changedPkgStatus[0].split()
def pkgEntry2 = changedPkgStatus[1].split()
def srcPath = []
def pkgStatus = []
srcPath << pkgEntry1[1]
srcPath << pkgEntry2[1]
pkgStatus << pkgEntry1[0]
pkgStatus << pkgEntry2[0]
def buildInfo1 = srcPath[0].tokenize('/')
def buildInfo2 = srcPath[1].tokenize('/')
if ( pkgStatus[0] == "M" ) {
IS_ADD = 'true'
if ( srcPath[0].contains('community-testing') ) {
ADD_REPO = 'galaxy-gremlins'
} else if ( srcPath[0].contains('community-x86_64') || srcPath[0].contains('community-any') ) {
ADD_REPO = 'galaxy'
}
if ( srcPath[0].contains('multilib-testing') ) {
ADD_REPO = 'lib32-gremlins'
} else if ( srcPath[0].contains('multilib-x86_64') ) {
ADD_REPO = 'lib32'
}
} else if ( pkgStatus[1] == "M" ) {
IS_ADD = 'true'
if ( srcPath[1].contains('community-testing') ) {
ADD_REPO = 'galaxy-gremlins'
} else if ( srcPath[1].contains('community-x86_64') || srcPath[1].contains('community-any') ) {
ADD_REPO = 'galaxy'
}
if ( srcPath[1].contains('multilib-testing') ) {
ADD_REPO = 'lib32-gremlins'
} else if ( srcPath[1].contains('multilib-x86_64') ) {
ADD_REPO = 'lib32'
}
}
if ( pkgStatus[0] == "D" ) {
IS_REMOVE = 'true'
if ( srcPath[0].contains('community-testing') ) {
RM_REPO = 'galaxy-gremlins'
} else if ( srcPath[0].contains('community-x86_64') || srcPath[0].contains('community-any') ) {
RM_REPO = 'galaxy'
}
if ( srcPath[0].contains('multilib-testing') ) {
RM_REPO = 'lib32-gremlins'
} else if ( srcPath[0].contains('multilib-x86_64') ) {
RM_REPO = 'lib32'
}
} else if ( pkgStatus[1] == "D" ) {
IS_REMOVE = 'true'
if ( srcPath[1].contains('community-testing') ) {
RM_REPO = 'galaxy-gremlins'
} else if ( srcPath[1].contains('community-x86_64') || srcPath[1].contains('community-any') ) {
RM_REPO = 'galaxy'
}
if ( srcPath[1].contains('multilib-testing') ) {
RM_REPO = 'lib32-gremlins'
} else if ( srcPath[1].contains('multilib-x86_64') ) {
RM_REPO = 'lib32'
}
}
PKG_TRUNK = buildInfo1[0] + '/trunk'
}
if ( entryCount == 3 && pkgCount == 2 ) {
def pkgEntry = changedPkgStatus[0].split()
def pkgStatus = pkgEntry[0]
def buildInfo1 = pkgPath[0].tokenize('/')
def buildInfo2 = pkgPath[1].tokenize('/')
if ( pkgStatus.contains('R') ) {
IS_ADD = 'true'
IS_REMOVE = 'true'
if ( pkgPath[0].contains('community-staging') && pkgPath[1].contains('community-testing') ) {
ADD_REPO = 'galaxy-gremlins'
RM_REPO = 'galaxy-goblins'
} else if ( pkgPath[0].contains('community-testing') && pkgPath[1].contains('community-staging') ) {
ADD_REPO = 'galaxy-goblins'
RM_REPO = 'galaxy-gremlins'
}
if ( pkgPath[0].contains('community-testing') && pkgPath[1].contains('community-x86_64') || pkgPath[0].contains('community-any') ) {
ADD_REPO = 'galaxy-gremlins'
RM_REPO = 'galaxy'
} else if ( pkgPath[0].contains('community-x86_64') || pkgPath[0].contains('community-any') && pkgPath[1].contains('community-testing') ) {
ADD_REPO = 'galaxy'
RM_REPO = 'galaxy-gremlins'
}
if ( pkgPath[0].contains('multilib-staging') && pkgPath[1].contains('multilib-testing') ) {
ADD_REPO = 'lib32-gremlins'
RM_REPO = 'lib32-goblins'
} else if ( pkgPath[0].contains('multilib-testing') && pkgPath[1].contains('multilib-staging') ) {
ADD_REPO = 'lib32-goblins'
RM_REPO = 'lib32-gremlins'
}
if ( pkgPath[0].contains('multilib-testing') && pkgPath[1].contains('multilib-x86_64') ) {
ADD_REPO = 'lib32'
RM_REPO = 'lib32-gremlins'
} else if ( pkgPath[0].contains('multilib-x86_64') && pkgPath[1].contains('multilib-testing') ) {
ADD_REPO = 'lib32-gremlins'
RM_REPO = 'lib32'
}
}
PKG_TRUNK = buildInfo1[0] + '/trunk'
}
if ( pkgCount == 1 ) {
def pkgEntry = changedPkgStatus[0].split()
def pkgStatus = pkgEntry[0]
def srcPath = pkgEntry[1]
def buildInfo = srcPath.tokenize('/')
if ( srcPath.contains('community-staging') ) {
if ( pkgStatus == 'A' || pkgStatus == 'M' ) {
IS_BUILD = 'true'
}
if ( pkgStatus == 'D' ) {
IS_REMOVE = 'true'
}
ADD_REPO = 'galaxy-goblins'
RM_REPO = ADD_REPO
} else if ( srcPath.contains('community-testing') ) {
if ( pkgStatus == 'A' || pkgStatus == 'M' ) {
IS_BUILD = 'true'
}
if ( pkgStatus == 'D' ) {
IS_REMOVE = 'true'
}
ADD_REPO = 'galaxy-gremlins'
RM_REPO = ADD_REPO
} else if ( srcPath.contains('community-x86_64') || srcPath.contains('community-any') ) {
if ( pkgStatus == 'A' || pkgStatus == 'M' ) {
IS_BUILD = 'true'
}
if ( pkgStatus == 'D' ) {
IS_REMOVE = 'true'
}
ADD_REPO = 'galaxy'
RM_REPO = ADD_REPO
}
if ( srcPath.contains('multilib-staging') ) {
if ( pkgStatus == 'A' || pkgStatus == 'M' ) {
IS_BUILD = 'true'
}
if ( pkgStatus == 'D' ) {
IS_REMOVE = 'true'
}
ADD_REPO = 'lib32-goblins'
RM_REPO = ADD_REPO
} else if ( srcPath.contains('multilib-testing') ) {
if ( pkgStatus == 'A' || pkgStatus == 'M' ) {
IS_BUILD = 'true'
}
if ( pkgStatus == 'D' ) {
IS_REMOVE = 'true'
}
ADD_REPO = 'lib32-gremlins'
RM_REPO = ADD_REPO
} else if ( srcPath.contains('multilib-x86_64') ) {
if ( pkgStatus == 'A' || pkgStatus == 'M' ) {
IS_BUILD = 'true'
}
if ( pkgStatus == 'D' ) {
IS_REMOVE = 'true'
}
ADD_REPO = 'lib32'
RM_REPO = ADD_REPO
}
PKG_PATH = srcPath
PKG_TRUNK = buildInfo[0] + '/trunk'
}
}
}
}
}
stage('Build') {
environment {
BUILDBOT_GPGP = credentials('BUILDBOT_GPGP')
}
when {
expression { return IS_BUILD == 'true' }
}
steps {
dir("${PKG_PATH}") {
sh "buildpkg -r ${ADD_REPO}"
}
}
post {
success {
dir("${PKG_PATH}") {
sh "deploypkg -a -d ${ADD_REPO} -s"
}
}
}
}
stage('Add') {
when {
expression { return IS_ADD == 'true' }
}
steps {
dir("${PKG_TRUNK}") {
sh "deploypkg -a -d ${ADD_REPO}"
}
}
}
stage('Remove') {
when {
expression { return IS_REMOVE == 'true' }
}
steps {
dir("${PKG_TRUNK}") {
sh "deploypkg -r -d ${RM_REPO}"
}
}
}
}
}

View File

@@ -1,241 +0,0 @@
def ADD_REPO = ''
def RM_REPO = ''
def IS_ADD = 'false'
def IS_REMOVE = 'false'
def IS_BUILD = 'false'
def PKG_TRUNK = ''
def PKG_PATH = ''
pipeline {
agent any
options {
skipDefaultCheckout()
timestamps()
}
stages {
stage('Checkout') {
steps {
script {
checkout scm
def currentCommit = sh(returnStdout: true, script: 'git rev-parse @').trim()
echo "currentCommit: ${currentCommit}"
def changedFilesStatus = sh(returnStdout: true, script: "git show --pretty=format: --name-status ${currentCommit}").tokenize('\n')
def changedPkgStatus = []
def pkgPath = []
int entryCount = 0
for ( int i = 0; i < changedFilesStatus.size(); i++ ) {
def entry = changedFilesStatus[i].split()
def fileStatus = entry[0]
entryCount = entry.size()
for ( int j = 1; j < entry.size(); j++ ) {
if ( entry[j].contains('/PKGBUILD') && entry[j].contains('/repos') ){
changedPkgStatus << "${fileStatus} " + entry[j].minus('/PKGBUILD')
pkgPath << entry[j].minus('/PKGBUILD')
}
}
}
int pkgCount = changedPkgStatus.size()
int pkgPathCount = pkgPath.size()
echo "pkgCount: ${pkgCount}"
echo "entryCount: ${entryCount}"
echo "pkgPathCount: ${pkgPathCount}"
echo "changedPkgStatus: ${changedPkgStatus}"
if ( pkgCount > 0 ) {
if ( entryCount == 2 && pkgCount == 2 ) {
def pkgEntry1 = changedPkgStatus[0].split()
def pkgEntry2 = changedPkgStatus[1].split()
def srcPath = []
def pkgStatus = []
srcPath << pkgEntry1[1]
srcPath << pkgEntry2[1]
pkgStatus << pkgEntry1[0]
pkgStatus << pkgEntry2[0]
def buildInfo1 = srcPath[0].tokenize('/')
def buildInfo2 = srcPath[1].tokenize('/')
if ( pkgStatus[0] == 'M' ) {
IS_ADD = 'true'
if ( srcPath[0].contains('testing') ) {
ADD_REPO = 'gremlins'
} else if ( srcPath[0].contains('core') ) {
ADD_REPO = 'system'
} else if ( srcPath[0].contains('extra') ) {
ADD_REPO = 'world'
}
} else if ( pkgStatus[1] == 'M' ) {
IS_ADD = 'true'
if ( srcPath[1].contains('testing') ) {
ADD_REPO = 'gremlins'
} else if ( srcPath[1].contains('core') ) {
ADD_REPO = ''
} else if ( srcPath[1].contains('extra') ) {
ADD_REPO = 'world'
}
}
if ( pkgStatus[0] == 'D' ) {
IS_REMOVE = 'true'
if ( srcPath[0].contains('testing') ) {
RM_REPO = 'gremlins'
} else if ( srcPath[0].contains('core') ) {
RM_REPO = 'system'
} else if ( srcPath[0].contains('extra') ) {
RM_REPO = 'world'
}
} else if ( pkgStatus[1] == 'D' ) {
IS_REMOVE = 'true'
if ( srcPath[1].contains('testing') ) {
RM_REPO = 'gremlins'
} else if ( srcPath[1].contains('core') ) {
RM_REPO = 'system'
} else if ( srcPath[1].contains('extra') ) {
RM_REPO = 'world'
}
}
PKG_TRUNK = buildInfo1[0] + '/trunk'
}
if ( entryCount == 3 && pkgCount == 2 ) {
def pkgEntry = changedPkgStatus[0].split()
def pkgStatus = pkgEntry[0]
def buildInfo1 = pkgPath[0].tokenize('/')
def buildInfo2 = pkgPath[1].tokenize('/')
if ( pkgStatus.contains('R') ) {
IS_ADD = 'true'
IS_REMOVE = 'true'
if ( pkgPath[0].contains('staging') && pkgPath[1].contains('testing') ) {
ADD_REPO = 'gremlins'
RM_REPO = 'goblins'
} else if ( pkgPath[0].contains('testing') && pkgPath[1].contains('staging') ) {
ADD_REPO = 'goblins'
RM_REPO = 'gremlins'
}
if ( pkgPath[0].contains('core') && pkgPath[1].contains('testing')) {
ADD_REPO = 'gremlins'
RM_REPO = 'system'
} else if ( pkgPath[0].contains('testing') && pkgPath[1].contains('core')) {
ADD_REPO = 'system'
RM_REPO = 'gremlins'
}
if ( pkgPath[0].contains('extra') && pkgPath[1].contains('testing')) {
ADD_REPO = 'gremlins'
RM_REPO = 'world'
} else if ( pkgPath[0].contains('testing') && pkgPath[1].contains('extra')) {
ADD_REPO = 'world'
RM_REPO = 'gremlins'
}
if ( pkgPath[0].contains('core') && pkgPath[1].contains('extra')) {
ADD_REPO = 'world'
RM_REPO = 'system'
} else if ( pkgPath[0].contains('extra') && pkgPath[1].contains('core')) {
ADD_REPO = 'system'
RM_REPO = 'world'
}
}
PKG_TRUNK = buildInfo1[0] + '/trunk'
}
if ( pkgCount == 1 ) {
def pkgEntry = changedPkgStatus[0].split()
def pkgStatus = pkgEntry[0]
def srcPath = pkgEntry[1]
def buildInfo = srcPath.tokenize('/')
if ( srcPath.contains('staging') ) {
if ( pkgStatus == 'A' || pkgStatus == 'M' ) {
IS_BUILD = 'true'
}
if ( pkgStatus == 'D' ) {
IS_REMOVE = 'true'
}
ADD_REPO = 'goblins'
RM_REPO = ADD_REPO
} else if ( srcPath.contains('testing') ) {
if ( pkgStatus == 'A' || pkgStatus == 'M' ) {
IS_BUILD = 'true'
}
if ( pkgStatus == 'D' ) {
IS_REMOVE = 'true'
}
ADD_REPO = 'gremlins'
RM_REPO = ADD_REPO
} else if ( srcPath.contains('core') ) {
if ( pkgStatus == 'A' || pkgStatus == 'M' ) {
IS_BUILD = 'true'
}
if ( pkgStatus == 'D' ) {
IS_REMOVE = 'true'
}
ADD_REPO = 'system'
RM_REPO = ADD_REPO
} else if ( srcPath.contains('extra') ) {
if ( pkgStatus == 'A' || pkgStatus == 'M' ) {
IS_BUILD = 'true'
}
if ( pkgStatus == 'D' ) {
IS_REMOVE = 'true'
}
ADD_REPO = 'world'
RM_REPO = ADD_REPO
}
PKG_PATH = srcPath
PKG_TRUNK = buildInfo[0] + '/trunk'
}
}
}
}
}
stage('Build') {
environment {
BUILDBOT_GPGP = credentials('BUILDBOT_GPGP')
}
when {
expression { return IS_BUILD == 'true' }
}
steps {
dir("${PKG_PATH}") {
sh "buildpkg -r ${ADD_REPO}"
}
}
post {
success {
dir("${PKG_PATH}") {
sh "deploypkg -a -d ${ADD_REPO} -s"
}
}
}
}
stage('Add') {
when {
expression { return IS_ADD == 'true' }
}
steps {
dir("${PKG_TRUNK}") {
sh "deploypkg -a -d ${ADD_REPO}"
}
}
}
stage('Remove') {
when {
expression { return IS_REMOVE == 'true' }
}
steps {
dir("${PKG_TRUNK}") {
sh "deploypkg -r -d ${RM_REPO}"
}
}
}
}
}

View File

@@ -3,60 +3,43 @@
############################################# #############################################
# build dir where buildpkg or buildiso chroots are created # build dir where buildpkg or buildiso chroots are created
# chroots_dir=/var/lib/artools # CHROOTS_DIR=/var/lib/artools
# the workspace directory # the workspace directory
# workspace_dir="/home/${OWNER}/artools-workspace" # WORKSPACE_DIR="/home/${OWNER}/artools-workspace"
############################################# #############################################
################ artools-pkg ################ ################ artools-pkg ################
############################################# #############################################
# host_tree_artix='https://github.com/artix-linux' # gitea user access token
# GIT_TOKEN=''
# host_tree_arch=git://projects.archlinux.org/svntogit # HOST_TREE_ARTIX='gitea@gitea.artixlinux.org:artix'
# HOST_TREE_ARCH=git://projects.archlinux.org/svntogit
# default repos root # default repos root
# repos_root=${workspace_dir}/repos # REPOS_ROOT=${WORKSPACE_DIR}/repos
############################################# #############################################
################ artools-iso ################ ################ artools-iso ################
############################################# #############################################
# the iso storage directory # the iso storage directory
# iso_pool="${workspace_dir}/iso" # ISO_POOL="${WORKSPACE_DIR}/iso"
# the dist release; default: auto # the dist release; default: auto
# iso_version=$(date +%Y%m%d) # ISO_VERSION=$(date +%Y%m%d)
# possible values: openrc, (s6, runit) not yet supported # possible values: openrc, runit (s6 not yet supported)
# initsys="openrc" # INITSYS="openrc"
# unset defaults to given value
# kernel="linux-lts"
# custom additional kernel args
# kernel_args=""
# gpg key; leave empty or commented to skip sfs signing # gpg key; leave empty or commented to skip sfs signing
# gpgkey="" # GPG_KEY=""
# set upload bandwidth limit in kB/s # set upload bandwidth limit in kB/s
# uplimit=100 # UPLIMIT=1000
# the torrent tracker urls, comma separated
# tracker_url='udp://mirror.strits.dk:6969'
# file_host="sourceforge.net"
# the server user # the server user
# account=[SetUser] # ACCOUNT=[SetUser]
# the server project
# project="artix-linux"
# host mirrors
# host_mirrors=('netcologne' 'freefr' 'netix' 'kent' '10gbps-io')
# Piece size, 2^n
# piece_size=21

View File

@@ -1,8 +0,0 @@
mkinitcpio-nfs-utils
nbd
>openrc artix-live-openrc
squashfs-tools
artix-live-portable-efi
virtualbox-guest-modules-artix
virtualbox-guest-utils
linux-lts-headers

View File

@@ -1,84 +0,0 @@
acpi
b43-fwcutter
bash
btrfs-progs
bzip2
coreutils
crda
dhclient
diffutils
dmraid
dnsmasq
dosfstools
e2fsprogs
ecryptfs-utils
exfat-utils
f2fs-tools
file
filesystem
findutils
gawk
gcc-libs
gettext
glibc
grep
grub
gzip
inetutils
#intel-ucode
iproute2
iptables
iputils
ipw2100-fw
ipw2200-fw
jfsutils
KERNEL
less
licenses
linux-firmware
logrotate
lsb-release
man-db
man-pages
memtest86+
mkinitcpio-openswap
nano
net-tools
ntfs-3g
>openrc acpid-openrc
>openrc cronie-openrc
>openrc cryptsetup-openrc
>openrc dbus-openrc
>openrc device-mapper-openrc
>openrc dhcpcd-openrc
>openrc elogind-openrc
>openrc haveged-openrc
>openrc lvm2-openrc
>openrc mdadm-openrc
>openrc netifrc
>openrc nfs-utils-openrc
>openrc rsync-openrc
>openrc wpa_supplicant-openrc
>openrc opentmpfiles
os-prober
pacman
pciutils
pcmciautils
perl
procps-ng
psmisc
reiserfsprogs
sed
shadow
s-nail
sudo
sysfsutils
tar
texinfo
usbutils
util-linux
which
efibootmgr
xfsprogs
zd1211-firmware
zsh

View File

@@ -1,49 +0,0 @@
GRUB_DEFAULT=saved
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Artix"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# If you want to enable the save default function, uncomment the following
# line, and set GRUB_DEFAULT to saved.
GRUB_SAVEDEFAULT=true
# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
# Uncomment to enable Hidden Menu, and optionally hide the timeout count
#GRUB_HIDDEN_TIMEOUT=5
#GRUB_HIDDEN_TIMEOUT_QUIET=true
# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console
# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=auto
# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep
# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true
# Uncomment and set to the desired menu colors. Used by normal and wallpaper
# modes only. Entries specified as foreground/background.
GRUB_COLOR_NORMAL="light-gray/black"
GRUB_COLOR_HIGHLIGHT="cyan/black"
# Uncomment one of them for the gfx desired, a image background or a gfxtheme
GRUB_BACKGROUND="/usr/share/grub/background.png"
#GRUB_THEME="/path/to/gfxtheme"
# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"

View File

@@ -1,5 +0,0 @@
#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
/dev/mapper/root-image / auto defaults 0 0

View File

@@ -1,13 +0,0 @@

Artix Live ISO (\l) - \s-\r \m
# Welcome to Artix #
login for the live environment:
user 'artix'
password 'artix'

View File

@@ -1,6 +0,0 @@
#%PAM-1.0
auth sufficient pam_rootok.so
auth sufficient pam_wheel.so trust use_uid
auth required pam_unix.so
account required pam_unix.so
session required pam_unix.so

View File

@@ -1 +0,0 @@
%wheel ALL=(ALL) NOPASSWD: ALL

View File

@@ -1,27 +0,0 @@
################ install ################
# default displaymanager: none
# supported; lightdm, sddm, gdm, lxdm, mdm
# displaymanager="none"
# Set to false to disable autologin in the livecd
# autologin="true"
# service runlevels
# services=('acpid' 'bluetooth' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager')
# default values
# addgroups="video,power,storage,optical,network,lp,scanner,wheel,users"
# netgroups_url="https://raw.githubusercontent.com/artix-linux/netgroups/master"
################# live-session #################
# default value
# hostname="artix"
# default value
# username="artix"
# default value
# password="artix"

View File

@@ -1,36 +0,0 @@
acpi_call
acpi_call-lts
autoconf-archive
cmocka
confuse
dovecot
hub
hwinfo
jansson
lib32-fakeroot
lib32-libltdl
libappindicator
libbson
libdbi
libdbusmenu
libftdi
libindicator
libmongoc
libnewt
libpgm
libreplaygain
libsass
libsodium
libx86emu
ninja
pigeonhole
portaudio
r8168
r8168-lts
sassc
tp_smapi
tp_smapi-lts
virtualbox
virtualbox-guest-iso
yaml-cpp
zeromq

View File

@@ -1,74 +0,0 @@
dbus
lvm2
cryptsetup
mdadm
glibc
iptables
man-db
btrfs-progs
bash
dhcpcd
filesystem
gnupg
krb5
libusb
licenses
logrotate
mkinitcpio
pacman
pambase
procps-ng
rpcbind
util-linux
wpa_supplicant
gpm
cronie
accountsservice
alsa-utils
apache
avahi
bluez
colord
cups
dhcp
fluidsynth
git
haveged
libatasmart
libblockdev
libgudev
libinput
libwacom
lirc
mariadb
media-player-info
modemmmanger
networkmanager
openslp
polkit
pulseaudio
qt5-base
rsync
samba
sane
sddm
subversion
syslog-ng
udisks2
upower
xorg-server
xf86-input-libinput
xf86-input-evdev
xf86-video-amdgpu
xf86-video-ati
xf86-video-intel
xf86-video-nouveau
xf86-video-openchrome
xf86-video-sisusb

View File

@@ -1,55 +0,0 @@
acpi_call
acpi_call-lts
autoconf-archive
cmocka
confuse
cython
dmd
dovecot
gmock
gtest
hub
hwinfo
jansson
lib32-fakeroot
lib32-libltdl
libappindicator
libbson
libdbi
libdbusmenu
libftdi
libindicator
libmongoc
libnewt
libpgm
libphobos
libreplaygain
libsass
libsodium
libx86emu
ninja
pigeonhole
portaudio
python-babel
python-docutils
python-imagesize
python-jinja
python-pygments
python-pytz
python-snowballstemmer
python-sphinx
python-sphinx-alabaster-theme
python-sphinxcontrib-websupport
python-sphinx_rtd_theme
python-sqlalchemy
python-whoosh
r8168
r8168-lts
rust
sassc
tp_smapi
tp_smapi-lts
virtualbox
virtualbox-guest-iso
yaml-cpp
zeromq

View File

@@ -1,687 +0,0 @@
a52dec
aalib
acl
adwaita-icon-theme
alsa-firmware
alsa-lib
apr
apr-util
archlinux-keyring
argon2
aspell
assimp
atk
atkmm
at-spi2-atk
at-spi2-core
attr
autoconf
automake
b43-fwcutter
babl
# bash
bc
binutils
bison
boost
bridge-utils
brltty
bzip2
ca-certificates
ca-certificates-cacert
cairo
cairomm
cantarell-fonts
cdparanoia
check
cifs-utils
cln
cmake
convertlit
coreutils
cpio
cracklib
curl
dash
db
dbus-glib
dbus-python
dcadec
dconf
desktop-file-utils
dialog
diffutils
ding-libs
dkms
dnssec-anchors
docbook-dsssl
docbook-sgml31
docbook-utils
docbook-xml
docbook-xsl
dosfstools
dotconf
double-conversion
doxygen
e2fsprogs
ebook-tools
ed
editorconfig-core-c
efibootmgr
efivar
elfutils
exiv2
expat
extra-cmake-modules
faad2
fakeroot
ffmpeg
ffmpeg2.8
fftw
file
findutils
flac
flex
fontconfig
freetype2
fribidi
fuse2
fuse3
gamin
gawk
gc
gcab
gcc
gconf
gcr
gd
gdb
gdbm
gdk-pixbuf2
gegl02
geoip-database
gettext
ghostscript
giblib
giflib
glade
glib2
glibc
glibmm
glib-networking
glu
gmp
gnome-common
gnutls
gobject-introspection
gperf
gperftools
gpgme
gptfdisk
grantlee
graphite
graphviz
grep
groff
gsettings-desktop-schemas
gsfonts
gsm
gst-plugins-base
gst-plugins-good
gstreamer
gtk2
gtk3
gtk-doc
gtkmm3
gtk-sharp-2
gtksourceview3
gts
guile
guile2.0
gzip
harfbuzz
hdparm
hicolor-icon-theme
hunspell
hwids
hwloc
hyphen
iana-etc
icu
ifenslave
ijs
ilmbase
imagemagick
imlib2
iniparser
intltool
iproute2
iputils
ipw2100-fw
ipw2200-fw
isdn4k-utils
iso-codes
itstool
iw
jack
jasper
java8-openjdk
java-common
jbig2dec
jemalloc
jfsutils
js
json-c
jsoncpp
json-glib
kbd
keyutils
lame
lapack
lcms
lcms2
ldb
ldns
less
libaccounts-glib
libaccounts-qt
libaio
libao
libarchive
libass
libassuan
libasyncns
libatomic_ops
libavc1394
libbluray
libbsd
libburn
libbytesize
libcaca
libcanberra
libcap
libcap-ng
libcddb
libcdio
libcdio-paranoia
#libconfig
libcroco
libcue
libdaemon
libdatrie
libdbusmenu-qt
libdca
libdmtx
libdrm
libdv
libdvbpsi
libdvdcss
libdvdnav
libdvdread
libebml
libedit
libepoxy
libevdev
libevent
libexif
libffi
libfontenc
libgcrypt
libgdiplus
libgee
libgit2
libglade
libglvnd
libgpg-error
libgphoto2
libgssglue
libgusb
libical
libice
libid3tag
libidn
libidn2
libiec61883
libieee1284
libimobiledevice
libiscsi
libisoburn
libisofs
libjpeg-turbo
libksba
liblouis
liblqr
libmad
libmatroska
libmng
libmnl
libmodplug
libmpc
libmpeg2
libmspack
libmtp
libndp
libnftnl
libnghttp2
libnl
libnotify
libogg
libomxil-bellagio
libpaper
libpcap
libpciaccess
libpipeline
libplist
libpng
libproxy
libpsl
libpwquality
libqalculate
libqmi
libraqm
libraw1394
librpcsecgss
librsvg
libsamplerate
libseccomp
libsecret
libshout
libsigc++
libsigsegv
libsm
libsndfile
libsoup
libsoxr
libspiro
libsrtp
libssh
libssh2
libtar
libtasn1
libthai
libtheora
libtiff
libtirpc
libtommath
libtool
libunistring
libunwind
libupnp
libusb-compat
libusbmuxd
libutempter
libuv
libva
libvdpau
libvisual
libvorbis
libvpx
libwebp
libwmf
libx11
libxau
libxaw
libxcb
libxcomposite
libxcursor
libxdamage
libxdmcp
libxext
libxfixes
libxfont2
libxft
libxi
libxinerama
libxkbcommon
libxkbfile
libxml2
libxmu
libxpm
libxrandr
libxrender
libxres
libxshmfence
libxslt
libxss
libxt
libxtst
libxv
libxvmc
libxxf86vm
libyaml
libzip
licenses
links
linux
linux-api-headers
linux-atm
linux-firmware
linux-lts
lirc
llvm
lmdb
lua
lz4
lzo
m4
mailcap
make
man-pages
mercurial
mesa
meson
mkinitcpio-busybox
mkinitcpio-nfs-utils
mobile-broadband-provider-info
mono
mpfr
mtdev
muparser
musepack
namcap
nano
nasm
ncurses
nettle
net-tools
network-manager-applet
nfsidmap
nilfs-utils
noto-fonts
npth
nspr
nss
nss-mdns
ntfs-3g
numactl
nvidia
# nvidia-settings
nvidia-utils
ocl-icd
openal
opencore-amr
openexr
openjade
openjpeg
openjpeg2
openmpi
opensp
openssl
openssl-1.0
opus
orc
orca
p11-kit
pango
pangomm
parted
patch
pciutils
pcre
pcre2
perl
perl-error
perl-file-which
perl-xml-parser
perl-yaml
phonon
phonon-gstreamer
pinentry
pixman
pkcs11-helper
pkg-config
polkit-qt
poppler
popt
potrace
pptpclient
procinfo-ng
protobuf
psmisc
pth
pyalpm
pygobject
pygtk
# pylint
pyqt5
python
python2
# python2-backports
# python2-backports.functools_lru_cache
# python2-configparser
# python2-ipaddress
python-appdirs
python-asn1crypto
# python-astroid
python-attrs
# python-automat
python-beaker
python-cairo
# python-cffi
python-chardet
# python-constantly
# python-cryptography
python-cssselect
python-defusedxml
# python-editdistance
# python-egenix-mx-base
python-evdev
# python-feedparser
# python-fpconst
# python-gdata
# python-geoip
python-hyperlink
python-idna
# python-incremental
# python-isort
# python-iwscan
# python-lazy-object-proxy
# python-lxml
python-mako
python-markupsafe
# python-mccabe
# python-mpd
# python-nose
python-notify
python-numpy
python-packaging
python-pip
python-ply
python-pyasn1
# python-pyasn1-modules
# python-pycparser
# python-pycurl
python-pyelftools
# python-pygame
python-pyparsing
# python-rdflib
# python-requests
python-requests
# python-retrying
# python-service-identity
python-setuptools
python-six
# python-soappy
# python-telepathy
# python-urllib3
python-urllib3
python-urwid
python-virtualenv
# python-wpactrl
python-wrapt
# python-wstools
pyxdg
qt4
qt5-3d
qt5-canvas3d
qt5-charts
qt5-connectivity
qt5-datavis3d
qt5-declarative
qt5-doc
qt5-examples
qt5-gamepad
qt5-graphicaleffects
qt5-imageformats
qt5-location
qt5-multimedia
qt5-networkauth
qt5-quickcontrols
qt5-quickcontrols2
qt5-remoteobjects
qt5-script
qt5-scxml
qt5-sensors
qt5-serialbus
qt5-serialport
qt5-speech
qt5-svg
qt5-tools
qt5-translations
qt5-virtualkeyboard
qt5-wayland
qt5-webchannel
qt5-webengine
qt5-webkit
qt5-websockets
qt5-webview
qt5-x11extras
qt5-xmlpatterns
re2
readline
reiserfsprogs
rest
ruby
run-parts
schroedinger
sdl
sdl2
sdl_image
sdl_sound
sdparm
sed
serf
sgml-common
shared-mime-info
slang
s-nail
snappy
snowball
socat
sound-theme-freedesktop
source-highlight
speech-dispatcher
speex
speexdsp
sqlite
startup-notification
sudo
sysfsutils
syslinux
t1lib
taglib
talloc
tar
tcl
tdb
tevent
texinfo
texlive-bin
texlive-core
texlive-formatsextra
texlive-latexextra
texlive-pictures
texlive-science
thin-provisioning-tools
traceroute
tslib
ttf-bitstream-vera
ttf-dejavu
ttf-hack
ttf-indic-otf
tzdata
unixodbc
unzip
#usbmuxd
usbutils
v4l-utils
vala
valgrind
vi
vid.stab
volume_key
vte
vte3
vulkan-docs
vulkan-loader-layers
vulkan-tools
wavpack
wayland
wayland-protocols
webrtc-audio-processing
wget
which
whois
wireless-regdb
wireless_tools
wpa_actiond
wxgtk
x265
xapian-core
xbitmaps
xcb-proto
xcb-util
xcb-util-cursor
xcb-util-image
xcb-util-keysyms
xcb-util-renderutil
xcb-util-wm
xdg-utils
xf86-input-libinput
xf86-video-dummy
xf86-video-fbdev
xf86-video-sisusb
xf86-video-vesa
xf86-video-vmware
xf86-video-voodoo
xfsprogs
xkeyboard-config
xmlto
xorg-bdftopcf
xorg-fonts-alias
xorg-fonts-encodings
xorg-fonts-misc
xorg-font-util
xorg-font-utils
xorg-luit
xorg-mkfontdir
xorg-mkfontscale
xorgproto
xorg-setxkbmap
xorg-twm
xorg-util-macros
xorg-xauth
# xorg-xinit
xorg-xkbcomp
xorg-xmessage
xorg-xmodmap
xorg-xprop
xorg-xrandr
xorg-xrdb
xorg-xset
xorg-xsetroot
xterm
xvidcore
xz
yajl
yelp-tools
yelp-xsl
zd1211-firmware
zip
zita-alsa-pcmi
zita-resampler
zlib
zsh
zstd
zvbi
zziplib

View File

@@ -1,3 +1,4 @@
#!/hint/bash
# #
# /etc/makepkg.conf # /etc/makepkg.conf
# #
@@ -8,9 +9,10 @@
# #
#-- The download utilities that makepkg should use to acquire sources #-- The download utilities that makepkg should use to acquire sources
# Format: 'protocol::agent' # Format: 'protocol::agent'
DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u' DLAGENTS=('file::/usr/bin/curl -gqC - -o %o %u'
'http::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u' 'ftp::/usr/bin/curl -gqfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
'https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u' 'http::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
'https::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
'rsync::/usr/bin/rsync --no-motd -z %u %o' 'rsync::/usr/bin/rsync --no-motd -z %u %o'
'scp::/usr/bin/scp -C %u %o') 'scp::/usr/bin/scp -C %u %o')
@@ -34,8 +36,6 @@ CARCH="x86_64"
CHOST="x86_64-pc-linux-gnu" CHOST="x86_64-pc-linux-gnu"
#-- Compiler and Linker Flags #-- Compiler and Linker Flags
# -march (or -mcpu) builds exclusively for an architecture
# -mtune optimizes for an architecture, but builds for whole processor family
CPPFLAGS="-D_FORTIFY_SOURCE=2" CPPFLAGS="-D_FORTIFY_SOURCE=2"
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt" CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt"
CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt" CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt"
@@ -50,7 +50,7 @@ DEBUG_CXXFLAGS="-g -fvar-tracking-assignments"
# BUILD ENVIRONMENT # BUILD ENVIRONMENT
######################################################################### #########################################################################
# #
# Defaults: BUILDENV=(!distcc color !ccache check !sign) # Defaults: BUILDENV=(!distcc !color !ccache check !sign)
# A negated environment option will do the opposite of the comments below. # A negated environment option will do the opposite of the comments below.
# #
#-- distcc: Use the Distributed C/C++/ObjC compiler #-- distcc: Use the Distributed C/C++/ObjC compiler
@@ -73,7 +73,7 @@ BUILDENV=(!distcc color !ccache check !sign)
# These are default values for the options=() settings # These are default values for the options=() settings
######################################################################### #########################################################################
# #
# Default: OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug) # Default: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug)
# A negated option will do the opposite of the comments below. # A negated option will do the opposite of the comments below.
# #
#-- strip: Strip symbols from binaries/libraries #-- strip: Strip symbols from binaries/libraries
@@ -83,11 +83,9 @@ BUILDENV=(!distcc color !ccache check !sign)
#-- emptydirs: Leave empty directories in packages #-- emptydirs: Leave empty directories in packages
#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip #-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip
#-- purge: Remove files specified by PURGE_TARGETS #-- purge: Remove files specified by PURGE_TARGETS
#-- upx: Compress binary executable files using UPX
#-- optipng: Optimize PNG images with optipng
#-- debug: Add debugging flags as specified in DEBUG_* variables #-- debug: Add debugging flags as specified in DEBUG_* variables
# #
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug) OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug)
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512 #-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
INTEGRITY_CHECK=(md5) INTEGRITY_CHECK=(md5)
@@ -103,6 +101,8 @@ MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc}) DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
#-- Files to be removed from all packages (if purge is specified) #-- Files to be removed from all packages (if purge is specified)
PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod) PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
#-- Directory to store source code in for debug packages
DBGSRCDIR="/usr/src/debug"
######################################################################### #########################################################################
# PACKAGE OUTPUT # PACKAGE OUTPUT
@@ -143,5 +143,3 @@ COMPRESSZ=(compress -c -f)
# #
PKGEXT='.pkg.tar.xz' PKGEXT='.pkg.tar.xz'
SRCEXT='.src.tar.gz' SRCEXT='.src.tar.gz'
# vim: set ft=sh ts=2 sw=2 et:

View File

@@ -1,5 +1,5 @@
MODULES=(loop dm-snapshot) MODULES=(loop dm-snapshot)
HOOKS=(base udev artix_shutdown artix artix_loop_mnt artix_pxe_common artix_pxe_http artix_pxe_nbd artix_pxe_nfs artix_kms modconf block pcmcia filesystems keyboard keymap) HOOKS=(base udev artix_shutdown artix artix_loop_mnt artix_pxe_common artix_pxe_http artix_pxe_nbd artix_pxe_nfs artix_kms modconf block filesystems keyboard keymap)
COMPRESSION="xz" COMPRESSION="xz"

View File

@@ -44,7 +44,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux cromnix`. # packagers with `pacman-key --populate archlinux artix`.
# #
# REPOSITORIES # REPOSITORIES
@@ -63,6 +63,14 @@ LocalFileSigLevel = Optional
# #
# The header [repo-name] is crucial - it must be present and # The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo. # uncommented to enable the repo.
#
# The gremlins repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
#[gremlins]
#Include = /etc/pacman.d/mirrorlist
[system] [system]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
@@ -70,15 +78,45 @@ Include = /etc/pacman.d/mirrorlist
[world] [world]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
#[galaxy-gremlins]
#Include = /etc/pacman.d/mirrorlist
[galaxy] [galaxy]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
#[lib32-gremlins]
#Include = /etc/pacman.d/mirrorlist
#[lib32]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
# #
# ARCHLINUX # ARCHLINUX
# #
#[testing]
#Include = /etc/pacman.d/mirrorlist-arch
[extra] [extra]
Include = /etc/pacman.d/mirrorlist-arch Include = /etc/pacman.d/mirrorlist-arch
#[community-testing]
#Include = /etc/pacman.d/mirrorlist-arch
[community] [community]
Include = /etc/pacman.d/mirrorlist-arch Include = /etc/pacman.d/mirrorlist-arch
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist-arch
#[multilib]
#Include = /etc/pacman.d/mirrorlist-arch

View File

@@ -0,0 +1,146 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
#HookDir = /etc/pacman.d/hooks/
HoldPkg = pacman glibc
#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
#UseDelta = 0.7
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options
#UseSyslog
#Color
#TotalDownload
CheckSpace
VerbosePkgLists
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required
# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux artix`.
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The gremlins repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[gnome-wobble]
Include = /etc/pacman.d/mirrorlist
[goblins]
Include = /etc/pacman.d/mirrorlist
[gremlins]
Include = /etc/pacman.d/mirrorlist
[system]
Include = /etc/pacman.d/mirrorlist
[world]
Include = /etc/pacman.d/mirrorlist
[galaxy-goblins]
Include = /etc/pacman.d/mirrorlist
[galaxy-gremlins]
Include = /etc/pacman.d/mirrorlist
[galaxy]
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
#[lib32-goblins]
#Include = /etc/pacman.d/mirrorlist
#[lib32-gremlins]
#Include = /etc/pacman.d/mirrorlist
#[lib32]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
#
# ARCHLINUX
#
[gnome-unstable]
Include = /etc/pacman.d/mirrorlist-arch
[staging]
Include = /etc/pacman.d/mirrorlist-arch
[testing]
Include = /etc/pacman.d/mirrorlist-arch
[extra]
Include = /etc/pacman.d/mirrorlist-arch
[community-staging]
Include = /etc/pacman.d/mirrorlist-arch
[community-testing]
Include = /etc/pacman.d/mirrorlist-arch
[community]
Include = /etc/pacman.d/mirrorlist-arch
#[multilib-staging]
#Include = /etc/pacman.d/mirrorlist-arch
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist-arch
#[multilib]
#Include = /etc/pacman.d/mirrorlist-arch

View File

@@ -44,7 +44,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux cromnix`. # packagers with `pacman-key --populate archlinux artix`.
# #
# REPOSITORIES # REPOSITORIES
@@ -63,6 +63,11 @@ LocalFileSigLevel = Optional
# #
# The header [repo-name] is crucial - it must be present and # The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo. # uncommented to enable the repo.
#
# The gremlins repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[goblins] [goblins]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
@@ -85,6 +90,24 @@ Include = /etc/pacman.d/mirrorlist
[galaxy] [galaxy]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
#[lib32-goblins]
#Include = /etc/pacman.d/mirrorlist
#[lib32-gremlins]
#Include = /etc/pacman.d/mirrorlist
#[lib32]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
# #
# ARCHLINUX # ARCHLINUX
# #
@@ -106,3 +129,12 @@ Include = /etc/pacman.d/mirrorlist-arch
[community] [community]
Include = /etc/pacman.d/mirrorlist-arch Include = /etc/pacman.d/mirrorlist-arch
#[multilib-staging]
#Include = /etc/pacman.d/mirrorlist-arch
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist-arch
#[multilib]
#Include = /etc/pacman.d/mirrorlist-arch

View File

@@ -44,7 +44,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux cromnix`. # packagers with `pacman-key --populate archlinux artix`.
# #
# REPOSITORIES # REPOSITORIES
@@ -63,6 +63,11 @@ LocalFileSigLevel = Optional
# #
# The header [repo-name] is crucial - it must be present and # The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo. # uncommented to enable the repo.
#
# The gremlins repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[gremlins] [gremlins]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
@@ -79,6 +84,21 @@ Include = /etc/pacman.d/mirrorlist
[galaxy] [galaxy]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
#[lib32-gremlins]
#Include = /etc/pacman.d/mirrorlist
#[lib32]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
# #
# ARCHLINUX # ARCHLINUX
# #
@@ -94,3 +114,9 @@ Include = /etc/pacman.d/mirrorlist-arch
[community] [community]
Include = /etc/pacman.d/mirrorlist-arch Include = /etc/pacman.d/mirrorlist-arch
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist-arch
#[multilib]
#Include = /etc/pacman.d/mirrorlist-arch

146
data/pacman-kde-wobble.conf Normal file
View File

@@ -0,0 +1,146 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
#HookDir = /etc/pacman.d/hooks/
HoldPkg = pacman glibc
#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
#UseDelta = 0.7
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options
#UseSyslog
#Color
#TotalDownload
CheckSpace
VerbosePkgLists
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required
# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux artix`.
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The gremlins repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[kde-wobble]
Include = /etc/pacman.d/mirrorlist
[goblins]
Include = /etc/pacman.d/mirrorlist
[gremlins]
Include = /etc/pacman.d/mirrorlist
[system]
Include = /etc/pacman.d/mirrorlist
[world]
Include = /etc/pacman.d/mirrorlist
[galaxy-goblins]
Include = /etc/pacman.d/mirrorlist
[galaxy-gremlins]
Include = /etc/pacman.d/mirrorlist
[galaxy]
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
#[lib32-goblins]
#Include = /etc/pacman.d/mirrorlist
#[lib32-gremlins]
#Include = /etc/pacman.d/mirrorlist
#[lib32]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
#
# ARCHLINUX
#
[kde-unstable]
Include = /etc/pacman.d/mirrorlist-arch
[staging]
Include = /etc/pacman.d/mirrorlist-arch
[testing]
Include = /etc/pacman.d/mirrorlist-arch
[extra]
Include = /etc/pacman.d/mirrorlist-arch
[community-staging]
Include = /etc/pacman.d/mirrorlist-arch
[community-testing]
Include = /etc/pacman.d/mirrorlist-arch
[community]
Include = /etc/pacman.d/mirrorlist-arch
#[multilib-staging]
#Include = /etc/pacman.d/mirrorlist-arch
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist-arch
#[multilib]
#Include = /etc/pacman.d/mirrorlist-arch

View File

@@ -44,7 +44,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux cromnix`. # packagers with `pacman-key --populate archlinux artix`.
# #
# REPOSITORIES # REPOSITORIES
@@ -63,6 +63,11 @@ LocalFileSigLevel = Optional
# #
# The header [repo-name] is crucial - it must be present and # The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo. # uncommented to enable the repo.
#
# The gremlins repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[goblins] [goblins]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
@@ -85,6 +90,9 @@ Include = /etc/pacman.d/mirrorlist
[galaxy] [galaxy]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
[lib32-goblins] [lib32-goblins]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
@@ -94,6 +102,12 @@ Include = /etc/pacman.d/mirrorlist
[lib32] [lib32]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
# #
# ARCHLINUX # ARCHLINUX
# #

View File

@@ -44,7 +44,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux cromnix`. # packagers with `pacman-key --populate archlinux artix`.
# #
# REPOSITORIES # REPOSITORIES
@@ -63,6 +63,11 @@ LocalFileSigLevel = Optional
# #
# The header [repo-name] is crucial - it must be present and # The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo. # uncommented to enable the repo.
#
# The gremlins repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[gremlins] [gremlins]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
@@ -79,12 +84,21 @@ Include = /etc/pacman.d/mirrorlist
[galaxy] [galaxy]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
[lib32-gremlins] [lib32-gremlins]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[lib32] [lib32]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
# #
# ARCHLINUX # ARCHLINUX
# #

View File

@@ -44,7 +44,7 @@ LocalFileSigLevel = Optional
# NOTE: You must run `pacman-key --init` before first using pacman; the local # NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Artix Linux # keyring can then be populated with the keys of all official Artix Linux
# packagers with `pacman-key --populate archlinux cromnix`. # packagers with `pacman-key --populate archlinux artix`.
# #
# REPOSITORIES # REPOSITORIES
@@ -63,6 +63,14 @@ LocalFileSigLevel = Optional
# #
# The header [repo-name] is crucial - it must be present and # The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo. # uncommented to enable the repo.
#
# The gremlins repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
#[gremlins]
#Include = /etc/pacman.d/mirrorlist
[system] [system]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
@@ -70,21 +78,45 @@ Include = /etc/pacman.d/mirrorlist
[world] [world]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
#[galaxy-gremlins]
#Include = /etc/pacman.d/mirrorlist
[galaxy] [galaxy]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories as required here.
#[lib32-gremlins]
#Include = /etc/pacman.d/mirrorlist
[lib32] [lib32]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
# #
# ARCHLINUX # ARCHLINUX
# #
#[testing]
#Include = /etc/pacman.d/mirrorlist-arch
[extra] [extra]
Include = /etc/pacman.d/mirrorlist-arch Include = /etc/pacman.d/mirrorlist-arch
#[community-testing]
#Include = /etc/pacman.d/mirrorlist-arch
[community] [community]
Include = /etc/pacman.d/mirrorlist-arch Include = /etc/pacman.d/mirrorlist-arch
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist-arch
[multilib] [multilib]
Include = /etc/pacman.d/mirrorlist-arch Include = /etc/pacman.d/mirrorlist-arch

23
initcpio/Makefile Normal file
View File

@@ -0,0 +1,23 @@
DIRMODE = -dm0755
MODE = -m0755
CPIOHOOKS = \
$(wildcard hooks/*)
CPIOINST = \
$(wildcard install/*)
SCRIPT = \
$(wildcard script/*)
install_initcpio:
install $(DIRMODE) $(DESTDIR)$(CPIODIR)/hooks
install $(MODE) $(CPIOHOOKS) $(DESTDIR)$(CPIODIR)/hooks
install $(DIRMODE) $(DESTDIR)$(CPIODIR)/install
install $(MODE) $(CPIOINST) $(DESTDIR)$(CPIODIR)/install
install $(MODE) $(SCRIPT) $(DESTDIR)$(CPIODIR)
install: install_initcpio
.PHONY: install

View File

@@ -32,6 +32,10 @@ _mnt_dmsnapshot() {
dmsetup create ${dm_snap_name} --table "0 ${ro_dev_size} snapshot ${ro_dev} ${rw_dev} ${cow_persistent} ${cow_chunksize}" dmsetup create ${dm_snap_name} --table "0 ${ro_dev_size} snapshot ${ro_dev} ${rw_dev} ${cow_persistent} ${cow_chunksize}"
if [[ "${cow_persistent}" != "P" ]]; then
rm -f "/run/artix/cowspace/${cow_directory}/${img_name}.cow"
fi
_mnt_dev "/dev/mapper/${dm_snap_name}" "${mnt}" "-w" "defaults" _mnt_dev "/dev/mapper/${dm_snap_name}" "${mnt}" "-w" "defaults"
echo $(readlink -f /dev/mapper/${dm_snap_name}) >> /run/artix/used_block_devices echo $(readlink -f /dev/mapper/${dm_snap_name}) >> /run/artix/used_block_devices
} }

View File

@@ -7,16 +7,6 @@ build() {
add_module "via-agp" add_module "via-agp"
add_module "sis-agp" add_module "sis-agp"
add_module "intel-agp" add_module "intel-agp"
if [[ $(uname -m) == i686 ]]; then
add_module "amd64-agp"
add_module "ati-agp"
add_module "sworks-agp"
add_module "ali-agp"
add_module "amd-k7-agp"
add_module "nvidia-agp"
add_module "efficeon-agp"
fi
} }
help() { help() {

View File

@@ -1,38 +0,0 @@
#!/bin/ash
# /oldroot depends on things inside /oldroot/run/miso...
mkdir /oldrun
mount -n --move /oldroot/run /oldrun
# Unmount all mounts now.
#umount $(mount | awk '$3 ~/^\/oldroot/ {print $3}' | sort -r)
umount $(mount | awk '$3 ~/^\/oldroot/ {if($3 != "/run/miso/bootmnt") print $3}' | sort -r)
# Remove all dm-snapshot devices.
dmsetup remove_all
# Remove all loopback devices.
for _lup in $(grep ^/dev/loop /oldrun/miso/used_block_devices | tac); do
if ! losetup -d ${_lup} 2> /dev/null; then
umount -d ${_lup}
fi
done
# Unmount the space used to store *.cow.
umount /oldrun/miso/cowspace
# Unmount boot device if needed (no copytoram=y used)
if [[ ! -d /oldrun/miso/copytoram ]]; then
if [[ -d /oldrun/miso/img_dev ]]; then
umount /oldrun/miso/img_dev
else
umount /oldrun/miso/bootmnt
fi
fi
# reboot / poweroff / halt, depending on the argument passed by init
# if something invalid is passed, we halt
case "$1" in
reboot|poweroff|halt) "$1" -f ;;
*) halt -f;;
esac

View File

@@ -8,70 +8,36 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
copy_mirrorlist(){
cp -a /etc/pacman.d/mirrorlist "$1/etc/pacman.d/"
}
copy_keyring(){
if [[ -d /etc/pacman.d/gnupg ]] && [[ ! -d $1/etc/pacman.d/gnupg ]]; then
cp -a /etc/pacman.d/gnupg "$1/etc/pacman.d/"
fi
}
create_min_fs(){
msg "Creating install root at %s" "$1"
mkdir -m 0755 -p $1/var/{cache/pacman/pkg,lib/pacman,log} $1/{dev,etc}
mkdir -m 1777 -p $1/{tmp,run}
mkdir -m 0555 -p $1/{sys,proc}
if [[ ! -f $1/etc/machine-id ]];then
touch $1/etc/machine-id
fi
}
is_btrfs() { is_btrfs() {
[[ -e "$1" && "$(stat -f -c %T "$1")" == btrfs ]] [[ -e "$1" && "$(stat -f -c %T "$1")" == btrfs ]]
}
is_subvolume() {
[[ -e "$1" && "$(stat -f -c %T "$1")" == btrfs && "$(stat -c %i "$1")" == 256 ]]
}
is_same_fs() {
[[ "$(stat -c %d "$1")" == "$(stat -c %d "$1")" ]]
} }
subvolume_delete_recursive() { subvolume_delete_recursive() {
local subvol local subvol
is_btrfs "$1" || return 0 is_subvolume "$1" || return 0
while IFS= read -d $'\0' -r subvol; do while IFS= read -d $'\0' -r subvol; do
if ! btrfs subvolume delete "$subvol" &>/dev/null; then if ! subvolume_delete_recursive "$subvol"; then
error "Unable to delete subvolume %s" "$subvol"
return 1 return 1
fi fi
done < <(find "$1" -xdev -depth -inum 256 -print0) done < <(find "$1" -mindepth 1 -xdev -depth -inum 256 -print0)
if ! btrfs subvolume delete "$1" &>/dev/null; then
error "Unable to delete subvolume %s" "$subvol"
return 1
fi
return 0 return 0
} }
default_locale(){
local action="$1" mnt="$2"
if [[ $action == "set" ]];then
if [[ ! -f "$mnt/etc/locale.gen.bak" ]];then
info "Setting locale ..."
mv "$mnt/etc/locale.gen" "$mnt/etc/locale.gen.bak"
printf '%s.UTF-8 UTF-8\n' en_US > "$mnt/etc/locale.gen"
printf 'LANG=%s.UTF-8\n' en_US > "$mnt/etc/locale.conf"
printf 'LC_MESSAGES=C\n' >> "$mnt/etc/locale.conf"
fi
elif [[ $action == "reset" ]];then
if [[ -f "$mnt/etc/locale.gen.bak" ]];then
info "Resetting locale ..."
mv "$mnt/etc/locale.gen.bak" "$mnt/etc/locale.gen"
rm "$mnt/etc/locale.conf"
fi
fi
}
default_mirror(){
local mnt="$1" mirror="$2"'/$repo/os/$arch'
[[ -f $mnt/etc/pacman.d/mirrorlist ]] && mv "$mnt"/etc/pacman.d/mirrorlist "$mnt"/etc/pacman.d/mirrorlist.bak
echo "Server = $mirror" > $mnt/etc/pacman.d/mirrorlist
}
# $1: chroot # $1: chroot
kill_chroot_process(){ kill_chroot_process(){
local prefix="$1" flink pid name local prefix="$1" flink pid name

View File

@@ -19,46 +19,50 @@ prepare_initcpio(){
prepare_initramfs(){ prepare_initramfs(){
local mnt="$1" local mnt="$1"
cp ${DATADIR}/mkinitcpio.conf $mnt/etc/mkinitcpio-${iso_name}.conf cp ${DATADIR}/mkinitcpio.conf $mnt/etc/mkinitcpio-artix.conf
if [[ -n ${gpgkey} ]]; then
user_run "gpg --export ${gpgkey} >${AT_USERCONFDIR}/gpgkey" if [[ "${PROFILE}" != 'base' ]];then
exec 17<>${AT_USERCONFDIR}/gpgkey sed -e 's/artix_pxe_common artix_pxe_http artix_pxe_nbd artix_pxe_nfs //' -i $mnt/etc/mkinitcpio-artix.conf
fi
if [[ -n ${GPG_KEY} ]]; then
user_run "gpg --export ${GPG_KEY} >${AT_USERCONFDIR}/gpgkey"
exec 17<>${AT_USERCONFDIR}/GPG_KEY
fi fi
local _kernel=$(cat $mnt/usr/lib/modules/*/version) local _kernel=$(cat $mnt/usr/lib/modules/*/version)
ARTIX_GNUPG_FD=${gpgkey:+17} chroot-run $mnt \ ARTIX_GNUPG_FD=${GPG_KEY:+17} chroot-run $mnt \
/usr/bin/mkinitcpio -k ${_kernel} \ /usr/bin/mkinitcpio -k ${_kernel} \
-c /etc/mkinitcpio-${iso_name}.conf \ -c /etc/mkinitcpio-artix.conf \
-g /boot/initramfs.img -g /boot/initramfs.img
if [[ -n ${gpgkey} ]]; then if [[ -n ${GPG_KEY} ]]; then
exec 17<&- exec 17<&-
fi fi
if [[ -f ${AT_USERCONFDIR}/gpgkey ]]; then if [[ -f ${AT_USERCONFDIR}/GPG_KEY ]]; then
rm ${AT_USERCONFDIR}/gpgkey rm ${AT_USERCONFDIR}/GPG_KEY
fi fi
} }
prepare_boot_extras(){ prepare_boot_extras(){
local src="$1" dest="$2" local src="$1" dest="$2"
# cp $src/boot/intel-ucode.img $dest/intel_ucode.img
# cp $src/usr/share/licenses/intel-ucode/LICENSE $dest/intel_ucode.LICENSE for u in intel amd;do
cp $src/boot/$u-ucode.img $dest/$u-ucode.img
cp $src/usr/share/licenses/$u-ucode/LICENSE $dest/$u-ucode.LICENSE
done
cp $src/boot/memtest86+/memtest.bin $dest/memtest cp $src/boot/memtest86+/memtest.bin $dest/memtest
cp $src/usr/share/licenses/common/GPL2/license.txt $dest/memtest.COPYING cp $src/usr/share/licenses/common/GPL2/license.txt $dest/memtest.COPYING
} }
configure_grub(){ configure_grub(){
local conf="$1" local conf="$1/boot/grub/kernels.cfg"
sed -e "s|@iso_label@|${iso_label}|" -i $conf
sed -e "s|@arch@|${target_arch}|g" \
-e "s|@iso_label@|${iso_label}|" \
-e "s|@iso_name@|${iso_name}|g" \
-e "s|@kernel_args@|${kernel_args}|g" \
-i $conf
} }
prepare_grub(){ prepare_grub(){
local platform=i386-pc img='core.img' grub=$3/boot/grub efi=$3/efi/boot \ local platform=i386-pc img='core.img' grub=$3/boot/grub efi=$3/efi/boot \
lib=$1/usr/lib/grub prefix=/boot/grub theme=$2/usr/share/grub data=$1/usr/share/grub lib=$1/usr/lib/grub prefix=/boot/grub theme=$2/usr/share/grub
prepare_dir ${grub}/${platform} prepare_dir ${grub}/${platform}
@@ -72,16 +76,8 @@ prepare_grub(){
cat ${grub}/${platform}/cdboot.img ${grub}/${platform}/${img} > ${grub}/${platform}/eltorito.img cat ${grub}/${platform}/cdboot.img ${grub}/${platform}/${img} > ${grub}/${platform}/eltorito.img
case ${target_arch} in platform=x86_64-efi
'i686') img=bootx64.efi
platform=i386-efi
img=bootia32.efi
;;
'x86_64')
platform=x86_64-efi
img=bootx64.efi
;;
esac
prepare_dir ${efi} prepare_dir ${efi}
prepare_dir ${grub}/${platform} prepare_dir ${grub}/${platform}
@@ -93,10 +89,17 @@ prepare_grub(){
grub-mkimage -d ${grub}/${platform} -o ${efi}/${img} -O ${platform} -p ${prefix} iso9660 grub-mkimage -d ${grub}/${platform} -o ${efi}/${img} -O ${platform} -p ${prefix} iso9660
prepare_dir ${grub}/themes prepare_dir ${grub}/themes
cp -r ${theme}/themes/${iso_name} ${grub}/themes/ cp -r ${theme}/themes/artix ${grub}/themes/
cp ${data}/unicode.pf2 ${grub}
cp -r ${theme}/{locales,tz} ${grub} cp -r ${theme}/{locales,tz} ${grub}
if [[ -f /usr/share/grub/unicode.pf2 ]];then
msg2 "Copying %s ..." "unicode.pf2"
cp /usr/share/grub/unicode.pf2 ${grub}/unicode.pf2
else
msg2 "Creating %s ..." "unicode.pf2"
grub-mkfont -o ${grub}/unicode.pf2 /usr/share/fonts/misc/unifont.bdf
fi
local size=4M mnt="${mnt_dir}/efiboot" efi_img="$3/efi.img" local size=4M mnt="${mnt_dir}/efiboot" efi_img="$3/efi.img"
msg2 "Creating fat image of %s ..." "${size}" msg2 "Creating fat image of %s ..." "${size}"
truncate -s ${size} "${efi_img}" truncate -s ${size} "${efi_img}"

View File

@@ -8,56 +8,75 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
init_profile(){
local profdir="$1" prof="$2"
ROOT_LIST="$profdir/base/Packages-Root"
ROOT_OVERLAY="$profdir/base/root-overlay"
LIVE_LIST="$profdir/base/Packages-Live"
LIVE_OVERLAY="$profdir/base/live-overlay"
[[ -f "$profdir/$prof/Packages-Root" ]] && ROOT_LIST="$profdir/$prof/Packages-Root"
[[ -d "$profdir/$prof/root-overlay" ]] && ROOT_OVERLAY="$profdir/$prof/root-overlay"
[[ -f "$profdir/$prof/Packages-Desktop" ]] && DESKTOP_LIST="$profdir/$prof/Packages-Desktop"
[[ -d "$profdir/$prof/desktop-overlay" ]] && DESKTOP_OVERLAY="$profdir/$prof/desktop-overlay"
[[ -f "$profdir/$prof/Packages-Live" ]] && LIVE_LIST="$profdir/$prof/Packages-Live"
[[ -d "$profdir/$prof/live-overlay" ]] && LIVE_OVERLAY="$profdir/$prof/live-overlay"
}
show_profile(){
msg2 "iso_file: %s" "${iso_file}"
msg2 "AUTOLOGIN: %s" "${AUTOLOGIN}"
msg2 "HOST_NAME: %s" "${HOST_NAME}"
msg2 "USER_NAME: %s" "${USER_NAME}"
msg2 "PASSWORD: %s" "${PASSWORD}"
msg2 "ADDGROUPS: %s" "${ADDGROUPS}"
msg2 "SERVICES_LIVE: %s" "${SERVICES_LIVE[*]}"
msg2 "SERVICES: %s" "${SERVICES[*]}"
}
load_profile(){ load_profile(){
local prof="$1" local prof="$1"
local profdir="${DATADIR}/iso-profiles/$prof" local profdir="${DATADIR}/iso-profiles"
[[ "$prof" != 'base' ]] && profdir=${workspace_dir}/iso-profiles/$prof [[ -d ${WORKSPACE_DIR}/iso-profiles ]] && profdir=${WORKSPACE_DIR}/iso-profiles
root_list="${DATADIR}/iso-profiles/base/Packages-Root" init_profile "$profdir" "$prof"
[[ -f "$profdir/Packages-Root" ]] && root_list="$profdir/Packages-Root"
root_overlay="${DATADIR}/iso-profiles/base/root-overlay" [[ -f $profdir/$prof/profile.conf ]] || return 1
[[ -d "$profdir/root-overlay" ]] && root_overlay="$profdir/root-overlay"
[[ -f "$profdir/Packages-Desktop" ]] && desktop_list="$profdir/Packages-Desktop" [[ -r $profdir/$prof/profile.conf ]] && source $profdir/$prof/profile.conf
[[ -d "$profdir/desktop-overlay" ]] && desktop_overlay="$profdir/desktop-overlay"
live_list="${DATADIR}/iso-profiles/base/Packages-Live" [[ -z ${DISPLAYMANAGER} ]] && DISPLAYMANAGER="none"
[[ -f "$profdir/Packages-Live" ]] && live_list="$profdir/Packages-Live"
live_overlay="${DATADIR}/iso-profiles/base/live-overlay" [[ -z ${AUTOLOGIN} ]] && AUTOLOGIN="true"
[[ -d "$profdir/live-overlay" ]] && live_overlay="$profdir/live-overlay" [[ ${DISPLAYMANAGER} == 'none' ]] && AUTOLOGIN="false"
[[ -f $profdir/profile.conf ]] || return 1 [[ -z ${HOST_NAME} ]] && HOST_NAME="artix"
[[ -r $profdir/profile.conf ]] && source $profdir/profile.conf [[ -z ${USER_NAME} ]] && USER_NAME="artix"
[[ -z ${displaymanager} ]] && displaymanager="none" [[ -z ${PASSWORD} ]] && PASSWORD="artix"
[[ -z ${autologin} ]] && autologin="true" if [[ -z ${ADDGROUPS} ]];then
[[ ${displaymanager} == 'none' ]] && autologin="false" ADDGROUPS="video,power,storage,optical,network,lp,scanner,wheel,users,log"
[[ -z ${hostname} ]] && hostname="artix"
[[ -z ${username} ]] && username="artix"
[[ -z ${password} ]] && password="artix"
if [[ -z ${addgroups} ]];then
addgroups="video,power,storage,optical,network,lp,scanner,wheel,users,audio"
fi fi
if [[ -z ${services[@]} ]];then if [[ -z ${SERVICES[@]} ]];then
services=('acpid' 'bluetooth' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager') SERVICES=('acpid' 'bluetooth' 'cronie' 'cupsd' 'syslog-ng' 'NetworkManager')
fi fi
[[ ${displaymanager} != "none" ]] && services+=('xdm') if [[ ${DISPLAYMANAGER} != "none" ]];then
case "${INITSYS}" in
if [[ -z ${services_live[@]} ]];then 'openrc') SERVICES+=('xdm') ;;
services_live=('artix-live' 'pacman-init') 'runit') SERVICES+=("${DISPLAYMANAGER}") ;;
esac
fi fi
[[ -z ${netgroups_url} ]] && netgroups_url="https://raw.githubusercontent.com/artix-linux/netgroups/master" if [[ -z ${SERVICES_LIVE[@]} ]];then
SERVICES_LIVE=('artix-live' 'pacman-init')
fi
return 0 return 0
} }
@@ -70,42 +89,38 @@ write_live_session_conf(){
echo '# live session configuration' > ${conf} echo '# live session configuration' > ${conf}
echo '' >> ${conf} echo '' >> ${conf}
echo '# autologin' >> ${conf} echo '# autologin' >> ${conf}
echo "autologin=${autologin}" >> ${conf} echo "AUTOLOGIN=${AUTOLOGIN}" >> ${conf}
echo '' >> ${conf} echo '' >> ${conf}
echo '# live username' >> ${conf} echo '# live user name' >> ${conf}
echo "username=${username}" >> ${conf} echo "USERNAME=${USERNAME}" >> ${conf}
echo '' >> ${conf} echo '' >> ${conf}
echo '# live password' >> ${conf} echo '# live password' >> ${conf}
echo "password=${password}" >> ${conf} echo "PASSWORD=${PASSWORD}" >> ${conf}
echo '' >> ${conf} echo '' >> ${conf}
echo '# live group membership' >> ${conf} echo '# live group membership' >> ${conf}
echo "addgroups='${addgroups}'" >> ${conf} echo "ADDGROUPS='${ADDGROUPS}'" >> ${conf}
} }
load_pkgs(){ load_pkgs(){
local pkglist="$1" init="$2" _kv="$3" local pkglist="$1" init="$2"
info "Loading Packages: [%s] ..." "${pkglist##*/}" info "Loading Packages: [%s] ..." "${pkglist##*/}"
local _init="s|>$init||g" local _init="s|@$init||g"
case "$init" in case "$init" in
'openrc') _init_rm1="s|>runit.*||g"; _init_rm2="s|>s6*||g" ;; 'openrc') _init_rm1="s|@runit.*||g"; _init_rm2="s|@s6*||g" ;;
's6') _init_rm1="s|>runit.*||g"; _init_rm2="s|>openrc.*||g" ;; 's6') _init_rm1="s|@runit.*||g"; _init_rm2="s|@openrc.*||g" ;;
'runit') _init_rm1="s|>s6.*||g"; _init_rm2="s|>openrc.*||g" ;; 'runit') _init_rm1="s|@s6.*||g"; _init_rm2="s|@openrc.*||g" ;;
esac esac
local _blacklist="s|>blacklist.*||g" \ local _space="s| ||g" \
_kernel="s|KERNEL|$_kv|g" \
_space="s| ||g" \
_clean=':a;N;$!ba;s/\n/ /g' \ _clean=':a;N;$!ba;s/\n/ /g' \
_com_rm="s|#.*||g" _com_rm="s|#.*||g"
packages=($(sed "$_com_rm" "$pkglist" \ packages=($(sed "$_com_rm" "$pkglist" \
| sed "$_space" \ | sed "$_space" \
| sed "$_blacklist" \
| sed "$_purge" \ | sed "$_purge" \
| sed "$_init" \ | sed "$_init" \
| sed "$_init_rm1" \ | sed "$_init_rm1" \
| sed "$_init_rm2" \ | sed "$_init_rm2" \
| sed "$_kernel" \
| sed "$_clean")) | sed "$_clean"))
} }

View File

@@ -1,51 +0,0 @@
#!/bin/bash
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
connect(){
local home="/home/frs/project/${project}"
echo "${account},${project}@frs.${file_host}:${home}"
}
gen_webseed(){
local webseed seed="$1"
for mirror in ${host_mirrors[@]};do
webseed=${webseed:-}${webseed:+,}"https://${mirror}.dl.${seed}"
done
echo ${webseed}
}
make_torrent(){
find ${src_dir} -type f -name "*.torrent" -delete
if [[ -n $(find ${src_dir} -type f -name "*.iso") ]]; then
for iso in $(ls ${src_dir}/*.iso);do
local seed=${file_host}/project/${project}${target_dir}${iso##*/}
local mktorrent_args=(-c "${torrent_meta}" -p -l ${piece_size} -a ${tracker_url} -w $(gen_webseed ${seed}))
${verbose} && mktorrent_args+=(-v)
info "mktorrent_args: %s" "${mktorrent_args[@]}"
msg2 "Creating (%s) ..." "${iso##*/}.torrent"
mktorrent ${mktorrent_args[*]} -o ${iso}.torrent ${iso}
done
fi
}
prepare_transfer(){
target_dir="/iso/${profile}/"
src_dir="${iso_pool}/${profile}/"
${torrent} && make_torrent
}
sync_dir(){
msg "Start upload [%s] ..." "${profile}"
rsync "${rsync_args[@]}" ${src_dir} $(connect)${target_dir}
msg "Done upload [%s]" "${profile}"
show_elapsed_time "${FUNCNAME}" "${timer_start}"
}

View File

@@ -9,50 +9,13 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
write_bootloader_conf(){
local conf="$1/bootloader.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo '---' > "$conf"
echo "efiBootLoader: \"grub\"" >> "$conf"
echo "kernel: \"/vmlinuz-$kernel-${target_arch}\"" >> "$conf"
echo "img: \"/initramfs-$kernel-${target_arch}.img\"" >> "$conf"
echo "fallback: \"/initramfs-$kernel-${target_arch}-fallback.img\"" >> "$conf"
echo 'timeout: "10"' >> "$conf"
echo "kernelLine: \", with ${kernel}\"" >> "$conf"
echo "fallbackKernelLine: \", with ${kernel} (fallback initramfs)\"" >> "$conf"
echo 'grubInstall: "grub-install"' >> "$conf"
echo 'grubMkconfig: "grub-mkconfig"' >> "$conf"
echo 'grubCfg: "/boot/grub/grub.cfg"' >> "$conf"
echo '#efiBootloaderId: "dirname"' >> "$conf"
}
write_servicescfg_conf(){
local conf="$1/servicescfg.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo '---' > "$conf"
echo '' >> "$conf"
echo 'services:' >> "$conf"
echo ' enabled:' >> "$conf"
for s in ${services[@]};do
echo " - name: $s" >> "$conf"
echo ' runlevel: default' >> "$conf"
done
}
write_initcpio_conf(){
local conf="$1/initcpio.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf"
echo "kernel: ${kernel}" >> "$conf"
}
write_users_conf(){ write_users_conf(){
local conf="$1/users.conf" local conf="$1/users.conf"
msg2 "Writing %s ..." "${conf##*/}" msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf" echo "---" > "$conf"
echo "defaultGroups:" >> "$conf" echo "defaultGroups:" >> "$conf"
local IFS=',' local IFS=','
for g in ${addgroups[@]};do for g in ${ADDGROUPS[@]};do
echo " - $g" >> "$conf" echo " - $g" >> "$conf"
done done
unset IFS unset IFS
@@ -60,45 +23,62 @@ write_users_conf(){
echo "doAutologin: false" >> "$conf" echo "doAutologin: false" >> "$conf"
echo "sudoersGroup: wheel" >> "$conf" echo "sudoersGroup: wheel" >> "$conf"
echo "setRootPassword: true" >> "$conf" echo "setRootPassword: true" >> "$conf"
echo "doReusePassword: false" >> "$conf" # only used in old 'users' module
echo "availableShells: /bin/bash, /bin/zsh" >> "$conf" # only used in new 'users' module echo "availableShells: /bin/bash, /bin/zsh" >> "$conf" # only used in new 'users' module
echo "avatarFilePath: ~/.face" >> "$conf"
# echo "passwordRequirements:" >> "$conf"
# echo " minLength: -1" >> "$conf"
# echo " maxLength: -1" >> "$conf"
# echo " libpwquality:" >> "$conf"
# echo " - minlen=8" >> "$conf"
# echo " - minclass=80" >> "$conf"
} }
write_netinstall_conf(){ write_servicescfg_conf(){
local conf="$1/netinstall.conf" local init="$2"
local conf="$1"/services-"$init".conf
msg2 "Writing %s ..." "${conf##*/}" msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf" echo '---' > "$conf"
echo "groupsUrl: ${netgroups}" >> "$conf" case "$init" in
'runit')
echo 'svDir: /etc/runit/sv' >> "$conf"
echo '' >> "$conf"
echo 'runsvDir: /etc/runit/runsvdir' >> "$conf"
echo '' >> "$conf"
echo 'services:' >> "$conf"
echo " enabled:" >> "$conf"
for svc in ${SERVICES[@]};do
echo " - name: $svc" >> "$conf"
echo ' runlevel: default' >> "$conf"
done
;;
'openrc')
echo 'initdDir: /etc/init.d' >> "$conf"
echo '' >> "$conf"
echo 'runlevelsDir: /etc/runlevels' >> "$conf"
echo '' >> "$conf"
echo 'services:' >> "$conf"
for svc in ${SERVICES[@]};do
echo " - name: $svc" >> "$conf"
echo ' runlevel: default' >> "$conf"
done
;;
esac
} }
write_unpack_conf(){ write_postcfg_conf(){
local conf="$1/unpackfs.conf" local conf="$1/postcfg.conf" init="$2"
msg2 "Writing %s ..." "${conf##*/}" sed -e "s|openrc|$init|" -i "$conf"
echo "---" > "$conf"
echo "unpack:" >> "$conf"
echo " - source: \"/run/${iso_name}/bootmnt/${iso_name}/${target_arch}/rootfs.sfs\"" >> "$conf"
echo " sourcefs: \"squashfs\"" >> "$conf"
echo " destination: \"\"" >> "$conf"
if [[ -f "${desktop_list}" ]] ; then
echo " - source: \"/run/${iso_name}/bootmnt/${iso_name}/${target_arch}/desktopfs.sfs\"" >> "$conf"
echo " sourcefs: \"squashfs\"" >> "$conf"
echo " destination: \"\"" >> "$conf"
fi
} }
configure_calamares(){ configure_calamares(){
local dest="$1" mods="$1/etc/calamares/modules" local mods="$1/etc/calamares/modules" init="$2"
if [[ -d $dest/etc/calamares/modules ]];then if [[ -d "$mods" ]];then
info "Configuring [Calamares]" info "Configuring [Calamares]"
write_netinstall_conf "$mods"
write_unpack_conf "$mods"
write_users_conf "$mods" write_users_conf "$mods"
write_initcpio_conf "$mods" write_servicescfg_conf "$mods" "$init"
case ${initsys} in write_postcfg_conf "$mods" "$init"
'openrc') write_servicescfg_conf "$mods" ;; local name=services-"$init"
esac sed -e "s|services-openrc|$name|" -i "$1"/etc/calamares/settings.conf
write_bootloader_conf "$mods"
info "Done configuring [Calamares]" info "Done configuring [Calamares]"
fi fi
} }

View File

@@ -87,6 +87,7 @@ error_function() {
# $1: function # $1: function
run_log(){ run_log(){
local func="$1" log_dir='/var/log/artools' local func="$1" log_dir='/var/log/artools'
[[ ! -d $log_dir ]] && mkdir -p $log_dir
local logfile=${log_dir}/$(gen_iso_fn).$func.log local logfile=${log_dir}/$(gen_iso_fn).$func.log
logpipe=$(mktemp -u "/tmp/$func.pipe.XXXXXXXX") logpipe=$(mktemp -u "/tmp/$func.pipe.XXXXXXXX")
mkfifo "$logpipe" mkfifo "$logpipe"
@@ -104,7 +105,7 @@ run_safe() {
restoretrap=$(trap -p ERR) restoretrap=$(trap -p ERR)
trap 'error_function $func' ERR trap 'error_function $func' ERR
if ${verbose};then if ${log};then
run_log "$func" run_log "$func"
else else
"$func" "$func"
@@ -139,15 +140,23 @@ add_svc_rc(){
fi fi
} }
add_svc_runit(){
local mnt="$1" name="$2"
if [[ -d $mnt/etc/runit/sv/$name ]]; then
msg2 "Setting %s ..." "$name"
chroot $mnt ln -s /etc/runit/sv/$name /etc/runit/runsvdir/default &>/dev/null
fi
}
set_xdm(){ set_xdm(){
if [[ -f $1/etc/conf.d/xdm ]];then if [[ -f $1/etc/conf.d/xdm ]];then
local conf='DISPLAYMANAGER="'${displaymanager}'"' local conf='DISPLAYMANAGER="'${DISPLAYMANAGER}'"'
sed -i -e "s|^.*DISPLAYMANAGER=.*|${conf}|" $1/etc/conf.d/xdm sed -i -e "s|^.*DISPLAYMANAGER=.*|${conf}|" $1/etc/conf.d/xdm
fi fi
} }
configure_hosts(){ configure_hosts(){
sed -e "s|localhost.localdomain|localhost.localdomain ${hostname}|" -i $1/etc/hosts sed -e "s|localhost.localdomain|localhost.localdomain ${HOST_NAME}|" -i $1/etc/hosts
} }
configure_logind(){ configure_logind(){
@@ -162,29 +171,37 @@ configure_logind(){
configure_services(){ configure_services(){
local mnt="$1" local mnt="$1"
info "Configuring [%s]" "${initsys}" info "Configuring [%s]" "${INITSYS}"
case ${initsys} in case ${INITSYS} in
'openrc') 'openrc')
for svc in ${services[@]}; do for svc in ${SERVICES[@]}; do
[[ $svc == "xdm" ]] && set_xdm "$mnt" [[ $svc == "xdm" ]] && set_xdm "$mnt"
add_svc_rc "$mnt" "$svc" "default" add_svc_rc "$mnt" "$svc" "default"
done done
for svc in ${services_live[@]}; do for svc in ${SERVICES_LIVE[@]}; do
add_svc_rc "$mnt" "$svc" "default" add_svc_rc "$mnt" "$svc" "default"
done done
;; ;;
'runit')
for svc in ${SERVICES[@]}; do
add_svc_runit "$mnt" "$svc"
done
for svc in ${SERVICES_LIVE[@]}; do
add_svc_runit "$mnt" "$svc"
done
;;
esac esac
info "Done configuring [%s]" "${initsys}" info "Done configuring [%s]" "${INITSYS}"
} }
configure_system(){ configure_system(){
local mnt="$1" local mnt="$1"
case ${initsys} in case ${INITSYS} in
'openrc') 'openrc' | 'runit')
configure_logind "$mnt" "elogind" configure_logind "$mnt" "elogind"
;; ;;
esac esac
echo ${hostname} > $mnt/etc/hostname echo ${HOST_NAME} > $mnt/etc/hostname
} }
clean_iso_root(){ clean_iso_root(){
@@ -197,7 +214,10 @@ clean_up_image(){
local path mnt="$1" local path mnt="$1"
msg2 "Cleaning [%s]" "${mnt##*/}" msg2 "Cleaning [%s]" "${mnt##*/}"
default_locale "reset" "$mnt" if [[ -f "$mnt/etc/locale.gen.orig" ]];then
mv "$mnt/etc/locale.gen.orig" "$mnt/etc/locale.gen"
rm "$mnt/etc/locale.conf"
fi
path=$mnt/boot path=$mnt/boot
if [[ -d "$path" ]]; then if [[ -d "$path" ]]; then
find "$path" -name 'initramfs*.img' -delete &> /dev/null find "$path" -name 'initramfs*.img' -delete &> /dev/null
@@ -242,7 +262,7 @@ configure_live_image(){
configure_hosts "$fs" configure_hosts "$fs"
configure_system "$fs" configure_system "$fs"
configure_services "$fs" configure_services "$fs"
configure_calamares "$fs" configure_calamares "$fs" "${INITSYS}"
write_live_session_conf "$fs" write_live_session_conf "$fs"
msg "Done configuring [livefs]" msg "Done configuring [livefs]"
} }
@@ -252,7 +272,7 @@ make_sig () {
msg2 "Creating signature file..." msg2 "Creating signature file..."
cd "$idir" cd "$idir"
user_own "$idir" user_own "$idir"
user_run "gpg --detach-sign --default-key ${gpgkey} $file.sfs" user_run "gpg --detach-sign --default-key ${GPG_KEY} $file.sfs"
chown -R root "$idir" chown -R root "$idir"
cd ${OLDPWD} cd ${OLDPWD}
} }
@@ -272,7 +292,7 @@ make_sfs() {
error "The path %s does not exist" "${src}" error "The path %s does not exist" "${src}"
retrun 1 retrun 1
fi fi
local timer=$(get_timer) dest=${iso_root}/${iso_name}/${target_arch} local timer=$(get_timer) dest=${iso_root}/artix/${ARCH}
local name=${1##*/} local name=${1##*/}
local sfs="${dest}/${name}.sfs" local sfs="${dest}/${name}.sfs"
mkdir -p ${dest} mkdir -p ${dest}
@@ -296,7 +316,6 @@ make_sfs() {
msg2 "Creating ext4 image of %s ..." "${size}" msg2 "Creating ext4 image of %s ..." "${size}"
truncate -s ${size} "${src}.img" truncate -s ${size} "${src}.img"
local ext4_args=() local ext4_args=()
${verbose} && ext4_args+=(-q)
ext4_args+=(-O ^has_journal,^resize_inode -E lazy_itable_init=0 -m 0) ext4_args+=(-O ^has_journal,^resize_inode -E lazy_itable_init=0 -m 0)
mkfs.ext4 ${ext4_args[@]} -F "${src}.img" &>/dev/null mkfs.ext4 ${ext4_args[@]} -F "${src}.img" &>/dev/null
tune2fs -c 0 -i 0 "${src}.img" &> /dev/null tune2fs -c 0 -i 0 "${src}.img" &> /dev/null
@@ -320,15 +339,13 @@ make_sfs() {
local highcomp="-b 256K -Xbcj x86" comp='xz' local highcomp="-b 256K -Xbcj x86" comp='xz'
mksfs_args+=(-comp ${comp} ${highcomp}) mksfs_args+=(-comp ${comp} ${highcomp})
if ${verbose};then
mksquashfs "${mksfs_args[@]}" >/dev/null mksquashfs "${mksfs_args[@]}"
else
mksquashfs "${mksfs_args[@]}"
fi
make_checksum "${dest}" "${name}" make_checksum "${dest}" "${name}"
${persist} && rm "${src}.img" ${persist} && rm "${src}.img"
if [[ -n ${gpgkey} ]];then if [[ -n ${GPG_KEY} ]];then
make_sig "${dest}" "${name}" make_sig "${dest}" "${name}"
fi fi
@@ -385,11 +402,14 @@ make_iso() {
} }
gen_iso_fn(){ gen_iso_fn(){
local vars=() name local vars=("artix") name
vars+=("${iso_name}") vars+=("${PROFILE}")
vars+=("${profile}") vars+=("${INITSYS}")
vars+=("${iso_version}") case "${REPOSITORY}" in
vars+=("${target_arch}") 'gremlins'|'goblins') vars+=("${REPOSITORY}") ;;
esac
vars+=("${ISO_VERSION}")
vars+=("${ARCH}")
for n in ${vars[@]};do for n in ${vars[@]};do
name=${name:-}${name:+-}${n} name=${name:-}${name:+-}${n}
done done
@@ -398,7 +418,7 @@ gen_iso_fn(){
install_packages(){ install_packages(){
local fs="$1" local fs="$1"
setarch "${target_arch}" mkchroot \ setarch "${ARCH}" mkchroot \
"${mkchroot_args[@]}" "${fs}" "${packages[@]}" "${mkchroot_args[@]}" "${fs}" "${packages[@]}"
} }
@@ -419,7 +439,7 @@ make_rootfs() {
install_packages "${rootfs}" install_packages "${rootfs}"
copy_overlay "${root_overlay}" "${rootfs}" copy_overlay "${ROOT_OVERLAY}" "${rootfs}"
clean_up_image "${rootfs}" clean_up_image "${rootfs}"
@@ -438,7 +458,7 @@ make_desktopfs() {
install_packages "${desktopfs}" install_packages "${desktopfs}"
copy_overlay "${desktop_overlay}" "${desktopfs}" copy_overlay "${DESKTOP_OVERLAY}" "${desktopfs}"
umount_overlay umount_overlay
clean_up_image "${desktopfs}" clean_up_image "${desktopfs}"
@@ -454,16 +474,14 @@ make_livefs() {
prepare_dir "${livefs}" prepare_dir "${livefs}"
mount_overlay "${livefs}" "${work_dir}" "${desktop_list}" mount_overlay "${livefs}" "${work_dir}" "${DESKTOP_LIST}"
install_packages "${livefs}" install_packages "${livefs}"
copy_overlay "${live_overlay}" "${livefs}" copy_overlay "${LIVE_OVERLAY}" "${livefs}"
configure_live_image "${livefs}" configure_live_image "${livefs}"
pacman -Qr "${livefs}" > ${iso_dir}/$(gen_iso_fn)-pkgs.txt
umount_overlay umount_overlay
clean_up_image "${livefs}" clean_up_image "${livefs}"
@@ -479,16 +497,16 @@ make_bootfs() {
prepare_dir "${boot}" prepare_dir "${boot}"
cp ${work_dir}/rootfs/boot/vmlinuz* ${boot}/vmlinuz-${target_arch} cp ${work_dir}/rootfs/boot/vmlinuz* ${boot}/vmlinuz-${ARCH}
local bootfs="${work_dir}/bootfs" local bootfs="${work_dir}/bootfs"
mount_overlay "${bootfs}" "${work_dir}" "${desktop_list}" mount_overlay "${bootfs}" "${work_dir}" "${DESKTOP_LIST}"
prepare_initcpio "${bootfs}" prepare_initcpio "${bootfs}"
prepare_initramfs "${bootfs}" prepare_initramfs "${bootfs}"
cp ${bootfs}/boot/initramfs.img ${boot}/initramfs-${target_arch}.img cp ${bootfs}/boot/initramfs.img ${boot}/initramfs-${ARCH}.img
prepare_boot_extras "${bootfs}" "${boot}" prepare_boot_extras "${bootfs}" "${boot}"
umount_overlay umount_overlay
@@ -505,7 +523,7 @@ make_grub(){
prepare_grub "${work_dir}/rootfs" "${work_dir}/livefs" "${iso_root}" prepare_grub "${work_dir}/rootfs" "${work_dir}/livefs" "${iso_root}"
configure_grub "${iso_root}/boot/grub/kernels.cfg" configure_grub "${iso_root}"
: > ${work_dir}/grub.lock : > ${work_dir}/grub.lock
msg "Done [/iso/boot/grub]" msg "Done [/iso/boot/grub]"
@@ -521,14 +539,14 @@ compress_images(){
prepare_images(){ prepare_images(){
local timer=$(get_timer) local timer=$(get_timer)
load_pkgs "${root_list}" "${initsys}" "${kernel}" load_pkgs "${ROOT_LIST}" "${INITSYS}"
run_safe "make_rootfs" run_safe "make_rootfs"
if [[ -f "${desktop_list}" ]] ; then if [[ -f "${DESKTOP_LIST}" ]] ; then
load_pkgs "${desktop_list}" "${initsys}" "${kernel}" load_pkgs "${DESKTOP_LIST}" "${INITSYS}"
run_safe "make_desktopfs" run_safe "make_desktopfs"
fi fi
if [[ -f ${live_list} ]]; then if [[ -f ${LIVE_LIST} ]]; then
load_pkgs "${live_list}" "${initsys}" "${kernel}" load_pkgs "${LIVE_LIST}" "${INITSYS}"
run_safe "make_livefs" run_safe "make_livefs"
fi fi
run_safe "make_bootfs" run_safe "make_bootfs"

View File

@@ -33,56 +33,76 @@ get_os_name(){
echo "$str" echo "$str"
} }
get_chroot_arch(){
local elf=$(file $1/usr/bin/file)
elf=${elf//*executable,}
echo ${elf%%,*}
}
chroot_part_mount() { chroot_part_mount() {
info "mount: [%s]" "$2" info "mount: [%s]" "$2"
mount "$@" && CHROOT_ACTIVE_PART_MOUNTS=("$2" "${CHROOT_ACTIVE_PART_MOUNTS[@]}") mount "$@" && CHROOT_ACTIVE_PART_MOUNTS=("$2" "${CHROOT_ACTIVE_PART_MOUNTS[@]}")
} }
select_os(){ trap_setup(){
local os_list=( $(detect) ) count=${#os_list[@]} [[ $(trap -p EXIT) ]] && die 'Error! Attempting to overwrite existing EXIT trap'
if [[ ${count} > 1 ]];then trap "$1" EXIT
msg "Detected systems:"
local i=0
for os in ${os_list[@]};do
local last=${os##*:}
case $last in
'efi') count=$((count-1)) ;;
*) info "$i) $(get_os_name $os)"; i=$((i+1)) ;;
esac
done
i=0
msg "Select system to mount [0-%s] : " "$((count-1))"
read select
else
select=0
fi
local os_str=${os_list[$select]} type
type=$os_str
root=${os_str%%:*}
type=${type##*:}
if [[ "${type##*:}" == 'linux' ]];then
msg "Mounting (%s) [%s]" "$(get_os_name $os_str)" "$root"
chroot_mount_partitions "$1" "$root"
else
die "You can't mount %s!" "$select"
fi
} }
chroot_mount_partitions(){ chroot_mount() {
info "mount: [%s]" "$2"
mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}")
}
chroot_add_resolv_conf() {
local chrootdir=$1 resolv_conf=$1/etc/resolv.conf
[[ -e /etc/resolv.conf ]] || return 0
# Handle resolv.conf as a symlink to somewhere else.
if [[ -L $chrootdir/etc/resolv.conf ]]; then
# readlink(1) should always give us *something* since we know at this point
# it's a symlink. For simplicity, ignore the case of nested symlinks.
resolv_conf=$(readlink "$chrootdir/etc/resolv.conf")
if [[ $resolv_conf = /* ]]; then
resolv_conf=$chrootdir$resolv_conf
else
resolv_conf=$chrootdir/etc/$resolv_conf
fi
# ensure file exists to bind mount over
if [[ ! -f $resolv_conf ]]; then
install -Dm644 /dev/null "$resolv_conf" || return 1
fi
elif [[ ! -e $chrootdir/etc/resolv.conf ]]; then
# The chroot might not have a resolv.conf.
return 0
fi
chroot_mount /etc/resolv.conf "$resolv_conf" --bind
}
chroot_mount_conditional() {
local cond=$1; shift
if eval "$cond"; then
chroot_mount "$@"
fi
}
chroot_setup(){
chroot_mount_conditional "! mountpoint -q '$1'" "$1" "$1" --bind &&
chroot_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev &&
chroot_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
ignore_error chroot_mount_conditional "[[ -d '$1/sys/firmware/efi/efivars' ]]" \
efivarfs "$1/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev &&
chroot_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid &&
chroot_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
chroot_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
chroot_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
chroot_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
}
mount_os(){
CHROOT_ACTIVE_PART_MOUNTS=() CHROOT_ACTIVE_PART_MOUNTS=()
CHROOT_ACTIVE_MOUNTS=() CHROOT_ACTIVE_MOUNTS=()
[[ $(trap -p EXIT) ]] && die 'Error! Attempting to overwrite existing EXIT trap' trap_setup chroot_part_umount
trap 'trap_handler' EXIT
chroot_part_mount $2 $1 chroot_part_mount "$2" "$1"
local mounts=$(parse_fstab "$1") local mounts=$(parse_fstab "$1")
@@ -95,92 +115,28 @@ chroot_mount_partitions(){
esac esac
done done
local chroot_arch=$(get_chroot_arch $1) chroot_setup "$1"
[[ ${chroot_arch} == x86-64 ]] && chroot_arch=${chroot_arch/-/_} chroot_add_resolv_conf "$1"
case ${target_arch} in
i686)
if [[ ${chroot_arch} == x86_64 ]];then
die "You can't chroot from %s host into %s!" "${target_arch}" "${chroot_arch}"
fi
;;
esac
chroot_mount_conditional "! mountpoint -q '$1'" "$1" "$1" --bind &&
chroot_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev &&
chroot_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
ignore_error chroot_mount_conditional "[[ -d '$1/sys/firmware/efi/efivars' ]]" \
efivarfs "$1/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev &&
chroot_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid &&
chroot_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
chroot_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
chroot_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
chroot_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
chroot_mount /etc/resolv.conf "$1/etc/resolv.conf" --bind
}
chroot_mount() {
#info "mount: [%s]" "$2"
mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}")
}
chroot_mount_conditional() {
local cond=$1; shift
if eval "$cond"; then
chroot_mount "$@"
fi
}
chroot_api_efi_mount() {
CHROOT_ACTIVE_MOUNTS=()
[[ $(trap -p EXIT) ]] && die 'Error! Attempting to overwrite existing EXIT trap'
trap 'chroot_api_efi_umount' EXIT
chroot_mount_conditional "! mountpoint -q '$1'" "$1" "$1" --bind &&
chroot_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev &&
chroot_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
ignore_error chroot_mount_conditional "[[ -d '$1/sys/firmware/efi/efivars' ]]" \
efivarfs "$1/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev &&
chroot_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid &&
chroot_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
chroot_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
chroot_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
chroot_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
} }
chroot_api_mount() { chroot_api_mount() {
CHROOT_ACTIVE_MOUNTS=() CHROOT_ACTIVE_MOUNTS=()
[[ $(trap -p EXIT) ]] && die 'Error! Attempting to overwrite existing EXIT trap' trap_setup chroot_api_umount
trap 'chroot_api_umount' EXIT chroot_setup "$1"
}
chroot_mount_conditional "! mountpoint -q '$1'" "$1" "$1" --bind && chroot_api_umount() {
chroot_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev && if (( ${#CHROOT_ACTIVE_MOUNTS[@]} )); then
chroot_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro && info "umount: [%s]" "${CHROOT_ACTIVE_MOUNTS[@]}"
chroot_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid && umount "${CHROOT_ACTIVE_MOUNTS[@]}"
chroot_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec && fi
chroot_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev && unset CHROOT_ACTIVE_MOUNTS
chroot_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
chroot_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
} }
chroot_part_umount() { chroot_part_umount() {
chroot_api_umount
info "umount: [%s]" "${CHROOT_ACTIVE_PART_MOUNTS[@]}" info "umount: [%s]" "${CHROOT_ACTIVE_PART_MOUNTS[@]}"
umount "${CHROOT_ACTIVE_PART_MOUNTS[@]}" umount "${CHROOT_ACTIVE_PART_MOUNTS[@]}"
unset CHROOT_ACTIVE_PART_MOUNTS unset CHROOT_ACTIVE_PART_MOUNTS
} }
chroot_api_umount() {
#info "umount: [%s]" "${CHROOT_ACTIVE_MOUNTS[@]}"
umount "${CHROOT_ACTIVE_MOUNTS[@]}"
unset CHROOT_ACTIVE_MOUNTS
}
chroot_api_efi_umount() {
#info "umount: [%s]" "${CHROOT_ACTIVE_MOUNTS[@]}"
umount "${CHROOT_ACTIVE_MOUNTS[@]}"
unset CHROOT_ACTIVE_MOUNTS
}
trap_handler(){
chroot_api_umount
chroot_part_umount
}

View File

@@ -78,7 +78,7 @@ die() {
msg_table_header(){ msg_table_header(){
local mesg=$1; shift local mesg=$1; shift
printf "${GREEN} ${mesg} ${ALL_OFF}\n" "$@" >&2 printf "${BLUE} ${mesg} ${ALL_OFF}\n" "$@" >&2
} }
msg_row_downgrade(){ msg_row_downgrade(){
@@ -86,9 +86,19 @@ msg_row_downgrade(){
printf "${YELLOW} ${mesg}${ALL_OFF}\n" "$@" >&2 printf "${YELLOW} ${mesg}${ALL_OFF}\n" "$@" >&2
} }
msg_row_update(){ msg_row_notify(){
local mesg=$1; shift local mesg=$1; shift
printf "${RED}${BOLD} ${mesg} ${ALL_OFF}\n" "$@" >&2 printf "${GREEN} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg_row(){
local mesg=$1; shift
printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg_row_upgrade(){
local mesg=$1; shift
printf "${RED}${RED} ${mesg} ${ALL_OFF}\n" "$@" >&2
} }
import(){ import(){

234
lib/util-pkg-gitea.sh Normal file
View File

@@ -0,0 +1,234 @@
#!/bin/bash
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
create_repo(){
local pkg="$1" org="$2"
local gitname=$(get_compliant_name "$pkg")
local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }"
msg2 "Create package repo [%s] in org (%s)" "${pkg}" "${org}"
curl -X POST "${GIT_URL}/api/v1/org/$org/repos?access_token=${GIT_TOKEN}" \
-H "accept: application/json" \
-H "content-type: application/json" \
-d "$json"
echo
}
delete_repo(){
local pkg="$1" org="$2"
local gitname=$(get_compliant_name "$pkg")
msg2 "Delete package repo [%s] in org (%s)" "${pkg}" "${org}"
curl -X DELETE "${GIT_URL}/api/v1/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
-H "accept: application/json"
}
get_pkg_org(){
local pkg="$1" org= sub=
case ${pkg} in
# ruby-*) org=${pkg:0:6}; sub="${org:5}"; echo "packagesRuby" ;;
perl-*) org=${pkg:0:6}; sub="${org:5}"; echo "packagesPerl" ;;
python-*) org=${pkg:0:8}; sub="${org:7}"; echo "packagesPython" ;;
python2-*) org=${pkg:0:9}; sub="${org:8}"; echo "packagesPython" ;;
lib32*) org=${pkg:0:7}; sub="${org:6}"; echo "packagesL" ;; #"packages${sub^^}" ;;
# lib*) org=${pkg:0:4}; sub="${org:3}"; echo "packagesLib${sub^^}" ;;
*) org=${pkg:0:1}; echo "packages${org^^}" ;;
esac
}
load_team_id(){
local org="$1" tree="$2" id=0
case $org in
packagesA)
case $tree in
packages) id=70 ;;
community) id=71 ;;
esac
;;
packagesB)
case $tree in
packages) id=72 ;;
community) id=73 ;;
esac
;;
packagesC)
case $tree in
packages) id=74 ;;
community) id=75 ;;
esac
;;
packagesD)
case $tree in
packages) id=76 ;;
community) id=77 ;;
esac
;;
packagesE)
case $tree in
packages) id=78 ;;
community) id=79 ;;
esac
;;
packagesF)
case $tree in
packages) id=80 ;;
community) id=81 ;;
esac
;;
packagesG)
case $tree in
packages) id=82 ;;
community) id=83 ;;
esac
;;
packagesH)
case $tree in
packages) id=84 ;;
community) id=85 ;;
esac
;;
packagesI)
case $tree in
packages) id=86 ;;
community) id=87 ;;
esac
;;
packagesJ)
case $tree in
packages) id=88 ;;
community) id=89 ;;
esac
;;
packagesK)
case $tree in
packages) id=90 ;;
community) id=91 ;;
esac
;;
packagesL)
case $tree in
packages) id=92 ;;
community) id=93 ;;
esac
;;
packagesM)
case $tree in
packages) id=94 ;;
community) id=95 ;;
esac
;;
packagesN)
case $tree in
packages) id=96 ;;
community) id=97 ;;
esac
;;
packagesO)
case $tree in
packages) id=98 ;;
community) id=99 ;;
esac
;;
packagesP)
case $tree in
packages) id=100 ;;
community) id=101 ;;
esac
;;
packagesQ)
case $tree in
packages) id=105 ;;
community) id=106 ;;
esac
;;
packagesR)
case $tree in
packages) id=107 ;;
community) id=108 ;;
esac
;;
packagesS)
case $tree in
packages) id=109 ;;
community) id=110 ;;
esac
;;
packagesT)
case $tree in
packages) id=111 ;;
community) id=112 ;;
esac
;;
packagesU)
case $tree in
packages) id=113 ;;
community) id=114 ;;
esac
;;
packagesV)
case $tree in
packages) id=115 ;;
community) id=116 ;;
esac
;;
packagesW)
case $tree in
packages) id=117 ;;
community) id=118 ;;
esac
;;
packagesX)
case $tree in
packages) id=119 ;;
community) id=120 ;;
esac
;;
packagesY)
case $tree in
packages) id=121 ;;
community) id=122 ;;
esac
;;
packagesZ)
case $tree in
packages) id=123 ;;
community) id=124 ;;
esac
;;
packagesPython)
case $tree in
packages) id=103 ;;
community) id=104 ;;
esac
;;
packagesPerl)
case $tree in
packages) id=102 ;;
community) id=125 ;;
esac
;;
esac
echo $id
}
add_repo_to_team(){
local pkg="$1" org="$2" tree="$3"
local id=$(load_team_id "$org" "$tree")
msg2 "Adding package repo [%s] to team (%s)" "$pkg" "$tree"
curl -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$pkg?access_token=${GIT_TOKEN}" \
-H "accept: application/json"
}

90
lib/util-pkg-subrepo.sh Normal file
View File

@@ -0,0 +1,90 @@
#!/bin/bash
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
subrepo_push(){
local pkg="$1"
msg2 "Update (%s)" "$pkg"
git subrepo push "$pkg"
}
subrepo_config(){
local pkg="$1" org="$2"
local gitname=$(get_compliant_name "$pkg")
local url=gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git
msg2 "Update .gitrepo (%s) [%s]" "$pkg" "$url"
git subrepo config "$pkg" remote "$url"
}
subrepo_clean(){
local pkg="$1"
msg2 "Clean (%s)" "$pkg"
git subrepo clean "$pkg"
}
subrepo_pull(){
local pkg="$1"
git subrepo pull "$pkg"
}
subrepo_clone(){
local pkg="$1" org="$2"
local gitname=$(get_compliant_name "$pkg")
msg2 "Getting package repo [%s] from org (%s)" "$pkg" "$org/$gitname"
git subrepo clone gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git "$pkg"
}
mainrepo_pull(){
local tree="$1"
msg2 "Check (%s)" "${tree}"
git push origin master
}
mainrepo_push(){
local tree="$1"
msg2 "Update (%s)" "${tree}"
git push origin master
}
write_jenkinsfile(){
local pkg="$1"
local jenkins=$pkg/Jenkinsfile
echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins
echo '' >> $jenkins
echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins
echo '' >> $jenkins
git add $jenkins
}
write_agentyaml(){
local pkg="$1"
local agent=$pkg/.artixlinux/agent.yaml label='master'
[[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux
echo '%YAML 1.2' > $agent
echo '---' >> $agent
echo '' >> $agent
echo "label: $label" >> $agent
echo '' >> $agent
git add $agent
}
commit_jenkins_files(){
local pkg="$1"
write_jenkinsfile "$pkg"
write_agentyaml "$pkg"
git commit -m "add jenkinsfile & .artixlinux/agent.yaml"
}

View File

@@ -9,20 +9,115 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
# $1: sofile get_local_head(){
# $2: soarch echo $(git log --pretty=%H ...refs/heads/$1^ | head -n 1)
process_sofile() { }
# extract the library name: libfoo.so
local soname="${1%.so?(+(.+([0-9])))}".so get_remote_head(){
# extract the major version: 1 echo $(git ls-remote origin -h refs/heads/$1 | cut -f1)
soversion="${1##*\.so\.}" }
if [[ "$soversion" = "$1" ]] && (($IGNORE_INTERNAL)); then
continue patch_pkg(){
fi local pkg="$1"
if ! in_array "${soname}=${soversion}-$2" ${soobjects[@]}; then case $pkg in
# libfoo.so=1-64 'glibc')
msg "${soname}=${soversion}-$2" sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
soobjects+=("${soname}=${soversion}-$2") -e '/nscd.service/d' \
-i $pkg/trunk/PKGBUILD
;;
'tp_smapi'|'acpi_call'|'r8168'|'bbswitch'|'broadcom-wl')
sed -e 's|-ARCH|-ARTIX|g' -i $pkg/trunk/PKGBUILD
;;
'nvidia')
sed -e 's|-ARCH|-ARTIX|g' -e 's|for Arch kernel|for Artix kernel|g' \
-e 's|for LTS Arch kernel|for LTS Artix kernel|g' \
-i $pkg/trunk/PKGBUILD
;;
'linux')
sed -e 's|-ARCH|-ARTIX|g' -i $pkg/trunk/PKGBUILD
sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
-e 's|CONFIG_CRYPTO_SPECK=.*|CONFIG_CRYPTO_SPECK=n|' \
-i $pkg/trunk/config
cd $pkg/trunk
updpkgsums
cd ../..
;;
'licenses')
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' -i $pkg/trunk/PKGBUILD
;;
'bash')
sed -e 's|system.bash_logout)|system.bash_logout artix.bashrc)|' \
-e "s|etc/bash.|etc/bash/|g" \
-e 's|"$pkgdir/etc/skel/.bash_logout"|"$pkgdir/etc/skel/.bash_logout"\n install -Dm644 artix.bashrc $pkgdir/etc/bash/bashrc.d/artix.bashrc|' \
-i $pkg/trunk/PKGBUILD
cd $pkg/trunk
patch -Np 1 -i ${DATADIR}/patches/artix-bash.patch
updpkgsums
cd ../..
;;
gstreamer|gst-plugins-*)
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
-e 's|(Arch Linux)|(Artix Linux)|' \
-i $pkg/trunk/PKGBUILD
;;
esac
}
get_compliant_name(){
local gitname="$1"
case $gitname in
*+) gitname=${gitname//+/plus}
esac
echo $gitname
}
find_tree(){
local tree="$1" pkg="$2"
local result=$(find $tree -mindepth 2 -maxdepth 2 -type d -name "$pkg")
result=${result%/*}
echo ${result##*/}
}
find_repo(){
local pkg="$1" unst="$2" stag="$3" repo=
local repos=(core extra testing community community-testing mulitilib multilib-testing)
$stag && repos+=(staging community-staging mulitilib-staging)
$unst && repos+=(gnome-unstable kde-unstable)
for r in ${repos[@]};do
[[ -f $pkg/repos/$r-x86_64/PKGBUILD ]] && repo=$r-x86_64
[[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any
done
echo $repo
}
get_import_path(){
local pkg="$1" import_path=
for tree in ${tree_names[@]};do
[[ -d ${TREE_DIR_ARCH}/$tree/$pkg ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg
done
echo $import_path
}
clone_tree(){
local timer=$(get_timer) host_tree="$1"
git clone $host_tree.git
show_elapsed_time "${FUNCNAME}" "${timer}"
}
pull_tree(){
local branch="master"
local local_head=$(get_local_head "$branch")
local remote_head=$(get_remote_head "$branch")
if [[ "${local_head}" == "${remote_head}" ]]; then
msg2 "remote changes: no"
else
msg2 "remote changes: yes"
git pull origin "$branch"
fi fi
} }

View File

@@ -47,81 +47,64 @@ get_osname(){
echo "${NAME}" echo "${NAME}"
} }
get_osid(){
source /usr/lib/os-release
echo "${ID}"
}
init_artools_base(){ init_artools_base(){
target_arch=$(uname -m) ARCH=$(uname -m)
[[ -z ${chroots_dir} ]] && chroots_dir='/var/lib/artools' [[ -z ${CHROOTS_DIR} ]] && CHROOTS_DIR='/var/lib/artools'
[[ -z ${workspace_dir} ]] && workspace_dir=/home/${OWNER}/artools-workspace [[ -z ${WORKSPACE_DIR} ]] && WORKSPACE_DIR=/home/${OWNER}/artools-workspace
prepare_dir "${workspace_dir}" prepare_dir "${WORKSPACE_DIR}"
} }
init_artools_pkg(){ init_artools_pkg(){
[[ -z ${tree_dir_artix} ]] && tree_dir_artix=${workspace_dir}/artix DOMAIN='artixlinux.org'
[[ -z ${host_tree_artix} ]] && host_tree_artix='https://github.com/artix-linux' GIT_DOMAIN="gitea.${DOMAIN}"
[[ -z ${tree_dir_arch} ]] && tree_dir_arch=${workspace_dir}/archlinux GIT_URL="https://${GIT_DOMAIN}"
[[ -z ${host_tree_arch} ]] && host_tree_arch='git://projects.archlinux.org/svntogit' [[ -z ${GIT_TOKEN} ]] && GIT_TOKEN=''
list_dir_import="${SYSCONFDIR}/import.list.d" [[ -z ${TREE_DIR_ARTIX} ]] && TREE_DIR_ARTIX="${WORKSPACE_DIR}/artixlinux"
[[ -d ${AT_USERCONFDIR}/import.list.d ]] && list_dir_import=${AT_USERCONFDIR}/import.list.d [[ -z ${HOST_TREE_ARTIX} ]] && HOST_TREE_ARTIX="gitea@${GIT_DOMAIN}:artixlinux"
chroots_pkg="${chroots_dir}/buildpkg" [[ -z ${TREE_DIR_ARCH} ]] && TREE_DIR_ARCH="${WORKSPACE_DIR}/archlinux"
[[ -z ${patches_dir} ]] && patches_dir=${workspace_dir}/archlinux-patches [[ -z ${HOST_TREE_ARCH} ]] && HOST_TREE_ARCH='git://projects.archlinux.org/svntogit'
[[ -z ${repos_root} ]] && repos_root="${workspace_dir}/repos" CHROOTS_PKG="${CHROOTS_DIR}/buildpkg"
[[ -z ${REPOS_ROOT} ]] && REPOS_ROOT="${WORKSPACE_DIR}/repos"
} }
init_artools_iso(){ init_artools_iso(){
chroots_iso="${chroots_dir}/buildiso" CHROOTS_ISO="${CHROOTS_DIR}/buildiso"
[[ -z ${iso_pool} ]] && iso_pool="${workspace_dir}/iso" [[ -z ${ISO_POOL} ]] && ISO_POOL="${WORKSPACE_DIR}/iso"
prepare_dir "${iso_pool}" prepare_dir "${ISO_POOL}"
profile='base' PROFILE='base'
[[ -z ${iso_version} ]] && iso_version=$(date +%Y%m%d) [[ -z ${ISO_VERSION} ]] && ISO_VERSION=$(date +%Y%m%d)
iso_name=$(get_osid) [[ -z ${INITSYS} ]] && INITSYS="openrc"
iso_label="ARTIX_$(date +%Y%m)" [[ -z ${GPG_KEY} ]] && GPG_KEY=''
[[ -z ${initsys} ]] && initsys="openrc" [[ -z ${UPLIMIT} ]] && UPLIMIT=1000
[[ -z ${kernel} ]] && kernel="linux-lts" FILE_HOST="download.${DOMAIN}"
[[ -z ${kernel_args} ]] && kernel_args="" [[ -z ${FILE_HOME} ]] && FILE_HOME="/srv/iso"
[[ -z ${gpgkey} ]] && gpgkey='' [[ -z ${FILE_PORT} ]] && FILE_PORT=65432
[[ -z ${uplimit} ]] && uplimit=100 [[ -z ${ACCOUNT} ]] && ACCOUNT="naughtyISOuploader"
[[ -z ${tracker_url} ]] && tracker_url='udp://mirror.strits.dk:6969'
[[ -z ${piece_size} ]] && piece_size=21
[[ -z ${file_host} ]] && file_host="sourceforge.net"
[[ -z ${project} ]] && project="artix-linux"
[[ -z ${account} ]] && account="[SetUser]"
[[ -z ${host_mirrors[@]} ]] && host_mirrors=('netcologne' 'freefr' 'netix' 'kent' '10gbps-io')
torrent_meta="$(get_osname)"
} }
@@ -129,9 +112,9 @@ load_config(){
[[ -f $1 ]] || return 1 [[ -f $1 ]] || return 1
artools_conf="$1" ARTOOLS_CONF="$1"
[[ -r ${artools_conf} ]] && source ${artools_conf} [[ -r ${ARTOOLS_CONF} ]] && source ${ARTOOLS_CONF}
init_artools_base init_artools_base
@@ -172,23 +155,13 @@ load_user_info(){
prepare_dir "${AT_USERCONFDIR}" prepare_dir "${AT_USERCONFDIR}"
} }
show_version(){ # orig_argv=("$0" "$@")
msg "artools"
msg2 "version: %s" "${version}"
}
show_config(){
if [[ -f ${AT_USERCONFDIR}/artools.conf ]]; then
msg2 "config: %s" "~/.config/artools/artools.conf"
else
msg2 "config: %s" "${artools_conf}"
fi
}
check_root() { check_root() {
local keepenv=$1
(( EUID == 0 )) && return (( EUID == 0 )) && return
if type -P sudo >/dev/null; then if type -P sudo >/dev/null; then
exec sudo -- "${orig_argv[@]}" exec sudo --preserve-env=$keepenv -- "${orig_argv[@]}"
else else
exec su root -c "$(printf ' %q' "${orig_argv[@]}")" exec su root -c "$(printf ' %q' "${orig_argv[@]}")"
fi fi