Compare commits

...

232 Commits
0.5.4 ... 0.7

Author SHA1 Message Date
artoo
87185b7d99 Devel (#44)
* artools-0.7 rm old

* start 0.7

* Makefile: rm old sym

* commitpkg: init pretend switch

* commitpkg: fix to_new()

* deploypkg: add sign switch

* jenkinsfile: use signing on build success

* commitpkg: add a commit option for imported pkgs

* buildtree: patch linux package

* jenkinsfiles fixes

* update example jenkinsfile

* commitpkg: simplify usage

* update example pipelines

* update example jenkinsfile

* commitpkg: fix trunk release

* update jenkinsfile

* import linux and linux-lts

* buildtree: import and compare all artix git repos

* buildtree: add single package import
commitpkg: clean up

* buildtree: add git tree vars

* buildtree: write patches in patchdir

* jenkinsfiles update

* buildtree, commitpkg: small fixes

* buildtree: show artix repo in compare

* nkchrootpkg: use env in chroot to set env vars

* buildtree, commitpkg: fixes

* update imports

* buildtree: simplify show_artix_repo()

* mkchrootpkg: clean up _chrootbuild

* buildtree: add downgrades switch

* buildtree: use patch_pkg()

* commitpkg: add a remove switch for commitpkg mode

* commitpkg: fix remove option

* update imports

* buildtree: enable importing new packages in trunk
commitpkg: cosmetics in display_settings()

* update imports
2018-02-13 20:38:15 +01:00
artoo
371f93ea7f Merge pull request #41 from artix-linux/devel
Devel
2018-02-08 23:21:22 +01:00
udeved
3fb842f36a buildtree2: rm leftover help msg 2018-02-08 23:20:36 +01:00
udeved
78fbb97bd9 buildtree2: fix comparing 2018-02-08 23:07:45 +01:00
udeved
23d75a7c12 buildtree2, buildtree: disable bash patching 2018-02-08 22:23:19 +01:00
udeved
8626be9c0b update import lists 2018-02-08 22:22:25 +01:00
udeved
557aac62e4 buildpkg2: reduce chroots used 2018-02-08 22:02:08 +01:00
udeved
f261bb9e5b update example jenkinsfile 2018-02-08 22:01:42 +01:00
udeved
3281655692 update pacman.conf files 2018-02-08 22:01:20 +01:00
udeved
dfd3961d9c mkchrootpkg, chroot-run: arch patches 2018-02-08 21:22:08 +01:00
udeved
0939e6d5a2 buildtree2: fixes 2018-02-08 10:57:33 +01:00
udeved
a9652ed8cf buildtree2: rm trunk only 2018-02-07 21:19:25 +01:00
udeved
c6d43721cb buildtree: use new patch 2018-02-07 21:15:34 +01:00
udeved
b4900e760d artix bash patch: use no path 2018-02-07 21:15:06 +01:00
udeved
346e05d943 update packages import list 2018-02-07 20:54:52 +01:00
udeved
c786e6900f buildpkg2: fix syntax 2018-02-07 20:40:53 +01:00
udeved
d42bfb6893 deploypkg2: rm move() 2018-02-07 20:15:19 +01:00
udeved
40be81f3f3 update jenkinsfile examples 2018-02-07 20:11:26 +01:00
udeved
db8ba96909 buildtree2: sync all repos in one go 2018-01-31 01:36:48 +01:00
udeved
5750465180 buildtree2: reimplement comparing 2018-01-31 00:51:33 +01:00
udeved
2d042b1545 update example pipelines & bash patch 2018-01-30 12:04:41 +01:00
udeved
a66c12ebc1 buildtree2: fixes 2018-01-30 12:03:40 +01:00
udeved
28c7ea361c buildtree2, buildpkg2: rm pkg move; use pacman-default.conf in stable repos 2018-01-29 18:17:44 +01:00
udeved
40e3623b3a basestrap, mkchroot: arch patches 2018-01-29 18:16:03 +01:00
udeved
2d998df432 buildtree2: small var renaming 2018-01-27 12:17:00 +01:00
udeved
d10dbed4b2 mkchrootpkg: backport arch patches 2018-01-27 04:52:12 +01:00
udeved
f74dd7654a buildtree2: default to rebase pulls 2018-01-27 04:51:36 +01:00
udeved
313db49bba deploypkg2 & buildtree2 fixes 2018-01-27 03:35:31 +01:00
udeved
0235f2f9cd update example jenkinsfile 2018-01-27 03:34:46 +01:00
udeved
e08c5a9659 util:: make sure that makepkg.conf is always parsed as text 2018-01-25 17:20:09 +01:00
udeved
c38319b40c fix example pipelines 2018-01-25 13:40:59 +01:00
udeved
c7d07f4408 update example pipelines 2018-01-25 11:51:04 +01:00
udeved
cf5239b814 buildtree2: fixes 2018-01-25 11:50:36 +01:00
udeved
d77b860628 buildtree2: add move_pkg() to standardize commit messages for repo move 2018-01-24 22:32:44 +01:00
udeved
4a53b6dfd1 add old import lists 2018-01-24 21:35:05 +01:00
udeved
88a3135dc2 deploypkg2: fix moving 2018-01-24 21:13:37 +01:00
udeved
b72dcdae89 update pipeline files 2018-01-24 21:13:09 +01:00
udeved
9e7b0aba10 add pipelines 2018-01-23 09:36:18 +01:00
udeved
9d32b0ca9e deploypkg2: fix 2018-01-23 09:35:57 +01:00
artoo
e496c4d3dd Merge pull request #40 from artix-linux/gitsubtree
Gitsubtree
2018-01-23 00:27:28 +01:00
udeved
146021408d util-pkg-tree: use new unified patch 2018-01-23 00:26:48 +01:00
udeved
c40ec0eca2 make pkg tools work with arch structure 2018-01-23 00:18:14 +01:00
udeved
fbba7656f9 util-pkg-tree: host tree fixes 2018-01-22 12:44:24 +01:00
udeved
a2c90b7613 buildtree2: add options to handle subtrees 2018-01-21 15:33:40 +01:00
udeved
925f5e197a upd Makefile 2018-01-17 20:24:08 +01:00
udeved
7a2170ea14 buildpkg2, buildtree2 fixes 2018-01-17 20:23:56 +01:00
udeved
f81910a891 data: readd old pac conf 2018-01-17 20:23:25 +01:00
udeved
b731228828 wip buildpkg,buildtree,deploypkg 2018-01-16 22:19:25 +01:00
udeved
b82294fcb9 install old scripts 2018-01-16 22:18:40 +01:00
udeved
2b4b3107bf add separate scripts to keeep old scripts working, first test 2018-01-15 01:15:41 +01:00
udeved
a906875af7 Merge branch 'devel' of github.com:artix-linux/artools into gitsubtree 2018-01-15 00:36:25 +01:00
udeved
4b4e07e743 buildiso: rename enable_live array 2018-01-15 00:34:26 +01:00
udeved
2127988036 builldiso: rm openrc specific services array; use services array 2018-01-15 00:22:48 +01:00
udeved
710a8dc57f first changes to adopt new git subtree 2018-01-15 00:15:56 +01:00
artoo
16fd97e2d3 Merge pull request #36 from artix-linux/devel
Devel
2018-01-08 16:50:56 +01:00
udeved
25808c8034 util-iso-publish: fix webseed url 2018-01-08 16:50:09 +01:00
udeved
d87aade54b imports: add argon2 2018-01-08 16:49:43 +01:00
udeved
37aa3c1c65 findupdate: fix path 2017-12-27 15:37:51 +01:00
udeved
c870472267 util-pkg-tree: sed the kernel modules
update galaxy imports
2017-12-20 15:51:30 +01:00
udeved
563e2bbc4a util-iso-yaml: always write unpack 2017-12-19 15:29:05 +01:00
udeved
6463779536 buildiso,deployiso: make iso pool configurable 2017-12-19 00:50:48 +01:00
udeved
8b98c6cac9 buildiso:
* remove netinstall switch
* iso grub accepts now unpack=yes to disable netinstall and to unsquash images
2017-12-19 00:33:45 +01:00
udeved
a47c8e1a44 Merge branch 'devel' of github.com:artix-linux/artools into devel 2017-12-18 20:19:53 +01:00
udeved
c7cf6c05a0 update import lists 2017-12-18 20:19:35 +01:00
udeved
5c4406a19a base: add opentmpfiles 2017-12-18 20:19:04 +01:00
udeved
5a1105302a buidiso: add option to add custom kernel args 2017-12-17 17:09:03 +01:00
udeved
6a376c8b65 data: update base profile 2017-12-13 22:55:37 +01:00
udeved
bfbbd12316 util-iso*:
* clean up;
* worth to consider a kernel paramater which runs in live session to set unsquash in calamares optionally
2017-12-13 22:45:13 +01:00
udeved
c51d75acf0 buildiso: reiplement configuring calamares image unsquashing 2017-12-13 16:02:22 +01:00
udeved
11ea38fe32 deploypkg: fix find_cached_package() and clean up 2017-12-10 19:23:32 +01:00
udeved
55b9b69859 Merge branch 'devel' of github.com:artix-linux/artools into devel 2017-12-10 18:19:48 +01:00
udeved
d2ae040e45 deploypkg: temporarily disable switch for pushing to GH 2017-12-10 18:19:37 +01:00
udeved
691c401251 util-pkg: try to fix find_cached_package() 2017-12-10 14:29:38 +01:00
udeved
8861b9c8f8 util-pkg-tree: fix show_version_table() 2017-12-09 21:45:43 +01:00
udeved
c74dda6e53 update world import list and comment packages bumped out of cycle 2017-12-07 19:47:07 +01:00
udeved
da54be8ea2 buildtree: show src and dest import path 2017-12-07 19:46:29 +01:00
udeved
6551d66a99 update world imports 2017-11-30 19:00:25 +01:00
udeved
8ed2464c5f Merge branch 'devel' of github.com:artix-linux/artools into devel 2017-11-30 18:44:09 +01:00
udeved
f2006adfaa adopt new multilib toolchain 2017-11-30 18:43:46 +01:00
udeved
fe3bd6296f buildpkg: add multilib chroot switch 2017-11-28 20:19:51 +01:00
udeved
4ac466a83e util-yaml: drop linux.preset 2017-11-27 22:18:44 +01:00
udeved
c76a29eaf7 buildiso, buildpkg: use case statement to easily add staging on demand 2017-11-27 22:06:25 +01:00
udeved
4b7ff99b98 remove i686 config 2017-11-27 21:48:34 +01:00
udeved
e034e965d3 fstabgen: arch backport 2017-11-27 21:47:34 +01:00
udeved
e4bb309841 buildiso, buildpkg, deployiso: remove i686 config files and assume x86_64 default
* arch merged lib32 toolchain in core toolchain builds, we need to see where lib32 ends up on arch
* arch has new lib in testing not in multilib
the multilib-devel group seems to be scrapped
2017-11-27 20:41:39 +01:00
udeved
7d207257f7 util-iso-profile: readd audio group to addGroups 2017-11-27 20:38:15 +01:00
udeved
ec10df53b8 update import lists 2017-11-23 17:37:38 +01:00
udeved
d32d254632 util-pkg-publish: print info msgs for checks 2017-11-15 01:01:02 +01:00
udeved
793721249a world import: add python packages 2017-11-15 00:44:03 +01:00
udeved
acd9ee7e28 util-pkg-publish: add some checks of the deployed package 2017-11-15 00:43:20 +01:00
udeved
c9337155e1 Merge branch 'devel' of github.com:artix-linux/artools into devel 2017-11-14 23:19:59 +01:00
udeved
8f1da6d4fb update world import list 2017-11-14 23:19:38 +01:00
udeved
1ab0e41426 update system import list 2017-11-14 14:41:19 +01:00
udeved
6f01896066 impoet list: add glade 2017-11-14 00:28:20 +01:00
udeved
cba60d97c6 update world import list 2017-11-13 15:56:59 +01:00
nous
4ba2a309c0 added dovecot, pigeonhole then sorted list 2017-11-13 00:01:06 +02:00
nous
6193ad59b2 add libidn2 2017-11-12 23:58:10 +02:00
udeved
b2c1c3288b update import lists 2017-11-07 16:47:19 +01:00
udeved
84242b79d0 update world and galaxy import lists 2017-11-07 11:23:43 +01:00
udeved
6039f88715 update world import list 2017-11-06 22:42:52 +01:00
udeved
54cb15f3a2 update import lists 2017-11-06 18:14:18 +01:00
artoo
13f63047a2 Merge pull request #34 from artix-linux/devel
Devel
2017-11-05 23:24:34 +01:00
udeved
7cc0c0c86a buildtree: default to system repo 2017-11-05 23:23:58 +01:00
udeved
327be3b735 update world and galaxy import lists 2017-11-05 23:20:34 +01:00
udeved
6e20fc6d07 update import lists 2017-11-05 08:08:59 +01:00
udeved
8436f0cafb update import list 2017-11-03 22:32:53 +01:00
udeved
1ded762a78 use makepkg library instead of local function copies 2017-11-03 18:41:21 +01:00
udeved
f3ac8b8679 mkchrootpkg: move init_variables() to be part of main() 2017-11-03 18:39:58 +01:00
udeved
622f426686 util-pkg-tree: use find to delete patches 2017-10-21 14:20:00 +02:00
udeved
07ee48ff72 buildtree: add patches repo subdir 2017-10-21 13:45:30 +02:00
udeved
1728682147 buildiso: use strong hash algo for sfs checksums 2017-10-21 13:45:01 +02:00
udeved
710d615cbb libs: rm global log_dir and tmp_dir 2017-10-15 18:57:05 +02:00
udeved
a305eac6ce deployiso: fix uplimit 2017-10-15 17:50:58 +02:00
udeved
b964b729cc util-pkg-tree: rm useless if 2017-10-14 10:29:17 +02:00
udeved
6d5b4d45dd buildtree: small fixes 2017-10-14 10:27:45 +02:00
artoo
a98a7b5100 Merge pull request #33 from artix-linux/devel
Devel
2017-10-11 21:57:15 +02:00
udeved
3c80f711da util-pkg-tree: clean up import 2017-10-10 20:02:33 +02:00
udeved
501272464b buildtree: sync repos in loop 2017-10-10 02:39:57 +02:00
udeved
c6ddda2773 Merge branch 'devel' of github.com:artix-linux/artools into devel 2017-10-10 02:09:32 +02:00
udeved
2bed948636 buildtree: remove repo loop; add repository optarg 2017-10-10 02:09:03 +02:00
udeved
98c1d950f8 util-pkg-publish: handle llvm case 2017-10-07 17:47:16 +02:00
udeved
6941b3ce3b signfile: remove hellhound 2017-10-07 17:46:37 +02:00
udeved
1972ee936e update import list 2017-10-06 20:08:36 +02:00
artoo
01e45fd5fd Merge pull request #32 from artix-linux/devel
Devel-0.6.1
2017-10-05 16:10:18 +02:00
udeved
a795484c7b util-grub: move configure_grub() 2017-10-05 13:01:18 +02:00
udeved
e099003b31 util-iso: drop util-iso-mount 2017-10-05 12:54:35 +02:00
udeved
dbec8ba9ad util-iso: fix imports 2017-10-05 10:07:50 +02:00
udeved
b35754ecce rename iso libs 2017-10-05 10:05:16 +02:00
udeved
91cdece50d minor fixes
drop buildyaml
2017-10-05 09:40:53 +02:00
artoo
cbce0239ec Merge pull request #31 from artix-linux/devel
Devel
2017-10-04 21:48:16 +02:00
udeved
f6a0e565af buildtree: change rsync default args 2017-10-04 21:47:44 +02:00
udeved
cfd03d199f buildpkg: fix msg display 2017-10-04 21:47:06 +02:00
udeved
3cf71e6e08 buildiso: fix umount handler 2017-10-04 16:16:01 +02:00
udeved
276b5de46f signfile: remove gpg_args
builldtree: rename artix repo tree
2017-10-03 20:17:21 +02:00
udeved
587512add9 buildiso: clean up old vars 2017-10-03 19:54:06 +02:00
udeved
0eedc88f2f update artools.conf 2017-10-03 19:53:44 +02:00
udeved
2b08fb55ee buildpkg: set lib32 work dir consistently 2017-10-03 19:53:14 +02:00
udeved
b0b95c359d rename pacman-multilib*.conf 2017-10-03 00:55:54 +02:00
udeved
fdeb9f8a54 update import lists 2017-10-02 22:27:42 +02:00
udeved
e365743567 buildiso: fixes 2017-10-02 22:26:45 +02:00
udeved
7acf81b2c8 deployiso: rm commented code 2017-10-02 22:26:19 +02:00
udeved
ca15981350 mkchrootpkg: reopen console in chroot 2017-10-02 22:25:38 +02:00
udeved
188f50e968 util-iso: onfigure only cal if exists 2017-10-02 18:21:07 +02:00
udeved
77e20fd5c0 chroot-run: mount machine-id conditional 2017-10-02 18:09:24 +02:00
udeved
260e9fb4c5 update mkinitcpio.conf 2017-10-02 16:27:55 +02:00
udeved
e597de9377 util-iso-chroot: rm machine-id 2017-10-02 09:27:00 +02:00
udeved
a1745b28b1 update pacman multilib conf 2017-10-02 09:26:16 +02:00
udeved
d2e6872b78 buildyaml: fix 2017-10-01 23:12:54 +02:00
udeved
2cac649a0f buildyaml: readd cal switch 2017-10-01 22:57:28 +02:00
udeved
80b84c3fdb buildyaml: fixes 2017-10-01 22:53:26 +02:00
udeved
762ab73d6e Makefile: drop yaml separation 2017-10-01 18:21:33 +02:00
udeved
51c613b203 util-yaml: fix configure_calamares() 2017-10-01 18:20:50 +02:00
udeved
a4ee7b3dc6 util-iso: fix umounting on error 2017-10-01 17:02:09 +02:00
udeved
3f0c2d74f8 buildiso: add buildiso-testing symlink 2017-10-01 16:56:23 +02:00
udeved
e27349a1d9 buildiso: fix umount 2017-10-01 10:04:37 +02:00
udeved
c981ab4a83 basestrap: init switches properly fix 2017-10-01 10:03:50 +02:00
udeved
d49b0dedc5 signfile: fix it 2017-10-01 00:31:27 +02:00
udeved
4f8861d158 base: add net-tools 2017-09-30 22:10:57 +02:00
udeved
e164b60208 mkchrootpkg: open ctty in chroot 2017-09-30 18:22:15 +02:00
udeved
a84b4884f5 buildpkg: remove util-pkg-chroot
update import list
2017-09-30 17:44:44 +02:00
7bb8801f31 signfile: fix typo in variable name 2017-09-27 15:14:04 +01:00
9a83ca420f signfile: add pipeline vars support 2017-09-27 15:05:22 +01:00
udeved
1995bb87d6 util-pkg-tree: fix c&p error 2017-09-24 10:35:39 +02:00
udeved
7a6f8946d5 buildtree: write update patches on compare 2017-09-24 10:30:03 +02:00
udeved
c31fcbafd5 Merge branch 'devel' of github.com:artix-linux/artools into devel 2017-09-24 09:31:26 +02:00
udeved
7ff31cbaa0 findupdates: fixes
buildtree: add compare switch
2017-09-24 09:24:39 +02:00
archnous
8696c8f986 remove extraneous header 2017-09-24 01:10:01 +03:00
archnous
9c55510610 fix add array elements 2017-09-24 01:07:12 +03:00
udeved
8742397f69 findupdates: first step to util-msg integration 2017-09-23 23:55:52 +02:00
udeved
6334b60956 initcpio: remove miso leftovers, set misobasedir=artix 2017-09-23 23:53:16 +02:00
udeved
69511b6ce9 findupdates: impirt util.sh 2017-09-23 22:48:50 +02:00
udeved
bf814c03fe findupdates: forgot load_user_info 2017-09-23 22:39:00 +02:00
udeved
f6f2776a34 initial findupdates inclusion 2017-09-23 22:33:32 +02:00
udeved
21951149b9 util-pkg-tree: fix multilib llvm import 2017-09-23 22:14:15 +02:00
udeved
902a3913c8 lib:remove some deprecated code 2017-09-23 12:19:13 +02:00
udeved
1dc4255ef4 signfile: add hellbound support 2017-09-23 12:18:09 +02:00
udeved
7e45b8020a update import lists 2017-09-23 12:17:27 +02:00
udeved
28c9f9d708 util-pkg-publish: move the rsync to proper place for local move test runs 2017-09-21 21:34:29 +02:00
udeved
dc791a8ff5 deploypkg: minor fix 2017-09-16 20:24:20 +02:00
udeved
fd75e887c2 update import list 2017-09-16 20:23:45 +02:00
udeved
59b6cc1314 basestrap: fix interactive and hostcache arg logic 2017-09-16 16:17:25 +02:00
udeved
4438210168 util-pkg-publish: show some msgs 2017-09-15 09:35:18 +02:00
udeved
20474cc5ca deploypkg: rm old code 2017-09-15 00:34:45 +02:00
udeved
422f8f0253 deploypkg: add option to move repo packages to another repo 2017-09-15 00:29:30 +02:00
udeved
9a2be670bc clean up some code 2017-09-15 00:28:31 +02:00
udeved
7ff5e93bfe buildtree: support lib32 imports 2017-09-14 19:39:31 +02:00
udeved
98854cf650 update data files 2017-09-14 19:38:36 +02:00
udeved
0e7350e39d util-pkg-tree: fix sed 2017-09-13 22:27:15 +02:00
udeved
09e05ef59b buildtree: sed the builds 2017-09-13 19:33:12 +02:00
udeved
127165d33e util-pkg-publish: go in repo dir 2017-09-13 11:01:38 +02:00
artoo
6f154bb828 Merge pull request #30 from artix-linux/devel
Devel
2017-09-11 11:11:22 +02:00
udeved
488a385c03 fix patch name 2017-09-09 11:06:40 +02:00
udeved
c7696e61fc buildtree: update patches 2017-09-09 10:59:56 +02:00
udeved
cbe3d19a30 buildtree: add artix.bashrc 2017-09-09 09:01:54 +02:00
udeved
0f90ef836a buildtree: include patches 2017-09-09 03:01:41 +02:00
udeved
594ee6716a add artix glibc and bash patches 2017-09-09 02:39:02 +02:00
udeved
365762a494 buildpkg: remove staging 2017-09-07 09:38:49 +02:00
udeved
fdb3361041 buildtree: add push switch 2017-09-06 21:34:16 +02:00
udeved
f56031547f util-pkg-tree: fix source paths 2017-09-06 18:53:26 +02:00
udeved
d2cf21e71e util-pkg-tree: fix testing import 2017-09-06 17:38:59 +02:00
udeved
bcdeb2f337 buildtree: import from testing if exists 2017-09-06 17:16:22 +02:00
udeved
f81423405d chroot-run: pass through exit val 2017-09-05 23:27:05 +02:00
udeved
1ffb06e810 libs: cleanup 2017-09-05 19:29:28 +02:00
udeved
f07da7433a update import lists 2017-09-05 19:29:02 +02:00
udeved
d2957e9d11 util-pkg-tree: sleep 10 between pushes 2017-09-04 19:10:45 +02:00
udeved
83c385c12e import.list.d: reorder 2017-09-04 19:10:15 +02:00
udeved
e9218093d0 chroot-run: import util-chroot.sh 2017-09-04 10:19:34 +02:00
udeved
eee80c1478 chroot-run: kill possible processes in chroot
buildpkg: makepkg.conf override
2017-09-04 10:10:37 +02:00
udeved
0bad32939c prepare 0.6 rel 2017-09-03 21:10:51 +02:00
udeved
59bb576963 buildpkg: die on mkchroot fail 2017-09-01 22:23:18 +02:00
udeved
a90c850b1b cleanup 2017-09-01 22:20:14 +02:00
udeved
d060b051c7 Makefile: remove signpkgs 2017-09-01 22:18:42 +02:00
udeved
f3a4d4c56f signfile: make gpg args configurable 2017-09-01 22:17:25 +02:00
udeved
d3e0d1cff8 deploypkg: add exit code 2017-09-01 22:16:51 +02:00
udeved
23ee0537a3 lddd: update 2017-09-01 22:15:17 +02:00
udeved
5ebc08a875 buildpkg: fix repo name 2017-08-29 22:04:29 +02:00
udeved
64f9263da8 util-pkg-publish: sign pkg before adding to repo 2017-08-29 18:25:40 +02:00
udeved
4a6c2bd4c9 buildpkg, checkpkg, deploypkg: fixes 2017-08-29 18:12:57 +02:00
udeved
8b8ce8674b system: import zlib 2017-08-29 18:10:27 +02:00
udeved
e42ce00169 Makefile: add buildpkg testing and staging symlinks 2017-08-29 16:39:45 +02:00
udeved
cb239e152a buildpkg & deplyopkg: fixes 2017-08-29 16:39:11 +02:00
udeved
6a0edc7e2c buildpkg: fixes
deploypkg: do the PKGBUILd sourcing
2017-08-29 16:04:41 +02:00
udeved
49e6225dc4 buildpkg: add repo driven pacman.conf; rm make.list.d 2017-08-29 10:55:28 +02:00
udeved
61310dc54f deploypkg: update 2017-08-28 15:13:52 +02:00
udeved
dff1495ac2 buildpkg: rm cache_dir_pkg and pkg_dir vars 2017-08-28 10:27:18 +02:00
udeved
ad7b1e4ce5 deployment: prepare the move away from SF 2017-08-27 12:42:13 +02:00
udeved
b05e9419ee util-pkg-tree: clean up PR fn 2017-08-26 01:59:29 +02:00
udeved
d1b8a65e80 util-pkg-tree: create a PR for each import commit and push 2017-08-26 01:45:37 +02:00
udeved
b53369b49c util-pkg: add find_pool_package() 2017-08-22 19:01:44 +02:00
udeved
79c380b4ce util-pkg-tree: push after each import commit 2017-08-22 19:01:10 +02:00
udeved
5b2436ccc3 chroot-run: bind mount /etc/machine-id 2017-08-19 16:53:04 +02:00
udeved
200dbae331 start 0.6 2017-08-18 20:16:36 +02:00
76 changed files with 3206 additions and 2680 deletions

View File

@@ -1,4 +1,4 @@
Version=0.5
Version=0.7
PREFIX = /usr/local
SYSCONFDIR = /etc
@@ -22,14 +22,7 @@ LIBS_BASE = \
lib/util-fstab.sh
SHARED_BASE = \
data/pacman-default.conf \
data/pacman-multilib.conf
LIST_PKG = \
$(wildcard data/pkg.list.d/*.list)
ARCH_CONF = \
$(wildcard data/make.conf.d/*.conf)
$(wildcard data/pacman*.conf)
LIST_IMPORT = \
$(wildcard data/import.list.d/*.list)
@@ -39,11 +32,11 @@ BIN_PKG = \
bin/lddd \
bin/finddeps \
bin/find-libdeps \
bin/signpkgs \
bin/mkchrootpkg \
bin/buildpkg \
bin/buildtree \
bin/deploypkg
bin/deploypkg \
bin/commitpkg
LIBS_PKG = \
$(wildcard lib/util-pkg*.sh)
@@ -51,6 +44,21 @@ LIBS_PKG = \
SHARED_PKG = \
data/makepkg.conf
PATCHES = \
$(wildcard data/patches/*.patch)
COMMITPKG_SYMS = \
extrapkg \
corepkg \
testingpkg \
stagingpkg \
communitypkg \
community-testingpkg \
community-stagingpkg \
multilibpkg \
multilib-testingpkg \
multilib-stagingpkg
BIN_ISO = \
bin/buildiso \
bin/deployiso
@@ -70,16 +78,6 @@ CPIOINST = \
CPIO = \
initcpio/script/artix_shutdown
BIN_YAML = \
bin/buildyaml
LIBS_YAML = \
$(wildcard lib/util-yaml*.sh) \
lib/util-profile.sh
SHARED_YAML = \
data/linux.preset
BASE = \
$(wildcard data/base/Packages-*) \
data/base/profile.conf
@@ -97,7 +95,7 @@ LIVE_ETC_PAM = \
LIVE_ETC_SUDOERS = \
$(wildcard data/base/live-overlay/etc/sudoers.d/*)
all: $(BIN_BASE) $(BIN_PKG) $(BIN_ISO) $(BIN_YAML)
all: $(BIN_BASE) $(BIN_PKG) $(BIN_ISO)
edit = sed -e "s|@datadir[@]|$(DESTDIR)$(PREFIX)/share/artools|g" \
-e "s|@sysconfdir[@]|$(DESTDIR)$(SYSCONFDIR)/artools|g" \
@@ -131,24 +129,23 @@ install_pkg:
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/artools/import.list.d
install -m0644 ${LIST_IMPORT} $(DESTDIR)$(SYSCONFDIR)/artools/import.list.d
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/artools/make.conf.d
install -m0644 ${ARCH_CONF} $(DESTDIR)$(SYSCONFDIR)/artools/make.conf.d
install -dm0755 $(DESTDIR)$(PREFIX)/bin
install -m0755 ${BIN_PKG} $(DESTDIR)$(PREFIX)/bin
ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides
for l in ${COMMITPKG_SYMS}; do ln -sf commitpkg $(DESTDIR)$(PREFIX)/bin/$$l; done
install -dm0755 $(DESTDIR)$(PREFIX)/lib/artools
install -m0644 ${LIBS_PKG} $(DESTDIR)$(PREFIX)/lib/artools
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools
install -m0644 ${SHARED_PKG} $(DESTDIR)$(PREFIX)/share/artools
install_isobase:
# install -dm0755 $(DESTDIR)$(PREFIX)/share/artools/iso-profiles
# install -m0644 ${INFO} $(DESTDIR)$(PREFIX)/share/artools/iso-profiles
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools/patches
install -m0644 ${PATCHES} $(DESTDIR)$(PREFIX)/share/artools/patches
install_isobase:
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base
install -m0644 ${BASE} $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/base
@@ -168,6 +165,8 @@ 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
@@ -179,20 +178,9 @@ install_iso:
install -m0755 ${CPIO} $(DESTDIR)$(SYSCONFDIR)/initcpio
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools
install -m0644 ${SHARED_ISO} $(DESTDIR)$(PREFIX)/share/artools
install_yaml:
install -dm0755 $(DESTDIR)$(PREFIX)/bin
install -m0755 ${BIN_YAML} $(DESTDIR)$(PREFIX)/bin
install -dm0755 $(DESTDIR)$(PREFIX)/lib/artools
install -m0644 ${LIBS_YAML} $(DESTDIR)$(PREFIX)/lib/artools
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools
install -m0644 ${SHARED_YAML} $(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
@@ -201,14 +189,14 @@ uninstall_base:
uninstall_pkg:
for f in ${LIST_IMPORT}; do rm -f $(DESTDIR)$(SYSCONFDIR)/artools/import.list.d/$$f; done
for f in ${ARCH_CONF}; do rm -f $(DESTDIR)$(SYSCONFDIR)/artools/make.conf.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 ${INFO}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/iso-profiles/$$f; done
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
@@ -217,6 +205,7 @@ uninstall_isobase:
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
@@ -224,14 +213,9 @@ uninstall_iso:
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
uninstall_yaml:
for f in ${BIN_YAML}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done
for f in ${LIBS_YAML}; do rm -f $(DESTDIR)$(PREFIX)/lib/artools/$$f; done
for f in ${SHARED_YAML}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/$$f; done
install: install_base install_pkg install_iso install_isobase
install: install_base install_pkg install_iso install_yaml install_isobase
uninstall: uninstall_base uninstall_pkg uninstall_iso uninstall_yaml uninstall_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

View File

@@ -25,12 +25,13 @@ newroot=/mnt
hostcache=false
copykeyring=true
copymirrorlist=true
directory=false
interactive=false
usage() {
echo "usage: ${0##*/} [options] root [packages...]"
echo " -C <config> Use an alternate config file for pacman"
echo " -c Use the package cache on the host, rather than the target"
echo " -d Allow installation to a non-mountpoint directory"
echo " -G Avoid copying the host's pacman keyring to the target"
echo " -i Avoid auto-confirmation of package selections"
echo " -M Avoid copying the host's mirrorlist to the target"
@@ -45,12 +46,11 @@ usage() {
orig_argv=("$0" "$@")
opts=':C:cdGiM'
opts=':C:cGiM'
while getopts ${opts} arg; do
case "${arg}" in
C) pacman_conf=$OPTARG ;;
d) directory=true ;;
c) hostcache=true ;;
i) interactive=true ;;
G) copykeyring=false ;;
@@ -67,18 +67,14 @@ check_root
newroot=$1; shift
pacman_args=("${@:-base}")
${hostcache} && pacman_args+=(--cachedir="$newroot/var/cache/pacman/pkg")
${hostcache} || pacman_args+=(--cachedir="$newroot/var/cache/pacman/pkg")
${interactive} && pacman_args+=(--noconfirm)
${interactive} || pacman_args+=(--noconfirm)
[[ -n $pacman_conf ]] && pacman_args+=(--config="$pacman_conf")
[[ -d $newroot ]] || die "%s is not a directory" "$newroot"
if ! mountpoint -q "$newroot" && ! ${directory}; then
die '%s is not a mountpoint!' "$newroot"
fi
# create obligatory directories
create_min_fs "$newroot"

