src/buildservice/database.py \
src/buildservice/decorators.py \
src/buildservice/distribution.py \
+ src/buildservice/errors.py \
src/buildservice/events.py \
src/buildservice/git.py \
src/buildservice/jobqueue.py \
return self._get_distribution("SELECT * FROM distributions \
WHERE slug = %s AND deleted IS FALSE", slug)
+ def get_by_tag(self, tag):
+ return self._get_distribution("""
+ SELECT
+ *
+ FROM
+ distributions
+ WHERE
+ deleted IS FALSE
+ AND
+ tag = %s
+ """, tag,
+ )
+
def create(self, name, tag):
slug = misc.normalize(name)
from .constants import *
from .decorators import *
+from .errors import *
# Setup logging
log = logging.getLogger("pakfire.buildservice.packages")
log.debug("Importing package %s..." % package)
+ # Find a matching distribution
+ distro = self.backend.distros.get_by_tag(package.distribution)
+ if not distro:
+ log.error("Could not find distribution '%s'" % package.distribution)
+
+ raise NoSuchDistroError(package.distribution)
+
pkg = self._get_package("""
INSERT INTO
packages
arch,
uuid,
groups,
+ distro_id,
maintainer,
license,
url,
(
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
- %s, %s, %s, %s
+ %s, %s, %s, %s, %s
)
RETURNING *""",
package.name,
package.arch,
package.uuid,
"", #package.groups, # SEGV
+ distro,
package.maintainer,
package.license,
package.url,
commit = lazy_property(get_commit, set_commit)
- @property
- def distro(self):
- # XXX THIS CANNOT RETURN None
+ # Distro
- if self.commit:
- return self.commit.distro
+ def distro(self):
+ return self.backend.distros.get_by_id(self.data.distro_id)
@property
def build_id(self):
digest_type text NOT NULL,
digest bytea NOT NULL,
deleted_at timestamp without time zone,
- deleted_by integer
+ deleted_by integer,
+ distro_id integer NOT NULL
);
ADD CONSTRAINT packages_deleted_by FOREIGN KEY (deleted_by) REFERENCES public.users(id);
+--
+-- Name: packages packages_distro_id; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.packages
+ ADD CONSTRAINT packages_distro_id FOREIGN KEY (distro_id) REFERENCES public.distributions(id);
+
+
--
-- Name: repo_builds repo_builds_added_by; Type: FK CONSTRAINT; Schema: public; Owner: -
--