parent
a58afcffc5
commit
c7a5dc603f
@ -0,0 +1,38 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: $
|
||||
|
||||
EAPI="3"
|
||||
|
||||
SUPPORT_PYTHON_ABIS="1"
|
||||
PYTHON_DEPEND="2:2.7"
|
||||
RESTRICT_PYTHON_ABIS="2.4 2.5 2.6 3.*"
|
||||
|
||||
inherit distutils eutils
|
||||
|
||||
SRC_URI="ftp://ftp.calculate.ru/pub/calculate/calculate3/${PN}/${P}.tar.bz2"
|
||||
|
||||
DESCRIPTION="The program of the desktop configuration Calculate Linux"
|
||||
HOMEPAGE="http://www.calculate-linux.org/main/en/calculate2"
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="3"
|
||||
KEYWORDS="amd64 x86"
|
||||
IUSE=""
|
||||
|
||||
DEPEND="~sys-apps/calculate-core-3.1.6
|
||||
>=dev-python/python-ldap-2.0[ssl]
|
||||
media-gfx/feh
|
||||
x11-apps/xmessage
|
||||
!<sys-apps/calculate-desktop-3.1.0_alpha1
|
||||
sys-apps/keyutils
|
||||
sys-auth/pam_keystore
|
||||
sys-auth/pam_client
|
||||
dev-lang/swig"
|
||||
RDEPEND="${DEPEND}"
|
||||
src_unpack() {
|
||||
unpack "${A}"
|
||||
cd "${S}"
|
||||
|
||||
# apply revision changes
|
||||
epatch "${FILESDIR}/calculate-desktop-3.1.6-r1.patch"
|
||||
}
|
@ -0,0 +1,102 @@
|
||||
diff --git data/login.d/00init data/login.d/00init
|
||||
index 5cbebf4..b56e158 100644
|
||||
--- data/login.d/00init
|
||||
+++ data/login.d/00init
|
||||
@@ -26,6 +26,8 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
+modprobe ecryptfs
|
||||
+
|
||||
if [[ "`ps axeo command | grep 'xdm/xdm --logout' | grep -v grep | \
|
||||
sed -n -r 's/.* USER=([^ ]+) .*/\1/p'`" == "$USER" ]];
|
||||
then
|
||||
diff --git data/logout.d/98umount data/logout.d/98umount
|
||||
index bf3b074..f388464 100644
|
||||
--- data/logout.d/98umount
|
||||
+++ data/logout.d/98umount
|
||||
@@ -1,4 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
+keyctl unlink $( keyctl request user $USER )
|
||||
umount -l /home/$USER
|
||||
exit 0
|
||||
diff --git desktop/cl_desktop.py desktop/cl_desktop.py
|
||||
index 11ca1de..f224bfa 100644
|
||||
--- desktop/cl_desktop.py
|
||||
+++ desktop/cl_desktop.py
|
||||
@@ -27,17 +27,20 @@ from datavars import DataVarsDesktop, DataVars, __version__,__app__
|
||||
|
||||
from calculate.lib.cl_template import (Template, ProgressTemplate,
|
||||
TemplatesError,templateFunction,iniParser)
|
||||
-from calculate.lib.utils.files import runOsCommand, isMount,process, \
|
||||
- getRunCommands,STDOUT
|
||||
-from calculate.lib.utils.common import getpathenv,appendProgramToEnvFile, \
|
||||
- removeProgramToEnvFile,mountEcryptfs, \
|
||||
- CommonError
|
||||
+from calculate.lib.utils.files import (runOsCommand, isMount,process,
|
||||
+ getRunCommands,STDOUT,childMounts)
|
||||
+from calculate.lib.utils.common import (getpathenv,appendProgramToEnvFile,
|
||||
+ removeProgramToEnvFile,mountEcryptfs,
|
||||
+ CommonError, isBootstrapDataOnly)
|
||||
from calculate.core.server.func import safetyWrapper
|
||||
|
||||
from calculate.lib.cl_lang import setLocalTranslate,getLazyLocalTranslate
|
||||
setLocalTranslate('cl_desktop3',sys.modules[__name__])
|
||||
__ = getLazyLocalTranslate(_)
|
||||
from itertools import ifilter
|
||||
+import tarfile
|
||||
+import tempfile
|
||||
+import shutil
|
||||
|
||||
class DesktopError(Exception):
|
||||
"""Desktop Error"""
|
||||
@@ -76,10 +79,45 @@ class Desktop:
|
||||
except CommonError as e:
|
||||
raise DesktopError(_("Failed to mount ecrypt")+": \"%s\""%str(e))
|
||||
else:
|
||||
- e = process('/usr/bin/ecryptfs-setup-private','-u',userName,'-b','-l',userPwd,stderr=STDOUT)
|
||||
- if e.failed():
|
||||
- raise DesktopError(e.read()+
|
||||
+ tf = None
|
||||
+ try:
|
||||
+ # если профиль содержит только данные от бутстрапа core
|
||||
+ if isBootstrapDataOnly(userDir):
|
||||
+ if childMounts(userDir):
|
||||
+ raise DesktopError(
|
||||
+ _("Failed to create encrypt user profile")+":"+
|
||||
+ _("User home directory contains mount points"))
|
||||
+ # поместить данные во временный tarfile
|
||||
+ calculateName = ".calculate"
|
||||
+ calculatePath = path.join(userDir,calculateName)
|
||||
+ tf = tempfile.TemporaryFile()
|
||||
+ with tarfile.open(fileobj=tf,mode='w:') as tarf:
|
||||
+ tarf.add(calculatePath,calculateName)
|
||||
+ tf.flush()
|
||||
+ tf.seek(0)
|
||||
+ # удалить эти данные
|
||||
+ shutil.rmtree(calculatePath)
|
||||
+
|
||||
+ # создать шифрованные данные
|
||||
+ e = process('/usr/bin/ecryptfs-setup-private','-u',userName,
|
||||
+ '-b','-l',userPwd,stderr=STDOUT)
|
||||
+ if e.failed():
|
||||
+ raise DesktopError(e.read())
|
||||
+ # если были данные от бутстрапа, то распаковать их
|
||||
+ if tf:
|
||||
+ with tarfile.open(fileobj=tf,mode='r:') as tarf:
|
||||
+ tarf.extractall(userDir)
|
||||
+ except Exception as e:
|
||||
+ if tf:
|
||||
+ tf.seek(0)
|
||||
+ bakArchName = path.join(userDir,".calculate.tar.bz2")
|
||||
+ with open(bakArchName,'w') as f:
|
||||
+ f.write(tf.read())
|
||||
+ raise DesktopError(str(e)+
|
||||
_("Failed to create encrypt user profile"))
|
||||
+ finally:
|
||||
+ if tf:
|
||||
+ tf.close()
|
||||
|
||||
def createUserDir(self, userName, uid, gid, userDir, mode=0700):
|
||||
"""
|
@ -0,0 +1,43 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: $
|
||||
|
||||
EAPI="3"
|
||||
SUPPORT_PYTHON_ABIS="1"
|
||||
PYTHON_DEPEND="2:2.7"
|
||||
RESTRICT_PYTHON_ABIS="2.4 2.5 2.6 3.*"
|
||||
|
||||
inherit distutils eutils
|
||||
|
||||
SRC_URI="ftp://ftp.calculate.ru/pub/calculate/calculate3/${PN}/${P}.tar.bz2"
|
||||
|
||||
DESCRIPTION="The program of installation Calculate Linux"
|
||||
HOMEPAGE="http://www.calculate-linux.org/main/en/calculate2"
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="3"
|
||||
KEYWORDS="amd64 x86"
|
||||
IUSE="pxe minimal"
|
||||
|
||||
DEPEND="~sys-apps/calculate-core-3.1.6
|
||||
!<sys-apps/calculate-install-2.2.29
|
||||
app-portage/layman
|
||||
>=virtual/udev-197
|
||||
!app-misc/livecd-tools
|
||||
sys-apps/iproute2[-minimal]
|
||||
!minimal? ( sys-boot/grub
|
||||
sys-apps/gptfdisk
|
||||
>=sys-apps/util-linux-2.19.1
|
||||
sys-fs/dosfstools
|
||||
sys-fs/squashfs-tools
|
||||
sys-block/parted )
|
||||
pxe? ( sys-apps/calculate-server
|
||||
net-ftp/tftp-hpa
|
||||
net-misc/dhcp
|
||||
net-fs/nfs-utils )"
|
||||
src_unpack() {
|
||||
unpack "${A}"
|
||||
cd "${S}"
|
||||
|
||||
# apply revision changes
|
||||
epatch "${FILESDIR}/calculate-install-3.1.6-r1.patch"
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
diff --git install/variables/system.py install/variables/system.py
|
||||
index b257227..8eb76e0 100644
|
||||
--- install/variables/system.py
|
||||
+++ install/variables/system.py
|
||||
@@ -173,6 +173,14 @@ class VariableClInstallHomeCryptSet(UserHelper,Variable):
|
||||
self.help = _("crypt user profiles")
|
||||
self.label = _("Crypt user profiles")
|
||||
|
||||
+ def get(self):
|
||||
+ return self.Get('cl_home_crypt_set')
|
||||
+
|
||||
+ def check(self,value):
|
||||
+ if value == "on" and self.Get('cl_autologin'):
|
||||
+ raise VariableError(
|
||||
+ _("Crypt user profile uncompatible with autologin"))
|
||||
+
|
||||
class VariableClMigrateData(UserHelper,TableVariable):
|
||||
"""
|
||||
User migrate data table
|
||||
@@ -682,7 +690,7 @@ class VariableOsAudioData(ReadonlyTableVariable):
|
||||
aplay = getProgPath('/usr/bin/aplay')
|
||||
if not aplay:
|
||||
return [[]]
|
||||
- entry = re.compile('^card (\d+): ([^,]+)')
|
||||
+ entry = re.compile('^card (\d+): ([^:]+)')
|
||||
return tuple(map(lambda x:x.groups(),
|
||||
filter(None,map(entry.search,
|
||||
process(aplay,'-l')))))
|
@ -0,0 +1,35 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: $
|
||||
|
||||
EAPI="3"
|
||||
SUPPORT_PYTHON_ABIS="1"
|
||||
PYTHON_DEPEND="2:2.7"
|
||||
RESTRICT_PYTHON_ABIS="2.4 2.5 2.6 3.*"
|
||||
|
||||
inherit distutils eutils
|
||||
|
||||
SRC_URI="ftp://ftp.calculate.ru/pub/calculate/calculate3/${PN}/${P}.tar.bz2"
|
||||
|
||||
DESCRIPTION="The library for Calculate 3"
|
||||
HOMEPAGE="http://www.calculate-linux.org/main/en/calculate2"
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="3"
|
||||
KEYWORDS="amd64 x86"
|
||||
IUSE="minimal"
|
||||
DEPEND="!minimal? ( dev-python/py-smbpasswd )
|
||||
>=dev-python/pyxml-0.8
|
||||
sys-apps/iproute2
|
||||
sys-apps/pciutils
|
||||
sys-fs/lvm2
|
||||
sys-fs/mdadm
|
||||
dev-python/pyinotify
|
||||
sys-apps/file[python]"
|
||||
RDEPEND="${DEPEND}"
|
||||
src_unpack() {
|
||||
unpack "${A}"
|
||||
cd "${S}"
|
||||
|
||||
# apply revision changes
|
||||
epatch "${FILESDIR}/calculate-lib-3.1.6-r1.patch"
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
diff --git calculate/lib/utils/common.py calculate/lib/utils/common.py
|
||||
index 1799713..53e07ad 100644
|
||||
--- calculate/lib/utils/common.py
|
||||
+++ calculate/lib/utils/common.py
|
||||
@@ -471,3 +471,13 @@ def mountEcryptfs(userName,userPwd,userDir):
|
||||
# отправить пароль через stdin
|
||||
mountProcess.write("passphrase_passwd="+userPwd)
|
||||
return mountProcess.success()
|
||||
+
|
||||
+def isBootstrapDataOnly(directory):
|
||||
+ """
|
||||
+ Каталог содержит только сертификат, созданный командой cl-core
|
||||
+ """
|
||||
+ from calculate.lib.utils.files import (process,readLinesFile,STDOUT,
|
||||
+ isMount)
|
||||
+ userCalculate = path.join(directory,".calculate")
|
||||
+ return (set(listDirectory(directory)) == set([".calculate"]) and
|
||||
+ set(listDirectory(userCalculate)) == set(["client_cert"]))
|
||||
diff --git calculate/lib/variables/user.py calculate/lib/variables/user.py
|
||||
index e8e378f..7b3596a 100644
|
||||
--- calculate/lib/variables/user.py
|
||||
+++ calculate/lib/variables/user.py
|
||||
@@ -21,7 +21,7 @@ import grp
|
||||
from os import environ,path
|
||||
from calculate.lib.datavars import Variable,VariableError,ReadonlyVariable
|
||||
from calculate.lib.cl_vars_share import varsShare
|
||||
-from calculate.lib.utils.common import getPasswdUsers
|
||||
+from calculate.lib.utils.common import getPasswdUsers,isBootstrapDataOnly
|
||||
from calculate.lib.utils.files import listDirectory
|
||||
import sys
|
||||
from calculate.lib.cl_lang import setLocalTranslate
|
||||
@@ -229,7 +229,8 @@ class VariableUrHomeCryptSet(ReadonlyVariable):
|
||||
# если пользовательского профиля нет, то шифровать ли профиль
|
||||
# узнаем на уровне системы
|
||||
homeDir = self.Get('ur_home_path')
|
||||
- if not path.exists(homeDir) or not listDirectory(homeDir):
|
||||
+ if (not path.exists(homeDir) or not listDirectory(homeDir) or
|
||||
+ isBootstrapDataOnly(homeDir)):
|
||||
return self.Get('cl_home_crypt_set')
|
||||
# профиль не шифрованный
|
||||
return "off"
|
@ -1,6 +1,6 @@
|
||||
DIST calculate-update-3.1.5.tar.bz2 6987 SHA256 c5f7d7e113a1eae1717797e9b94c40586b4c45123691b8a3a5c20b0a6e926200 SHA512 bb3b0f2b65e5f6e5c77ca8a80f9adf0379f4a992e50de0bb43be500aac4a727e2920e330e4ed292c2a553b1ef3fc50f615ce3122c3147c5661622a6642ac92b9 WHIRLPOOL 164db94c45bd51852e6db8672341406087390007c88e0a3d1f417cd7ab5124f250fcc9ef4e623956f7e1ee9f096f95c4e1df6ddcf0715852915d8be588c31687
|
||||
DIST calculate-update-3.1.6.tar.bz2 7011 SHA256 052fe75d63f2b2b7ea269a6741a3faec2114e3a3dae9638d47919bdcbd20856f SHA512 8d0483d874b23f1f15bc87e19fa1a2aa552aa8b9d38f26531befce7a46c33cbcc119a5cd28d0f25c071473ede3299405f7875942ec984be8a6fa351916b74092 WHIRLPOOL 9ea493434c208691292909014d5591f7db3a9760816c6c6530ae1e6c0f73cf4d53d40ccb13e44f72b10dddd49bd02d27b5aa6873cd6584cb64dfa36b7f139c07
|
||||
EBUILD calculate-update-3.1.5.ebuild 589 SHA256 2b0825365ad96494a07704a7422b7978c7fe4cc3ac77c1dadfb1f71a23290b54 SHA512 98ebf303c495a184eba4ce66d67b4583e32c96187ae35e6f6be0a7e4b7824278fd26f322f44de3658e21439ee1f82f89b6d48647989a7e1160d6d33015c8b853 WHIRLPOOL 6902155ee5ddb983603eee5bfacac7ab9db471054309686067f0cd69440ed78f63a5699cf08015feb0d623c060c5a7e99a6d3e774cc7599098d63af51b168839
|
||||
EBUILD calculate-update-3.1.6.ebuild 591 SHA256 65bff9cd4c9d230fd6f0d8bcf21dfa4e3ef1b995a29e3dad53f9be834507f429 SHA512 cbe141d33248c9ecb069009583c57ee3c1a0c1cca82a005358d64153ec6813d6aa5d629f06be751a71bb3d2d241babfa5c039618e3be1c7b5b9639857c3f5f2b WHIRLPOOL 664a99dfb8aaea548123ca77c104148bdbba94b55ee7a151f56bbd5e7c41135fbd8e208395bb453ce47c6bde40a490db988bd96a282c69cf6d5d996cbc0e17ee
|
||||
EBUILD calculate-update-3.1.6.ebuild 589 SHA256 67f1ee16563e3e6d7cb4449b408b3271fc8de380611bf3fb0bf01542260f61bc SHA512 7e465b25a6122a654431e032f414bc09ae1715bdd616db42e687c8de5a089d1b087fc02b0946aeefb13de267d3fb8e6ce037b1c0b3fc0f2b92e2d882309890ba WHIRLPOOL 3f82cf3a0e058cd0ec2b34b65be74c7c1a13e918fff7e449d612f6994b70a6466a6b696c451721a5abf658409143aada776cb82b9bf2a3bfbc2f15ace68be5e6
|
||||
EBUILD calculate-update-3.1.9999.ebuild 530 SHA256 f014911ae52c1eadd9615ab1a2c930eb79aab49f509260bd6573eb3985ce2ec8 SHA512 3523efdb19b9646a0d1dba6d6a4664393d07f9aa666392d355b4596cb1bca8cd80a62bbd7f6db7029c1173ebb2a16e9cf168cea1d7f2c051ba8838c86c234454 WHIRLPOOL a394a23a0277b40cc2e7242b08750638434c3b6bf0f340fec923f90e738618b1cc0e223e327484f95d24f7637e8bebec6dff4b6385b731376f6f8cc8897caf79
|
||||
MISC metadata.xml 288 SHA256 9ea2bfebe4ac64765041ad92dda5b8f22f5597a4e560458f98996b00b0393b8a SHA512 88886b3e137bcf7038cc4985b786523dfac1c127aff84ad682b919d92b2c51b0b8d8f97ff60e7239a2ef49ec40fb5dcc41a59cb428ed346f1e44044ecd75b698 WHIRLPOOL d4eb5ba4901e10fe9cf440c63a8a9a59b5e6620004306eec3cd162cf902a89510460774a8c407816bf15033062dc8f96a334e7f873801bc6bcd73edeb833f36b
|
||||
|
@ -1,6 +1,7 @@
|
||||
EBUILD calculate-utilities-2.2.31-r17.ebuild 675 SHA256 f990a0332c77826827d022f37aa41f9f9f405b1d2820a48a6c15477c5e0d96f2 SHA512 69d6250b8630bf8da4c1735e2de187eaf3acf311ac53bb1e09401906926ca5c983acd1d471e5baed8a1107a6bc63f715cc4065675847214a27872732accc64aa WHIRLPOOL 9cc132de418f2390248e34e1e915978e44a0971ee8e98e3d9a09167da64c66c39501f9aef4a8ee5a8c2a72daa93e7a400b99368f22825d985d906060b89a84b5
|
||||
EBUILD calculate-utilities-2.2.9999.ebuild 842 SHA256 56d97b7d2ce11d23b25d9036b4e2ee196b547ce1d11b0cc349a8205515b66bf1 SHA512 fc7802b92ade52210fa7381b55c48638da6d9adee6d2f03f18d6bdd0050756089b3ca8de944f4e865517554523b40737abe9f22587ecae74079eec563f80868b WHIRLPOOL f1382f0629a8dae37aaecf40cb8cbc3682bde3b43e92c9c6a84cda75897dc5d5de043233fb7a3f929749520b05fe3af94187c7a3ccdae4e252e83699d871f225
|
||||
EBUILD calculate-utilities-3.1.5-r28.ebuild 771 SHA256 6a23c03fd85628987dceb99b234ce49ab362abfe0f432da6ae3251daeb70221e SHA512 6674deb14b7dd0a6b8c0b1627ad064a19580f45fb31e302505e4d96ce5c5fde44ee97615f5260b3f434aa041c0cf4b12a958ab8ae5aeca3666d910cfd721d2e5 WHIRLPOOL 74bbd188a000179546fec064c5d9af26af7748854a7d2354b1c6cc5ba3e3e2824dd55cc3d170a6651587c8724f86f0ec84c77226770ca8492db221b5b4b77a84
|
||||
EBUILD calculate-utilities-3.1.6-r1.ebuild 758 SHA256 a607b77234ec2f89b55f807077e0107b23866927c3a27709668fe258fe501941 SHA512 782e2779dd89a5912304eef346a9edd7bb1396bc81cdcceb31a96b53dd6e5fa16cc51cae83dd4fcbf9c77a70d9f37be9d4cc7e1032d3a6c2daed714dfd61ad74 WHIRLPOOL c9f98d3472f32648346c4abea73f1a0f506e964ef6899a403c6915d1bb4ba63a586272dcdd14e4342b7f754a2d673101cac1aeb60a7b55b5ffa1a922e9780047
|
||||
EBUILD calculate-utilities-3.1.6.ebuild 751 SHA256 2d16a50709c95db821dfd8ab018ba3091cadc598beddb4ae5e11a22d00ce369f SHA512 f420988a061c8a424b69a8cc890690d44052497b317082d5c8f7bada302caf3bcb38cf59e5f7ab4a2ba35b9f44c84917ca3b6fa6faf3899920bbed7be53611bd WHIRLPOOL b03385eaaa7b8b54ad3a1cb4761a20e16913526f6fb1005498c2de1260ac067ad178085fb9efa73b77617dc94fe1dcc884670a45d6664ccd48e89b527e78b21c
|
||||
EBUILD calculate-utilities-3.1.9999.ebuild 800 SHA256 9de4807341cb552ef8d4f702e9c4a0ca10c52c9d532cc2eb741cea29b92f09b5 SHA512 b35ed4d49c4943a5ad375e646bece419271900c50301153408b30dede0fe834e098baaa42a21c130730c0bc32ba09decc588277da6782d2010c18c9d8df679ae WHIRLPOOL 78e2c5ee8ef8356c4fc0275f920177778925278cad78585ed37c08048241f775030e59a0ced0696fba6379741fe865dc339d190c46b5f2173097328a73c64a24
|
||||
MISC ChangeLog 38731 SHA256 7e70a0bc1f3b34c0011f3874773a698a4bb96eb6d3dad10903575156bb8578bc SHA512 2de466ea990b9eac702b81fd097c3f5d06d1f4db1a4bd1d1b7380b45e551f6fd62c16564ecfc810246157d3ef1113ae373041580e70981d44752e50ed6134bc0 WHIRLPOOL 5ca0cee1ad0e9419f91ec11a9629b9a29db9fcbed4f5ae0aef1f8a2170ff58112c8580d61884c56ee410a0abc201fa8f4419cea35077fc8bb84e733f6fa6f4db
|
||||
|
@ -0,0 +1,26 @@
|
||||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: $
|
||||
|
||||
EAPI=4
|
||||
|
||||
DESCRIPTION="Calculate Utilities meta package"
|
||||
HOMEPAGE="http://www.calculate-linux.org/main/en/calculate2"
|
||||
SRC_URI=""
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="3"
|
||||
KEYWORDS="amd64 x86"
|
||||
IUSE="cl_consolegui cl_client cl_desktop cl_console"
|
||||
|
||||
RDEPEND="${RDEPEND}
|
||||
=sys-apps/calculate-install-3.1.6-r1
|
||||
=sys-apps/calculate-i18n-3.1.6
|
||||
=sys-apps/calculate-lib-3.1.6-r1
|
||||
=sys-apps/calculate-core-3.1.6
|
||||
=sys-apps/calculate-update-3.1.6
|
||||
cl_client? ( =sys-apps/calculate-client-3.1.6 )
|
||||
cl_desktop? ( =sys-apps/calculate-desktop-3.1.6-r1 )
|
||||
cl_consolegui? ( =sys-apps/calculate-console-gui-3.1.6 )
|
||||
cl_console? ( =sys-apps/calculate-console-3.1.6 )
|
||||
"
|
Loading…
Reference in new issue