View File

@@ -19,30 +19,28 @@ SYSCONFDIR='@sysconfdir@'
import ${LIBDIR}/util.sh
import ${LIBDIR}/util-iso.sh
prepare_traps(){
for sig in TERM HUP QUIT; do
trap "trap_exit $sig \"$(gettext "%s signal caught. Exiting...")\" \"$sig\"" "$sig"
done
trap 'trap_exit INT "$(gettext "Aborted by user! Exiting...")"' INT
# trap 'trap_exit USR1 "$(gettext "An unknown error has occurred. Exiting...")"' ERR
}
prepare_build(){
timer_start=$(get_timer)
load_profile "${profile}"
local pac_arch='default' pacman_conf
[[ "${target_arch}" == 'x86_64' ]] && pac_arch='multilib'
netgroups=${netgroups_url}/netgroups-${initsys}.yaml
pacman_conf="${DATADIR}/pacman-$pac_arch.conf"
local pacman_conf pac_file="pacman-default.conf"
case "${stablility}" in
'gremlins') pac_file="pacman-${stablility}.conf" ;;
esac
pacman_conf="${DATADIR}/$pac_file"
[[ -f $AT_USERCONFDIR/$pac_file ]] && pacman_conf="$AT_USERCONFDIR/$pac_file"
iso_file=$(gen_iso_fn).iso
mkchroot_args+=(-C ${pacman_conf})
work_dir=${chroots_iso}/${profile}/${target_arch}
iso_dir="${cache_dir_iso}/${profile}"
iso_dir="${iso_pool}/${profile}"
iso_root=${chroots_iso}/${profile}/iso
mnt_dir=${chroots_iso}/${profile}/mnt
@@ -55,16 +53,15 @@ show_profile(){
if ${verbose};then
msg2 "autologin: %s" "${autologin}"
msg2 "netgroups: %s" "$(get_yaml)"
msg2 "netgroups: %s" "${netgroups}"
msg2 "hostname: %s" "${hostname}"
msg2 "username: %s" "${username}"
msg2 "password: %s" "${password}"
msg2 "addgroups: %s" "${addgroups}"
msg2 "enable_live: %s" "${enable_live[*]}"
msg2 "openrc_boot: %s" "${openrc_boot[*]}"
msg2 "openrc_default: %s" "${openrc_default[*]}"
msg2 "services_live: %s" "${services_live[*]}"
msg2 "services: %s" "${services[*]}"
fi
}
@@ -74,10 +71,10 @@ display_settings(){
msg "OPTIONS:"
msg2 "profile: %s" "${profile}"
msg2 "arch: %s" "${target_arch}"
msg2 "initsys: %s" "${initsys}"
msg2 "kernel: %s" "${kernel}"
[[ -n ${gpgkey} ]] && msg2 "gpgkey: %s" "${gpgkey}"
msg2 "stablility: %s" "${stablility}"
msg "ARGS:"
msg2 "clean_first: %s" "${clean_first}"
@@ -85,15 +82,48 @@ display_settings(){
msg2 "iso_only: %s" "${iso_only}"
msg2 "persist: %s" "${persist}"
msg "DIST SETTINGS:"
msg2 "dist_name: %s" "${dist_name}"
msg2 "dist_release: %s" "${dist_release}"
msg2 "dist_branding: %s" "${dist_branding}"
msg "ISO SETTINGS:"
msg2 "iso_version: %s" "${iso_version}"
msg "BUILD:"
show_profile
}
build(){
msg "Start building [%s]" "${profile}"
if ${clean_first};then
for copy in "${work_dir}"/*; do
[[ -d $copy ]] || continue
msg2 "Deleting chroot copy '%s'..." "$(basename "${copy}")"
lock 9 "$copy.lock" "Locking chroot copy '%s'" "$copy"
subvolume_delete_recursive "${copy}"
rm -rf --one-file-system "${copy}"
done
lock_close 9
rm -rf --one-file-system "${work_dir}"
clean_iso_root "${iso_root}"
fi
if ${iso_only}; then
[[ ! -d ${work_dir} ]] && die "Create images: buildiso -p %s -x" "${profile}"
compress_images
exit 1
fi
if ${images_only}; then
prepare_images
warning "Continue compress: buildiso -p %s -zc ..." "${profile}"
exit 1
else
prepare_images
compress_images
fi
msg "Finished building [%s]" "${profile}"
show_elapsed_time "${FUNCNAME}" "${timer_start}"
}
load_user_info
load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
@@ -106,15 +136,16 @@ verbose=false
persist=false
mkchroot_args=()
cmd=${0##*/}
stablility=${cmd##*-}
usage() {
echo "Usage: ${0##*/} [options]"
echo " -p <profile> Profile [default: ${profile}]"
echo " -a <arch> Arch [default: ${target_arch}]"
echo ' -r <dir> Chroots directory'
echo " [default: ${chroots_iso}]"
echo ' -t <dir> Target directory'
echo " [default: ${cache_dir_iso}]"
echo " [default: ${iso_pool}]"
echo ' -k <name> Kernel to use'
echo " [default: ${kernel}]"
echo ' -i <name> Init system to use'
@@ -136,14 +167,13 @@ usage() {
orig_argv=("$0" "$@")
opts='p:a:r:t:k:i:g:czxmvqh'
opts='p:r:t:k:i:g:czxmvqh'
while getopts "${opts}" arg; do
case "${arg}" in
p) profile="$OPTARG" ;;
a) target_arch="$OPTARG" ;;
r) chroots_iso="$OPTARG" ;;
t) cache_dir_iso="$OPTARG" ;;
t) iso_pool="$OPTARG" ;;
k) kernel="$OPTARG" ;;
i) initsys="$OPTARG" ;;
g) gpgkey="$OPTARG" ;;

View File

@@ -20,17 +20,12 @@ SYSCONFDIR='@sysconfdir@'
[[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh
import ${LIBDIR}/util.sh
import ${LIBDIR}/util-chroot.sh
import ${LIBDIR}/util-pkg.sh
import ${LIBDIR}/util-pkg-chroot.sh
show_pkg(){
check_build "$1"
cd $1
source PKGBUILD
for n in ${pkgname[@]}; do
msg2 "%s" "$n"
done
cd ..
source PKGBUILD
for n in ${pkgname[@]}; do
msg2 "%s" "$n"
done
}
display_settings(){
@@ -38,139 +33,89 @@ display_settings(){
show_config
msg "OPTIONS:"
msg2 "arch: %s" "${target_arch}"
msg2 "repository: %s" "${repository}"
msg2 "chroots_pkg: %s" "${chroots_pkg}"
msg2 "repository: %s" "${repository}"
msg "ARGS:"
msg2 "create_first: %s" "${create_first}"
msg2 "delete_first: %s" "${delete_first}"
msg2 "clean_first: %s" "${clean_first}"
msg2 "update_first: %s" "${update_first}"
msg2 "namcap: %s" "${namcap}"
msg2 "sign: %s" "${sign}"
msg2 "repo_add: %s" "${repo_add}"
msg2 "copy_pkg: %s" "${copy_pkg}"
msg "PATHS:"
msg2 "pkg_dir: %s" "${pkg_dir}"
if ${create_first};then
msg "PKG:"
msg2 "packages: %s" "${packages[*]}"
fi
msg2 "makepkg_args: %s" "${makepkg_args[*]}"
msg2 "mkchrootpkg_args: %s" "${mkchrootpkg_args[*]}"
msg "BUILD:"
show_pkg "${package}"
show_pkg
}
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
create_first=false
delete_first=false
clean_first=false
update_first=false
namcap=false
pretend=false
sign=false
is_multilib=false
repo_add=false
copy_pkg=false
mkchroot_args=()
mkchrootpkg_args=()
deploypkg_args=(-x)
install_pkgs=()
repository=${PWD##*/}
package=''
mkchrootpkg_args=(-c -n)
repository='default'
prepare_build(){
local pac_arch='default'
local pac_file= mp_file='makepkg.conf'
base_devel=('base-devel')
case ${repository} in
'system'|'world'|'galaxy') repository='default' ;;
lib32*) base_devel+=('multilib-devel') ;;
galaxy-gremlins|galaxy-goblins) repository=${repository#*-} ;;
esac
local pac_file="pacman-${repository}.conf"
if [[ "${target_arch}" == 'multilib' ]];then
pac_arch='multilib'
is_multilib=true
fi
local pacman_conf="${DATADIR}/$pac_file"
[[ -f $AT_USERCONFDIR/$pac_file ]] && pacman_conf="$AT_USERCONFDIR/$pac_file"
local pacman_conf="${DATADIR}/pacman-$pac_arch.conf"
[[ -f $AT_USERCONFDIR/pacman-$pac_arch.conf ]] && pacman_conf="$AT_USERCONFDIR/pacman-$pac_arch.conf"
work_dir="${chroots_pkg}/${repository}-${target_arch}"
work_dir="${chroots_pkg}/${target_arch}/${repository}"
pkg_dir="${cache_dir_pkg}/${target_arch}/${repository}"
local makepkg_conf="${DATADIR}/$mp_file"
[[ -f $AT_USERCONFDIR/$mp_file ]] && makepkg_conf="$AT_USERCONFDIR/$mp_file"
local makepkg_conf=$(get_makepkg_conf "${target_arch}")
mkchroot_args+=(-C "${pacman_conf}" -M "${makepkg_conf}" "${work_dir}/root")
[[ "$pac_arch" == 'multilib' ]] && target_arch='x86_64'
mkchrootpkg_args+=(-r "${work_dir}" "${makepkg_args[@]}")
}
mkchroot_args+=(-C ${pacman_conf} -M ${makepkg_conf})
build(){
local timer_start=$(get_timer)
mkchrootpkg_args+=(-r ${work_dir})
deploypkg_args+=(-r ${repository})
prepare_dir "${pkg_dir}"
prepare_dir "${work_dir}"
packages=('base-devel')
${is_multilib} && packages+=('multilib-devel')
timer_start=$(get_timer)
exec mkchrootpkg "${mkchrootpkg_args[@]}"
show_elapsed_time "${FUNCNAME}" "${timer_start}"
}
usage() {
echo "Usage: ${0##*/} [options]"
echo " -p <pkg> Package to build [default: ${package}]"
echo " -a <arch> Arch [default: ${target_arch}]"
echo ' -r <dir> Chroots directory'
echo " [default: ${chroots_pkg}]"
echo ' -i <pkgs> Install packages into the working copy of the chroot'
echo " -z <repo> The repo name to add the package(s) [default: ${repository}]"
echo ' -o Create chroot'
echo ' -d Delete chroot'
echo ' -c Clean chroot copy'
echo ' -u Update chroot copy'
echo ' -x Add the package(s) to the repo'
echo ' -l Copy the package(s) to the repo instead of symlink'
echo ' -n Install and run namcap check'
echo ' -s Sign packages'
echo "Usage: ${0##*/} [options] -- [makepkg_args]"
echo " -r <dir> Repository [default: ${repository}]"
echo ' -c Create root chroot'
echo ' -q Query settings and pretend build'
echo ' -h This help'
echo ''
echo "Default makepkg_args args: ${makepkg_args[*]}"
echo ''
exit $1
}
orig_argv=("$0" "$@")
opts='p:a:r:i:z:oldcunsxqh'
opts='r:cqh'
while getopts "${opts}" arg; do
case "${arg}" in
p) package="$OPTARG" ;;
a) target_arch="$OPTARG" ;;
r) chroots_pkg="$OPTARG" ;;
i) install_pkgs+=("$OPTARG"); mkchrootpkg_args+=(-I "${install_pkgs[*]}") ;;
z) repository="$OPTARG" ;;
o) create_first=true ;;
d) delete_first=true ;;
c) clean_first=true ; mkchrootpkg_args+=(-c) ;;
u) update_first=true ; mkchrootpkg_args+=(-u) ;;
x) repo_add=true ;;
l) copy_pkg=true; deploypkg_args+=(-c) ;;
n) namcap=true; mkchrootpkg_args+=(-n) ;;
s) sign=true ;;
r) repository="$OPTARG" ;;
c) create_first=true ;;
q) pretend=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '%s'" "${arg}"; usage 1 ;;
esac
done
shift $(($OPTIND - 1))
makepkg_args+=("${@:$OPTIND}")
check_root
@@ -178,13 +123,28 @@ prepare_build
${pretend} && display_settings && exit
if ${delete_first};then
delete_chroot "${work_dir}/root" "${work_dir}"
delete_chroot "${work_dir}/$OWNER" "${work_dir}"
fi
if ${create_first} || [[ ! -d ${work_dir}/root ]];then
create_chroot "${mkchroot_args[@]}" "${work_dir}/root" "${packages[@]}"
msg "Creating chroot for [%s] (%s)..." "${repository}" "${target_arch}"
for copy in "${work_dir}"/*; do
[[ -d $copy ]] || continue
msg2 "Deleting chroot copy '%s'..." "$(basename "${copy}")"
lock 9 "$copy.lock" "Locking chroot copy '%s'" "$copy"
subvolume_delete_recursive "${copy}"
rm -rf --one-file-system "${copy}"
done
lock_close 9
rm -rf --one-file-system "${work_dir}"
mkdir -p "${work_dir}"
setarch "${target_arch}" mkchroot \
"${mkchroot_args[@]}" "${base_devel[@]}" || abort
else
lock 9 "${work_dir}/root.lock" "Locking clean chroot"
chroot-run "${mkchroot_args[@]}" \
pacman -Syu --noconfirm || abort
fi
build "${package}"
build

View File

@@ -13,61 +13,358 @@ 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-tree.sh
show_imports(){
for repo in ${repo_tree_import[@]};do
read_import_list "$repo"
for p in ${import_list[@]};do
msg2 "%s: %s" ""$repo "$p"
get_local_head(){
echo $(git log --pretty=%H ...refs/heads/$1^ | head -n 1)
}
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(){
cd ${tree_dir_arch}
for tree in packages community;do
if [[ -d ${tree} ]];then
cd ${tree}
pull_tree "${tree}"
cd ..
else
clone_tree "${tree}" "${host_tree_arch}/${tree}"
fi
done
}
pull_tree_artix(){
cd ${tree_dir_artix}
for tree in packages packages-galaxy;do
if [[ -d ${tree} ]];then
cd ${tree}
git config --bool pull.rebase true
pull_tree "${tree}"
cd ..
else
clone_tree "${tree}" "${host_tree_artix}/${tree}"
fi
done
}
read_import_list(){
local tree="$1"
local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g"
import_list=$(sed "$_com_rm" "${list_dir_import}/$tree.list" | sed "$_space" | sed "$_clean")
}
patch_pkg(){
local pkg="$1" repo="$2"
case $pkg in
'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 ../..
;;
'licenses')
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' -i $pkg/trunk/PKGBUILD
;;
esac
}
get_import_path(){
local tree="$1" import_path=
case $tree in
packages) import_path=${tree_dir_arch}/packages ;;
packages-galaxy) import_path=${tree_dir_arch}/community ;;
esac
echo $import_path
}
find_repo(){
local pkg="$1" repo=
if [[ -d $pkg/repos/core-x86_64 ]];then
repo=core-x86_64
elif [[ -d $pkg/repos/core-any ]];then
repo=core-any
fi
if [[ -d $pkg/repos/extra-x86_64 ]];then
repo=extra-x86_64
elif [[ -d $pkg/repos/extra-any ]];then
repo=extra-any
fi
if [[ -d $pkg/repos/testing-x86_64 ]];then
repo=testing-x86_64
elif [[ -d $pkg/repos/testing-any ]];then
repo=testing-any
fi
if [[ -d $pkg/repos/staging-x86_64 ]];then
repo=staging-x86_64
elif [[ -d $pkg/repos/staging-any ]];then
repo=staging-any
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(){
local pkg="$1" archtree="$2" artixtree="$3" src= dest=
src=${tree_dir_arch}/$archtree/$pkg/trunk
dest=${tree_dir_artix}/$artixtree/$pkg/trunk
source $src/PKGBUILD 2>/dev/null
cd ${tree_dir_arch}/$archtree
msg "Package: %s" "$pkg"
local archver=$(get_full_version $pkg)
msg2 "Arch Version: %s" "$archver"
if [[ -d $dest ]];then
source $dest/PKGBUILD 2>/dev/null
cd ${tree_dir_artix}/$artixtree
local artixver=$(get_full_version $pkg)
msg2 "Artix Version: %s" "$artixver"
info "artixver: %s" "$artixver"
if [ $(vercmp $artixver $archver) -lt 0 ];then
info "Importing from archlinux (%s)" "$archtree"
rsync "${rsync_args[@]}" $src/ $dest/
patch_pkg "$pkg" "$tree"
else
warning "Versions match! Nothing to do!"
fi
else
cd ${tree_dir_artix}/$artixtree
info "Importing from archlinux (%s)" "$archtree"
mkdir $pkg
rsync "${rsync_args[@]}" $src/ $dest/
patch_pkg "$pkg" "$tree"
fi
}
import_from_arch(){
for tree in packages packages-galaxy;do
info "Importing from archlinux %s" "$tree"
read_import_list "$tree"
cd ${tree_dir_artix}/$tree
for pkg in ${import_list[@]};do
[[ "$tree" == 'packages' ]] && from_arch "$pkg" "$tree" "$tree"
[[ "$tree" == 'packages-galaxy' ]] && from_arch "$pkg" "community" "$tree"
done
done
}
sync_repos(){
pull_tree_arch
pull_tree_artix
}
display_settings(){
show_version
show_config
msg "REPOS:"
msg2 "repo_tree_arch: %s" "${repo_tree_arch[*]}"
msg2 "repo_tree_import: %s" "${repo_tree_import[*]}"
msg "OPTIONS:"
msg2 "package: %s" "${package}"
msg "ARGS:"
msg2 "verbose: %s" "${verbose}"
msg2 "arch: %s" "${arch}"
msg2 "import_arch: %s" "${import_arch}"
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}"
if ${verbose}; then
if ${import_arch};then
msg "IMPORT QUEUE:"
show_imports
fi
fi
msg2 "patches_dir: %s" "${patches_dir}"
}
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
pretend=false
arch=false
import_arch=false
verbose=false
sync=false
upgrades=false
downgrades=false
import_packages=false
import_community=false
import_all=false
package=''
rsync_args=(-aWx --progress --delete --no-R --no-implied-dirs)
git_artix='packages'
git_arch='packages'
rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs)
usage() {
echo "Usage: ${0##*/} [options]"
echo " -a Sync arch tree"
echo ' -i Import arch packages'
echo ' -v Verbose import output'
echo ' -p <pkg> Package name'
echo " -s Clone or pull repos"
echo ' -u Show upgrade packages'
echo ' -d Show downgrade packages'
echo ' -i Import from arch packages'
echo ' -j Import from arch community'
echo ' -k Import arch packages'
echo ' -q Query settings'
echo ' -h This help'
echo ''
@@ -77,13 +374,17 @@ usage() {
orig_argv=("$0" "$@")
opts='aivqh'
opts='p:sudijkqh'
while getopts "${opts}" arg; do
case "${arg}" in
a) arch=true ;;
i) import_arch=true ;;
v) verbose=true; rsync_args+=(-v --stats) ;;
p) package="$OPTARG" ;;
s) sync=true ;;
u) upgrades=true ;;
d) downgrades=true ;;
i) import_packages=true ;;
j) import_community=true; git_artix='packages-galaxy'; git_arch='community' ;;
k) import_all=true ;;
q) pretend=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
@@ -94,9 +395,18 @@ shift $(($OPTIND - 1))
prepare_dir "${tree_dir_artix}"
prepare_dir "${tree_dir_arch}"
prepare_dir "${patches_dir}"
${pretend} && display_settings && exit 1
${arch} && sync_tree_arch
${sync} && sync_repos
${import_arch} && import_from_arch
${upgrades} && show_upgrade_table
${downgrades} && show_downgrade_table
${import_all} && import_from_arch
${import_packages} && from_arch "${package}" "${git_arch}" "${git_artix}"
${import_community} && from_arch "${package}" "${git_arch}" "${git_artix}"

View File

@@ -1,107 +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.
version=@version@
LIBDIR='@libdir@'
DATADIR='@datadir@'
SYSCONFDIR='@sysconfdir@'
[[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh
import ${LIBDIR}/util.sh
import ${LIBDIR}/util-yaml-check.sh
import ${LIBDIR}/util-profile.sh
show_profile(){
msg2 "yaml_dir: %s" "${yaml_dir}"
msg2 "autologin: %s" "${autologin}"
msg2 "netgroups: %s" "$(get_yaml)"
msg2 "hostname: %s" "${hostname}"
msg2 "username: %s" "${username}"
msg2 "password: %s" "${password}"
msg2 "addgroups: %s" "${addgroups}"
msg2 "enable_live: %s" "${enable_live[*]}"
msg2 "openrc_boot: %s" "${openrc_boot[*]}"
msg2 "openrc_default: %s" "${openrc_default[*]}"
}
display_settings(){
show_version
show_config
msg "OPTIONS:"
msg2 "profile: %s" "${profile}"
msg2 "arch: %s" "${target_arch}"
msg2 "initsys: %s" "${initsys}"
msg2 "kernel: %s" "${kernel}"
msg "ARGS:"
msg2 "calamares: %s" "${calamares}"
msg2 "group: %s" "${group}"
msg "BUILD:"
show_profile
}
load_user_info
load_config "${AT_USERCONFDIR}/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
calamares=false
pretend=false
group=false
cache_dir_netinstall="${workspace_dir}/netinstall"
usage() {
echo "Usage: ${0##*/} [options]"
echo " -p <profile> Buildset or profile [default: ${profile}]"
echo " -a <arch> Arch [default: ${target_arch}]"
echo " -k <name> Kernel to use[default: ${kernel}]"
echo " -i <name> Init system to use [default: ${initsys}]"
echo ' -c Check also calamares yaml files generated for the profile'
echo ' -g Enable pacman group accepted for -p'
echo ' -q Query settings'
echo ' -h This help'
echo ''
echo ''
exit $1
}
orig_argv=("$0" "$@")
opts='p:a:i:k:gcqh'
while getopts "${opts}" arg; do
case "${arg}" in
p) profile="$OPTARG" ;;
a) target_arch="$OPTARG" ;;
i) initsys="$OPTARG" ;;
k) kernel="$OPTARG" ;;
c) calamares=true ;;
g) group=true ;;
q) pretend=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac
done
shift $(($OPTIND - 1))
prepare_build
${pretend} && display_settings && exit 1
${group} && write_pacman_group_yaml "${profile}" && exit 0
build

View File

@@ -14,6 +14,7 @@ version=@version@
LIBDIR='@libdir@'
[[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh
import ${LIBDIR}/util.sh
import ${LIBDIR}/util-pkg.sh
shopt -s extglob

View File

@@ -15,6 +15,7 @@ LIBDIR='@libdir@'
[[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh
import ${LIBDIR}/util.sh
import ${LIBDIR}/util-chroot.sh
import ${LIBDIR}/util-mount.sh
working_dir=''
@@ -86,11 +87,12 @@ copy_hostconf () {
cp -T "$file" "$working_dir$file"
done
sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${cache_dirs[@]})|g" -i "$1/etc/pacman.conf"
sed -r "s|^#?\\s*CacheDir.+|CacheDir = ${cache_dirs[*]}|g" -i "$1/etc/pacman.conf"
}
chroot_extra_mount() {
chroot_mount "/etc/resolv.conf" "$1/etc/resolv.conf" -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
for cache_dir in ${cache_dirs[@]:1}; do
@@ -126,3 +128,9 @@ eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf")
${nosetarch} && unset CARCH
${CARCH:+setarch "$CARCH"} chroot "${working_dir}" "$@"
ret=$?
kill_chroot_process "${working_dir}"
exit $ret

147
bin/commitpkg.in Normal file
View File

@@ -0,0 +1,147 @@
#!/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
commit_pkg(){
cd ${tree_dir_artix}/${git_tree}/${package}
source trunk/PKGBUILD
local ver=$(get_full_version ${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
[[ $arch == 'any' ]] && CARCH=any
if [[ ${source_repo} != 'trunk' ]];then
cd repos
dest=${target_repo}-$CARCH
action='move'
[[ -d $dest ]] && git rm -r $dest
git mv ${source_repo}-$CARCH $dest
cd ..
else
dest=${target_repo}-$CARCH
action='add'
[[ -d repos/$dest ]] && git rm -r repos/$dest
[[ ! -d repos ]] && mkdir repos
cp -r trunk repos/$dest
fi
local ver=$(get_full_version ${package})
info "[%s] -> [%s] '%s' %s" "${source_repo}" "${target_repo}" "${package}-$ver" "${action}"
git add .
git commit -m "[${source_repo}] -> [${target_repo}] '${package}-$ver' ${action}"
${push} && git push origin master
fi
}
display_settings(){
show_version
show_config
msg "OPTIONS:"
msg2 "git_tree: %s" "${git_tree}"
msg2 "source_repo: %s" "${source_repo}"
msg2 "target_repo: %s" "${target_repo}"
msg2 "package: %s" "${package}"
msg "ARGS:"
msg2 "remove: %s" "${remove}"
msg2 "push: %s" "${push}"
}
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
source_repo='trunk'
package=''
remove=false
push=false
pretend=false
git_tree='packages'
cmd=${0##*/}
target_repo=${cmd%pkg}
case ${target_repo} in
community*|multilib*) git_tree='packages-galaxy' ;;
esac
usage() {
echo "Usage: ${0##*/} [options]"
echo " -s <name> Source repository [default:${source_repo}]"
echo ' -p <pkg> Package name'
echo ' -r Delete from repo'
echo ' -u Push'
echo ' -q Query settings and pretend'
echo ' -h This help'
echo ''
echo ''
exit $1
}
orig_argv=("$0" "$@")
opts='p:s:urqh'
while getopts "${opts}" arg; do
case "${arg}" in
s) source_repo="$OPTARG" ;;
p) package="$OPTARG" ;;
r) remove=true ;;
u) push=true ;;
q) pretend=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac
done
shift $(($OPTIND - 1))
${pretend} && display_settings && exit 1
if [[ "${cmd}" == 'commitpkg' ]];then
commit_pkg
else
release_pkg
fi

View File

@@ -25,7 +25,6 @@ display_settings(){
msg "OPTIONS:"
msg2 "profile: %s" "${profile}"
msg2 "uplimit: %s kB/s" "${uplimit}"
# msg2 "dist_release: %s" "${dist_release}"
msg "ARGS:"
msg2 "update: %s" "${update}"
@@ -41,7 +40,7 @@ display_settings(){
msg "REMOTE:"
msg2 "account: %s" "${account}"
msg2 "host: %s" "${host}"
msg2 "file_host: %s" "${file_host}"
msg2 "project: %s" "${project}"
msg "UPLOAD:"
@@ -79,7 +78,7 @@ opts='p:l:uvtqh'
while getopts "${opts}" arg; do
case "${arg}" in
p) profile="$OPTARG" ;;
l) limit="$OPTARG" ;;
l) uplimit="$OPTARG" ;;
u) update=true; rsync_args+=(-u) ;;
t) torrent=true ;;
v) verbose=true; rsync_args+=(-v --stats) ;;

View File

@@ -16,12 +16,42 @@ SYSCONFDIR='@sysconfdir@'
[[ -r ${LIBDIR}/util-msg.sh ]] && source ${LIBDIR}/util-msg.sh
import ${LIBDIR}/util.sh
import ${LIBDIR}/util-pkg-publish.sh
import ${LIBDIR}/util-pkg.sh
show_transfer(){
del_from_repo(){
local ver
local repo="$1"
msg2 "local: %s" "${repos_local}/$repo/"
msg2 "remote: %s" "${repos_remote}/$repo/"
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
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##*/}"
if ${sign_pkg};then
[[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig
signfile ${pkgfile}
fi
ln -sf ${pkgfile}{,.sig} $repo_path/
repo-add -R $repo_path/$repo.db.tar.xz $pkgfile
fi
done
}
display_settings(){
@@ -30,55 +60,32 @@ display_settings(){
msg "OPTIONS:"
msg2 "repository: %s" "${repository}"
msg2 "package: %s" "${package}"
msg2 "target_arch: %s" "${target_arch}"
msg "ARGS:"
msg2 "add_pkg: %s" "${add_pkg}"
msg2 "del_pkg: %s" "${del_pkg}"
msg2 "copy_pkg: %s" "${copy_pkg}"
msg2 "download: %s" "${download}"
msg2 "upload: %s" "${upload}"
msg2 "verbose: %s" "${verbose}"
msg "REMOTE:"
msg2 "account: %s" "${account}"
msg2 "host: %s" "${host}"
msg2 "project: %s" "${project}"
msg "SYNC:"
show_transfer "${repository}"
msg2 "sign_pkg: %s" "${sign_pkg}"
}
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
pretend=false
upload=false
download=false
verbose=false
verbose=false
add_pkg=false
del_pkg=false
copy_pkg=false
package=''
repository='system'
rsync_args=(-rtxisP --progress --delete -e ssh)
repository=
sign_pkg=false
usage() {
echo "Usage: ${0##*/} [options]"
echo " -a Repository arch [default:${target_arch}]"
echo " -r Repository to sync [default:${repository}]"
echo " -u Upload repository"
echo ' -d Download repository'
echo " -p Package name to add/delete"
echo ' -x Add package to repository'
echo ' -c Copy instead of symlink package to repository'
echo ' -y Delete package from repository'
echo " -d Destination repository [default:${repository}]"
echo ' -a Add package to repository'
echo ' -r Remove package from repository'
echo ' -s Sign package'
echo ' -q Query settings and pretend upload'
echo ' -v Verbose output'
echo ' -h This help'
echo ''
echo ''
@@ -87,20 +94,15 @@ usage() {
orig_argv=("$0" "$@")
opts='p:a:r:xyducvqh'
opts='d:arsqh'
while getopts "${opts}" arg; do
case "${arg}" in
a) target_arch="$OPTARG" ;;
r) repository="$OPTARG" ;;
p) package="$OPTARG" ;;
x) add_pkg=true ;;
y) del_pkg=true ;;
c) copy_pkg=true ;;
d) download=true ;;
u) upload=true; rsync_args+=(-L) ;;
v) verbose=true; rsync_args+=(-v --stats) ;;
q) pretend=true; rsync_args+=(-n) ;;
d) repository="$OPTARG" ;;
a) add_pkg=true ;;
r) del_pkg=true ;;
s) sign_pkg=true ;;
q) pretend=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac
@@ -108,14 +110,12 @@ done
shift $(($OPTIND - 1))
timer_start=$(get_timer)
prepare_dir "${repos_root}"
prepare_dir "${repos_local}"
${pretend} && display_settings && exit 1
${pretend} && display_settings #&& exit 1
${del_pkg} && del_from_repo "${repository}"
${add_pkg} && repo_update "${repository}" "${target_arch}" "${package}" "add" "${copy_pkg}"
${del_pkg} && repo_update "${repository}" "${target_arch}" "${package}" "remove"
${add_pkg} && add_to_repo "${repository}"
${download} && repo_download "${repository}"
${upload} && repo_upload "${repository}"
exit 0

View File

@@ -64,6 +64,13 @@ optstring_apply_quirks() {
# one might install Arch from a Fedora environment), so let's remove it.
optstring_remove_option "$varname" seclabel
# Prune 'relatime' option for any pseudofs. This seems to be a rampant
# default which the kernel often exports even if the underlying filesystem
# doesn't support it. Example: https://bugs.archlinux.org/task/54554.
if awk -v fstype="$fstype" '$1 == fstype { exit 1 }' /proc/filesystems; then
optstring_remove_option "$varname" relatime
fi
case $fstype in
f2fs)
# These are Kconfig options for f2fs. Kernels supporting the options will

View File

@@ -21,15 +21,15 @@ IFS="${IFS}:"
libdirs="/lib /usr/lib /usr/local/lib $(cat /etc/ld.so.conf.d/*)"
extras=
TMPDIR=$(mktemp -d --tmpdir lddd-script.XXXX)
TEMPDIR=$(mktemp -d --tmpdir lddd-script.XXXX)
msg 'Go out and drink some tea, this will take a while :) ...'
# Check ELF binaries in the PATH and specified dir trees.
for tree in $PATH $libdirs $extras; do
msg2 "DIR $tree"
msg2 "DIR %s" "$tree"
# Get list of files in tree.
files=$(find $tree -type f ! -name '*.a' ! -name '*.la' ! -name '*.py*' ! -name '*.txt' ! -name '*.h' ! -name '*.ttf' ! \
files=$(find "$tree" -type f ! -name '*.a' ! -name '*.la' ! -name '*.py*' ! -name '*.txt' ! -name '*.h' ! -name '*.ttf' ! \
-name '*.rb' ! -name '*.ko' ! -name '*.pc' ! -name '*.enc' ! -name '*.cf' ! -name '*.def' ! -name '*.rules' ! -name \
'*.cmi' ! -name '*.mli' ! -name '*.ml' ! -name '*.cma' ! -name '*.cmx' ! -name '*.cmxa' ! -name '*.pod' ! -name '*.pm' \
! -name '*.pl' ! -name '*.al' ! -name '*.tcl' ! -name '*.bs' ! -name '*.o' ! -name '*.png' ! -name '*.gif' ! -name '*.cmo' \
@@ -37,22 +37,22 @@ for tree in $PATH $libdirs $extras; do
-name '*.mcopclass' ! -name '*.mcoptype')
IFS=$ifs
for i in $files; do
if (( $(file $i | grep -c 'ELF') != 0 )); then
if (( $(file "$i" | grep -c 'ELF') != 0 )); then
# Is an ELF binary.
if (( $(ldd $i 2>/dev/null | grep -c 'not found') != 0 )); then
if (( $(ldd "$i" 2>/dev/null | grep -c 'not found') != 0 )); then
# Missing lib.
echo "$i:" >> $TMPDIR/raw.txt
ldd $i 2>/dev/null | grep 'not found' >> $TMPDIR/raw.txt
echo "$i:" >> "$TEMPDIR/raw.txt"
ldd "$i" 2>/dev/null | grep 'not found' >> "$TEMPDIR/raw.txt"
fi
fi
done
done
grep '^/' $TMPDIR/raw.txt | sed -e 's/://g' >> $TMPDIR/affected-files.txt
grep '^/' "$TEMPDIR/raw.txt" | sed -e 's/://g' >> "$TEMPDIR/affected-files.txt"
# invoke pacman
for i in $(cat $TMPDIR/affected-files.txt); do
pacman -Qo $i | awk '{print $4,$5}' >> $TMPDIR/pacman.txt
done
while read -r i; do
pacman -Qo "$i" | awk '{print $4,$5}' >> "$TEMPDIR/pacman.txt"
done < "$TEMPDIR/affected-files.txt"
# clean list
sort -u $TMPDIR/pacman.txt >> $TMPDIR/possible-rebuilds.txt
sort -u "$TEMPDIR/pacman.txt" >> "$TEMPDIR/possible-rebuilds.txt"
msg "Files saved to $TMPDIR"
msg "Files saved to %s" "$TEMPDIR"

View File

@@ -71,7 +71,7 @@ else
cache_dirs=(${cache_dir})
fi
basestrap_args=(-Gcd ${pacman_conf:+-C "$pacman_conf"})
basestrap_args=(-Gc ${pacman_conf:+-C "$pacman_conf"})
[[ -n ${mirror} ]] && basestrap_args+=(-M)
umask 0022

View File

@@ -19,29 +19,6 @@ import ${LIBDIR}/util-chroot.sh
shopt -s nullglob
init_variables() {
default_makepkg_args=(--syncdeps --noconfirm --log --holdver --skipinteg)
makepkg_args=("${default_makepkg_args[@]}")
repack=false
update_first=false
clean_first=false
run_namcap=false
temp_chroot=false
chrootdir=
passeddir=
makepkg_user=
declare -ga install_pkgs
declare -gi ret=0
bindmounts_ro=()
bindmounts_rw=()
copy=$USER
[[ -n ${SUDO_USER:-} ]] && copy=$SUDO_USER
[[ -z "$copy" || $copy = root ]] && copy=copy
src_owner=${SUDO_USER:-$USER}
}
usage() {
echo "Usage: ${0##*/} [options] -r <chrootdir> [--] [makepkg args]"
echo ' Run this script in a PKGBUILD dir to build a package inside a'
@@ -121,24 +98,24 @@ sync_chroot() {
}
# Usage: delete_chroot $copydir [$copy]
# delete_chroot() {
# local copydir=$1
# local copy=${1:-$2}
#
# stat_busy "Removing chroot copy [%s]" "$copy"
# if is_btrfs "$chrootdir" && ! mountpoint -q "$copydir"; then
# subvolume_delete_recursive "$copydir" ||
# 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
#
# # remove lock file
# rm -f "$copydir.lock"
# stat_done
# }
delete_chroot() {
local copydir=$1
local copy=${1:-$2}
stat_busy "Removing chroot copy [%s]" "$copy"
if is_btrfs "$chrootdir" && ! mountpoint -q "$copydir"; then
subvolume_delete_recursive "$copydir" ||
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
# remove lock file
rm -f "$copydir.lock"
stat_done
}
# Usage: install_packages $copydir $pkgs...
install_packages() {
@@ -159,17 +136,17 @@ install_packages() {
return $ret
}
# Usage: prepare_chroot $copydir $HOME $repack $run_namcap
# Usage: prepare_chroot $copydir $HOME $keepbuilddir $run_namcap
# Globals:
# - MAKEFLAGS
# - PACKAGER
prepare_chroot() {
local copydir=$1
local USER_HOME=$2
local repack=$3
local keepbuilddir=$3
local run_namcap=$4
$repack || rm -rf "$copydir/build"
[[ $keepbuilddir = true ]] || rm -rf "$copydir/build"
local builduser_uid="${SUDO_UID:-$UID}"
local builduser_gid="$(id -g "$builduser_uid")"
@@ -208,9 +185,10 @@ EOF
{
printf '#!/bin/bash\n'
declare -f _chrootbuild
declare -p SOURCE_DATE_EPOCH 2>/dev/null || true
printf '_chrootbuild "$@" || exit\n'
if $run_namcap; then
if [[ $run_namcap = true ]]; then
declare -f _chrootnamcap
printf '_chrootnamcap || exit\n'
fi
@@ -221,9 +199,17 @@ EOF
# These functions aren't run in makechrootpkg,
# so no global variables
_chrootbuild() {
export LANG=en_US.UTF-8
# No coredumps
ulimit -c 0
exec </dev/console
export LANG=C
export TERM=$TERM
. /etc/profile
sudo -iu builduser bash -c 'cd /startdir; makepkg "$@"' -bash "$@"
sudo --preserve-env=SOURCE_DATE_EPOCH -iu builduser bash -c 'cd /startdir; makepkg "$@"' -bash "$@"
}
_chrootnamcap() {
@@ -240,17 +226,16 @@ _chrootnamcap() {
# - USER
download_sources() {
local copydir=$1
local src_owner=$2
local makepkg_user=$2
local builddir="$(mktemp -d)"
local builddir
builddir="$(mktemp -d)"
chmod 1777 "$builddir"
# Ensure sources are downloaded
makepkg_user=${makepkg_user:-$SUDO_USER}
sudo -u "$makepkg_user" env SRCDEST="$SRCDEST" BUILDDIR="$builddir" \
makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o ||
die "Could not download sources."
(( $? != 0 )) && die "Could not download sources."
makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o ||
die "Could not download sources."
# Clean up garbage from verifysource
rm -rf "$builddir"
@@ -285,6 +270,11 @@ move_products() {
for s in "$copydir"/srcpkgdest/*; do
chown "$src_owner" "$s"
mv "$s" "$SRCPKGDEST"
# Fix broken symlink because of temporary chroot SRCPKGDEST /srcpkgdest
if [[ "$PWD" != "$SRCPKGDEST" && -L "$PWD/${s##*/}" ]]; then
ln -sf "$SRCPKGDEST/${s##*/}"
fi
done
}
# }}}
@@ -292,7 +282,26 @@ move_products() {
orig_argv=("$0" "$@")
main() {
init_variables
default_makepkg_args=(--syncdeps --noconfirm --log --holdver --skipinteg)
makepkg_args=("${default_makepkg_args[@]}")
keepbuilddir=false
update_first=false
clean_first=false
run_namcap=false
temp_chroot=false
chrootdir=
passeddir=
makepkg_user=
declare -ga install_pkgs
declare -gi ret=0
bindmounts_ro=()
bindmounts_rw=()
copy=$USER
[[ -n ${SUDO_USER:-} ]] && copy=$SUDO_USER
[[ -z "$copy" || $copy = root ]] && copy=copy
src_owner=${SUDO_USER:-$USER}
local opts='hcur:I:l:nTD:d:U:'
@@ -332,13 +341,13 @@ main() {
# Pass all arguments after -- right to makepkg
makepkg_args+=("${@:$OPTIND}")
# See if -R was passed to makepkg
for arg in "${@:OPTIND}"; do
# See if -R or -e was passed to makepkg
for arg in "${makepkg_args[@]}"; do
case ${arg%%=*} in
-*R*|--repackage)
repack=true
break 2
;;
--repackage|--noextract) keepbuilddir=true; break ;;
--repackage|--noextract) keepbuilddir=true; break ;;
--*) ;;
-*R*|-*e*) keepbuilddir=true; break ;;
esac
done
@@ -379,7 +388,7 @@ main() {
download_sources "$copydir" "$src_owner"
prepare_chroot "$copydir" "$USER_HOME" "$repack" "$run_namcap"
prepare_chroot "$copydir" "$USER_HOME" "$keepbuilddir" "$run_namcap"
bindmounts_rw+=("${PWD}:/startdir" "${SRCDEST}:/srcdest")

View File

@@ -21,10 +21,16 @@ load_user_info
load_vars "${PAC_USERCONFDIR}/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
load_vars /etc/makepkg.conf
file_to_sign="$1"
if [ ! -e "$1" ]; then
error "%s does not exist!" "$1"
error "%s does not exist!" "$file_to_sign"
exit 1
fi
msg2 "Signing [%s] with key %s" "${1##*/}" "${GPGKEY}..."
gpg --detach-sign --use-agent -u "${GPGKEY}" "$1"
msg2 "Signing [%s] with key %s" "${file_to_sign##*/}" "${GPGKEY}..."
if [[ -n "${BUILDBOT_GPGP}" ]]; then
gpg --batch --passphrase "${BUILDBOT_GPGP}" --detach-sign "$file_to_sign"
else
gpg --detach-sign --use-agent -u "${GPGKEY}" "$file_to_sign"
fi

View File

@@ -1,14 +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.
version=@version@
find $PWD -maxdepth 1 -name '*.pkg.tar.xz' -exec signfile {} \;

274
data/Jenkinsfile.galaxy Normal file
View File

@@ -0,0 +1,274 @@
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}"
}
}
}
}
}

241
data/Jenkinsfile.packages Normal file
View File

@@ -0,0 +1,241 @@
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

@@ -2,12 +2,53 @@
################ artools-base ###############
#############################################
# default taget arch: auto detect
# target_arch=$(uname -m)
# build dir where buildpkg or buildiso chroots are created
# chroots_dir=/var/lib/artools
# the workspace directory
# workspace_dir="/home/${OWNER}/artools-workspace"
#############################################
################ artools-pkg ################
#############################################
# host_tree_artix='https://github.com/artix-linux'
# host_tree_arch=git://projects.archlinux.org/svntogit
# default repos root
# repos_root=${workspace_dir}/repos
#############################################
################ artools-iso ################
#############################################
# the iso storage directory
# iso_pool="${workspace_dir}/iso"
# the dist release; default: auto
# iso_version=$(date +%Y%m%d)
# possible values: openrc, (s6, runit) not yet supported
# 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
# gpgkey=""
# set upload bandwidth limit in kB/s
# uplimit=100
# the torrent tracker urls, comma separated
# tracker_url='udp://mirror.strits.dk:6969'
# file_host="sourceforge.net"
# the server user
# account=[SetUser]
@@ -17,51 +58,5 @@
# host mirrors
# host_mirrors=('netcologne' 'freefr' 'netix' 'kent' '10gbps-io')
# the workspace directory
# workspace_dir="/home/${OWNER}/artools-workspace"
#############################################
################ artools-pkg ################
#############################################
# artix testing branches import tree
# repo_tree_import=('system' 'world' 'galaxy')
# host_tree_artix=https://github.com/artix-linux
# archlinux package tree
# repo_tree_arch=('packages' 'community')
# host_tree_arch=git://projects.archlinux.org/svntogit
# default repos root
# repos_local=${workspace_dir}/repos
#############################################
################ artools-iso ################
#############################################
# the dist release; default: auto
# dist_release=rolling
# the branding; default: auto
# dist_branding="ARTIX"
# possible values: openrc, (s6, runit) not yet supported
# initsys="openrc"
# unset defaults to given value
# kernel="linux-lts"
# gpg key; leave empty or commented to skip sfs signing
# gpgkey=""
# set upload bandwidth limit in kB/s
# limit=100
# the torrent tracker urls, comma separated
# tracker_url='udp://mirror.strits.dk:6969'
# Piece size, 2^n
# piece_size=21

View File

@@ -6,4 +6,3 @@ artix-live-portable-efi
virtualbox-guest-modules-artix
virtualbox-guest-utils
linux-lts-headers

View File

@@ -43,6 +43,7 @@ man-pages
memtest86+
mkinitcpio-openswap
nano
net-tools
ntfs-3g
>openrc acpid-openrc
>openrc cronie-openrc
@@ -58,6 +59,7 @@ ntfs-3g
>openrc nfs-utils-openrc
>openrc rsync-openrc
>openrc wpa_supplicant-openrc
>openrc opentmpfiles
os-prober
pacman
pciutils
@@ -76,7 +78,7 @@ texinfo
usbutils
util-linux
which
>x86_64 efibootmgr
efibootmgr
xfsprogs
zd1211-firmware
zsh

View File

@@ -8,19 +8,20 @@
# autologin="true"
# service runlevels
# openrc_boot=('elogind')
# openrc_default=('acpid' 'bluetooth' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager')
# services=('acpid' 'bluetooth' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager')
# unset defaults to given values
# default values
# addgroups="video,power,storage,optical,network,lp,scanner,wheel,users"
# netgroups_url="https://raw.githubusercontent.com/artix-linux/netgroups/master"
################# live-session #################
# unset defaults to given value
# default value
# hostname="artix"
# unset defaults to given value
# default value
# username="artix"
# unset defaults to given value
# default value
# password="artix"

View File

@@ -0,0 +1,36 @@
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

@@ -0,0 +1,74 @@
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,6 +0,0 @@
autoconf-archive
confuse
libappindicator
libdbusmenu
libftdi
libindicator

View File

@@ -0,0 +1,55 @@
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

@@ -0,0 +1,687 @@
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,145 +0,0 @@
acl
archlinux-keyring
attr
autoconf
automake
b43-fwcutter
binutils
bison
bridge-utils
bzip2
ca-certificates
ca-certificates-cacert
coreutils
cracklib
curl
dash
db
dialog
diffutils
ding-libs
dnssec-anchors
dosfstools
e2fsprogs
ed
efibootmgr
efivar
elfutils
expat
fakeroot
file
findutils
flex
gawk
gcc
gdbm
gettext
glib2
gmp
gnutls
gpgme
grep
groff
gzip
hdparm
hwids
iana-etc
icu
ifenslave
iproute2
iputils
ipw2100-fw
ipw2200-fw
isdn4k-utils
iw
jfsutils
kbd
keyutils
ldns
less
libaio
libarchive
libassuan
libcap
libedit
libevent
libffi
libgcrypt
libgpg-error
libgssglue
libidn
libksba
libmnl
libmpc
libnftnl
libnghttp2
libnl
libpcap
libpipeline
libpsl
librpcsecgss
libseccomp
libsecret
libssh2
libtasn1
libtirpc
libtool
libunistring
licenses
links
linux-api-headers
linux-atm
linux-firmware
lz4
lzo
m4
make
man-pages
mkinitcpio-busybox
mkinitcpio-nfs-utils
mpfr
nano
nettle
net-tools
nfsidmap
nilfs-utils
npth
nspr
nss
openssl
openssl-1.0
p11-kit
patch
pciutils
pcre
perl
pinentry
pkcs11-helper
pkg-config
popt
pptpclient
procinfo-ng
psmisc
pth
reiserfsprogs
run-parts
sdparm
sed
s-nail
sqlite
sysfsutils
syslinux
tar
texinfo
thin-provisioning-tools
traceroute
tzdata
usbutils
vi
which
wireless-regdb
wireless_tools
wpa_actiond
xfsprogs
xz
zd1211-firmware

View File

@@ -1,212 +0,0 @@
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
adwaita-icon-theme
alsa-lib
apr
apr-util
atk
at-spi2-atk
at-spi2-core
boost
cairo
cantarell-fonts
check
compositeproto
damageproto
dbus-glib
dconf
desktop-file-utils
docbook-dsssl
docbook-sgml31
docbook-utils
docbook-xml
docbook-xsl
double-conversion
doxygen
eventlog
fixesproto
fontconfig
fontsproto
freetype2
gd
gdk-pixbuf2
ghostscript
giflib
gnome-common
gobject-introspection
gptfdisk
graphite
graphviz
gsfonts
gtk3
gtk-doc
gts
harfbuzz
hicolor-icon-theme
ijs
inputproto
intltool
itstool
jasper
jbig2dec
json-glib
kbproto
lcms2
libasyncns
libblockdev
libbytesize
libcap-ng
libcroco
libdaemon
libdatrie
libdrm
libepoxy
libexif
libfontenc
libglvnd
libgphoto2
libical
libice
libieee1284
libimobiledevice
libiscsi
libjpeg-turbo
libomxil-bellagio
libpaper
libpciaccess
libplist
libpng
libproxy
librsvg
libsm
libthai
libtiff
libtxc_dxtn
libunwind
libusb-compat
libusbmuxd
libwebp
libx11
libxau
libxaw
libxcb
libxcomposite
libxcursor
libxdamage
libxdmcp
libxext
libxfixes
libxfont
libxfont2
libxft
libxi
libxinerama
libxkbcommon
libxkbfile
libxml2
libxmu
libxpm
libxrandr
libxrender
libxshmfence
libxslt
libxt
libxtst
libxxf86vm
lirc
llvm
mesa
mtdev
net-snmp
openjade
opensp
pango
parted
pcre2
perl-error
perl-xml-parser
perl-yaml
pixman
python2
python
python-appdirs
python-beaker
python-mako
python-markupsafe
python-packaging
python-pyparsing
python-setuptools
python-six
randrproto
recordproto
renderproto
serf
sgml-common
shared-mime-info
source-highlight
speexdsp
tslib
v4l-utils
vala
valgrind
volume_key
vte3
vte
wayland
wayland-protocols
xcb-proto
xcb-util
xcb-util-image
xcb-util-keysyms
xcb-util-renderutil
xcb-util-wm
xextproto
xf86vidmodeproto
xineramaproto
xkeyboard-config
xorg-bdftopcf
xorg-fonts-alias
xorg-fonts-encodings
xorg-fonts-misc
xorg-font-util
xorg-font-utils
xorg-mkfontdir
xorg-mkfontscale
xorg-setxkbmap
xorg-xkbcomp
xproto
yelp-tools
yelp-xsl

View File

@@ -1,14 +0,0 @@
# mkinitcpio preset file for the 'linux' package
ALL_config="/etc/mkinitcpio.conf"
ALL_kver="/boot/vmlinuz-@kernel@-@arch@"
PRESETS=('default' 'fallback')
#default_config="/etc/mkinitcpio.conf"
default_image="/boot/initramfs-@kernel@-@arch@.img"
#default_options=""
#fallback_config="/etc/mkinitcpio.conf"
fallback_image="/boot/initramfs-@kernel@-@arch@-fallback.img"
fallback_options="-S autodetect"

View File

@@ -1,3 +0,0 @@
carch="i686"
chost="i686-pc-linux-gnu"
cflags="-march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong"

View File

@@ -1,3 +0,0 @@
carch="x86_64"
chost="x86_64-pc-linux-gnu"
cflags="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong"

View File

@@ -1,3 +0,0 @@
carch="x86_64"
chost="x86_64-pc-linux-gnu"
cflags="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong"

View File

@@ -20,26 +20,26 @@ DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %
# /usr/bin/wget
#-- The package required by makepkg to download VCS sources
# Format: 'protocol::package'
# Format: 'protocol::package'
VCSCLIENTS=('bzr::bzr'
'git::git'
'hg::mercurial'
'svn::subversion')
'git::git'
'hg::mercurial'
'svn::subversion')
#########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################
#
CARCH="@CARCH@"
CHOST="@CHOST@"
CARCH="x86_64"
CHOST="x86_64-pc-linux-gnu"
#-- 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"
CFLAGS="@CFLAGS@"
CXXFLAGS="@CFLAGS@"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"
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"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"
#-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2"
#-- Debugging flags
@@ -50,10 +50,9 @@ DEBUG_CXXFLAGS="-g -fvar-tracking-assignments"
# BUILD ENVIRONMENT
#########################################################################
#
# Defaults: BUILDENV=(fakeroot !distcc color !ccache check !sign)
# Defaults: BUILDENV=(!distcc color !ccache check !sign)
# A negated environment option will do the opposite of the comments below.
#
#-- fakeroot: Allow building packages as a non-root user
#-- distcc: Use the Distributed C/C++/ObjC compiler
#-- color: Colorize output messages
#-- ccache: Use ccache to cache compilation
@@ -85,6 +84,7 @@ BUILDENV=(!distcc color !ccache check !sign)
#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip
#-- 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
#
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug)

View File

@@ -1,3 +1,5 @@
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"
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)
COMPRESSION="xz"

View File

@@ -34,7 +34,7 @@ Architecture = auto
#Color
#TotalDownload
CheckSpace
#VerbosePkgLists
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.
@@ -73,14 +73,9 @@ Include = /etc/pacman.d/mirrorlist
[galaxy]
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
# [core]
# Include = /etc/pacman.d/mirrorlist-arch
#
# ARCHLINUX
#
[extra]
Include = /etc/pacman.d/mirrorlist-arch

108
data/pacman-goblins.conf Normal file
View File

@@ -0,0 +1,108 @@
#
# /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 cromnix`.
#
# 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.
[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
#
# ARCHLINUX
#
[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

96
data/pacman-gremlins.conf Normal file
View File

@@ -0,0 +1,96 @@
#
# /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 cromnix`.
#
# 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.
[gremlins]
Include = /etc/pacman.d/mirrorlist
[system]
Include = /etc/pacman.d/mirrorlist
[world]
Include = /etc/pacman.d/mirrorlist
[galaxy-gremlins]
Include = /etc/pacman.d/mirrorlist
[galaxy]
Include = /etc/pacman.d/mirrorlist
#
# ARCHLINUX
#
[testing]
Include = /etc/pacman.d/mirrorlist-arch
[extra]
Include = /etc/pacman.d/mirrorlist-arch
[community-testing]
Include = /etc/pacman.d/mirrorlist-arch
[community]
Include = /etc/pacman.d/mirrorlist-arch

View File

@@ -0,0 +1,126 @@
#
# /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 cromnix`.
#
# 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.
[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
[lib32-goblins]
Include = /etc/pacman.d/mirrorlist
[lib32-gremlins]
Include = /etc/pacman.d/mirrorlist
[lib32]
Include = /etc/pacman.d/mirrorlist
#
# ARCHLINUX
#
[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

@@ -0,0 +1,108 @@
#
# /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 cromnix`.
#
# 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.
[gremlins]
Include = /etc/pacman.d/mirrorlist
[system]
Include = /etc/pacman.d/mirrorlist
[world]
Include = /etc/pacman.d/mirrorlist
[galaxy-gremlins]
Include = /etc/pacman.d/mirrorlist
[galaxy]
Include = /etc/pacman.d/mirrorlist
[lib32-gremlins]
Include = /etc/pacman.d/mirrorlist
[lib32]
Include = /etc/pacman.d/mirrorlist
#
# ARCHLINUX
#
[testing]
Include = /etc/pacman.d/mirrorlist-arch
[extra]
Include = /etc/pacman.d/mirrorlist-arch
[community-testing]
Include = /etc/pacman.d/mirrorlist-arch
[community]
Include = /etc/pacman.d/mirrorlist-arch
[multilib-testing]
Include = /etc/pacman.d/mirrorlist-arch
[multilib]
Include = /etc/pacman.d/mirrorlist-arch

View File

@@ -34,7 +34,7 @@ Architecture = auto
#Color
#TotalDownload
CheckSpace
#VerbosePkgLists
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.
@@ -73,23 +73,18 @@ 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 multilib repositories as required here.
[lib32]
Include = /etc/pacman.d/mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist-arch
# 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
# [core]
# Include = /etc/pacman.d/mirrorlist-arch
#
# ARCHLINUX
#
[extra]
Include = /etc/pacman.d/mirrorlist-arch
[community]
Include = /etc/pacman.d/mirrorlist-arch
[multilib]
Include = /etc/pacman.d/mirrorlist-arch

View File

@@ -0,0 +1,87 @@
--- /dev/null
+++ b/artix.bashrc
@@ -0,0 +1,46 @@
+use_color=true
+
+# Set colorful PS1 only on colorful terminals.
+# dircolors --print-database uses its own built-in database
+# instead of using /etc/DIR_COLORS. Try to use the external file
+# first to take advantage of user additions. Use internal bash
+# globbing instead of external grep binary.
+safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM
+match_lhs=""
+[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
+[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"
+[[ -z ${match_lhs} ]] \
+ && type -P dircolors >/dev/null \
+ && match_lhs=$(dircolors --print-database)
+[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true
+
+if ${use_color} ; then
+ # Enable colors for ls, etc. Prefer ~/.dir_colors #64489
+ if type -P dircolors >/dev/null ; then
+ if [[ -f ~/.dir_colors ]] ; then
+ eval $(dircolors -b ~/.dir_colors)
+ elif [[ -f /etc/DIR_COLORS ]] ; then
+ eval $(dircolors -b /etc/DIR_COLORS)
+ fi
+ fi
+
+ if [[ ${EUID} == 0 ]] ; then
+ PS1='\[\033[01;31m\][\h\[\033[01;36m\] \W\[\033[01;31m\]]\$\[\033[00m\] '
+ else
+ PS1='\[\033[01;36m\][\u@\h\[\033[01;37m\] \W\[\033[01;36m\]]\$\[\033[00m\] '
+ fi
+
+ alias ls='ls --color=auto'
+ alias grep='grep --colour=auto'
+ alias egrep='egrep --colour=auto'
+ alias fgrep='fgrep --colour=auto'
+else
+ if [[ ${EUID} == 0 ]] ; then
+ # show root@ when we don't have colors
+ PS1='\u@\h \W \$ '
+ else
+ PS1='\u@\h \w \$ '
+ fi
+fi
+
+unset use_color safe_term match_lhs sh
--- a/dot.bashrc
+++ b/dot.bashrc
@@ -5,5 +5,5 @@
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
-alias ls='ls --color=auto'
-PS1='[\u@\h \W]\$ '
+# alias ls='ls --color=auto'
+# PS1='[\u@\h \W]\$ '
--- a/system.bashrc
+++ a/system.bashrc
@@ -1,5 +1,5 @@
#
-# /etc/bash.bashrc
+# /etc/bash/bashrc
#
# If not running interactively, don't do anything
@@ -19,4 +19,8 @@
;;
esac
+for sh in /etc/bash/bashrc.d/*.bashrc ; do
+ [[ -r ${sh} ]] && source "${sh}"
+done
+
[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion
--- a/system.bash_logout
+++ a/system.bash_logout
@@ -1,3 +1,3 @@
#
-# /etc/bash.bash_logout
+# /etc/bash/bash_logout
#

View File

@@ -102,7 +102,7 @@ _mnt_dev() {
_verify_checksum() {
local _status
cd "/run/artix/bootmnt/${artixbasedir}/${arch}"
md5sum -c $1.md5 > /tmp/checksum.log 2>&1
sha512sum -c $1.sha512 > /tmp/checksum.log 2>&1
_status=$?
cd "${OLDPWD}"
return ${_status}
@@ -120,7 +120,7 @@ _verify_signature() {
run_hook() {
[[ -z "${arch}" ]] && arch="$(uname -m)"
[[ -z "${copytoram_size}" ]] && copytoram_size="75%"
[[ -z "${artixbasedir}" ]] && artixbasedir="cromnix"
[[ -z "${artixbasedir}" ]] && artixbasedir="artix"
[[ -z "${dm_snap_prefix}" ]] && dm_snap_prefix="arch"
[[ -z "${artixdevice}" ]] && artixdevice="/dev/disk/by-label/${artixlabel}"
@@ -160,7 +160,7 @@ artix_mount_handler() {
if [[ "${checksum}" == "y" ]]; then
for fs in rootfs desktopfs livefs;do
if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then
if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.md5" ]]; then
if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sha512" ]]; then
msg -n ":: Self-test requested, please wait..."
if _verify_checksum "${fs}"; then
msg "done. Checksum is OK, continue booting."
@@ -170,7 +170,7 @@ artix_mount_handler() {
launch_interactive_shell
fi
else
echo "ERROR: checksum=y option specified but ${artixbasedir}/${arch}/${fs}.md5 not found"
echo "ERROR: checksum=y option specified but ${artixbasedir}/${arch}/${fs}.sha512 not found"
launch_interactive_shell
fi
fi

View File

@@ -1,245 +0,0 @@
# args: source, newroot, mountpoint
_mnt_dmsnapshot() {
local img="${1}"
local mnt="${2}"
local img_fullname="${img##*/}";
local img_name="${img_fullname%%.*}"
local dm_snap_name="${dm_snap_prefix}_${img_name}"
local ro_dev ro_dev_size rw_dev
ro_dev=$(losetup --find --show --read-only "${img}")
echo ${ro_dev} >> /run/miso/used_block_devices
ro_dev_size=$(blockdev --getsz ${ro_dev})
if [[ "${cow_persistent}" == "P" ]]; then
if [[ -f "/run/miso/cowspace/${cow_directory}/${img_name}.cow" ]]; then
msg ":: Found '/run/miso/cowspace/${cow_directory}/${img_name}.cow', using as persistent."
else
msg ":: Creating '/run/miso/cowspace/${cow_directory}/${img_name}.cow' as persistent."
truncate -s "${cow_spacesize}" "/run/miso/cowspace/${cow_directory}/${img_name}.cow"
fi
else
if [[ -f "/run/miso/cowspace/${cow_directory}/${img_name}.cow" ]]; then
msg ":: Found '/run/miso/cowspace/${cow_directory}/${img_name}.cow' but non-persistent requested, removing."
rm -f "/run/miso/cowspace/${cow_directory}/${img_name}.cow"
fi
msg ":: Creating '/run/miso/cowspace/${cow_directory}/${img_name}.cow' as non-persistent."
truncate -s "${cow_spacesize}" "/run/miso/cowspace/${cow_directory}/${img_name}.cow"
fi
rw_dev=$(losetup --find --show "/run/miso/cowspace/${cow_directory}/${img_name}.cow")
echo ${rw_dev} >> /run/miso/used_block_devices
dmsetup create ${dm_snap_name} --table "0 ${ro_dev_size} snapshot ${ro_dev} ${rw_dev} ${cow_persistent} ${cow_chunksize}"
_mnt_dev "/dev/mapper/${dm_snap_name}" "${mnt}" "-w" "defaults"
echo $(readlink -f /dev/mapper/${dm_snap_name}) >> /run/miso/used_block_devices
}
# args: source, newroot, mountpoint
_mnt_overlayfs() {
local src="${1}"
local newroot="${2}"
local mnt="${3}"
local work_dir="/run/miso/overlay_root/work"
local upper_dir="/run/miso/overlay_root/upper"
mkdir -p "${upper_dir}" "${work_dir}"
mount -t overlay overlay -o lowerdir="${src}",upperdir="${upper_dir}",workdir="${work_dir}" "${newroot}${mnt}"
}
# args: /path/to/image_file, mountpoint
_mnt_sfs() {
local img="${1}"
local mnt="${2}"
local img_fullname="${img##*/}"
local sfs_dev
if [[ "${copytoram}" == "y" ]]; then
msg -n ":: Copying squashfs image to RAM..."
if ! cp "${img}" "/run/miso/copytoram/${img_fullname}" ; then
echo "ERROR: while copy '${img}' to '/run/miso/copytoram/${img_fullname}'"
launch_interactive_shell
fi
img="/run/miso/copytoram/${img_fullname}"
msg "done."
fi
sfs_dev=$(losetup --find --show --read-only "${img}")
echo ${sfs_dev} >> /run/miso/used_block_devices
_mnt_dev "${sfs_dev}" "${mnt}" "-r" "defaults"
}
# args: device, mountpoint, flags, opts
_mnt_dev() {
local dev="${1}"
local mnt="${2}"
local flg="${3}"
local opts="${4}"
mkdir -p "${mnt}"
msg ":: Mounting '${dev}' to '${mnt}'"
while ! poll_device "${dev}" 30; do
echo "ERROR: '${dev}' device did not show up after 30 seconds..."
echo " Falling back to interactive prompt"
echo " You can try to fix the problem manually, log out when you are finished"
launch_interactive_shell
done
if mount -o "${opts}" "${flg}" "${dev}" "${mnt}"; then
msg ":: Device '${dev}' mounted successfully."
else
echo "ERROR; Failed to mount '${dev}'"
echo " Falling back to interactive prompt"
echo " You can try to fix the problem manually, log out when you are finished"
launch_interactive_shell
fi
}
_verify_checksum() {
local _status
cd "/run/miso/bootmnt/${misobasedir}/${arch}"
md5sum -c $1.md5 > /tmp/checksum.log 2>&1
_status=$?
cd "${OLDPWD}"
return ${_status}
}
_verify_signature() {
local _status
cd "/run/miso/bootmnt/${misobasedir}/${arch}"
gpg --homedir /gpg --status-fd 1 --verify $1.sfs.sig 2>/dev/null | grep -qE '^\[GNUPG:\] GOODSIG'
_status=$?
cd "${OLDPWD}"
return ${_status}
}
run_hook() {
[[ -z "${arch}" ]] && arch="$(uname -m)"
[[ -z "${copytoram_size}" ]] && copytoram_size="75%"
[[ -z "${misobasedir}" ]] && misobasedir="cromnix"
[[ -z "${dm_snap_prefix}" ]] && dm_snap_prefix="arch"
[[ -z "${misodevice}" ]] && misodevice="/dev/disk/by-label/${misolabel}"
[[ -z "${cow_spacesize}" ]] && cow_spacesize="256M"
[[ -z "${overlay_root_size}" ]] && overlay_root_size="75%"
if [[ -n "${cow_label}" ]]; then
cow_device="/dev/disk/by-label/${cow_label}"
[[ -z "${cow_persistent}" ]] && cow_persistent="P"
elif [[ -n "${cow_device}" ]]; then
[[ -z "${cow_persistent}" ]] && cow_persistent="P"
else
cow_persistent="N"
fi
[[ -z "${cow_flags}" ]] && cow_flags="defaults"
[[ -z "${cow_directory}" ]] && cow_directory="persistent_${misolabel}/${arch}"
[[ -z "${cow_chunksize}" ]] && cow_chunksize="8"
# set mount handler for miso
mount_handler="miso_mount_handler"
}
# This function is called normally from init script, but it can be called
# as chain from other mount handlers.
# args: /path/to/newroot
miso_mount_handler() {
local newroot="${1}"
if ! mountpoint -q "/run/miso/bootmnt"; then
_mnt_dev "${misodevice}" "/run/miso/bootmnt" "-r" "defaults"
if [[ "${copytoram}" != "y" ]]; then
echo $(readlink -f ${misodevice}) >> /run/miso/used_block_devices
fi
fi
if [[ "${checksum}" == "y" ]]; then
for fs in rootfs desktopfs livefs;do
if [[ -f "/run/miso/bootmnt/${misobasedir}/${arch}/${fs}.sfs" ]]; then
if [[ -f "/run/miso/bootmnt/${misobasedir}/${arch}/${fs}.md5" ]]; then
msg -n ":: Self-test requested, please wait..."
if _verify_checksum "${fs}"; then
msg "done. Checksum is OK, continue booting."
else
echo "ERROR: one or more files are corrupted"
echo "see /tmp/checksum.log for details"
launch_interactive_shell
fi
else
echo "ERROR: checksum=y option specified but ${misobasedir}/${arch}/${fs}.md5 not found"
launch_interactive_shell
fi
fi
done
fi
if [[ "${verify}" == "y" ]]; then
for fs in rootfs desktopfs livefs;do
if [[ -f "/run/miso/bootmnt/${misobasedir}/${arch}/${fs}.sfs" ]]; then
if [[ -f "/run/miso/bootmnt/${misobasedir}/${arch}/${fs}.sfs.sig" ]]; then
msg -n ":: Signature verification requested, please wait..."
if _verify_signature "${fs}"; then
msg "done. Signature is OK, continue booting."
else
echo "ERROR: one or more files are corrupted"
launch_interactive_shell
fi
else
echo "ERROR: verify=y option specified but ${misobasedir}/${arch}/${fs}.sfs.sig not found"
launch_interactive_shell
fi
fi
done
fi
if [[ "${copytoram}" == "y" ]]; then
msg ":: Mounting /run/miso/copytoram (tmpfs) filesystem, size=${copytoram_size}"
mkdir -p /run/miso/copytoram
mount -t tmpfs -o "size=${copytoram_size}",mode=0755 copytoram /run/miso/copytoram
fi
if [[ -n "${cow_device}" ]]; then
_mnt_dev "${cow_device}" "/run/miso/cowspace" "-r" "${cow_flags}"
echo $(readlink -f ${cow_device}) >> /run/miso/used_block_devices
mount -o remount,rw "/run/miso/cowspace"
else
msg ":: Mounting /run/miso/cowspace (tmpfs) filesystem, size=${cow_spacesize}..."
mkdir -p /run/miso/cowspace
mount -t tmpfs -o "size=${cow_spacesize}",mode=0755 cowspace /run/miso/cowspace
fi
mkdir -p -m 0700 "/run/miso/cowspace/${cow_directory}"
msg -n ":: Mounting overlay root (tmpfs) filesystem, size=${overlay_root_size}..."
mkdir -p /run/miso/overlay_root
mount -t tmpfs -o "size=${overlay_root_size}",mode=0755 overlay_root /run/miso/overlay_root
local src="/run/miso/bootmnt/${misobasedir}/${arch}"
local dest_sfs="/run/miso/sfs" dest_img="/run/miso/img"
local lower_dir
for sfs in livefs desktopfs rootfs;do
if [[ -f "${src}/${sfs}.sfs" ]]; then
_mnt_sfs "${src}/${sfs}.sfs" "${dest_sfs}/${sfs}"
if [[ -f "${dest_sfs}/${sfs}/${sfs}.img" ]]; then
mkdir -p ${dest_img}
lower_dir=${lower_dir:-}${lower_dir:+:}"${dest_img}/${sfs}"
_mnt_dmsnapshot "${dest_sfs}/${sfs}/${sfs}.img" "${dest_img}/${sfs}"
else
lower_dir=${lower_dir:-}${lower_dir:+:}"${dest_sfs}/${sfs}"
fi
fi
done
_mnt_overlayfs "${lower_dir}" "${newroot}" "/"
if [[ "${copytoram}" == "y" ]]; then
umount -d /run/miso/bootmnt
mkdir -p /run/miso/bootmnt/${misobasedir}/${arch}
mount -o bind /run/miso/copytoram /run/miso/bootmnt/${misobasedir}/${arch}
fi
}
# vim:ft=sh:ts=4:sw=4:et:

View File

@@ -1,35 +0,0 @@
# vim: set ft=sh:
run_hook () {
[[ -n "${img_label}" ]] && img_dev="/dev/disk/by-label/${img_label}"
[[ -z "${img_flags}" ]] && img_flags="defaults"
if [[ -n "${img_dev}" && -n "${img_loop}" ]]; then
mount_handler="miso_loop_mount_handler"
fi
}
miso_loop_mount_handler () {
newroot="${1}"
local _dev_loop
msg ":: Setup a loop device from ${img_loop} located at device ${img_dev}"
_mnt_dev "${img_dev}" "/run/miso/img_dev" "-r" "${img_flags}"
if [[ "${copytoram}" != "y" ]]; then
echo $(readlink -f ${img_dev}) >> /run/miso/used_block_devices
fi
if _dev_loop=$(losetup --find --show --read-only "/run/miso/img_dev/${img_loop}"); then
misodevice="${_dev_loop}"
else
echo "ERROR: Setting loopback device for file '/run/miso/img_dev/${img_loop}'"
launch_interactive_shell
fi
miso_mount_handler ${newroot}
if [[ "${copytoram}" == "y" ]]; then
losetup -d ${_dev_loop} 2>/dev/null
umount /run/miso/img_dev
fi
}

View File

@@ -1,72 +0,0 @@
# vim: set ft=sh:
run_hook () {
# Do *not* declare 'bootif_dev' local! We need it in run_latehook().
local i net_mac bootif_mac
# These variables will be parsed from /tmp/net-*.conf generated by ipconfig
local DEVICE
local IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1
local HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH
local filename
# /tmp/net-*.conf
if [[ -n "${ip}" ]]; then
if [[ -n "${BOOTIF}" ]]; then
bootif_mac=${BOOTIF#01-}
bootif_mac=${bootif_mac//-/:}
for i in /sys/class/net/*/address; do
read net_mac < ${i}
if [[ "${bootif_mac}" == "${net_mac}" ]]; then
bootif_dev=${i#/sys/class/net/}
bootif_dev=${bootif_dev%/address}
break
fi
done
if [[ "${ip}" == "dhcp" ]]; then
ip=":::::${bootif_dev}:dhcp"
else
ip="${ip}::${bootif_dev}"
fi
fi
# setup network and save some values
if ! ipconfig -t 20 "ip=${ip}"; then
echo "ERROR; Failed to configure network"
echo " Falling back to interactive prompt"
echo " You can try to fix the problem manually, log out when you are finished"
launch_interactive_shell
fi
. /tmp/net-*.conf
pxeserver=${ROOTSERVER}
# setup DNS resolver
if [[ "${IPV4DNS0}" != "0.0.0.0" ]]; then
echo "# added by miso_pxe_common hook" > /etc/resolv.conf
echo "nameserver ${IPV4DNS0}" >> /etc/resolv.conf
fi
if [[ "${IPV4DNS1}" != "0.0.0.0" ]]; then
echo "nameserver ${IPV4DNS1}" >> /etc/resolv.conf
fi
if [[ -n "${DNSDOMAIN}" ]]; then
echo "search ${DNSDOMAIN}" >> /etc/resolv.conf
echo "domain ${DNSDOMAIN}" >> /etc/resolv.conf
fi
fi
}
run_latehook () {
if [[ -n "${ip}" ]]; then
[[ -z "${copy_resolvconf}" ]] && copy_resolvconf="y"
if [[ "${copytoram}" == "y" ]]; then
if [[ -n "${bootif_dev}" ]]; then
ip addr flush dev "${bootif_dev}"
ip link set "${bootif_dev}" down
fi
elif [[ "${copy_resolvconf}" != "n" && -f /etc/resolv.conf ]]; then
cp /etc/resolv.conf /new_root/etc/resolv.conf
fi
fi
}

View File

@@ -1,59 +0,0 @@
# vim: set ft=sh:
run_hook() {
if [[ -n "${ip}" && -n "${miso_http_srv}" ]]; then
# booting with http is always copy-to-ram, so set here to make sure
# addresses are flushed and interface is set down
copytoram="y"
miso_http_srv=$(eval echo ${miso_http_srv})
[[ -z "${miso_http_spc}" ]] && miso_http_spc="75%"
mount_handler="miso_pxe_http_mount_handler"
fi
}
# Fetch a file with CURL
#
# $1 URL
# $2 Destination directory inside httpspace/${misobasedir}
_curl_get() {
local _url="${1}"
local _dst="${2}"
msg ":: Downloading '${_url}'"
if ! curl -L -f -o "/run/miso/httpspace/${misobasedir}${_dst}/${_url##*/}" --create-dirs "${_url}"; then
echo "ERROR: Downloading '${_url}'"
echo " Falling back to interactive prompt"
echo " You can try to fix the problem manually, log out when you are finished"
launch_interactive_shell
fi
}
miso_pxe_http_mount_handler () {
newroot="${1}"
msg ":: Mounting /run/miso/httpspace (tmpfs) filesystem, size='${miso_http_spc}'"
mkdir -p "/run/miso/httpspace"
mount -t tmpfs -o size="${miso_http_spc}",mode=0755 httpspace "/run/miso/httpspace"
local _src=${miso_http_srv}${misobasedir}/${arch}
for sfs in livefs desktopfs rootfs;do
if [[ ! -z "$( curl -s --head "${_src}/${sfs}.sfs" | grep "OK" )" ]]; then
_curl_get "${_src}/${sfs}.sfs" "/${arch}"
if [[ "${checksum}" == "y" ]]; then
_curl_get "${_src}/${sfs}.md5" "/${arch}"
fi
if [[ "${verify}" == "y" ]]; then
_curl_get "${_src}/${sfs}.sfs.sig" "/${arch}"
fi
fi
done
mkdir -p "/run/miso/bootmnt"
mount -o bind /run/miso/httpspace /run/miso/bootmnt
miso_mount_handler ${newroot}
}

View File

@@ -1,47 +0,0 @@
# vim: set ft=sh:
run_earlyhook() {
if [[ -n "${ip}" && -n "${miso_nbd_srv}" ]]; then
# Module autoloading like with loop devices does not work, doing manually...
modprobe nbd 2> /dev/null
fi
}
run_hook() {
if [[ -n "${ip}" && -n "${miso_nbd_srv}" ]]; then
miso_nbd_srv=$(eval echo ${miso_nbd_srv})
[[ -z "${miso_nbd_name}" ]] && miso_nbd_name="miso"
mount_handler="miso_pxe_nbd_mount_handler"
fi
}
miso_pxe_nbd_mount_handler () {
newroot="${1}"
msg ":: Waiting for boot device..."
while ! poll_device /dev/nbd0 30; do
echo "ERROR: boot device didn't show up after 30 seconds..."
echo " Falling back to interactive prompt"
echo " You can try to fix the problem manually, log out when you are finished"
launch_interactive_shell
done
msg ":: Setup NBD from ${miso_nbd_srv} at /dev/nbd0"
if [[ "${copytoram}" != "n" ]]; then
nbd-client ${miso_nbd_srv} -N ${miso_nbd_name} /dev/nbd0
copytoram="y"
else
nbd-client ${miso_nbd_srv} -N ${miso_nbd_name} -persist /dev/nbd0
fi
misodevice=/dev/nbd0
miso_mount_handler ${newroot}
if [[ "${copytoram}" == "y" ]]; then
msg ":: Disconnect NBD from ${miso_nbd_srv} at /dev/nbd0"
nbd-client -d /dev/nbd0
fi
}

View File

@@ -1,30 +0,0 @@
# vim: set ft=sh:
run_hook() {
if [[ -n "${ip}" && -n "${miso_nfs_srv}" ]]; then
miso_nfs_srv=$(eval echo ${miso_nfs_srv})
[[ -n "${miso_nfs_opt}" ]] && miso_nfs_opt="-o ${miso_nfs_opt}"
mount_handler="miso_nfs_mount_handler"
fi
}
miso_nfs_mount_handler() {
newroot="${1}"
mkdir -p "/run/miso/bootmnt"
msg ":: Mounting '${miso_nfs_srv}'"
# Do not put "${miso_nfs_opt}" nfsmount fails!
if ! nfsmount ${miso_nfs_opt} "${miso_nfs_srv}" "/run/miso/bootmnt"; then
echo "ERROR: Mounting '${miso_nfs_srv}'"
echo " Falling back to interactive prompt"
echo " You can try to fix the problem manually, log out when you are finished"
launch_interactive_shell
fi
if [[ "${copytoram}" != "n" ]]; then
copytoram="y"
fi
miso_mount_handler ${newroot}
}

View File

@@ -1,6 +0,0 @@
run_cleanuphook() {
rm -rf /usr/lib/modules
cp -ax / /run/initramfs
}
# vim: set ft=sh ts=4 sw=4 et:

View File

@@ -1,30 +0,0 @@
#!/bin/bash
build() {
add_module "cdrom"
add_module "loop"
add_module "dm-snapshot"
add_module "overlay"
add_runscript
add_binary /usr/lib/udev/cdrom_id
add_binary blockdev
add_binary dmsetup
add_binary losetup
add_binary mountpoint
add_binary truncate
add_binary gpg
add_binary grep
add_file /usr/lib/udev/rules.d/60-cdrom_id.rules
add_file /usr/lib/udev/rules.d/10-dm.rules
add_file /usr/lib/udev/rules.d/95-dm-notify.rules
add_file /usr/lib/initcpio/udev/11-dm-initramfs.rules /usr/lib/udev/rules.d/11-dm-initramfs.rules
if [[ $MISO_GNUPG_FD ]]; then
mkdir -p "$BUILDROOT$dest"/gpg
gpg --homedir "$BUILDROOT$dest"/gpg --import <&$MISO_GNUPG_FD
fi
}
# vim: set ft=sh ts=4 sw=4 et:

View File

@@ -1,26 +0,0 @@
#!/bin/bash
build() {
add_module "radeon"
add_module "nouveau"
add_module "i915"
add_module "via-agp"
add_module "sis-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() {
cat << HELPEOF
Adds all common KMS drivers to the initramfs image.
HELPEOF
}

View File

@@ -1,13 +0,0 @@
#!/bin/bash
build() {
add_runscript
}
help() {
cat<<HELPEOF
This hook loads the necessary modules for boot via loop device.
HELPEOF
}
# vim: set ft=sh ts=4 sw=4 et:

View File

@@ -1,26 +0,0 @@
#!/bin/bash
build() {
add_checked_modules -f "(irda|phy|wimax|wireless|ppp_|plip|pppoe)" "/drivers/net/"
add_runscript
add_binary /usr/lib/initcpio/ipconfig /bin/ipconfig
# Add hosts support files+dns
add_symlink /usr/lib/libnss_files.so.2 $(readlink /usr/lib/libnss_files.so.2)
add_binary $(readlink -f /usr/lib/libnss_files.so.2)
add_symlink /usr/lib/libnss_dns.so.2 $(readlink /usr/lib/libnss_dns.so.2)
add_binary $(readlink -f /usr/lib/libnss_dns.so.2)
add_dir /etc
echo "hosts: files dns" > $BUILDROOT/etc/nsswitch.conf
}
help() {
cat<<HELPEOF
This hook loads the necessary modules for boot via PXE.
HELPEOF
}
# vim: set ft=sh ts=4 sw=4 et:

View File

@@ -1,17 +0,0 @@
#!/bin/bash
build() {
add_runscript
add_binary curl
add_file $(readlink -f /etc/ssl/certs/ca-certificates.crt) /etc/ssl/certs/ca-certificates.crt
}
help() {
cat<<HELPEOF
This hook loads the necessary modules for boot via PXE and HTTP.
HELPEOF
}
# vim: set ft=sh ts=4 sw=4 et:

View File

@@ -1,17 +0,0 @@
#!/bin/bash
build() {
add_module "nbd"
add_runscript
add_binary nbd-client
}
help() {
cat<<HELPEOF
This hook loads the necessary modules for boot via PXE and NBD.
HELPEOF
}
# vim: set ft=sh ts=4 sw=4 et:

View File

@@ -1,17 +0,0 @@
#!/bin/bash
build() {
add_module "nfs"
add_runscript
add_binary /usr/lib/initcpio/nfsmount /bin/nfsmount
}
help() {
cat <<HELPEOF
This hook loads the necessary modules for boot via PXE and NFS.
HELPEOF
}
# vim: set ft=sh ts=4 sw=4 et:

View File

@@ -1,20 +0,0 @@
#!/bin/bash
build() {
add_binary cp
add_runscript
add_file /etc/initcpio/miso_shutdown /shutdown
}
help() {
cat <<HELPEOF
This hook will create a shutdown initramfs in /run/initramfs
that we can pivot to on shutdown in order to unmount / and
and others mount points, dm-snapshot devices and loopback devices.
Mostly usefull for dm-snapshot persistent.
HELPEOF
}
# vim: set ft=sh ts=4 sw=4 et:

View File

@@ -23,6 +23,9 @@ create_min_fs(){
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() {
@@ -69,51 +72,19 @@ default_mirror(){
echo "Server = $mirror" > $mnt/etc/pacman.d/mirrorlist
}
create_chroot(){
local timer=$(get_timer)
setarch "${target_arch}" \
mkchroot "$@"
show_elapsed_time "${FUNCNAME}" "${timer}"
}
delete_chroot() {
local copydir=$1
local copy=${1:-$2}
stat_busy "Removing chroot copy [%s]" "$copy"
if is_btrfs "$chrootdir" && ! mountpoint -q "$copydir"; then
subvolume_delete_recursive "$copydir" ||
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
# remove lock file
rm -f "$copydir.lock"
stat_done
}
# $1: chroot
# kill_chroot_process(){
# # enable to have more debug info
# #msg "machine-id (etc): $(cat $1/etc/machine-id)"
# #[[ -e $1/var/lib/dbus/machine-id ]] && msg "machine-id (lib): $(cat $1/var/lib/dbus/machine-id)"
# #msg "running processes: "
# #lsof | grep $1
#
# local prefix="$1" flink pid name
# for root_dir in /proc/*/root; do
# flink=$(readlink $root_dir)
# if [ "x$flink" != "x" ]; then
# if [ "x${flink:0:${#prefix}}" = "x$prefix" ]; then
# # this process is in the chroot...
# pid=$(basename $(dirname "$root_dir"))
# name=$(ps -p $pid -o comm=)
# info "Killing chroot process: %s (%s)" "$name" "$pid"
# kill -9 "$pid"
# fi
# fi
# done
# }
kill_chroot_process(){
local prefix="$1" flink pid name
for root_dir in /proc/*/root; do
flink=$(readlink $root_dir)
if [ "x$flink" != "x" ]; then
if [ "x${flink:0:${#prefix}}" = "x$prefix" ]; then
# this process is in the chroot...
pid=$(basename $(dirname "$root_dir"))
name=$(ps -p $pid -o comm=)
info "Killing chroot process: %s (%s)" "$name" "$pid"
kill -9 "$pid"
fi
fi
done
}

View File

@@ -13,6 +13,7 @@ declare -A pseudofs_types=([anon_inodefs]=1
[bdev]=1
[binfmt_misc]=1
[cgroup]=1
[cgroup2]=1
[configfs]=1
[cpuset]=1
[debugfs]=1
@@ -72,7 +73,7 @@ valid_number_of_base() {
mangle() {
local i= chr= out=
unset {a..f} {A..F}
local {a..f}= {A..F}=
for (( i = 0; i < ${#1}; i++ )); do
chr=${1:i:1}
@@ -91,7 +92,7 @@ mangle() {
unmangle() {
local i= chr= out= len=$(( ${#1} - 4 ))
unset {a..f} {A..F}
local {a..f}= {A..F}=
for (( i = 0; i < len; i++ )); do
chr=${1:i:1}

View File

@@ -1,136 +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.
add_svc_rc(){
local mnt="$1" name="$2" rlvl="$3"
if [[ -f $mnt/etc/init.d/$name ]];then
msg2 "Setting %s ..." "$name"
chroot $mnt rc-update add $name $rlvl &>/dev/null
fi
}
set_xdm(){
if [[ -f $1/etc/conf.d/xdm ]];then
local conf='DISPLAYMANAGER="'${displaymanager}'"'
sed -i -e "s|^.*DISPLAYMANAGER=.*|${conf}|" $1/etc/conf.d/xdm
fi
}
configure_hosts(){
sed -e "s|localhost.localdomain|localhost.localdomain ${hostname}|" -i $1/etc/hosts
}
configure_lsb(){
local conf=$1/etc/lsb-release
if [[ -e $conf ]] ; then
msg2 "Configuring lsb-release"
sed -i -e "s/^.*DISTRIB_RELEASE.*/DISTRIB_RELEASE=${dist_release}/" $conf
# sed -i -e "s/^.*DISTRIB_CODENAME.*/DISTRIB_CODENAME=${dist_codename}/" $conf
fi
}
configure_logind(){
local conf=$1/etc/$2/logind.conf
if [[ -e $conf ]];then
msg2 "Configuring logind ..."
sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' "$conf"
sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' "$conf"
sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' "$conf"
fi
}
configure_services(){
local mnt="$1"
info "Configuring [%s]" "${initsys}"
case ${initsys} in
'openrc')
for svc in ${openrc_boot[@]}; do
add_svc_rc "$mnt" "$svc" "boot"
done
for svc in ${openrc_default[@]}; do
[[ $svc == "xdm" ]] && set_xdm "$mnt"
add_svc_rc "$mnt" "$svc" "default"
done
for svc in ${enable_live[@]}; do
add_svc_rc "$mnt" "$svc" "default"
done
;;
esac
info "Done configuring [%s]" "${initsys}"
}
configure_system(){
local mnt="$1"
case ${initsys} in
'openrc')
configure_logind "$mnt" "elogind"
;;
esac
echo ${hostname} > $mnt/etc/hostname
}
clean_iso_root(){
local dest="$1"
msg "Deleting isoroot [%s] ..." "${dest##*/}"
rm -rf --one-file-system "$dest"
}
clean_up_image(){
local path mnt="$1"
msg2 "Cleaning [%s]" "${mnt##*/}"
default_locale "reset" "$mnt"
path=$mnt/boot
if [[ -d "$path" ]]; then
find "$path" -name 'initramfs*.img' -delete &> /dev/null
fi
path=$mnt/var/lib/pacman/sync
if [[ -d $path ]];then
find "$path" -type f -delete &> /dev/null
fi
path=$mnt/var/cache/pacman/pkg
if [[ -d $path ]]; then
find "$path" -type f -delete &> /dev/null
fi
path=$mnt/var/log
if [[ -d $path ]]; then
find "$path" -type f -delete &> /dev/null
fi
path=$mnt/var/tmp
if [[ -d $path ]];then
find "$path" -mindepth 1 -delete &> /dev/null
fi
path=$mnt/tmp
if [[ -d $path ]];then
find "$path" -mindepth 1 -delete &> /dev/null
fi
if [[ ${mnt##*/} == 'livefs' ]];then
rm -rf "$mnt/etc/pacman.d/gnupg"
fi
find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
file=$mnt/boot/grub/grub.cfg
if [[ -f "$file" ]]; then
rm $file
fi
}
chroot_clean(){
local dest="$1"
for root in "$dest"/*; do
[[ -d ${root} ]] || continue
local name=${root##*/}
delete_chroot "${root}" "$dest"
done
rm -rf --one-file-system "$dest"
}

View File

@@ -19,7 +19,7 @@ prepare_initcpio(){
prepare_initramfs(){
local mnt="$1"
cp ${DATADIR}/mkinitcpio.conf $mnt/etc/mkinitcpio-${os_id}.conf
cp ${DATADIR}/mkinitcpio.conf $mnt/etc/mkinitcpio-${iso_name}.conf
if [[ -n ${gpgkey} ]]; then
user_run "gpg --export ${gpgkey} >${AT_USERCONFDIR}/gpgkey"
exec 17<>${AT_USERCONFDIR}/gpgkey
@@ -27,7 +27,7 @@ prepare_initramfs(){
local _kernel=$(cat $mnt/usr/lib/modules/*/version)
ARTIX_GNUPG_FD=${gpgkey:+17} chroot-run $mnt \
/usr/bin/mkinitcpio -k ${_kernel} \
-c /etc/mkinitcpio-${os_id}.conf \
-c /etc/mkinitcpio-${iso_name}.conf \
-g /boot/initramfs.img
if [[ -n ${gpgkey} ]]; then
@@ -46,6 +46,16 @@ prepare_boot_extras(){
cp $src/usr/share/licenses/common/GPL2/license.txt $dest/memtest.COPYING
}
configure_grub(){
local conf="$1"
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(){
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
@@ -83,7 +93,7 @@ prepare_grub(){
grub-mkimage -d ${grub}/${platform} -o ${efi}/${img} -O ${platform} -p ${prefix} iso9660
prepare_dir ${grub}/themes
cp -r ${theme}/themes/${os_id} ${grub}/themes/
cp -r ${theme}/themes/${iso_name} ${grub}/themes/
cp ${data}/unicode.pf2 ${grub}
cp -r ${theme}/{locales,tz} ${grub}

View File

@@ -1,65 +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.
track_img() {
info "mount: [%s]" "$2"
mount "$@" && IMG_ACTIVE_MOUNTS=("$2" "${IMG_ACTIVE_MOUNTS[@]}")
}
mount_img() {
IMG_ACTIVE_MOUNTS=()
mkdir -p "$2"
track_img "$1" "$2"
}
umount_img() {
if [[ -n ${IMG_ACTIVE_MOUNTS[@]} ]];then
info "umount: [%s]" "${IMG_ACTIVE_MOUNTS[@]}"
umount "${IMG_ACTIVE_MOUNTS[@]}"
unset IMG_ACTIVE_MOUNTS
rm -r "$1"
fi
}
track_fs() {
info "overlayfs mount: [%s]" "$5"
mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}")
}
mount_fs(){
FS_ACTIVE_MOUNTS=()
local lower= upper="$1" work="$2" pkglist="$3"
local fs=${upper##*/}
local rootfs="$work/rootfs" desktopfs="$work/desktopfs" livefs="$work/livefs"
mkdir -p "${mnt_dir}/work"
mkdir -p "$upper"
case $fs in
desktopfs) lower="$rootfs" ;;
livefs)
lower="$rootfs"
[[ -f $pkglist ]] && lower="$desktopfs":"$rootfs"
;;
bootfs)
lower="$livefs":"$rootfs"
[[ -f $pkglist ]] && lower="$livefs":"$desktopfs":"$rootfs"
;;
esac
track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper"
}
umount_fs(){
if [[ -n ${FS_ACTIVE_MOUNTS[@]} ]];then
info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}"
umount "${FS_ACTIVE_MOUNTS[@]}"
unset FS_ACTIVE_MOUNTS
rm -rf "${mnt_dir}/work"
fi
}

View File

@@ -44,22 +44,20 @@ load_profile(){
[[ -z ${password} ]] && password="artix"
if [[ -z ${addgroups} ]];then
addgroups="video,power,storage,optical,network,lp,scanner,wheel,users"
addgroups="video,power,storage,optical,network,lp,scanner,wheel,users,audio"
fi
if [[ -z ${openrc_boot[@]} ]];then
openrc_boot=('elogind')
if [[ -z ${services[@]} ]];then
services=('acpid' 'bluetooth' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager')
fi
if [[ -z ${openrc_default[@]} ]];then
openrc_default=('acpid' 'bluetooth' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager')
[[ ${displaymanager} != "none" ]] && services+=('xdm')
if [[ -z ${services_live[@]} ]];then
services_live=('artix-live' 'pacman-init')
fi
[[ ${displaymanager} != "none" ]] && openrc_default+=('xdm')
enable_live=('artix-live' 'pacman-init')
[[ -z ${netgroups} ]] && netgroups="https://raw.githubusercontent.com/artix-linux/netgroups/master"
[[ -z ${netgroups_url} ]] && netgroups_url="https://raw.githubusercontent.com/artix-linux/netgroups/master"
return 0
}
@@ -84,9 +82,8 @@ write_live_session_conf(){
echo "addgroups='${addgroups}'" >> ${conf}
}
# $1: file name
load_pkgs(){
local pkglist="$1" arch="$2" init="$3" _kv="$4"
local pkglist="$1" init="$2" _kv="$3"
info "Loading Packages: [%s] ..." "${pkglist##*/}"
local _init="s|>$init||g"
@@ -96,13 +93,6 @@ load_pkgs(){
'runit') _init_rm1="s|>s6.*||g"; _init_rm2="s|>openrc.*||g" ;;
esac
local _arch="s|>x86_64||g" _arch_rm="s|>i686.*||g"
if [[ "$arch" == 'i686' ]];then
_arch="s|>i686||g"
_arch_rm="s|>x86_64.*||g"
fi
local _blacklist="s|>blacklist.*||g" \
_kernel="s|KERNEL|$_kv|g" \
_space="s| ||g" \
@@ -116,8 +106,6 @@ load_pkgs(){
| sed "$_init" \
| sed "$_init_rm1" \
| sed "$_init_rm2" \
| sed "$_arch" \
| sed "$_arch_rm" \
| sed "$_kernel" \
| sed "$_clean"))
}

View File

@@ -9,10 +9,15 @@
# 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:+,}"http://${mirror}.dl.${seed}"
webseed=${webseed:-}${webseed:+,}"https://${mirror}.dl.${seed}"
done
echo ${webseed}
}
@@ -22,9 +27,10 @@ make_torrent(){
if [[ -n $(find ${src_dir} -type f -name "*.iso") ]]; then
for iso in $(ls ${src_dir}/*.iso);do
local seed=${host}/project/${project}/${target_dir}/${iso##*/}
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
@@ -33,7 +39,7 @@ make_torrent(){
prepare_transfer(){
target_dir="/iso/${profile}/"
src_dir="${cache_dir_iso}/${profile}/"
src_dir="${iso_pool}/${profile}/"
${torrent} && make_torrent
}

104
lib/util-iso-yaml.sh Normal file
View File

@@ -0,0 +1,104 @@
#!/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.
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(){
local conf="$1/users.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf"
echo "defaultGroups:" >> "$conf"
local IFS=','
for g in ${addgroups[@]};do
echo " - $g" >> "$conf"
done
unset IFS
echo "autologinGroup: autologin" >> "$conf"
echo "doAutologin: false" >> "$conf"
echo "sudoersGroup: wheel" >> "$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 "avatarFilePath: ~/.face" >> "$conf"
}
write_netinstall_conf(){
local conf="$1/netinstall.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf"
echo "groupsUrl: ${netgroups}" >> "$conf"
}
write_unpack_conf(){
local conf="$1/unpackfs.conf"
msg2 "Writing %s ..." "${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(){
local dest="$1" mods="$1/etc/calamares/modules"
if [[ -d $dest/etc/calamares/modules ]];then
info "Configuring [Calamares]"
write_netinstall_conf "$mods"
write_unpack_conf "$mods"
write_users_conf "$mods"
write_initcpio_conf "$mods"
case ${initsys} in
'openrc') write_servicescfg_conf "$mods" ;;
esac
write_bootloader_conf "$mods"
info "Done configuring [Calamares]"
fi
}

View File

@@ -10,11 +10,64 @@
# GNU General Public License for more details.
import ${LIBDIR}/util-chroot.sh
import ${LIBDIR}/util-iso-chroot.sh
import ${LIBDIR}/util-iso-grub.sh
import ${LIBDIR}/util-yaml.sh
import ${LIBDIR}/util-iso-mount.sh
import ${LIBDIR}/util-profile.sh
import ${LIBDIR}/util-iso-yaml.sh
import ${LIBDIR}/util-iso-profile.sh
track_img() {
info "mount: [%s]" "$2"
mount "$@" && IMG_ACTIVE_MOUNTS=("$2" "${IMG_ACTIVE_MOUNTS[@]}")
}
mount_img() {
IMG_ACTIVE_MOUNTS=()
mkdir -p "$2"
track_img "$1" "$2"
}
umount_img() {
if [[ -n ${IMG_ACTIVE_MOUNTS[@]} ]];then
info "umount: [%s]" "${IMG_ACTIVE_MOUNTS[@]}"
umount "${IMG_ACTIVE_MOUNTS[@]}"
unset IMG_ACTIVE_MOUNTS
rm -r "$1"
fi
}
track_fs() {
info "overlayfs mount: [%s]" "$5"
mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}")
}
mount_overlay(){
FS_ACTIVE_MOUNTS=()
local lower= upper="$1" work="$2" pkglist="$3"
local fs=${upper##*/}
local rootfs="$work/rootfs" desktopfs="$work/desktopfs" livefs="$work/livefs"
mkdir -p "${mnt_dir}/work"
mkdir -p "$upper"
case $fs in
desktopfs) lower="$rootfs" ;;
livefs)
lower="$rootfs"
[[ -f $pkglist ]] && lower="$desktopfs":"$rootfs"
;;
bootfs)
lower="$livefs":"$rootfs"
[[ -f $pkglist ]] && lower="$livefs":"$desktopfs":"$rootfs"
;;
esac
track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper"
}
umount_overlay(){
if [[ -n ${FS_ACTIVE_MOUNTS[@]} ]];then
info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}"
umount "${FS_ACTIVE_MOUNTS[@]}"
unset FS_ACTIVE_MOUNTS
rm -rf "${mnt_dir}/work"
fi
}
error_function() {
if [[ -p $logpipe ]]; then
@@ -26,16 +79,16 @@ error_function() {
error "A failure occurred in %s()." "$func"
plain "Aborting..."
fi
umount_fs
umount_overlay
umount_img
exit 2
}
# $1: function
run_log(){
local func="$1"
local func="$1" log_dir='/var/log/artools'
local logfile=${log_dir}/$(gen_iso_fn).$func.log
logpipe=$(mktemp -u "${tmp_dir}/$func.pipe.XXXXXXXX")
logpipe=$(mktemp -u "/tmp/$func.pipe.XXXXXXXX")
mkfifo "$logpipe"
tee "$logfile" < "$logpipe" &
local teepid=$!
@@ -65,11 +118,124 @@ run_safe() {
trap_exit() {
local sig=$1; shift
error "$@"
umount_fs
umount_overlay
trap -- "$sig"
kill "-$sig" "$$"
}
prepare_traps(){
for sig in TERM HUP QUIT; do
trap "trap_exit $sig \"$(gettext "%s signal caught. Exiting...")\" \"$sig\"" "$sig"
done
trap 'trap_exit INT "$(gettext "Aborted by user! Exiting...")"' INT
# trap 'trap_exit USR1 "$(gettext "An unknown error has occurred. Exiting...")"' ERR
}
add_svc_rc(){
local mnt="$1" name="$2" rlvl="$3"
if [[ -f $mnt/etc/init.d/$name ]];then
msg2 "Setting %s ..." "$name"
chroot $mnt rc-update add $name $rlvl &>/dev/null
fi
}
set_xdm(){
if [[ -f $1/etc/conf.d/xdm ]];then
local conf='DISPLAYMANAGER="'${displaymanager}'"'
sed -i -e "s|^.*DISPLAYMANAGER=.*|${conf}|" $1/etc/conf.d/xdm
fi
}
configure_hosts(){
sed -e "s|localhost.localdomain|localhost.localdomain ${hostname}|" -i $1/etc/hosts
}
configure_logind(){
local conf=$1/etc/$2/logind.conf
if [[ -e $conf ]];then
msg2 "Configuring logind ..."
sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' "$conf"
sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' "$conf"
sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' "$conf"
fi
}
configure_services(){
local mnt="$1"
info "Configuring [%s]" "${initsys}"
case ${initsys} in
'openrc')
for svc in ${services[@]}; do
[[ $svc == "xdm" ]] && set_xdm "$mnt"
add_svc_rc "$mnt" "$svc" "default"
done
for svc in ${services_live[@]}; do
add_svc_rc "$mnt" "$svc" "default"
done
;;
esac
info "Done configuring [%s]" "${initsys}"
}
configure_system(){
local mnt="$1"
case ${initsys} in
'openrc')
configure_logind "$mnt" "elogind"
;;
esac
echo ${hostname} > $mnt/etc/hostname
}
clean_iso_root(){
local dest="$1"
msg "Deleting isoroot [%s] ..." "${dest##*/}"
rm -rf --one-file-system "$dest"
}
clean_up_image(){
local path mnt="$1"
msg2 "Cleaning [%s]" "${mnt##*/}"
default_locale "reset" "$mnt"
path=$mnt/boot
if [[ -d "$path" ]]; then
find "$path" -name 'initramfs*.img' -delete &> /dev/null
fi
path=$mnt/var/lib/pacman/sync
if [[ -d $path ]];then
find "$path" -type f -delete &> /dev/null
fi
path=$mnt/var/cache/pacman/pkg
if [[ -d $path ]]; then
find "$path" -type f -delete &> /dev/null
fi
path=$mnt/var/log
if [[ -d $path ]]; then
find "$path" -type f -delete &> /dev/null
fi
path=$mnt/var/tmp
if [[ -d $path ]];then
find "$path" -mindepth 1 -delete &> /dev/null
fi
path=$mnt/tmp
if [[ -d $path ]];then
find "$path" -mindepth 1 -delete &> /dev/null
fi
if [[ ${mnt##*/} == 'livefs' ]];then
rm -rf "$mnt/etc/pacman.d/gnupg"
fi
find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then
rm $mnt/boot/grub/grub.cfg
fi
if [[ -f "$mnt/etc/machine-id" ]]; then
rm $mnt/etc/machine-id
fi
}
configure_live_image(){
local fs="$1"
msg "Configuring [livefs]"
@@ -93,9 +259,9 @@ make_sig () {
make_checksum(){
local idir="$1" file="$2"
msg2 "Creating md5sum ..."
msg2 "Creating sha512sum ..."
cd $idir
md5sum $file.sfs > $file.md5
sha512sum $file.sfs > $file.sha512
cd ${OLDPWD}
}
@@ -106,15 +272,15 @@ make_sfs() {
error "The path %s does not exist" "${src}"
retrun 1
fi
local timer=$(get_timer) dest=${iso_root}/${os_id}/${target_arch}
local timer=$(get_timer) dest=${iso_root}/${iso_name}/${target_arch}
local name=${1##*/}
local sfs="${dest}/${name}.sfs"
mkdir -p ${dest}
msg "Generating SquashFS image for %s" "${src}"
if [[ -f "${sfs}" ]]; then
local has_changed_dir=$(find ${src} -newer ${sfs})
msg2 "Possible changes for %s ..." "${src}" >> ${tmp_dir}/buildiso.debug
msg2 "%s" "${has_changed_dir}" >> ${tmp_dir}/buildiso.debug
msg2 "Possible changes for %s ..." "${src}" >> /tmp/buildiso.debug
msg2 "%s" "${has_changed_dir}" >> /tmp/buildiso.debug
if [[ -n "${has_changed_dir}" ]]; then
msg2 "SquashFS image %s is not up to date, rebuilding..." "${sfs}"
rm "${sfs}"
@@ -176,7 +342,7 @@ assemble_iso(){
xorriso -as mkisofs \
--modification-date=${mod_date} \
--protective-msdos-label \
-volid "${dist_branding}" \
-volid "${iso_label}" \
-appid "$(get_osname) Live/Rescue CD" \
-publisher "$(get_osname) <$(get_disturl)>" \
-preparer "Prepared by artools/${0##*/}" \
@@ -190,14 +356,11 @@ assemble_iso(){
-no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \
-eltorito-alt-boot \
-append_partition 2 0xef ${iso_root}/efi.img \
-e --interval:appended_partition_2:all:: \
-e --interval:appended_partition_2:all:: -iso_mbr_part_type 0x00 \
-no-emul-boot \
-iso-level 3 \
-o ${iso_dir}/${iso_file} \
${iso_root}/
# arg to add with xorriso-1.4.7
# -iso_mbr_part_type 0x00
}
# Build ISO
@@ -223,9 +386,9 @@ make_iso() {
gen_iso_fn(){
local vars=() name
vars+=("${os_id}")
vars+=("${iso_name}")
vars+=("${profile}")
vars+=("${dist_release}")
vars+=("${iso_version}")
vars+=("${target_arch}")
for n in ${vars[@]};do
name=${name:-}${name:+-}${n}
@@ -233,6 +396,12 @@ gen_iso_fn(){
echo $name
}
install_packages(){
local fs="$1"
setarch "${target_arch}" mkchroot \
"${mkchroot_args[@]}" "${fs}" "${packages[@]}"
}
copy_overlay(){
local src="$1" dest="$2"
if [[ -e "$src" ]];then
@@ -241,56 +410,53 @@ copy_overlay(){
fi
}
# Base installation (rootfs)
make_image_root() {
make_rootfs() {
if [[ ! -e ${work_dir}/rootfs.lock ]]; then
msg "Prepare [Base installation] (rootfs)"
local rootfs="${work_dir}/rootfs"
prepare_dir "${rootfs}"
create_chroot "${mkchroot_args[@]}" "${rootfs}" "${packages[@]}"
install_packages "${rootfs}"
copy_overlay "${root_overlay}" "${rootfs}"
configure_lsb "${rootfs}"
clean_up_image "${rootfs}"
msg "Done [Base installation] (rootfs)"
fi
}
make_image_desktop() {
make_desktopfs() {
if [[ ! -e ${work_dir}/desktopfs.lock ]]; then
msg "Prepare [Desktop installation] (desktopfs)"
local desktopfs="${work_dir}/desktopfs"
prepare_dir "${desktopfs}"
mount_fs "${desktopfs}" "${work_dir}"
mount_overlay "${desktopfs}" "${work_dir}"
create_chroot "${mkchroot_args[@]}" "${desktopfs}" "${packages[@]}"
install_packages "${desktopfs}"
copy_overlay "${desktop_overlay}" "${desktopfs}"
umount_fs
umount_overlay
clean_up_image "${desktopfs}"
msg "Done [Desktop installation] (desktopfs)"
fi
}
make_image_live() {
make_livefs() {
if [[ ! -e ${work_dir}/livefs.lock ]]; then
msg "Prepare [Live installation] (livefs)"
local livefs="${work_dir}/livefs"
prepare_dir "${livefs}"
mount_fs "${livefs}" "${work_dir}" "${desktop_list}"
mount_overlay "${livefs}" "${work_dir}" "${desktop_list}"
create_chroot "${mkchroot_args[@]}" "${livefs}" "${packages[@]}"
install_packages "${livefs}"
copy_overlay "${live_overlay}" "${livefs}"
@@ -298,7 +464,7 @@ make_image_live() {
pacman -Qr "${livefs}" > ${iso_dir}/$(gen_iso_fn)-pkgs.txt
umount_fs
umount_overlay
clean_up_image "${livefs}"
@@ -306,7 +472,7 @@ make_image_live() {
fi
}
make_image_boot() {
make_bootfs() {
if [[ ! -e ${work_dir}/bootfs.lock ]]; then
msg "Prepare [/iso/boot]"
local boot="${iso_root}/boot"
@@ -317,7 +483,7 @@ make_image_boot() {
local bootfs="${work_dir}/bootfs"
mount_fs "${bootfs}" "${work_dir}" "${desktop_list}"
mount_overlay "${bootfs}" "${work_dir}" "${desktop_list}"
prepare_initcpio "${bootfs}"
prepare_initramfs "${bootfs}"
@@ -325,7 +491,7 @@ make_image_boot() {
cp ${bootfs}/boot/initramfs.img ${boot}/initramfs-${target_arch}.img
prepare_boot_extras "${bootfs}" "${boot}"
umount_fs
umount_overlay
rm -R ${bootfs}
: > ${work_dir}/bootfs.lock
@@ -333,23 +499,6 @@ make_image_boot() {
fi
}
configure_grub(){
local conf="$1"
local default_args="artixbasedir=${os_id} artixlabel=${dist_branding}" boot_args=('quiet')
sed -e "s|@DIST_NAME@|${dist_name}|g" \
-e "s|@ARCH@|${target_arch}|g" \
-e "s|@DEFAULT_ARGS@|${default_args}|g" \
-e "s|@BOOT_ARGS@|${boot_args[*]}|g" \
-e "s|@PROFILE@|${profile}|g" \
-i $conf
}
configure_grub_theme(){
local conf="$1"
sed -e "s|@DIST@|${os_id}|" -i "$conf"
}
make_grub(){
if [[ ! -e ${work_dir}/grub.lock ]]; then
msg "Prepare [/iso/boot/grub]"
@@ -357,7 +506,6 @@ make_grub(){
prepare_grub "${work_dir}/rootfs" "${work_dir}/livefs" "${iso_root}"
configure_grub "${iso_root}/boot/grub/kernels.cfg"
configure_grub_theme "${iso_root}/boot/grub/variable.cfg"
: > ${work_dir}/grub.lock
msg "Done [/iso/boot/grub]"
@@ -373,42 +521,18 @@ compress_images(){
prepare_images(){
local timer=$(get_timer)
load_pkgs "${root_list}" "${target_arch}" "${initsys}" "${kernel}"
run_safe "make_image_root"
load_pkgs "${root_list}" "${initsys}" "${kernel}"
run_safe "make_rootfs"
if [[ -f "${desktop_list}" ]] ; then
load_pkgs "${desktop_list}" "${target_arch}" "${initsys}" "${kernel}"
run_safe "make_image_desktop"
load_pkgs "${desktop_list}" "${initsys}" "${kernel}"
run_safe "make_desktopfs"
fi
if [[ -f ${live_list} ]]; then
load_pkgs "${live_list}" "${target_arch}" "${initsys}" "${kernel}"
run_safe "make_image_live"
load_pkgs "${live_list}" "${initsys}" "${kernel}"
run_safe "make_livefs"
fi
run_safe "make_image_boot"
run_safe "make_bootfs"
run_safe "make_grub"
show_elapsed_time "${FUNCNAME}" "${timer}"
}
build(){
msg "Start building [%s]" "${profile}"
if ${clean_first};then
chroot_clean "${chroots_iso}/${profile}/${target_arch}"
clean_iso_root "${iso_root}"
fi
if ${iso_only}; then
[[ ! -d ${work_dir} ]] && die "Create images: buildiso -p %s -x" "${profile}"
compress_images
exit 1
fi
if ${images_only}; then
prepare_images
warning "Continue compress: buildiso -p %s -zc ..." "${profile}"
exit 1
else
prepare_images
compress_images
fi
msg "Finished building [%s]" "${profile}"
show_elapsed_time "${FUNCNAME}" "${timer_start}"
}

View File

@@ -8,61 +8,22 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
export LC_MESSAGES=C
# export LC_MESSAGES=C
export LANG=C
declare ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW=''
source /usr/share/makepkg/util.sh
if [[ -t 2 ]]; then
# prefer terminal safe colored and bold text when tput is supported
if tput setaf 0 &>/dev/null; then
ALL_OFF="$(tput sgr0)"
BOLD="$(tput bold)"
RED="${BOLD}$(tput setaf 1)"
GREEN="${BOLD}$(tput setaf 2)"
YELLOW="${BOLD}$(tput setaf 3)"
BLUE="${BOLD}$(tput setaf 4)"
else
ALL_OFF="\e[0m"
BOLD="\e[1m"
RED="${BOLD}\e[31m"
GREEN="${BOLD}\e[32m"
YELLOW="${BOLD}\e[33m"
BLUE="${BOLD}\e[34m"
fi
colorize
else
declare -gr ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW=''
fi
readonly ALL_OFF BOLD BLUE GREEN RED YELLOW
plain() {
local mesg=$1; shift
printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg() {
local mesg=$1; shift
printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg2() {
local mesg=$1; shift
printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
info() {
local mesg=$1; shift
printf "${YELLOW} -->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
warning() {
local mesg=$1; shift
printf "${YELLOW}==> WARNING:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
error() {
local mesg=$1; shift
printf "${RED}==> ERROR:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
stat_busy() {
local mesg=$1; shift
printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}...${ALL_OFF}" "$@" >&2
@@ -115,6 +76,21 @@ die() {
cleanup 255
}
msg_table_header(){
local mesg=$1; shift
printf "${GREEN} ${mesg} ${ALL_OFF}\n" "$@" >&2
}
msg_row_downgrade(){
local mesg=$1; shift
printf "${YELLOW} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg_row_update(){
local mesg=$1; shift
printf "${RED}${BOLD} ${mesg} ${ALL_OFF}\n" "$@" >&2
}
import(){
if [[ -r "$1" ]];then
source "$1"

View File

@@ -1,108 +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.
load_compiler_settings(){
local arch="$1" conf
conf=${make_conf_dir}/$arch.conf
[[ -f $conf ]] || return 1
info "Loading compiler settings: %s" "$arch"
source $conf
return 0
}
get_makepkg_conf(){
local arch="$1"
local conf="${tmp_dir}/makepkg-${arch}.conf"
if [[ -f $AT_USERCONFDIR/makepkg.conf ]];then
cp "$AT_USERCONFDIR/makepkg.conf" "$conf"
else
cp "${DATADIR}/makepkg.conf" "$conf"
fi
load_compiler_settings "${arch}"
sed -i "$conf" \
-e "s|@CARCH[@]|$carch|g" \
-e "s|@CHOST[@]|$chost|g" \
-e "s|@CFLAGS[@]|$cflags|g"
echo "$conf"
}
check_build(){
local bdir="$1"
find_pkg "${bdir}"
[[ ! -f ${bdir}/PKGBUILD ]] && die "Directory must contain a PKGBUILD!"
}
find_pkg(){
local bdir="$1"
local result=$(find . -type d -name "${bdir}")
[[ -z $result ]] && die "%s is not a valid package!" "${bdir}"
}
sign_pkg(){
local pkg="$1"
[[ -f ${pkg_dir}/${pkg}.sig ]] && rm ${pkg_dir}/${pkg}.sig
user_run "signfile ${pkg_dir}/${pkg}"
}
move_to_cache(){
local src="$1"
[[ -n $PKGDEST ]] && src="$PKGDEST/$src"
[[ ! -f $src ]] && die
msg2 "Moving [%s] -> [%s]" "${src##*/}" "${pkg_dir}"
mv $src ${pkg_dir}/
user_own "${pkg_dir}" -R
${sign} && sign_pkg "${src##*/}"
# [[ -n $PKGDEST ]] && rm "$src"
user_own "${pkg_dir}" -R
}
post_build(){
source PKGBUILD
local ext='pkg.tar.xz' tarch ver src
for pkg in ${pkgname[@]};do
case $arch in
any) tarch='any' ;;
*) tarch=${target_arch}
esac
local ver=$(get_full_version "$pkg") src
src=$pkg-$ver-$tarch.$ext
move_to_cache "$src"
if ${repo_add};then
deploypkg "${deploypkg_args[@]}" -p "$src"
user_own "${repos_local}/${repository}" -R
fi
done
}
build_pkg(){
mkchrootpkg "${mkchrootpkg_args[@]}" || die
post_build
}
build(){
local pkg="$1"
check_build "${pkg}"
msg "Start building [%s]" "${pkg}"
cd ${pkg}
build_pkg
cd ..
msg "Finished building [%s]" "${pkg}"
show_elapsed_time "${FUNCNAME}" "${timer_start}"
}

View File

@@ -1,75 +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.
repo_update(){
local repo="$1" arch="$2" pkg="$3" action="$4" copy="$5"
if [[ $action == "add" ]];then
if [[ -f ${repos_local}/$repo/os/$arch/$pkg \
&& -f ${repos_local}/$repo/os/$arch/$pkg.sig ]];then
rm ${repos_local}/$repo/os/$arch/$pkg
rm ${repos_local}/$repo/os/$arch/$pkg.sig
fi
local cmd='ln -s'
$copy && cmd='cp'
$cmd ${cache_dir_pkg}/$arch/$repo/$pkg{,.sig} ${repos_local}/$repo/os/$arch/
fi
local dest=${repos_local}/$repo/os/$arch/$pkg
[[ $action == "remove" ]] && dest=$pkg
repo-$action -R ${repos_local}/$repo/os/$arch/$repo.db.tar.xz $dest
}
update_lock(){
local repo="$1"
rsync "${rsync_args[@]}" --exclude='os' "${repos_local}/$repo/" "$(connect)${repos_remote}/$repo/"
}
is_locked(){
local repo="$1" url="https://${host}/projects/${project}/files/repos"
if wget --spider -v $url/$repo/$repo.lock &>/dev/null;then
return 0
else
return 1
fi
}
repo_lock(){
local repo="$1"
if [[ ! -f ${repos_local}/$repo/$repo.lock ]];then
warning "Locking %s" "$repo"
touch ${repos_local}/$repo/$repo.lock
update_lock "$repo"
fi
}
repo_unlock(){
local repo="$1"
if [[ -f ${repos_local}/$repo/$repo.lock ]];then
warning "Unlocking %s" "$repo"
rm ${repos_local}/$repo/$repo.lock
update_lock "$repo"
fi
}
repo_download(){
local repo="$1"
if is_locked "$repo"; then
die "The '%s' repository is locked" "$repo"
else
rsync "${rsync_args[@]}" "$(connect)${repos_remote}/$repo/" "${repos_local}/$repo/"
fi
}
repo_upload(){
local repo="$1"
repo_lock "$repo"
rsync "${rsync_args[@]}" "${repos_local}/$repo/" "$(connect)${repos_remote}/$repo/"
repo_unlock "$repo"
}

View File

@@ -1,108 +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.
get_local_head(){
echo $(git log --pretty=%H ...refs/heads/$1^ | head -n 1)
}
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
}
sync_tree(){
local branch="master" repo="$1"
local local_head=$(get_local_head "$branch")
local remote_head=$(get_remote_head "$branch")
local timer=$(get_timer)
msg "Checking [%s] ..." "$repo"
msg2 "local: %s" "${local_head}"
msg2 "remote: %s" "${remote_head}"
if [[ "${local_head}" == "${remote_head}" ]]; then
info "nothing to do"
else
info "needs sync"
git pull origin $branch
fi
msg "Done [%s]" "$repo"
show_elapsed_time "${FUNCNAME}" "${timer}"
}
clone_tree(){
local timer=$(get_timer) repo="$1" host_tree="$2"
msg "Preparing [%s] ..." "$repo"
info "clone"
git clone $host_tree.git
msg "Done [%s]" "$repo"
show_elapsed_time "${FUNCNAME}" "${timer}"
}
sync_tree_arch(){
cd ${tree_dir_arch}
for repo in ${repo_tree_arch[@]};do
if [[ -d ${repo} ]];then
cd ${repo}
sync_tree "${repo}"
cd ..
else
clone_tree "${repo}" "${host_tree_arch}/${repo}"
fi
done
cd ..
}
read_import_list(){
local name="$1"
local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g"
import_list=$(sed "$_com_rm" "${list_dir_import}/$name.list" | sed "$_space" | sed "$_clean")
}
get_pkgver(){
source PKGBUILD
echo $pkgver-$pkgrel
}
is_untracked(){
[[ $(git ls-files --others --exclude-standard) != "" ]] || return 1
return 0
}
import_from_arch(){
local timer=$(get_timer) branch='testing'
for repo in ${repo_tree_import[@]};do
read_import_list "$repo"
if [[ -n ${import_list[@]} ]];then
cd ${tree_dir_artix}/$repo
git checkout $branch &> /dev/null
$(is_dirty) && die "[%s] has uncommited changes!" "${repo}"
git pull origin $branch &> /dev/null
local arch_dir=packages
[[ $repo == "galaxy" ]] && arch_dir=community
msg "Import into [%s]" "$repo"
for pkg in ${import_list[@]};do
rsync "${rsync_args[@]}" ${tree_dir_arch}/$arch_dir/$pkg/trunk/ ${tree_dir_artix}/$repo/$pkg/
if $(is_dirty) || $(is_untracked); then
git add $pkg
cd $pkg
local ver=$(get_pkgver)
msg2 "Archlinux import: [%s]" "$pkg-$ver"
git commit -m "Archlinux import: $pkg-$ver"
cd ..
fi
done
fi
done
show_elapsed_time "${FUNCNAME}" "${timer}"
}

View File

@@ -9,15 +9,6 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
in_array() {
local needle=$1; shift
local item
for item in "$@"; do
[[ $item = $needle ]] && return 0 # Found
done
return 1 # Not Found
}
# $1: sofile
# $2: soarch
process_sofile() {
@@ -45,39 +36,15 @@ pkgver_equal() {
fi
}
get_full_version() {
# set defaults if they weren't specified in buildfile
pkgbase=${pkgbase:-${pkgname[0]}}
epoch=${epoch:-0}
if [[ -z $1 ]]; then
if [[ $epoch ]] && (( ! $epoch )); then
echo $pkgver-$pkgrel
else
echo $epoch:$pkgver-$pkgrel
fi
else
for i in pkgver pkgrel epoch; do
local indirect="${i}_override"
eval $(declare -f package_$1 | sed -n "s/\(^[[:space:]]*$i=\)/${i}_override=/p")
[[ -z ${!indirect} ]] && eval ${indirect}=\"${!i}\"
done
if (( ! $epoch_override )); then
echo $pkgver_override-$pkgrel_override
else
echo $epoch_override:$pkgver_override-$pkgrel_override
fi
fi
}
find_cached_package() {
local searchdirs=("$PWD" "$PKGDEST") results=()
local searchdirs=("$PKGDEST" "$PWD") results=()
local targetname=$1 targetver=$2 targetarch=$3
local dir pkg pkgbasename name ver rel arch r results
for dir in "${searchdirs[@]}"; do
[[ -d $dir ]] || continue
for pkg in "$dir"/*.pkg.tar.xz; do
for pkg in "$dir"/*.pkg.tar.?z; do
[[ -f $pkg ]] || continue
# avoid adding duplicates of the same inode
@@ -87,7 +54,7 @@ find_cached_package() {
# split apart package filename into parts
pkgbasename=${pkg##*/}
pkgbasename=${pkgbasename%.pkg.tar?(.?z)}
pkgbasename=${pkgbasename%.pkg.tar.?z}
arch=${pkgbasename##*-}
pkgbasename=${pkgbasename%-"$arch"}
@@ -107,16 +74,16 @@ find_cached_package() {
case ${#results[*]} in
0)
return 1
return 1
;;
1)
printf '%s\n' "$results"
return 0
printf '%s\n' "${results[0]}"
return 0
;;
*)
error 'Multiple packages found:'
printf '\t%s\n' "${results[@]}" >&2
return 1
error 'Multiple packages found:'
printf '\t%s\n' "${results[@]}" >&2
return 1
;;
esac
}

View File

@@ -1,54 +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.
import ${LIBDIR}/util-yaml.sh
write_netgroup_yaml(){
local name="$1" yaml="$2"
msg2 "Writing %s ..." "${yaml##*/}"
echo "---" > "$yaml"
echo "- name: '$name'" >> "$yaml"
echo " description: '$name'" >> "$yaml"
echo " selected: false" >> "$yaml"
echo " hidden: false" >> "$yaml"
echo " critical: false" >> "$yaml"
echo " packages:" >> "$yaml"
for p in ${packages[@]};do
echo " - $p" >> "$yaml"
done
}
write_pacman_group_yaml(){
local group="$1"
packages=$(pacman -Sgq "$group")
prepare_dir "${cache_dir_netinstall}/pacman"
write_netgroup_yaml "$group" "${cache_dir_netinstall}/pacman/$group.yaml"
}
gen_fn(){
echo "${yaml_dir}/$1-${target_arch}-${initsys}.yaml"
}
prepare_build(){
load_profile "${profile}"
yaml_dir=${cache_dir_netinstall}/${profile}/${target_arch}
prepare_dir "${yaml_dir}"
}
build(){
load_pkgs "${root_list}" "${target_arch}" "${initsys}" "${kernel}"
write_netgroup_yaml "${profile}" "$(gen_fn "Packages-Root")"
if [[ -f "${desktop_list}" ]]; then
load_pkgs "${desktop_list}" "${target_arch}" "${initsys}" "${kernel}"
write_netgroup_yaml "${profile}" "$(gen_fn "Packages-Desktop")"
fi
${calamares} && configure_calamares "${yaml_dir}"
}

View File

@@ -1,222 +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.
write_machineid_conf(){
local conf="${modules_dir}/machineid.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo '---' > "$conf"
echo "systemd: false" >> $conf
echo "dbus: true" >> $conf
echo "symlink: true" >> $conf
}
write_finished_conf(){
msg2 "Writing %s ..." "finished.conf"
local conf="${modules_dir}/finished.conf" cmd="loginctl reboot"
echo '---' > "$conf"
echo 'restartNowEnabled: true' >> "$conf"
echo 'restartNowChecked: false' >> "$conf"
echo "restartNowCommand: \"${cmd}\"" >> "$conf"
}
get_preset(){
local p=${tmp_dir}/${kernel}.preset
cp ${DATADIR}/linux.preset $p
sed -e "s|@kernel@|$kernel|g" \
-e "s|@arch@|${target_arch}|g"\
-i $p
echo $p
}
write_bootloader_conf(){
local conf="${modules_dir}/bootloader.conf" efi_boot_loader='grub'
msg2 "Writing %s ..." "${conf##*/}"
source "$(get_preset)"
echo '---' > "$conf"
echo "efiBootLoader: \"${efi_boot_loader}\"" >> "$conf"
echo "kernel: \"${ALL_kver#*/boot}\"" >> "$conf"
echo "img: \"${default_image#*/boot}\"" >> "$conf"
echo "fallback: \"${fallback_image#*/boot}\"" >> "$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="${modules_dir}/servicescfg.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo '---' > "$conf"
echo '' >> "$conf"
echo 'services:' >> "$conf"
echo ' enabled:' >> "$conf"
for s in ${openrc_boot[@]};do
echo " - name: $s" >> "$conf"
echo ' runlevel: boot' >> "$conf"
done
for s in ${openrc_default[@]};do
echo " - name: $s" >> "$conf"
echo ' runlevel: default' >> "$conf"
done
}
write_displaymanager_conf(){
local conf="${modules_dir}/displaymanager.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf"
echo "displaymanagers:" >> "$conf"
echo " - lightdm" >> "$conf"
echo " - gdm" >> "$conf"
echo " - mdm" >> "$conf"
echo " - sddm" >> "$conf"
echo " - lxdm" >> "$conf"
echo " - slim" >> "$conf"
echo '' >> "$conf"
echo "basicSetup: false" >> "$conf"
}
write_initcpio_conf(){
local conf="${modules_dir}/initcpio.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf"
echo "kernel: ${kernel}" >> "$conf"
}
write_users_conf(){
local conf="${modules_dir}/users.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf"
echo "defaultGroups:" >> "$conf"
local IFS=','
for g in ${addgroups[@]};do
echo " - $g" >> "$conf"
done
unset IFS
echo "autologinGroup: autologin" >> "$conf"
echo "doAutologin: false" >> "$conf" # can be either 'true' or 'false'
echo "sudoersGroup: wheel" >> "$conf"
echo "setRootPassword: true" >> "$conf" # must be true, else some options get hidden
echo "doReusePassword: false" >> "$conf" # only used in old 'users' module
echo "availableShells: /bin/bash, /bin/zsh" >> "$conf" # only used in new 'users' module
echo "avatarFilePath: ~/.face" >> "$conf" # mostly used file-name for avatar
}
write_welcome_conf(){
local conf="${modules_dir}/welcome.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf" >> "$conf"
echo "showSupportUrl: true" >> "$conf"
echo "showKnownIssuesUrl: true" >> "$conf"
echo "showReleaseNotesUrl: true" >> "$conf"
echo '' >> "$conf"
echo "requirements:" >> "$conf"
echo " requiredStorage: 7.9" >> "$conf"
echo " requiredRam: 1.0" >> "$conf"
echo " internetCheckUrl: https://github.com/cromnix" >> "$conf"
echo " check:" >> "$conf"
echo " - storage" >> "$conf"
echo " - ram" >> "$conf"
echo " - power" >> "$conf"
echo " - internet" >> "$conf"
echo " - root" >> "$conf"
echo " required:" >> "$conf"
echo " - storage" >> "$conf"
echo " - ram" >> "$conf"
echo " - root" >> "$conf"
echo " - internet" >> "$conf"
}
write_umount_conf(){
local conf="${modules_dir}/umount.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf"
echo 'srcLog: "/root/.cache/Calamares/Calamares/Calamares.log"' >> "$conf"
echo 'destLog: "/var/log/Calamares.log"' >> "$conf"
}
get_yaml(){
echo "netgroups-${initsys}.yaml"
}
write_netinstall_conf(){
local conf="${modules_dir}/netinstall.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf"
echo "groupsUrl: ${netgroups}/$(get_yaml)" >> "$conf"
}
write_locale_conf(){
local conf="${modules_dir}/locale.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf"
echo "localeGenPath: /etc/locale.gen" >> "$conf"
echo "geoipUrl: freegeoip.net" >> "$conf"
}
write_settings_conf(){
local conf="$1/etc/calamares/settings.conf"
msg2 "Writing %s ..." "${conf##*/}"
echo "---" > "$conf"
echo "modules-search: [ local ]" >> "$conf"
echo '' >> "$conf"
echo "sequence:" >> "$conf"
echo " - show:" >> "$conf"
echo " - welcome" >> "$conf" && write_welcome_conf
echo " - locale" >> "$conf" && write_locale_conf
echo " - keyboard" >> "$conf"
echo " - partition" >> "$conf"
echo " - users" >> "$conf" && write_users_conf
echo " - netinstall" >> "$conf" && write_netinstall_conf
echo " - summary" >> "$conf"
echo " - exec:" >> "$conf"
echo " - partition" >> "$conf"
echo " - mount" >> "$conf"
echo " - chrootcfg" >> "$conf"
echo " - networkcfg" >> "$conf"
echo " - machineid" >> "$conf" && write_machineid_conf
echo " - fstab" >> "$conf"
echo " - locale" >> "$conf"
echo " - keyboard" >> "$conf"
echo " - localecfg" >> "$conf"
echo " - luksopenswaphookcfg" >> "$conf"
echo " - luksbootkeyfile" >> "$conf"
echo " - initcpiocfg" >> "$conf"
echo " - initcpio" >> "$conf" && write_initcpio_conf
echo " - users" >> "$conf"
echo " - displaymanager" >> "$conf" && write_displaymanager_conf
echo " - hwclock" >> "$conf"
case ${initsys} in
'openrc') echo " - servicescfg" >> "$conf" && write_servicescfg_conf ;;
esac
echo " - grubcfg" >> "$conf"
echo " - bootloader" >> "$conf" && write_bootloader_conf
echo " - postcfg" >> "$conf"
echo " - umount" >> "$conf" && write_umount_conf
echo " - show:" >> "$conf"
echo " - finished" >> "$conf" && write_finished_conf
echo '' >> "$conf"
echo "branding: ${os_id}" >> "$conf"
echo '' >> "$conf"
echo "prompt-install: false" >> "$conf"
echo '' >> "$conf"
echo "dont-chroot: false" >> "$conf"
}
configure_calamares(){
info "Configuring [Calamares]"
modules_dir=$1/etc/calamares/modules
prepare_dir "${modules_dir}"
write_settings_conf "$1"
info "Done configuring [Calamares]"
}

View File

@@ -27,7 +27,7 @@ load_vars() {
[[ -f $1 ]] || return 1
for var in {SRC,SRCPKG,PKG,LOG}DEST MAKEFLAGS PACKAGER CARCH GPGKEY; do
[[ -z ${!var} ]] && eval $(grep -a "^${var}=" "$1")
[[ -z ${!var:-} ]] && eval "$(grep -a "^${var}=" "$1")"
done
return 0
@@ -37,11 +37,6 @@ prepare_dir(){
[[ ! -d $1 ]] && mkdir -p $1
}
get_distname(){
source /usr/lib/os-release
echo "${NAME%Linux}"
}
get_disturl(){
source /usr/lib/os-release
echo "${HOME_URL}"
@@ -59,22 +54,10 @@ get_osid(){
init_artools_base(){
[[ -z ${target_arch} ]] && target_arch=$(uname -m)
target_arch=$(uname -m)
[[ -z ${chroots_dir} ]] && chroots_dir='/var/lib/artools'
log_dir='/var/log/artools'
tmp_dir='/tmp'
host="sourceforge.net"
[[ -z ${host_mirrors[@]} ]] && host_mirrors=('netcologne' 'freefr' 'netix' 'kent' '10gbps-io')
[[ -z ${project} ]] && project="artix-linux"
[[ -z ${account} ]] && account="[SetUser]"
[[ -z ${workspace_dir} ]] && workspace_dir=/home/${OWNER}/artools-workspace
prepare_dir "${workspace_dir}"
@@ -84,14 +67,10 @@ init_artools_pkg(){
[[ -z ${tree_dir_artix} ]] && tree_dir_artix=${workspace_dir}/artix
[[ -z ${repo_tree_import[@]} ]] && repo_tree_import=('system' 'world' 'galaxy')
[[ -z ${host_tree_artix} ]] && host_tree_artix='https://github.com/artix-linux'
[[ -z ${tree_dir_arch} ]] && tree_dir_arch=${workspace_dir}/archlinux
[[ -z ${repo_tree_arch} ]] && repo_tree_arch=('packages' 'community')
[[ -z ${host_tree_arch} ]] && host_tree_arch='git://projects.archlinux.org/svntogit'
list_dir_import="${SYSCONFDIR}/import.list.d"
@@ -100,38 +79,32 @@ init_artools_pkg(){
chroots_pkg="${chroots_dir}/buildpkg"
make_conf_dir="${SYSCONFDIR}/make.conf.d"
[[ -z ${patches_dir} ]] && patches_dir=${workspace_dir}/archlinux-patches
cache_dir_pkg=${workspace_dir}/pkg
prepare_dir "${cache_dir_pkg}"
[[ -z ${repos_local} ]] && repos_local="${workspace_dir}/repos"
repos_remote="/${repos_local##*/}"
[[ -z ${repos_root} ]] && repos_root="${workspace_dir}/repos"
}
init_artools_iso(){
chroots_iso="${chroots_dir}/buildiso"
cache_dir_iso="${workspace_dir}/iso"
[[ -z ${iso_pool} ]] && iso_pool="${workspace_dir}/iso"
prepare_dir "${cache_dir_iso}"
prepare_dir "${iso_pool}"
profile='base'
[[ -z ${dist_release} ]] && dist_release=$(date +%Y%m%d)
[[ -z ${iso_version} ]] && iso_version=$(date +%Y%m%d)
dist_name=$(get_distname)
iso_name=$(get_osid)
os_id=$(get_osid)
[[ -z ${dist_branding} ]] && dist_branding="ARTIX"
iso_label="ARTIX_$(date +%Y%m)"
[[ -z ${initsys} ]] && initsys="openrc"
[[ -z ${kernel} ]] && kernel="linux-lts"
[[ -z ${kernel_args} ]] && kernel_args=""
[[ -z ${gpgkey} ]] && gpgkey=''
[[ -z ${uplimit} ]] && uplimit=100
@@ -140,6 +113,14 @@ init_artools_iso(){
[[ -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)"
}
@@ -212,8 +193,3 @@ check_root() {
exec su root -c "$(printf ' %q' "${orig_argv[@]}")"
fi
}
connect(){
local home="/home/frs/project/${project}"
echo "${account},${project}@frs.${host}:${home}"
}